Lyhyt opas BBC: n T & K: n videoiden kasvotunnistukseen

Usein ne tehtävät, joita ihmiset tekevät ajattelematta, vaativat joitain monimutkaisimmista käsittelyistä kulissien takana. Ruoan maistaminen, keskustelu ystävien kanssa, musiikin kuuntelu ja ihmisten tunnustaminen. Kun katsot sarjaa Eastenders, näet eri toimijat erilaisissa olosuhteissa, eri kulmista ja erilaisesta valaistuksesta, mutta aivosi käsittelee heti nämä variaatiot tietääkseen, että kohtauksessa ovat Dot Cotton ja Phil Mitchell. Koska emme ajattele kyseistä käsittelyä, olemme yllättyneitä siitä, että nämä tehtävät ovat paljon monimutkaisempia kuin alun perin ajatelimme, kun yritämme soveltaa niitä koneoppimiseen.

Ota seuraavat kuvat prinssi Harryltä ja Megan Marklelta kadulta. Näemme Harry ja Megan täältä eri näkökulmista - edestä, sivulta ja takaa -, mutta tunnistamme ne helposti niiden ominaisuuksien perusteella: ihonväri, hiusväri ja niin edelleen. Otamme myös tietyt sosiaaliset vihjeet huomioon. Joukko katselee heitä, ovat hyvin pukeutuneita, he ovat jokaisen laukauksen keskellä ja samasta paikasta tulevien laukausten jatkuva ilmeinen jatkuvuus. Ihmisen intuitiossa on monia kerroksia, joista emme yleensä edes ajattele havaitsemalla kulttuurisia ja fyysisiä indikaattoreita.

Tunnustamme luonnollisesti Harry ja Megan, huolimatta näiden laukausten erilaisista kulmista

Joten kuinka me opetamme tietokoneen oppimaan tekemään kaikki tämä? Vaikka emme voi saada algoritmia ajattelemaan ihmisen tavoin, voimme saada sen tekemään sitä, mitä koneoppiminen tekee parhaiten: havaita malleja suurissa, merkittyjen tietojoukkojen avulla. Tähän sisältyy kuvien kerääminen, algoritmin kouluttaminen, videoiden käsitteleminen ja niissä olevien ihmisten tunnistaminen. Lopullinen tulos on luettelo videosta tunnistetuista ihmisistä sekä aika ja sijainti näytön ruuduissa.

Pyrimme jo rakentamaan tätä tekniikkaa BBC: ssä. Järjestelmäämme, nimeltään FaceRec, kehittää Internet Research and Future Services Data Team -ryhmä BBC Research and Development -palvelussa (tallennamme joitain näppäinpainalluksia ja kutsumme heitä vain Data-tiimiksi tästä eteenpäin). Se on rakennettu käyttämällä sisäisen koodin ja ulkoisen avoimen lähdekoodin ohjelmistojen yhdistelmää - erityisesti Seetaface, C ++-kasvojentunnistusmoottori.

FaceRec toimii käsittelemällä videoita algoritmisten vaiheiden sarjan avulla, joista kukin ratkaisee tietyn osan kokonaisongelmasta. Annamme sinulle yleiskuvan siitä, kuinka kaikki toimii.

1. Tunnista laukaukset

Jotta jokainen videossa havaittava kasvo havaitaan, video on ensin hajotettava sen muodostaviin kuviin (laukaus määritellään ruudusarjaksi, joka jatkuu keskeytymättömän ajan). Tätä varten FaceRec käyttää mediakäsittelykirjastoa FFmpeg, joka käyttää toimintoa palauttaaksesi kaikkien laukausten aloitus- ja lopetusajat tietyssä videossa.

2. Tunnista kasvot

Seuraava vaihe on tarkistaa jokainen kehys nähdäksesi, sisältääkö se ihmisten kasvoja. Tämä on hankala ongelma - pitäisikö meidän yrittää havaita jokainen kasvot jalkapallo-ottelussa? Laskevatko t-paidan kasvot? Onko kuvia sanomalehtien edessä?

Kustakin kuvauksesta iteraten, FaceRec ottaa kehyksiä otoksesta ja syöttää ne SeetaFacelle, joka palauttaa sitten rajaavat laatikot sille, mihin kasvot luulevat. SeetaFacen kasvontunnistinmoottori havaitsee, laskeeko kasvot niin paljon, että ne sisällytetään tulosteensa. Huomaa, että SeetaFace ei sano kuka sen mielestä havaitsemat ihmiset ovat, vaan pelkästään uskoo löytäneensä kasvot tietyssä kohdassa kehyksessä.

3. Luo kasvot

Nyt kun olemme keränneet kaikki kasvot sisältävät kehykset, seuraava tehtävä on ommella nämä havaitut kasvot yhteen luomiseksi kasvot. Kasvoraita on jatkuva virtaus rajaavista laatikoista kasvojen ympärillä liikkuessa laukauskehyksen sisällä.

