Toteuta huijaukset torjuva kasvojentunnistus nopeasti ilman pilviyhteyttä
Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa
2021-02-24
Kasvojentunnistus on yleistynyt älypuhelimissa, mutta yritykset tämän teknologian käyttämiseksi laajemmin muilla alueilla ovat kaatuneet menetelmän tehokkuudesta ja helppokäyttöisyydestä huolimatta. Luotettavien ja edullisten koneoppimisratkaisujen teknisten toteutusvaikeuksien lisäksi kehittäjien on otettava huomioon käyttäjien huolet, jotka liittyvät perinteisten pilviyhteyspohjaisten ja huijauksille alttiiden kasvojentunnistusmenetelmien luotettavuuteen ja tietosuojaan.
Tässä artikkelissa käsitellään turvallisen tunnistamisen vaikeutta, minkä jälkeen siinä esitellään NXP Semiconductors ‑yrityksen laitteisto- ja ohjelmistoratkaisu, joka tarjoaa vastauksen näihin ongelmiin. Sen jälkeen artikkelissa esitetään miten suunnittelijat, joilla ei ole aiempaa kokemusta koneoppimismenetelmistä, voivat toteuttaa tämän ratkaisun avulla nopeasti huijauksia torjuvan älytuotteen ja käyttää kasvojentunnistusta ilman verkkoyhteyttä.
Varman tunnistamisen haasteet älytuotteissa
Kehittäjät ovat älytuotteiden turvallisuuspulmien lisääntyessä huomanneet, että käytettävissä on vain pari toimivaa ratkaisua, joiden avulla käyttäjä voidaan tunnistaa nopeasti, mutta turvallisesti. Perinteiset menetelmät perustuvat usean vaiheen tunnistusmenetelmiin, joissa käytetään jotakin kolmen klassisen tunnistuskeinon yhdistelmää: ”jokin, mitä tiedät”, kuten salasana; ”jokin, mitä sinulla on”, kuten fyysinen avain tai avainkortti, ja ”jokin mitä olet”, tyypillisesti sormenjäljen tai silmän värikalvon kaltainen biometrinen tunniste. Näin toteutettu vahvaan tunnistukseen perustuva oven lukitus saattaa vaatia käyttäjältä salasanan ja avainkortin lisäksi vieläpä sormenjäljenkin. Näin tiukat vaatimukset ovat kuitenkin käytännössä hankalia tai yksinkertaisesti vain epäkäytännöllisiä, kun kuluttajien täytyy pystyä tunnistautumaan älypuhelimeen tai muuhun rutiininomaisesti käytettävään laitteeseen usein ja helposti.
Kasvojentunnistuksen käyttö on helpottanut älypuhelimen käyttäjien tunnistusta huomattavasti, mutta älypuhelimissa on tiettyjä etuja, joita ei ole aivan kaikissa laitteissa. Uusimmissa älypuhelimissa on melkoinen prosessointiteho, ja käyttäjien odottaman laajan palveluvalikoiman tarjoaminen edellyttää jatkuvaa verkkoyhteyttä.
Monien varmaa tunnistusta vaativien tuotteiden perustana oleva alusta tarjoaa yleensä käyttöön vain rajoitetun laskentakyvyn ja yhteydet. Johtavien pilvipalvelujen tarjoajien kasvojentunnistuspalvelut siirtävät prosessointikuorman pilveen, mutta niiden käyttöön tarvitaan vakaa yhteys, jolla varmistetaan vasteen mahdollisimman pieni latenssi. Alustan ominaisuudet eivät aina täytä näitä vaatimuksia. Käyttäjät ovat yhtä paljon tai jopa enemmän huolissaan kuvien lähettämisestä julkisten verkon kautta prosessoitavaksi ja mahdollisesti pilvessä säilytettäväksi sekä siihen liittyvistä tietosuojakysymyksistä.
Kehittäjät voivat NXP Semiconductors i.MX RT106F ‑prosessorien ja niihin liittyvien ohjelmistojen avulla toteuttaa näihin ongelmiin vastaavan kasvojentunnistuksen, jossa ei tarvita verkkoyhteyttä.
Laitteisto ja ohjelmisto luotettavaan kasvojentunnistukseen ilman verkkoyhteyttä
NXP i.MX RT1060 Crossover ‑mikrokontrolleriperheeseen kuuluva NXP i.MX RT106F ‑sarja on suunniteltu tukemaan erityisesti kasvojentunnistuksen helppoa integrointia pieniin älykotilaitteisiin, kuluttajalaitteisiin, turvalaitteisiin sekä teollisuuslaitteisiin ilman verkkoyhteyttä. Näiden Arm® Cortex®-M7 ‑prosessoriytimeen perustuvien prosessorien teollisuuskäyttöön tarkoitetun MIMXRT106FCVL5B-prosessorin taajuus on 528 megahertsiä. Kaupalliseen käyttöön sopivat 600 MHz:n prosessorit, kuten MIMXRT106FDVL6A ja MIMXRT106FDVL6B.
i.MX RT106F-prosessorit tukevat monenlaisia rajapintoja ulkoiselle muistille. Niissä on myös kortilla sijaitseva 1 megatavun (Mt) RAM-muisti (Random Access Memory) (RAM), josta 512 kilotavua (kt) on määritetty yleiskäyttöön ja 512 kt voidaan konfiguroida joko yleiseen käyttöön tai TCM (Tightly Coupled Memory) -muistiksi joko käskyjä tai dataa varten (I-TCM tai D-TCM) . Nämä prosessorit tarjoavat kortilla olevan tehonhallinnan lisäksi kattavan valikoiman integroituja grafiikka-, turvallisuus- ja järjestelmänvalvontatoimintoja sekä kuluttajalaitteiden, teollisuuden käyttöliittymien (HMI) ja moottorien ohjaukseen tyypillisesti tarvittavat analogiset ja digitaaliset rajapinnat (kuva 1).
Kuva 1: NXP Semiconductor i.MX RT106F ‑prosessorit tarjoavat kattavan joukon toimilohkoja, joita kuluttaja-, teollisuus- ja turvallisuustuotteiden kasvojentunnistuksessa tarvitaan. (Kuvan lähde: NXP)
i.MX RT106F ‑prosessorit muistuttavat muita i.MX RT1060 ‑perheen jäseniä, mutta niiden mukana tulee NXP Oasis Lite ‑kasvojentunnistusohjelmiston käytönaikainen lisenssi. Oasis Lite ‑ajoympäristö huolehtii kasvojen havaitsemisesta ja tunnistuksesta. Lisäksi se kykenee jopa rajoitettuun tunteiden luokitteluun. Se käyttää päättelykoneessa neuroverkon (NN) päättelymalleja sekä MiniCV-ohjelmistoa, joka on avoimen lähdekoodin OpenCV-tietokonenäkökirjaston karsittu versio. Päättelykone perustuu NXP NN ‑kirjastoon ja Arm Cortex Microcontroller System Interface Standard NN (CMSIS-NN) ‑kirjastoon (kuva 2).
Kuva 2: NXP Oasis Lite Runtime Library ‑kirjasto sisältää Oasis Lite ‑ytimen, jossa käytetään MiniCV-ohjelmistoa sekä NXP:n ja Armin neuroverkkokirjastoihin perustuvaa NXP-päättelykonetta. (Kuvan lähde: NXP)
Päättelymalli sijaitsee i.MX RT106F ‑alustalla, joten kasvojen havaitseminen ja tunnistaminen tapahtuu paikallisesti, toisin kuin ratkaisuissa, joissa koneoppimisalgoritmien suoritus perustuu pilvipohjaisiin resursseihin. Koska kasvojentunnistus on nyt mahdollista ilman verkkoyhteyttä, älytuotteiden suunnittelijat voivat taata suojatun ja turvallisen tunnistamisen, vaikka kaistanleveys olisi vähäinen tai verkkoyhteys katkeilisi. Tunnistaminen on tällä laitteiston ja ohjelmiston yhdistelmällä myös nopeaa. Prosessorin heräämisestä valmiustilasta lopulliseen kasvojentunnistukseen kuluu nimittäin vain alle 800 millisekuntia (ms).
i.MX RT106F ‑prosessorin kanssa käytettävä Oasis Lite Runtime helpottaa kasvojentunnistusta älytuotteissa ilman verkkoyhteyttä, mutta prosessori ja ajoympäristö ovat tietenkin vain osa tarvittavasta järjestelmäratkaisusta. Tehokkaaseen tunnistusratkaisuun tarvitaan kattavamman komponenttijärjestelmän lisäksi kuvantamiskykyä, jolla voidaan välttyä presentaatiohyökkäyksen nimellä tunnetulta turvallisuusuhalta. Tällaisissa hyökkäyksissä kasvojentunnistukseen perustavaa tunnistamista yritetään huijata valokuvien avulla. NXP SLN-VIZNAS-IOT ‑kehityssarja ja siihen kuuluva ohjelmisto tarjoavat kehittäjille käyttövalmiin alustan ilman verkkoyhteyttä tapahtuvan ja luotettavan kasvojentunnistuksen arviointia, prototyyppien tekemistä ja kehittämistä varten. Näillä voidaan nopeuttaa kasvojentunnistukseen perustuvan autentikoinnin toteuttamista tuotteissa.
Kattava suojattu järjestelmäratkaisu kasvojentunnistuksen
Kuten useimmat kehittyneet prosessorit, myös i.MX RT106F tarvitsee tehokkaan laskenta-alustan toteuttamiseksi vain muutaman lisäkomponentin. NXP SLN-VIZNAS-IOT ‑sarja täydentää suunnittelua. Siinä i.MX RT106F on integroitu lisälaitteisiin, joiden kanssa se muodostaa täydellisen laitteistoalustan (kuva 3).
Kuva 3: NXP SLN-VIZNAS-IOT ‑sarjaan kuuluva moduuli muodostaa tunnistusohjelmiston käyttämiseen tarvittavan robustin liitetyn järjestelmän. (Kuvan lähde: NXP)
Sarjan liitetty moduulikortti sisältää NXP MIMXRT106FDVL6A i.MX RT106F ‑prosessorin, NXP A71CH ‑suojauselementin ja kaksi yhteysvaihtoehtoa: NXP:n MKW41Z512VHT4 Kinetis KW41Z Bluetooth low energy (BLE) ‑järjestelmäpiirin ja Murata Electronics LBEE5KL1DX-883 Wi-Fi/Bluetooth ‑moduulin.
Liitetty moduuli täydentää prosessorin kortilla olevaa muistia 256 megabitin (Mb) Winbond Electronics W9825G6JB SDRAM-muistilla, 256 Mb:n Integrated Silicon Solution Inc. (ISSI) IS26KL256S-DABLI00 NOR ‑flash-muistilla sekä neljän SPI (Serial Peripheral Interface) -liitännän ja 256 Mb:n ISSI IS25LP256D -laitteella.
Moduuliin kuuluu myös Torex Semiconductor XCL214B333DR ‑jännitteenalennusmuunnin, joka täydentää i.MX RT106F ‑prosessorin sisäisen tehonhallintakapasiteettia liitetyn moduulikortin lisälaitteita varten.
Liitettyyn moduuliin asennetaan vuorostaan näkösovelluskortti, jolla on Murata Electronics IRA-S210ST01 ‑PIR-anturi (passiivinen infrapuna-anturi), liiketunnistin, akkulaturi, audiotuki, ledejä, painikkeita ja rajapintaliittimiä (kuva 4).
Kuva 4: NXP SLN-VIZNAS-IOT ‑sarjan liitetty moduuli (vasemmalla) on kiinnitetty näkösovelluskorttiin kasvojentunnistuksen laitteistoperustan muodostamiseksi. (Kuvan lähde: NXP)
Tämän järjestelmäalustan lisäksi kasvojentunnistusjärjestelmään tarvitaan tietenkin sopiva kamerakenno, jolla voidaan ottaa kuva käyttäjän kasvoista. Kuten edellä todetaan, presentaatiohyökkäysten riski vaatii kuitenkin lisäominaisuuksia kuvantamiseen.
Presentaatiohyökkäysten torjuminen
Tutkijat ovat jo vuosia tutkineet erilaisia presentaatiohyökkäyksen havaitsemismenetelmiä (presentation attack detection, PAD). Tällaisissa hyökkäyksissä biometriseen tunnistamiseen perustuvia tunnistamismenetelmiä pyritään huijaamaan esimerkiksi latenttien sormenjälkien tai kasvoja esittävien valokuvien avulla. PAD-menetelmien tarkemman toteutuksen kuvaus ei kuulu tähän artikkeliin. Kyseisiä menetelmiä käytetään yleensä prosessin aikana kerätyn biometrisen datan laadun ja ominaisuuksien syvälliseen analysointiin, minkä lisäksi eloisuuden havaitsemismenetelmillä pyritään määrittämään, onko biometrinen data kerätty sillä hetkellä paikalla olevasta ihmisestä. Monet näistä menetelmistä perustuvat syvän neuroverkon (deep neural network, DNN) malleihin, jotka ovat kasvojentunnistuksen lisäksi tärkeitä myös järjestelmän huijausyrityksen havaitsemisessa. Käyttäjän kasvokuvan ottamiseen käytettävä kuvantamisjärjestelmä voi kuitenkin antaa eloisuutta tukevia lisätietoja.
NXP sisällyttää SLN-VIZNAS-IOT‑sarjaan kameramoduuleja, joissa on kaksi ON Semiconductor MT9M114 ‑kuvakennoa. Yhdessä kamerassa on RGB-suodatin ja toisessa IR-suodatin. Kamerat kytketään näkösovelluskorttiin kameraliitäntöjen kautta. RGB-kamera tuottaa kuvan käyttäen normaalia näkyvän valon aluetta. Kuva, jonka IR-kamera ottaa paikalla olevasta ihmisestä, on erilainen kuin kuva, joka on otettu ihmistä esittävästä kuvasta. SLN-VIZNAS-IOT ‑sarja tarjoaa tämän eloisuuden havaitsemismenetelmän ja sisäisen kasvojentunnistuksensa ansiosta ilman verkkoyhteyttä käytettävän, huijauksia torjuvan kasvojentunnistusratkaisun, joka on pakattu noin 30 x 40 millimetrin (mm) suuruiseen koteloon (kuva 5).
Kuva 5: NXP SLN-VIZNAS-IOT ‑laitteistosarja liittää toisiinsa eloisuuden havaitsemiseen käytettävät kaksi kameraa (ylhäällä) ja näkösovelluskortin (alhaalla). Sarjan liitetty moduuli on valmisratkaisu huijauksia torjuvaan kasvojentunnistukseen ilman verkkoyhteyttä. (Kuvan lähde: NXP)
SLN-VIZNAS-IOT ‑sarjan käytön aloittaminen
NXP SLN-VIZNAS-IOT ‑sarjan mukana toimitetaan käyttövalmiit sisäiset kasvojentunnistusmallit. Kehittäjät vain kytkevät sarjaan USB-kaapelin ja koskettavat sarjassa olevaa painiketta, jolloin laite toteuttaa yksinkertaisen manuaalisen kasvojen rekisteröinnin valmiiksi asennetulla ”elock”-sovelluksella ja siihen liittyvällä mobiilisovelluksella (kuva 6, vasen). Kun sarja kasvojen rekisteröinnin jälkeen tunnistaa rekisteröidyt kasvot, mobiilisovellus näyttää Tervetuloa kotiin ‑sanoman ja avatun lukkosymbolin (kuva 6, oikea).
Kuva 6: NXP SLN-VIZNAS-IOT ‑laitteistosarja on valmis käytettäväksi. Kasvojen rekisteröintiin (vasen) ja tunnistamiseen (oikea) käytetään kumppanisovellusta. (Kuvan lähde: NXP)
Sarjan Oasis Lite ‑kasvojentunnistusohjelmisto käsittelee tietokantansa jopa 3 000 RBG-kasvokuvan mallit 99,6 prosentin tunnistustarkkuudella ja jopa 100 IR-kasvokuvaa huijausten torjumistarkkuudella 96,5 prosenttia. Kuten edellä todetaan, NXP:n laitteisto-ohjelmistoratkaisu tarvitsee kasvojen tunnistamiseen, kuvan kohdistamiseen, laadunvarmistukseen, eloisuuden havaitsemiseen ja tunnistukseen 0,2–1,0 metrin (m) etäisyydeltä alle yhden sekunnin (s). Järjestelmä tukee itse asiassa vaihtoehtoista ”kevyttä” päättelymallia, joka tekee samat tehtävät alle 0,5 sekunnissa, mutta käyttää siihen pienempää tietokantaa, johon mahtuu 1 000 RGB-kasvokuvaa ja 50 IR-kasvokuvaa.
Räätälöityjen kasvojentunnistussovellusten rakentaminen
Sellaisenaan käytettäessä NXP SLN-VIZNAS-IOT ‑sarja antaa kehittäjille mahdollisuuden arvioida ja kehittää kasvojentunnistussovelluksia ja tehdä niistä prototyyppejä nopeasti. Räätälöidyissä laitteistoratkaisuissa sarjaa voi käyttää täydellisenä referenssisuunnitelmana, jolle on saatavana täydelliset piirikaaviot ja yksityiskohtainen osaluettelo (BOM). Ohjelmistokehitykseen käytettävissä on integroitu NXP MCUXpresso ‑kehitysympäristö (IDE) FreeRTOS-tuella ja konfigurointityökaluilla. Tässä sovelluksessa kehittäjät konfiguroivat ohjelmistokehitysympäristönsä yksinkertaisesti verkossa saatavana olevalla NXP MCUXpresso SDK Builderilla yhdessä NXP VIZNAS SDK:n kanssa, joka sisältää NXP Oasis Lite ‑koneoppivan näköohjelman (kuva 7).
Kuva 7: NXP tarjoaa käyttöön kattavan käyttöympäristön, jossa NXP Oasis Lite Runtime Library ‑kirjastoa ja apuohjelmia suoritetaan FreeRTOS-käyttöjärjestelmässä. (Kuvan lähde: NXP)
Ohjelmistopaketti sisältää käyttöympäristön täydellisen lähdekoodin sekä edellä mainitun elock-mallisovelluksen. NXP ei tarjoa Oasis Lite ‑ohjelmansa eikä mallien lähdekoodeja. Kehittäjät voivat kuitenkin käyttää Oasis Lite Runtime Library ‑kirjastoa pakettiin kuuluvan ohjelmointirajapinnan (API) kautta. Tämä sisältää useita tuettujen toimintojen suorittamiseen tarvittavia intuitiivisia funktiokutsuja. Lisäksi kehittäjät voivat käyttää C-määrityksiä ja ‑rakenteita järjestelmän käyttämien parametrien, kuten kuvan koon, muistinkäytön, takaisinkutsujen ja sallittujen toimintojen määrittämiseen. Järjestelmä käyttää näitä kun se käynnistää Oasis Lite ‑ajoympäristön (listaus 1).
Kopioi
typedef struct {
//max input image height, width and channel, min_face: minimum face can be detected
int height;
int width;
//only valid for RGB images; for IR image, always GREY888 format
OASISLTImageFormat_t img_format;
OASISLTImageType_t img_type;
//min_face should not smaller than 40
int min_face;
/*memory pool pointer, this memory pool should only be used by OASIS LIB*/
char* mem_pool;
/*memory pool size*/
int size;
/*output parameter,indicate authenticated or not*/
int auth;
/*callback functions provided by caller*/
InfCallbacks_t cbs;
/*what functions should be enabled in OASIS LIB*/
uint8_t enable_flags;
/*only valid when OASIS_ENABLE_EMO is activated*/
OASISLTEmoMode_t emo_mode;
/*false accept rate*/
OASISLTFar_t false_accept_rate;
/*model class */
OASISLTModelClass_t mod_class;
} OASISLTInitPara_t;
Listaus 1: Kehittäjät voivat muokata ohjelmiston suoritusparametreja muokkaamalla Oasis Liten ajonaikaisessa alustuksessa käyttämien rakenteiden sisältöä, joista tässä näytetään yksi. (Lähdekoodi: NXP)
Elock-mallisovelluksen koodista käyvät ilmi tärkeimmät suunnittelumallit, joita käytetään Oasis-tehtävän käynnistykseen FreeRTOS-käyttöjärjestelmässä, ympäristön alustamiseen ja normaaliin ajovaiheeseen siirtymiseen. Ajoympäristö käsittelee ajovaiheessa kuvan jokaisen ruudun ja suorittaa jokaiselle ympäristöön määritetylle tapahtumalle määritetyt takaisinkutsutoiminnot (listaus 2).
Kopioi
typedef enum {
/*indicate the start of face detection, user can update frame data if it is needed.
* all parameter in callback parameter is invalid.*/
OASISLT_EVT_DET_START,
/*The end of face detection.
*if a face is found, pfaceBox(OASISLTCbPara_t) indicated the rect(left,top,right,bottom point value)
*info and landmark value of the face.
*if no face is found,pfaceBox is NULL, following event will not be triggered for current frame.
*other parameter in callback parameter is invalid */
OASISLT_EVT_DET_COMPLETE,
/*Face quality check is done before face recognition*/
OASISLT_EVT_QUALITY_CHK_START,
OASISLT_EVT_QUALITY_CHK_COMPLETE,
/*Start of face recognition*/
OASISLT_EVT_REC_START,
/*The end of face recognition.
* when face feature in current frame is gotten, GetRegisteredFaces callback will be called to get all
* faces feature registered and OASIS lib will try to search this face in registered faces, if this face
* is matched, a valid face ID will be set in callback parameter faceID and corresponding simularity(indicate
* how confidence for the match) also will be set.
* if no face match, a invalid(INVALID_FACE_ID) will be set.*/
OASISLT_EVT_REC_COMPLETE,
/*start of emotion recognition*/
OASISLT_EVT_EMO_REC_START,
/*End of emotion recognition, emoID indicate which emotion current face is.*/
OASISLT_EVT_EMO_REC_COMPLETE,
/*if user set a registration flag in a call of OASISLT_run and a face is detected, this two events will be notified
* for auto registration mode, only new face(not recognized) is added(call AddNewFace callback function)
* for manu registration mode, face will be added forcely.
* for both cases, face ID of new added face will be set in callback function */
OASISLT_EVT_REG_START,
/*when registration start, for each valid frame is handled,this event will be triggered and indicate
* registration process is going forward a little.
* */
OASISLT_EVT_REG_IN_PROGRESS,
OASISLT_EVT_REG_COMPLETE,
OASISLT_EVT_NUM
} OASISLTEvt_t;
Listaus 2: Oasis Lite ‑ajoympäristö tunnistaa joukon tapahtumia, jotka on dokumentoitu Oasis Lite ‑ajoympäristön otsikkotiedostossa enumeroituna joukkona. (Lähdekoodi: NXP)
Mallisovelluksesta voi käyttää myös vaihekohtaisia virheenkorjaussanomia, joissa kuvaillaan kunkin tapahtumakäsittelijän (EvtHandler) käsittelemän tapahtuman tulokset. Esimerkiksi laaduntarkistuksen valmistuttua (OASISLT_EVT_QUALITY_CHK_COMPLETE) järjestelmä tulostaa tulosta kuvailevat virheenkorjaussanomat, ja kasvojentunnistuksen valmistuttua (OASISLT_EVT_REC_COMPLETE) järjestelmä hakee tunnistettujen kasvojen tietokannasta käyttäjätunnuksen sekä nimen ja tulostaa nämä tiedot (listaus 3).
Kopioi
static void EvtHandler(ImageFrame_t *frames[], OASISLTEvt_t evt, OASISLTCbPara_t *para, void *user_data)
{
[code redacted for simplification]
case OASISLT_EVT_QUALITY_CHK_COMPLETE:
{
UsbShell_Printf("[OASIS]:quality chk res:%d\r\n", para->qualityResult);
pQMsg->msg.info.irLive = para->reserved[5];
pQMsg->msg.info.front = para->reserved[1];
pQMsg->msg.info.blur = para->reserved[3];
pQMsg->msg.info.rgbLive = para->reserved[8];
if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_OK_WITHOUT_GLASSES ||
para->qualityResult == OASIS_QUALITY_RESULT_FACE_OK_WITH_GLASSES)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:ok!\r\n");
}
else if (OASIS_QUALITY_RESULT_FACE_SIDE_FACE == para->qualityResult)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:side face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_TOO_SMALL)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:Small Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FACE_BLUR)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: Blurry Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FAIL_LIVENESS_IR)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: IR Fake Face!\r\n");
}
else if (para->qualityResult == OASIS_QUALITY_RESULT_FAIL_LIVENESS_RGB)
{
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: RGB Fake Face!\r\n");
}
}
break;
[code redacted for simplification]
case OASISLT_EVT_REC_COMPLETE:
{
int diff;
unsigned id = para->faceID;
OASISLTRecognizeRes_t recResult = para->recResult;
timeState->rec_comp = Time_Now();
pQMsg->msg.info.rt = timeState->rec_start - timeState->rec_comp;
face_info.rt = pQMsg->msg.info.rt;
#ifdef SHOW_FPS
/*pit timer unit is us*/
timeState->rec_fps++;
diff = abs(timeState->rec_fps_start - timeState->rec_comp);
if (diff > 1000000 / PIT_TIMER_UNIT)
{
// update fps
pQMsg->msg.info.recognize_fps = timeState->rec_fps * 1000.0f / diff;
timeState->rec_fps = 0;
timeState->rec_fps_start = timeState->rec_comp;
}
#endif
memset(pQMsg->msg.info.name, 0x0, sizeof(pQMsg->msg.info.name));
if (recResult == OASIS_REC_RESULT_KNOWN_FACE)
{
std::string name;
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face id:%d\r\n", id);
DB_GetName(id, name);
memcpy(pQMsg->msg.info.name, name.c_str(), name.size());
face_info.recognize = true;
face_info.name = std::string(name);
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face id:%d name:%s\r\n", id, pQMsg->msg.info.name);
}
else
{
// face is not recognized, do nothing
UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:face unrecognized\r\n");
face_info.recognize = false;
}
VIZN_RecognizeEvent(gApiHandle, face_info);
}
break;
Listaus 3: Kuten tästä NXP-ohjelmistojakelun mallisovelluksen koodipätkästä käy ilmi, tapahtumakäsittelijä käsittelee kasvojentunnistussekvenssin aikana syntyneet tapahtumat. (Lähdekoodi: NXP)
Paitsi että se tukee kasvojen tunnistusprosessin vaatimuksia, NXP SLN-VIZNAS-IOT ‑ohjelmisto on suunniteltu suojelemaan myös käyttöympäristöä. Järjestelmä on ajonaikaisen turvallisuuden takaamiseksi suunniteltu tarkistamaan jokaisen järjestelmään ladattavan allekirjoitetun kuvan eheys ja autenttisuus SLN-VIZNAS-IOT ‑sarjan tiedostojärjestelmään tallennetun sertifikaatin avulla. Koska tämä varmennussekvenssi käynnistyy ROM-muistiin tallennetulla luotetulla käynnistyslataajalla, prosessi tarjoaa luottamusketjun sovellusohjelmiston ajamiselle. Lisäksi varmennusprosessi on suunniteltu ohitettavaksi ohjelmiston kehittämisen ja virheenkorjauksen aikana, koska koodin allekirjoittaminen ja varmennus voivat hidastaa tuotekehitystä. SLN-VIZNAS-IOT ‑sarjan mukana toimitetaan itse asiassa allekirjoitettuja kuvia, mutta koodin allekirjoituksen varmennus ohitetaan oletusarvoisesti. Kehittäjät voivat määrittää helposti vaihtoehdot, joiden avulla täydellinen koodin allekirjoituksen varmennus otetaan käyttöön tuotannossa.
NXP tarjoaa ajoympäristön ja mallisovelluskoodin lisäksi Android-mobiilisovellukset ja niiden täydellisen Java-lähdekoodin. VIZNAS FaceRec Manager ‑sovelluksella voidaan helposti rekisteröidä kasvot sekä hallinnoida käyttäjiä. VIZNAS Companion ‑sovelluksella taas käyttäjät voivat myöntää sarjalle Wi-Fi-käyttöoikeudet olemassa olevan Wi-Fi- tai BLE-yhteyden avulla.
Yhteenveto
Kasvojentunnistus on tehokas keino tunnistaa älylaitteiden käyttäjät, mutta sen toteutus on yleensä vaatinut korkeaa paikallista laskentatehoa tai nopeasti vastaavaa ja aina käytettävissä olevaa suuren kaistanleveyden verkkoyhteyttä. Kasvojentunnistukseen liittyy myös huijausvaara sekä huoli käyttäjien tietosuojasta.
Kuten tässä artikkelissa on esitetty, NXP Semiconductorsin erikoisprosessori ja ohjelmistokirjasto tarjoavat käyttöön vaihtoehtoisen menettelytavan, joka suorittaa tarkan kasvojentunnistuksen alle sekunnissa ilman pilviyhteyttä ja torjuu huijausyrityksiä.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.