Ajatusjohtajat

Sovellamalla tekoälyä reaaliaikaiseen videokäsittelyyn: Perusteet ja lisää

mm
Lisää Unite.AI suosikkilähteisiisi Google-palvelussa

Maksym Tatariants, Data Science -insinööri MobiDevissä.

Tekoälyn (AI) käyttäminen videokäsittelyssä ei ole uutta. Jos katselet kuvankäsittelyn ulkopuolelle – se on yksi yleisimmistä tekoälyn käyttötapauksista. Ja juuri kuten kuvankäsittely, videokäsittely käyttää vakiintuneita tekniikoita kuten tietokoneen näkö, objektien tunnistus, koneoppiminen ja syväoppiminen parantamaan tätä prosessia.

Käytätkö tietokoneen näköä ja NLP: tä videon editoinnissa ja luomisessa, objektien tunnistusta video sisällön automaattisessa merkinnässä, koneoppimista AI-videon analyysin sujuvoittamiseksi tai syväoppimista taustan poistamisen nopeuttamiseksi, sovellukset jatkuvat kasvamassa päivä päivältä.

Lue lisää siitä, minkälaista lähestymistapaa voit käyttää tekoälyn käyttämisessä videokäsittelyssä.

Reaaliaikaisen videokäsittelyn perusteet

Aloita perusteista. Reaaliaikainen videokäsittely on olennainen teknologia valvontajärjestelmissä, jotka käyttävät objektien ja kasvojen tunnistusta. Se on myös prosessi, joka mahdollistaa AI-visuaalisen tarkastusohjelmiston teollisuussektorilla.

Miten videokäsittely toimii? Videokäsittely koostuu useista vaiheista, jotka sisältävät purkamisen, laskennan ja koodauksen. Tässä on mitä sinun tarvitsee tietää:

  • Purkaminen: Prosessi, joka vaaditaan videon muuttamiseksi pakatusta tiedostosta takaisin raakamuotoon.
  • Laskenta: Tietty toiminto, joka suoritetaan raakavideokehyksessä.
  • Koodaus: Prosessi, jossa käsitelty kehys muutetaan takaisin alkuperäiseen pakattuun tilaan.

Nyt, minkä tahansa videokäsittelytehtävän tavoitteena on suorittaa nämä vaiheet mahdollisimman nopeasti ja tarkasti. Helpoimmat tavat saavuttaa tämä ovat työskenteleminen rinnakkain ja algoritmin optimointi nopeuden suhteen. Yksinkertaisesti sanottuna? Sinun on hyödynnettävä tiedoston jakamista ja putkiteknologiaa.

Mikä on videotiedoston jakaminen?

Videotiedoston jakaminen sallii algoritmien toimimisen samanaikaisesti, jolloin ne voivat käyttää hitaampia, tarkempia malleja. Tämä saavutetaan jakamalla videot eri osiin, jotka käsitellään samanaikaisesti.

Voit ajatella videon jakamista virtuaalisen tiedoston luomisena eikä alitiedoston luomisena.

Videotiedoston jakaminen ei kuitenkaan ole paras vaihtoehto reaaliaikaiselle videokäsittelylle. Miksi? Tämä prosessi tekee vaikeaksi videon pysäyttämisen, jatkamisen ja windaamisen sen käsittelyksen aikana.

Mikä on putkiteknologia?

Toinen vaihtoehto on putkiteknologia. Tämä prosessi jakaa ja rinnastaa tehtävät, jotka suoritetaan käsittelyksen aikana, eikä pelkästään videon jakamista.

Tässä on nopea esimerkki siitä, miltä putkiteknologia näyttää käytännössä ja miten sitä voidaan käyttää videovalvontajärjestelmässä kasvojen tunnistamiseen ja sumennukseen reaaliajassa.

Tässä esimerkissä putki on jakanut tehtävät purkamiseen, kasvojen tunnistamiseen, kasvojen sumennukseen ja koodaukseen. Ja jos haluat parantaa putken nopeutta, voit käyttää syväoppimisen menetelmiä.

Purkaminen ja koodaus selitetty

Mikä purkamisesta ja koodauksesta? On kaksi tapaa, joilla voit suorittaa nämä prosessit: ohjelmisto ja laitteisto.

