Serhii Maksymenko,
Data Science Solution Architect

Kasvojentunnistusteknologia näyttäytyy nykyään eri valossa. Käyttötapauksia ovat laajat sovellukset rikosten havaitsemisesta geneettisten sairauksien tunnistamiseen.

Vaikka hallitukset eri puolilla maailmaa ovat investoineet kasvojentunnistusjärjestelmiin, jotkin yhdysvaltalaiset kaupungit, kuten Oakland, Somerville ja Portland, ovat kieltäneet sen kansalaisoikeuksiin ja yksityisyyden suojaan liittyvien huolenaiheiden vuoksi.

Mikä se on – aikapommi vai teknologinen läpimurto? Tässä artikkelissa avataan, mitä kasvojentunnistus on teknologian näkökulmasta ja miten syväoppiminen lisää sen kapasiteettia. Vain ymmärtämällä, miten kasvojentunnistusteknologia toimii sisältä päin, on mahdollista ymmärtää, mihin se pystyy.

Päivitetty 09.06.2020: Masked face detection and recognition

How Deep Learning Can Modernize Face Recognition Software

Download PDF

Klikkaamalla alla olevaa ”GET PDF”-painiketta annat suostumuksesi ja oikeuden käsitellä yllä olevissa kentissä ilmoittamiasi henkilötietoja. Henkilötietojasi voidaan käyttää asiakaskuntamme profilointiin ja yritystarjousten lähettämiseen sinulle. Sinulla on oikeus peruuttaa suostumuksesi milloin tahansa lähettämällä pyyntö osoitteeseen [email protected].

Kiitos!

Url lataa PDF-tiedosto lähetettiin sähköpostiisi

Ok

Miten kasvojentunnistus toimii?

Kasvojentunnistusohjelmiston tietokoneen algoritmi muistuttaa hieman ihmisen visuaalista tunnistusta. Mutta jos ihmiset tallentavat visuaalista tietoa aivoihinsa ja muistavat automaattisesti visuaalisen tiedon, kun sitä tarvitaan, tietokoneiden pitäisi pyytää tietoja tietokannasta ja sovittaa ne yhteen ihmisen kasvojen tunnistamiseksi.

Lyhyesti sanottuna tietokonejärjestelmä, joka on varustettu kameralla, havaitsee ja tunnistaa ihmisen kasvot, poimii kasvonpiirteet, kuten silmien välisen etäisyyden, nenän pituuden, otsan muodon ja poskiluut. Sitten järjestelmä tunnistaa kasvot ja vertaa niitä tietokantaan tallennettuihin kuviin.

Mutta perinteinen kasvojentunnistustekniikka ei ole vielä täysin täydellinen. Sillä on sekä vahvuuksia että heikkouksia:

Vahvuudet

Koskettamaton biometrinen tunnistus

Jopa yhden sekunnin tiedonkäsittely

Yhteensopivuus useimpiin kameroihin

Yhteensopivuus useimpiin kameroihin

Yhteensovittamisen helppous

Heikkoudet

Kaksoset ja rotuvääristymät

Tietojen yksityisyyden suojaan liittyvät ongelmat

Esittelyhyökkäykset (PA)

Heikko tarkkuus huonoissa valaistusolosuhteissa

Kasvojentunnistusjärjestelmien heikkouksien tunnistaminen, tietojenkäsittelytieteilijät menivät pidemmälle. Soveltamalla perinteisiä tietokonenäkötekniikoita ja syväoppimisalgoritmeja he hienosäätivät kasvojentunnistusjärjestelmän estämään hyökkäyksiä ja parantamaan tarkkuutta. Näin toimii kasvojen väärentämisen estävä teknologia.

Miten syväoppiminen päivittää kasvojentunnistusohjelmistoa

Syväoppiminen on yksi uudenlaisista tavoista parantaa kasvojentunnistusteknologiaa. Ideana on poimia kasvojen upotukset kuvista, joissa on kasvoja. Tällaiset kasvojen upotukset ovat ainutlaatuisia eri kasvoille. Ja syvän neuroverkon kouluttaminen on optimaalisin tapa suorittaa tämä tehtävä.

Tehtävästä ja aikataulusta riippuen on kaksi yleistä tapaa käyttää syväoppimista kasvontunnistusjärjestelmissä:

Käyttää valmiiksi koulutettuja malleja, kuten dlib, DeepFace, FaceNet ja muut. Tämä menetelmä vie vähemmän aikaa ja vaivaa, koska valmiiksi koulutetuissa malleissa on jo joukko algoritmeja kasvontunnistustarkoituksiin. Voimme myös hienosäätää valmiiksi koulutettuja malleja vääristymien välttämiseksi, jotta kasvojentunnistusjärjestelmä toimisi oikein.