FaceRec ottaa molemmat kasvot rajaavan ruudun ja yrittää kartoittaa sen seuraavan kehyksen seuraavaan loogiseen rajakenttään. Tämä ei ole aina täysin ilmeistä, koska kasvot voidaan tilapäisesti peittää tai rajaavat laatikot voivat ylittää toisensa, kun yksi henkilö liikkuu toisen takana.

Rajoitetut laatikot seuraavat kasvot laukauksen kautta

Kupun alla tämä ongelma ratkaistaan ​​käyttämällä Dlib- ja Lucas-Kanade -menetelmiä. Tämä luo kasvipolkuja, jotka määrittelevät aikapisteet, luettelo kehyksistä ja kasvojen rajaavat ruudut.

4. Luo kappalevektoreita

Koneoppimisalgoritmit toimivat usein muuntamalla syötemateriaali matemaattisiksi vektoreiksi. Sitten he oppivat, mitkä osat tästä "vektoritilasta" kuuluvat tiettyihin luokkiin tai syöttötyyppeihin. Kasvojen suhteen he oppisivat, että prinssin Harryn kasvoja edustavilla vektoreilla on taipumus olla tietyllä alueella, kun taas Megan-vektoreilla on taipumus olla yli eri osassa. Voit myös odottaa, että prinssi Williamin kasvojen vektorit ovat lähempänä tässä tilassa Harryä kuin Megania, koska he ovat sukulaisia ​​ja jakavat samanlaisia ​​piirteitä.

FaceRec käyttää SeetaFacen kasvotunnistuskirjastoa luomaan vektoreita havaituille kasvoille. FaceRec syöttää rajatuissa valokuvissa havaitut kasvot niiden rajalaatikoissa kasvokappaleen keskipisteestä. Se vastaanottaa takaisin 2024-ulotteisen vektorin, joka edustaa kyseisen kasvot.

5. Tunnista ihmisten kasvot kasvojen seurantavektoreissa

Meillä on nyt kasvot vektori jokaiselle havaitulle kasvopolulle. Seuraava vaihe on muuttaa nämä vektorit tunnistettujen kasvojen todellisiksi nimiksi sekä merkitä kasvot, joita emme tunnista (ja joita emme voi siis tunnistaa).

Ensimmäinen kysymys on: vain keitä tunnustamme? Emme varmasti pysty rakentamaan mallia kaikkien ihmisten tunnistamiseksi, jotka ovat koskaan eläneet - emmekä haluaisi. Joten kenen pidämme tarpeeksi tärkeänä tätä kasvojentunnistusjärjestelmää varten?

Realistisesti, tämän täytyy ajatella BBC News -lehden toimittajat ja ihmiset, joista he yleisimmin raportoivat. Meidän on myös oltava tietoisia siitä, että tuntemattomat ihmiset tekevät uutisia päivittäin, ja kun he tekevät, meillä ei ehkä ole aiempia kuvia niistä. Näitä rajoituksia ajatellen Data-ryhmä keskittyi FaceRec-koulutuksessa lähinnä kuuluisuuksiin, kansainvälisiin johtajiin, Yhdistyneen kuningaskunnan poliitikkoihin parlamentissa ja Lordien huoneeseen.

Näiden ihmisten tunnistamiseksi heidän oli kerättävä koulutustietoja jokaisesta henkilöstä - toisin sanoen runsaasti merkittyjä valokuvia henkilöstä, jotka sisältävät vain kyseisen henkilön. Datatiimi keräsi tuhansia valokuvia ja rakensi sitten oman käyttöjärjestelmänsä yksittäisten valokuvien katseluun ja merkitsemiseen. Koneoppimisen epätyypillinen totuus on, että laadukkaan, merkityn tiedon kerääminen on usein kallein, työläisin ja silti tärkeä osa hyvin toimivan AI-järjestelmän rakentamista.

Kerättyään valokuvat, Data-tiimi syöttää ne sitten koneoppimisluokittelijalle, jota kutsutaan tukivektorikoneeksi koulutettujen mallien luomiseksi. Kun nämä mallit syöttävät kasvot vektoreiksi SeetaFacesta, nämä mallit ennustavat henkilön nimen alkuperäisessä kasvokuvassa tai sanovatko, etteivätkö he tunnustaneet kasvoja ollenkaan.

IRFS loi kaksi mallia:

  1. Arkistomalli: Kuuluisia ihmisiä ainakin 1900-luvulta lähtien, jotka ovat valinneet BBC-arkiston ihmiset. Tämä malli sisälsi noin 1000 ihmistä.
  2. Uutemalli: Vielä kehitystyössä, se laajenee kattamaan yli 2000 Yhdistyneen kuningaskunnan parlamentin ja alueellisten edustajakokouksien jäsentä, Lordien taloa ja maailman johtavia edustajia. Harjoittelukuvat hankittiin BBC News-, Factual- ja Drama-julkaisuista.