Sinun ei tarvitse olla tuttu ohjelmistojen nopeuttamisen käsitteelle. Tämä prosessi on mahdollista kiitos dekoodereiden ja koodausten, jotka on asennettu uusimpiin NVIDIA -grafiikkakortteihin, sekä CUDA-ytimiin.

Mitkä vaihtoehdot sinulla on käytettävissä laitteiston nopeuttamiseen koodauksen ja purkamisen prosesseissa? Tässä on joitakin suosituimpia vaihtoehtoja:

  • Käännä OpenCV CUDA-tuella: Kääntäminen OpenCV: llä CUDA-tuella optimoi sekä purkamisen että putken laskennan, joka käyttää OpenCV: tä. Muista, että sinun on kirjoitettava ne C++: ksi, koska Python-kääre ei tue tätä. Mutta tilanteissa, joissa tarvitaan sekä purkamista että numeerisia laskelmia GPU: lla ilman kopioimista CPU-muistiin, se on yhä yksi paremmista valinnoista.
  • Käännä FFmpeg tai GStreamer NVDEC/NVENC-kooderin tukemalla: Toinen vaihtoehto on käyttää NVIDIA-dekooderia ja -kooderia, jotka ovat mukana FFmpeg- ja Gstreamerin mukana. Kuitenkin suosittelemme käyttämään FFmpeg: iä, koska se vaatii vähemmän ylläpitoa. Lisäksi useimmat kirjastot perustuvat FFmpeg: iin, joten voit parantaa kirjaston suorituskykyä korvaamalla sen.
  • Käytä NVIDIA Video Processing Frameworkia: Viimeinen vaihtoehto on käyttää Python-käärettä dekoodata kehys suoraan PyTorch-tensooriksi GPU: lla. Tämä vaihtoehto poistaa ylimääräisen kopioinnin CPU: sta GPU: hen.

Kasvojen tunnistus ja sumennus

Objektien tunnistusmallit (SSD tai RetinaFace) ovat suosittu vaihtoehto kasvojen tunnistamiseen. Nämä ratkaisut etsivät ihmisen kasvoja kehyksestä. Ja meidän kokemuksemme mukaan, meillä on tapana suosia Caffe Face -seurantaa ja TensorFlow-objektien tunnistusmalleja, koska ne antoivat parhaat tulokset. Lisäksi molemmat ovat saatavilla OpenCV-kirjaston dnn-moduulissa.

Mikä seuraava askel on kasvojen tunnistamisen jälkeen? Seuraavaksi Python- ja OpenCV-pohjainen järjestelmä paljastaa rajatun alueen ja tunnistamisen luottamuksen. Lopuksi sumennus-algoritmi sovelletaan leikattuihin alueisiin.

Miten voit rakentaa tekoälypohjaisen reaaliaikaisen videokäsittelyohjelmiston?

Ei ole salaisuus, että videokäsittely, sen mahdollistavat koodekit ja sekä laitteiston ja ohjelmiston vaatimukset ovat melko teknisiä.

Silti se ei tarkoita, ettei sinä voisi käyttää näitä työkaluja rakentamaan omaa reaaliaikaista videokäsittelyohjelmistoa.

Tässä on lyhyt katsaus siitä, mitä sinun tarvitsee tehdä:

  1. Aloita sovittamalla esikoulutetun neuroverkkosi suorittamaan vaaditut tehtävät.
  2. Määritä pilvi-infrastruktuurisi käsittelemään videokäsittelyä ja skaalautumaan tarpeen mukaan.
  3. Rakenna ohjelmistokehys tiivistämään prosessin ja integroida tiettyjä käyttötapoja, kuten mobiilisovelluksia ja hallintopaneeleita.

Videonkäsittelyohjelmiston MVP:n kehittäminen voi kestää jopa neljä kuukautta käyttäen esikoulutettua neuroverkkoa ja yksinkertaisia sovelluskerroksia. Kuitenkin projektin laajuus ja aikataulu riippuvat kunkin projektin yksityiskohtia. Useimmissa tapauksissa on järkeämpää aloittaa konseptin osoittamisella kehittääksesi projektin yksityiskohtia ja löytääkseen optimaalisen virran.

Maksym on innostunut saamaan uusia oivalluksia ja kokemuksia Data Science ja Machine Learning -aloilta. Hän on erityisen kiinnostunut Deep Learning -tekniikasta ja sen soveltamisesta liiketoimintatapauksiin.