Kehitä neuroverkko tyhjästä. Tämä menetelmä soveltuu monimutkaisiin kasvojentunnistusjärjestelmiin, joilla on monikäyttöisiä toimintoja. Se vie enemmän aikaa ja vaivaa ja vaatii miljoonia kuvia koulutustietokantaan, toisin kuin valmiiksi koulutettu malli, joka tarvitsee vain tuhansia kuvia siirto-oppimisen tapauksessa.

Mutta jos kasvojentunnistusjärjestelmä sisältää ainutlaatuisia piirteitä, se voi olla pitkällä aikavälillä optimaalinen tapa. Keskeiset seikat, joihin kannattaa kiinnittää huomiota, ovat:

  • CNN-arkkitehtuurin ja häviöfunktion oikea valinta
  • Tiedonsiirtoajan optimointi
  • laitteiston teho

Verkkoarkkitehtuuria kehitettäessä suositellaan käytettäväksi konvolutiivisia neuroverkkoja (convolutional neural networks, CNN), koska ne ovat osoittautuneet tehokkaiksi kuvantunnistus- ja luokittelutehtäviin. Odotettujen tulosten saamiseksi on parempi käyttää pohjana yleisesti hyväksyttyä neuroverkkoarkkitehtuuria, esimerkiksi ResNet- tai EfficientNet-arkkitehtuuria.

Koulutettaessa neuroverkkoa kasvojentunnistusohjelmiston kehitystarkoituksiin meidän tulisi useimmissa tapauksissa minimoida virheet. Tässä on ratkaisevan tärkeää ottaa huomioon häviöfunktiot, joita käytetään todellisen ja ennustetun tuloksen välisen virheen laskemiseen. Yleisimmin kasvontunnistusjärjestelmissä käytetyt funktiot ovat triplettihäviö ja AM-Softmax.

  • Triplettihäviöfunktio tarkoittaa, että meillä on kolme kuvaa kahdesta eri ihmisestä. Yhdestä henkilöstä on kaksi kuvaa – ankkuri ja positiivinen – ja toisesta henkilöstä kolmas kuva – negatiivinen -. Verkkoparametrit opitaan niin, että samoja henkilöitä lähennetään ominaisuusavaruudessa ja erotetaan eri henkilöt toisistaan.
  • AM-Softmax-funktio on yksi viimeisimmistä tavallisen Softmax-funktion muunnoksista, jossa hyödynnetään tiettyä additiiviseen marginaaliin perustuvaa regularisointia. Sen avulla voidaan saavuttaa parempi luokkien erotettavuus ja siten parantaa kasvontunnistusjärjestelmän tarkkuutta.

Neuraaliverkon parantamiseen on myös useita lähestymistapoja. Kasvontunnistusjärjestelmissä mielenkiintoisimpia ovat tiedon tislaus, siirto-oppiminen, kvantisointi ja syvyyserotettavat konvoluutiot.

  • Tiedon tislauksessa käytetään kahta erikokoista verkkoa, kun suuri verkko opettaa omaa pienempää muunnostaan. Keskeinen arvo on, että harjoittelun jälkeen pienempi verkko toimii nopeammin kuin suuri verkko antaen saman tuloksen.
  • Transfer learning -lähestymistapa mahdollistaa tarkkuuden parantamisen harjoittelemalla koko verkkoa tai vain tiettyjä kerroksia tietyllä aineistolla. Jos esimerkiksi kasvojentunnistusjärjestelmässä on rotuharhaongelmia, voimme ottaa tietyn kuvajoukon, vaikkapa kiinalaisten kuvia, ja kouluttaa verkkoa niin, että saavutetaan suurempi tarkkuus.
  • Kvantifiointilähestymistapa parantaa neuroverkkoa, jotta saavutetaan suurempi prosessointinopeus. Lähestymällä liukulukuja käyttävää neuroverkkoa matalan bittileveyden lukuja käyttävällä neuroverkolla voidaan pienentää muistin kokoa ja laskutoimitusten määrää.
  • Syvyydeltään erotettavissa olevat konvoluutiot on kerrosten luokka, jonka avulla CNN voidaan rakentaa paljon pienemmällä parametrimäärällä kuin tavalliset CNN:t. Vaikka laskutoimitusten määrä on pieni, tämä ominaisuus voi parantaa kasvojentunnistusjärjestelmää niin, että se soveltuu mobiilinäkösovelluksiin.