Näitä koulutettuja malleja käytetään sitten ennustamaan, mitkä ihmiset ovat videoiden kasvot.

6. Klusterin kasvot

Nyt kun kaikki kasvonaurat on merkitty, viimeinen vaihe on kerätä kaikki saman henkilön kaikki kappaleet.

Tätä varten laitamme kaikki videon poimitut kasvosektorit yhteen vektoritilaan, jota kutsumme kasvotilaksi hauskanpitoa varten. Kasvotilan visualisoimiseksi voidaan käyttää Tensorboard-työkalua, joka on osa Tensorflowin koneoppimiskirjastoa.

Tarkasteltaessa tätä kasvotilaa, toivomme, että saman henkilön vektorit ovat riittävän lähellä toisiaan ja riittävän kaukana muista ihmisistä, että voimme ryhmitellä ne automaattisesti. Tämä tunnetaan koneoppimisessa klusterointiongelmana.

Näemme kasvipolkuvektorit, jotka projisoidaan tähän kasvotilaan alla olevasta Harry ja Megan -videosta. Ja näemme, että suurin osa Megan-kappaleista on koottu yhteen, mikä tekee niistä helpon ryhmittymisen. Se on yksi tapa, jolla tiedämme, että luodut kasvomaailmat toimivat hyvin.

Kasvojen visualisointi TensorBoardilla

Klusteroinnin tuntevat näkevät kasvoklusterointiongelmamme vaikeuden. Jokaisessa videossa on erilainen joukko erikokoisia klustereita - runsaasti vektoreita esiintyy kerran ja ne eivät kuulu kokonaan klusteriin.

Sen sijaan, että pudottaisit pimeän aukon yrittämällä ratkaista ongelman täydellisesti, Data-ryhmä päätti ajaa muutamalla heuristiikalla. FaceRec jakaa ongelman kahteen erilliseen luokkaan: tunnistettavien ihmisten kasvot ja ihmisten kasvot, joita se ei tunnista. Tunnistettujen kasvojen kohdalla se vain klusteroi kaikki kasvokappaleet yhteen, joilla on sama ennustettu etiketti (nimi). Tunnistamattomien kasvojen kohdalla se käyttää tekniikkaa, jota kutsutaan hierarkkiseksi klusterointiksi kasvvektorien yli, ryhmittääkseen heidät, mutta et anna niille etikettejä.

7. Tulosta tiedot

FaceRecin viimeinen vaihe on kaiken eri vaiheissa kerätyn tiedon syöttäminen. Tämä tulee JSON-tiedostona, joka sisältää:

Luettelo videon kappaleista. Jokaisessa kappaleessa se on:

  • Ennustettu henkilö kyseiselle kappaleelle
  • Ennusteen luottamus
  • Seuraa UUID: ta
  • Kasvivektori tuolle kappaleelle
  • Luettelo kyseisen kappaleen kehyksistä

Kehysluettelossa tiedot jokaisesta kehyksestä sisältävät:

  • Kasvovektori kyseiselle kehykselle, jos se on havaittu
  • Raja-laatikon koordinaatit kasvoille
  • Aika videossa, jossa kehys esiintyy

Mitä voimme tehdä näillä tiedoilla? Voit tutustua seuraavaan blogikirjoitukseen nähdäksesi ideasi.

Paketoida

Se on siitä oikeasti. Toivottavasti olemme auttaneet sinua ymmärtämään monia video-kasvojentunnistusjärjestelmään liittyviä osia. Ja ehkä olemme myös saaneet sinut tietoisemmaksi kaikista raskasta nostamisesta ja epäselvyyksistä, joita oma aivosi käsittelee satoja kertoja päivässä tunnustaessasi ystäviäsi ja rakkaitasi.

Saatuaan ymmärtää FaceRec-järjestelmän sisäisen toiminnan, News Labsin tehtävänä oli nähdä, missä tämä tekniikka voisi lisätä liikearvoa BBC: n sisällä. Kuinka osoitamme FaceRecin kyvyt intuitiivisella demonilla? Mihin tuotantojärjestelmiin voimme nähdä FaceRecin sopivan? Kenen työnkulun ongelmat se voisi ratkaista? Ja mikä tärkeintä, miten ihmiset suhtautuvat kasvojentunnistuksen käyttöön? Puhumme uuden tekniikan käyttöönoton haasteista suuressa organisaatiossa ja kysymyksistä, joita kohdamme kehitettäessä kasvojentunnistuksen prototyyppiä kohdasta ”Kasvontunnistus - mitä hyötyä siitä on uutishuoneille?”.