Syväoppimistekniikoiden keskeinen elementti on suuritehoisten laitteistojen vaatimus. Kun syviä neuroverkkoja käytetään kasvojentunnistusohjelmistojen kehittämisessä, tavoitteena on paitsi parantaa tunnistustarkkuutta myös lyhentää vasteaikaa. Siksi esimerkiksi GPU soveltuu paremmin syväoppimiseen perustuviin kasvojentunnistusjärjestelmiin kuin CPU.

Miten toteutimme syväoppimiseen perustuvan kasvojentunnistussovelluksen

Kehittäessämme Big Brotheria (demokamerasovellus) MobiDevissä tavoitteenamme oli luoda biometrinen todentamisohjelmisto, jossa on reaaliaikainen videon suoratoisto. Koska Big Brother on paikallinen konsolisovellus Ubuntulle ja Raspbianille, se on kirjoitettu Golang-kielellä ja konfiguroitu paikallisen kameran ID:llä ja kameran lukijatyypillä JSON-konfigurointitiedoston avulla. Tässä videossa kuvataan, miten Big Brother toimii käytännössä:

Sisäpuolelta katsottuna Big Brother -sovelluksen työsykli koostuu:

1. Kasvojen havaitseminen

Sovellus havaitsee kasvot videovirrassa. Kun kasvot on kuvattu, kuva rajataan ja lähetetään taustapäätteeseen HTTP-lomaketietopyynnön kautta. Backendin API tallentaa kuvan paikalliseen tiedostojärjestelmään ja tallentaa tietueen Detection Logiin personID:n kanssa.

Backend käyttää Golangia ja MongoDB Collectionsia työntekijätietojen tallentamiseen. Kaikki API-pyynnöt perustuvat RESTful API:han.

2. Välitön kasvojentunnistus

Takapäässä on taustatyöläinen, joka etsii uusia luokittelemattomia tietueita ja käyttää Dlibiä laskemaan 128-ulotteisen kasvonpiirteiden kuvausvektorin. Aina kun vektori on laskettu, sitä verrataan useisiin referenssikasvokuviin laskemalla euklidinen etäisyys kunkin tietokannassa olevan henkilön kunkin piirrevektorin kanssa ja etsimällä vastaavuus.

Jos euklidinen etäisyys tunnistettuun henkilöön on alle 0,6, työläinen asettaa tunnistamislokiin personID:n ja merkitsee sen luokitelluksi. Jos etäisyys ylittää 0,6, hän luo lokiin uuden PersonID:n.

3. Jatkotoimet: hälytys, pääsyn myöntäminen ja muut

Tunnistamattoman henkilön kuvat lähetetään vastaavalle esimiehelle ilmoituksin messengereissä olevien chatbottien kautta. Big Brother -sovelluksessa käytimme Microsoft Bot Frameworkia ja Python-pohjaista Errbotia, minkä ansiosta pystyimme toteuttamaan hälytys-chatbotin viidessä päivässä.

Sen jälkeen näitä tietueita voidaan hallinnoida hallintapaneelin kautta, joka tallentaa kuvat tunnuksineen tietokantaan. Kasvontunnistusohjelmisto toimii reaaliajassa ja suorittaa kasvontunnistustehtävät välittömästi. Hyödyntämällä Golangia ja MongoDB-kokoelmia työntekijätietojen tallentamiseen, syötimme tunnukset tietokantaan, joka sisältää 200 merkintää.

Näin Big Brotherin kasvojentunnistussovellus on suunniteltu:

Skaalautuessamme 10 000 merkintään suosittelemme kasvojentunnistusjärjestelmän parantamista, jotta tunnistuksen nopeus pysyisi korkeana takapäässä. Yksi optimaalinen tapa on käyttää rinnakkaistamista. Asettamalla kuorman tasaajan ja rakentamalla useita verkkotyöntekijöitä voimme varmistaa back end -osan asianmukaisen toiminnan ja koko järjestelmän optimaalisen nopeuden.

Muut syväoppimiseen perustuvan tunnistuksen käyttötapaukset

Kasvojentunnistus ei ole ainoa tehtävä, jossa syväoppimiseen perustuvalla ohjelmistokehityksellä voidaan parantaa suorituskykyä. Muita esimerkkejä ovat:

Maskeerattujen kasvojen havaitseminen ja tunnistaminen

Sen jälkeen, kun COVID-19 sai ihmiset monissa maissa käyttämään kasvonaamioita, kasvojentunnistusteknologia kehittyi. Käyttämällä konvoluutio-neuraaliverkkoihin perustuvaa syväoppimisalgoritmia kamerat voivat nyt tunnistaa naamioiden peittämät kasvot. Tietotekniikan insinöörit hyödyntävät sellaisia algoritmeja kuin kasvojen silmiin perustuva monirakenteisuus ja periocular-tunnistusmallit parantaakseen kasvojentunnistusjärjestelmän ominaisuuksia. Tunnistamalla sellaiset kasvojen piirteet kuin otsa, kasvojen ääriviivat, silmä- ja silmänympärysihon yksityiskohdat, kulmakarvat, silmät ja poskiluut, nämä mallit mahdollistavat naamioitujen kasvojen tunnistamisen jopa 95 prosentin tarkkuudella.

Hyvä esimerkki tällaisesta järjestelmästä on erään kiinalaisen yrityksen luoma kasvontunnistusteknologia. Järjestelmä koostuu kahdesta algoritmista: syväoppimiseen perustuvasta kasvontunnistuksesta ja infrapunalämpökuvauslämpötilan mittauksesta. Kun kasvonaamareihin pukeutuneet ihmiset seisovat kameran edessä, järjestelmä poimii kasvonpiirteet ja vertaa niitä tietokannassa oleviin kuviin. Samalla infrapunalämpötilan mittausmekanismi mittaa lämpötilaa ja havaitsee näin ihmiset, joilla on epänormaali lämpötila.

Vikojen havaitseminen

Viime vuosina valmistajat ovat käyttäneet tekoälyyn perustuvaa visuaalista tarkastusta vikojen havaitsemiseen. Syväoppimisalgoritmien kehittymisen ansiosta tämä järjestelmä pystyy määrittämään pienimmätkin naarmut ja halkeamat automaattisesti ja välttämään inhimilliset tekijät.

Vartalon poikkeavuuksien havaitseminen

Israelilainen Aidoc-yritys on kehittänyt syväoppimiseen perustuvan ratkaisun radiologiaa varten. Järjestelmä havaitsee lääketieteellisiä kuvia analysoimalla rintakehän, c-selkärangan, pään ja vatsan poikkeavuudet.

Kaiuttimien tunnistaminen

Phonexia-yhtiön luoma kaiuttimien tunnistusteknologia tunnistaa myös kaiuttimet hyödyntämällä metrisen oppimisen lähestymistapaa. Järjestelmä tunnistaa puhujat äänen perusteella tuottamalla matemaattisia malleja ihmisen puheesta, joita kutsutaan äänijäljiksi. Nämä äänijäljet tallennetaan tietokantoihin, ja kun henkilö puhuu, puhujateknologia tunnistaa yksilöllisen äänijäljen.

Tunteiden tunnistaminen

Ihmisten tunteiden tunnistaminen on nykyään toteutettavissa oleva tehtävä. Seuraamalla kasvojen liikkeitä kameran avulla Emotion Recognition -teknologia luokittelee ihmisen tunteet. Syväoppiva algoritmi tunnistaa ihmisen kasvojen maamerkkipisteet, havaitsee neutraalin ilmeen ja mittaa kasvojen ilmeiden poikkeamia tunnistaen myönteisemmät tai kielteisemmät ilmeet.

Toimintojen tunnistaminen

Visual One -yritys, joka on Nest-kameroiden tarjoaja, varusti tuotteensa tekoälyllä. Hyödyntämällä syväoppimistekniikoita he hienosäätivät Nest Camsin tunnistamaan paitsi erilaisia kohteita, kuten ihmisiä, lemmikkejä, autoja jne., myös toimintoja. Tunnistettavien toimintojen joukko on muokattavissa ja käyttäjän valittavissa. Kamera voi esimerkiksi tunnistaa ovea raapivan kissan tai hellalla leikkivän lapsen.

Yhteenvetona voidaan todeta, että syvät neuroverkot ovat tehokas työkalu ihmiskunnalle. Ja vain ihminen päättää, mikä teknologinen tulevaisuus on tulossa seuraavaksi.

How Deep Learning Can Modernize Face Recognition Software

Download PDF

Klikkaamalla alla olevaa ”GET PDF”-painiketta annat meille suostumuksesi ja oikeuden käsitellä yllä olevissa kentissä ilmoittamiasi henkilötietoja. Henkilötietojasi voidaan käyttää asiakaskuntamme profilointiin ja yritystarjousten lähettämiseen sinulle. Sinulla on oikeus peruuttaa suostumuksesi milloin tahansa lähettämällä pyyntö osoitteeseen [email protected].

Kiitos!

Url ladata PDF-tiedosto lähetettiin sähköpostiisi

Ok

.

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg