Snel spoofing-resistente gezichtsherkenning implementeren zonder cloudverbinding

Door Stephen Evanczuk

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Gezichtsherkenning is algemeen aanvaard voor de authentificatie van de toegang tot smartphones, maar pogingen om deze technologie op ruimere schaal toe te passen zijn op andere gebieden mislukt, ondanks de doeltreffendheid en het gebruiksgemak ervan. Naast de technische uitdagingen van het implementeren van betrouwbare, goedkope oplossingen voor machinaal leren, moeten de ontwikkelaars ook de bezorgdheid van de gebruikers wegnemen over de betrouwbaarheid en privacy van conventionele gezichtsherkenningsmethoden die afhankelijk zijn van cloudverbindingen die kwetsbaar zijn voor spoofing.

In dit artikel wordt ingegaan op de moeilijkheid van veilige authenticatie alvorens een hardware- en softwareoplossing van NXP Semiconductors wordt voorgesteld die de problemen aanpakt. Vervolgens wordt getoond hoe ontwikkelaars zonder voorafgaande ervaring met machine-leermethoden de oplossing kunnen gebruiken om snel offline anti-spoofing gezichtsherkenning te implementeren in een slim product.

De uitdagingen van veilige authenticatie voor slimme producten

Om tegemoet te komen aan de groeiende bezorgdheid over de veiligheid van slimme producten, hebben ontwikkelaars nog maar weinig houdbare opties om gebruikers die snel en veilig toegang willen krijgen, op betrouwbare wijze te authenticeren. Traditionele methoden berusten op multifactorauthenticatiemethoden die berusten op een of andere combinatie van de klassieke drie authenticatiefactoren: "Iets wat je weet", zoals een wachtwoord; "Iets wat je hebt", zoals een fysieke sleutel of sleutelkaart; en "Iets wat je bent", wat typisch een biometrische factor is, zoals een vingerafdruk of iris. Met deze aanpak zou een sterk geauthenticeerd deurslot de gebruiker kunnen verplichten een toegangscode in te voeren, een sleutelkaart te gebruiken en een vingerafdruk af te geven om de deur te ontgrendelen. In de praktijk zijn dergelijke strenge eisen hinderlijk of gewoon onpraktisch voor consumenten die zich vaak en gemakkelijk opnieuw moeten authentiseren met een smartphone of een ander routinematig gebruikt toestel.

Het gebruik van gezichtsherkenning heeft de authenticatie voor smartphonegebruikers aanzienlijk vereenvoudigd, maar smartphones hebben een aantal voordelen die misschien niet in elk toestel beschikbaar zijn. Naast de aanzienlijke verwerkingskracht die beschikbaar is in geavanceerde smartphones, is permanente connectiviteit een fundamentele vereiste voor het leveren van de geavanceerde reeks diensten die de gebruikers ervan routinematig verwachten.

Voor veel producten die veilige authenticatie vereisen, zal het onderliggende besturingsplatform doorgaans bescheidener computerbronnen en beperktere connectiviteit bieden. Gezichtsherkenningsdiensten van de toonaangevende aanbieders van clouddiensten verplaatsen de verwerkingslast naar de cloud, maar de behoefte aan robuuste connectiviteit om een minimale reactietijd te garanderen, kan eisen stellen die de mogelijkheden van het platform te boven gaan. Voor de gebruikers is het even zorgwekkend of zelfs nog zorgwekkender dat hun foto's over openbare netwerken worden verzonden om te worden verwerkt en eventueel in de cloud te worden opgeslagen, hetgeen aanzienlijke privacyproblemen doet rijzen.

Met de i.MX RT106F-processoren en bijbehorende software van NXP Semiconductors kunnen ontwikkelaars nu offline gezichtsherkenning implementeren die deze problemen direct aanpakt.

Hardware en software voor "spoof-proof" offline gezichtsherkenning

De NXP i .MX RT106F-serie maakt deel uit van de NXP i.MX RT1060 Crossover microcontroller (MCU)-familie en is speciaal ontworpen ter ondersteuning van een eenvoudige integratie van offline gezichtsherkenning in smart home-apparaten, consumententoestellen, beveiligingsapparaten en industriële apparatuur. Gebaseerd op een Arm® Cortex®-M7 processorkern, draaien de processoren op 528 megahertz (MHz) voor de industriële MIMXRT106FCVL5B, of 600 MHz voor commerciële processors zoals de MIMXRT106FDVL6A en MIMXRT106FDVL6B.

Naast ondersteuning van een breed scala aan externe geheugeninterfaces, bevatten de i.MX RT106F-processors 1 megabyte (Mbyte) RAM op de chip, waarvan 512 kilobyte (Kbyte) kan worden geconfigureerd als RAM voor algemeen gebruik, en 512 Kbyte die kan worden geconfigureerd als RAM voor algemeen gebruik of als strak gekoppeld geheugen (TCM) voor instructies (I-TCM) of gegevens (D-TCM). Samen met het vermogensbeheer op de chip bieden deze processors een uitgebreide reeks geïntegreerde functies voor grafische verwerking, beveiliging, systeembesturing en zowel analoge als digitale interfaces, die typisch zijn voor consumentenapparatuur, industriële mens/machine-interfaces (HMI's) en motorbesturing (Afbeelding 1).

Schema van de i.MX RT106F-processors van NXP Semiconductor (klik om te vergroten)Afbeelding 1: De i.MX RT106F-processors van NXP Semiconductor combineren een volledige set functionele blokken die nodig zijn voor de ondersteuning van gezichtsherkenning voor consumenten-, industriële en beveiligingsproducten. (Bron afbeelding: NXP)

Hoewel vergelijkbaar met andere leden van de i.MX RT1060-familie, wordt bij de i.MX RT106F-processors een runtime-licentie geleverd voor NXP's gezichtsherkenningssoftware Oasis Lite. De Oasis Lite runtime omgeving, ontworpen om inferentie op deze klasse processoren te versnellen, voert gezichtsdetectie, -herkenning en zelfs beperkte emotieclassificatie uit met behulp van neurale netwerk (NN) inferentie modellen die draaien op een inferentie engine en MiniCV-een uitgeklede versie van de open source OpenCV computer vision library. De inferentie-engine is gebaseerd op een NXP NN bibliotheek en de Arm Cortex Microcontroller System Interface Standard NN (CMSIS-NN) bibliotheek (Afbeelding 2).

Schema van NXP Oasis Lite runtime bibliotheekAfbeelding 2: De NXP Oasis Lite runtime library omvat een Oasis Lite core die MiniCV gebruikt en een NXP inferentie engine die is gebouwd op neurale netwerkbibliotheken van NXP en Arm. (Bron afbeelding: NXP)

De inferentiemodellen bevinden zich op het i.MX RT106F-platform, zodat gezichtsdetectie en -herkenning lokaal worden uitgevoerd, in tegenstelling tot andere oplossingen die afhankelijk zijn van cloudgebaseerde bronnen om de algoritmen voor machinaal leren uit te voeren. Dankzij deze offline gezichtsherkenning kunnen ontwerpers van slimme producten zorgen voor een persoonlijke, veilige authenticatie ondanks een lage bandbreedte of een onvolledige internetverbinding. Bovendien verloopt de verificatie met deze combinatie van hardware en software snel: de processor heeft minder dan 800 milliseconden (ms) nodig om uit de spaarstand te ontwaken en de gezichtsherkenning te voltooien.

In combinatie met de i.MX RT106F-processor vereenvoudigt de Oasis Lite runtime de implementatie van offline gezichtsherkenning voor slimme producten, maar de processor en runtime-omgeving zijn natuurlijk slechts een deel van een vereiste systeemoplossing. Naast een completere set systeemcomponenten vereist een effectieve authenticatieoplossing beeldvormingscapaciteit die een type beveiligingsbedreiging, presentatie-aanvallen genaamd, kan mitigeren. Deze aanvallen proberen de gezichtsherkenning te vervalsen door foto's te gebruiken. Voor ontwikkelaars die snel gezichtsverificatie in hun eigen producten willen toepassen, bieden de NXP SLN-VIZNAS-IOT-ontwikkelingskit en bijbehorende software een kant-en-klaar platform voor evaluatie, prototyping en ontwikkeling van offline, anti-spoofing gezichtsherkenning.

Complete oplossing voor veilige systemen voor gezichtsherkenning

Zoals voor de meeste geavanceerde processoren geldt, zijn er voor de i.MX RT106F-processor slechts enkele extra componenten nodig om een effectief computerplatform te bieden. De NXP SLN-VIZNAS-IOT-kit voltooit het ontwerp door de i.MX RT106F te integreren met aanvullende apparaten om een compleet hardwareplatform te bieden (Afbeelding 3).

Schema van NXP SLN-VIZNAS-IOT-kit (klik om te vergroten)Afbeelding 3: De NXP SLN-VIZNAS-IOT-kit bevat een aangesloten module die een robuust verbonden systeemplatform biedt dat nodig is om authenticatiesoftware uit te voeren. (Bron afbeelding: NXP)

Het aangesloten modulebord van de kit combineert een NXP MIMXRT106FDVL6A i.MX RT106F-processor, een NXP A71CH secure element en twee connectiviteitsopties-NXP's MKW41Z512VHT4 Kinetis KW41Z Bluetooth low energy (BLE) system-on-chip (SoC) en Murata Electronics' LBEE5KL1DX-883 Wi-Fi/Bluetooth-module.

Als aanvulling op het processorgeheugen op de chip, voegt de aangesloten module de W9825G6JB 256 megabit (Mbit) synchrone dynamische RAM (SDRAM) van Winbond Electronics toe, een Integrated Silicon Solution. Inc. (ISSI) IS26KL256S-DABLI00 256 Mbit NOR flash, en ISSI's IS25LP256D 256 Mbit Quad Serial Peripheral Interface (SPI) apparaat.

Tot slot voegt de module een Torex Semiconductor XCL214B333DR buckconvertor toe om de interne vermogensbeheermogelijkheden van de i.MX RT106F-processor aan te vullen voor de extra apparaten op het aangesloten modulebord.

De aangesloten module wordt op zijn beurt gemonteerd op een vision-toepassingskaart die een Murata Electronics IRA-S210ST01 passief infrarood (PIR)-sensor, een bewegingssensor, een batterijlader, audio-ondersteuning, lichtgevende diodes (LED's), knoppen en interfaceconnectors combineert (Afbeelding 4).

Afbeelding van NXP SLN-VIZNAS-IOT-kit (klik om te vergroten)Afbeelding 4: In de NXP SLN-VIZNAS-IOT-kit wordt de aangesloten module (links) op het vision-toepassingsbord bevestigd om de hardwarefundering voor gezichtsherkenning te leveren. (Bron afbeelding: NXP)

Naast dit systeemplatform vereist het ontwerp van een gezichtsherkenningssysteem uiteraard een geschikte camerasensor om een beeld van het gezicht van de gebruiker vast te leggen. Zoals eerder gezegd, vereist de bezorgdheid over presentatie-aanvallen echter extra beeldvormingsmogelijkheden.

Verzwakken van presentatie-aanvallen

Onderzoekers hebben jarenlang verschillende methoden voor presentatie-aanvaldetectie (PAD) onderzocht die zijn ontworpen om pogingen te verminderen, zoals het gebruik van latente vingerafdrukken of afbeeldingen van een gezicht om biometrische authenticatiesystemen te vervalsen. Hoewel de details ver buiten het bestek van dit artikel vallen, wordt bij PAD-methoden in het algemeen gebruik gemaakt van een grondige analyse van de kwaliteit en de kenmerken van de biometrische gegevens die als onderdeel van het proces zijn vastgelegd, alsmede van methoden voor "liveness"-detectie, bedoeld om vast te stellen of de biometrische gegevens zijn vastgelegd bij een levende persoon. Onderliggend aan veel van deze verschillende methoden spelen DNN-modellen (deep neural network) een belangrijke rol, niet alleen bij gezichtsherkenning, maar ook bij het identificeren van pogingen om het systeem te spoofen. Niettemin kan het beeldvormingssysteem dat wordt gebruikt om het gezicht van de gebruiker vast te leggen, extra ondersteuning bieden bij de detectie van levendigheid.

Voor de SLN-VIZNAS-IOT-kit levert NXP cameramodules die een paar MT9M114-beeldsensors van ON Semiconductor bevatten. Hier is één camera uitgerust met een rood, groen, blauw (RGB) filter, en de andere camera met een infraroodfilter (IR). De RGB-camera, die via camera-interfaces is verbonden met het vision-toepassingsbord, genereert een normaal zichtbaar lichtbeeld, terwijl de IR-camera een beeld vastlegt dat anders zou zijn voor een levende persoon dan een beeld van de persoon. Door gebruik te maken van deze aanpak van levendigheidsdetectie en van de interne gezichtsherkenningscapaciteit, biedt de SLN-VIZNAS-IOT-kit offline gezichtsherkenning tegen spoofing in een pakket van ongeveer 30 x 40 millimeter (mm) (Afbeelding 5).

Afbeelding van NXP SLN-VIZNAS-IOT-hardwarekitAfbeelding 5: De NXP SLN-VIZNAS-IOT-hardwarekit integreert een dubbel camerasysteem voor levendheidsdetectie (boven) en een vision-toepassingskaart (onder) met een aangesloten module om een drop-in oplossing te bieden voor offline gezichtsherkenning met anti-spoofingmogelijkheid. (Bron afbeelding: NXP)

Aan de slag met de SLN-VIZNAS-IOT-kit

De NXP SLN-VIZNAS-IOT-kit wordt gebruiksklaar geleverd met ingebouwde gezichtsherkenningsmodellen. Ontwikkelaars sluiten een USB-kabel aan en drukken op een knop op de kit om een eenvoudige handmatige gezichtsregistratie uit te voeren met behulp van de vooraf geladen "elock"-toepassing en de bijbehorende mobiele app (Afbeelding 6, links). Na registratie toont de mobiele app een "welkom thuis"-bericht en een "ontgrendeld"-label wanneer de kit het geregistreerde gezicht authentiseert (Afbeelding 6, rechts).

Afbeelding van NXP SLN-VIZNAS-IOT-hardwarekit werkt out of the boxAfbeelding 6: De NXP SLN-VIZNAS-IOT-hardwarekit werkt out of the box en maakt gebruik van een bijbehorende app om een gezicht te registreren (links) en geregistreerde gezichten te herkennen (rechts). (Bron afbeelding: NXP)

De Oasis Lite gezichtsherkenningssoftware van de kit verwerkt modellen uit de database van maximaal 3000 RGB-gezichten met een herkenningsnauwkeurigheid van 99,6%, en maximaal 100 IR-gezichten met een anti-spoofingnauwkeurigheid van 96,5%. Zoals gezegd heeft de hardware/software-oplossing van NXP minder dan één seconde (s) nodig om gezichtsherkenning, beelduitlijning, kwaliteitscontrole, levendheidsdetectie en -herkenning uit te voeren over een bereik van 0,2 tot 1,0 meter (m). In feite ondersteunt het systeem een alternatief "licht"-inferentiemodel waarmee dezelfde sequentie in minder dan 0,5 s kan worden uitgevoerd, maar dat een kleinere maximale databasegrootte van 1000 RGB-gezichten en 50 IR-gezichten ondersteunt.

Bouwen van aangepaste gezichtsherkenningstoepassingen

Met de NXP SLN-VIZNAS-IOT-kit kunnen ontwikkelaars snel gezichtsherkenningstoepassingen evalueren, prototypen maken en ontwikkelen. Bij het creëren van klantspecifieke hardware-oplossingen dient de kit als een compleet referentieontwerp met volledige schema's en een gedetailleerde stuklijst (Bill of Materials, BOM). Voor software-ontwikkeling kunnen programmeurs gebruik maken van de NXP MCUXpresso geïntegreerde ontwikkelingsomgeving (IDE) met FreeRTOS-ondersteuning en configuratiehulpmiddelen. Voor deze toepassing gebruiken ontwikkelaars eenvoudigweg NXP's online MCUXpresso SDK Builder om hun softwareontwikkelingsomgeving te configureren met NXP's VIZNAS SDK, die de NXP Oasis Lite machine learning vision engine bevat (Afbeelding 7).

Schema van NXP biedt een uitgebreide software omgevingAfbeelding 7: NXP biedt een uitgebreide softwareomgeving die de NXP Oasis Lite runtime library en utility middleware uitvoert op het FreeRTOS-besturingssysteem. (Bron afbeelding: NXP)

Het softwarepakket bevat de volledige broncode voor de besturingsomgeving en de eerder genoemde elock-voorbeeldtoepassing. NXP biedt geen broncode voor zijn eigen Oasis Lite-engine of voor de modellen. In plaats daarvan werken ontwikkelaars met de Oasis Lite runtime library met behulp van de meegeleverde application programming interface (API), die een set intuïtieve functie-aanroepen bevat om ondersteunde bewerkingen uit te voeren. Bovendien gebruiken ontwikkelaars een meegeleverde set C definities en structuren om verschillende parameters op te geven, waaronder beeldgrootte, geheugentoewijzing, callbacks en ingeschakelde functies die door het systeem worden gebruikt bij het opstarten van de Oasis Lite runtime omgeving (Lijst 1).

Kopieer
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;

Lijst 1: Ontwikkelaars kunnen parameters voor de uitvoering van software wijzigen door de inhoud van structuren te wijzigen, zoals de structuur die hier wordt getoond voor de runtime-initialisatie van Oasis Lite. (Bron code: NXP)

De elock voorbeeld applicatiecode demonstreert de belangrijkste ontwerppatronen voor het starten van Oasis als een taak die draait onder FreeRTOS, het initialiseren van de omgeving en het ingaan op de normale runfase. In de run-fase werkt de runtime-omgeving op elk frame van een beeld, waarbij de verstrekte callback-functies worden uitgevoerd die zijn gekoppeld aan elke gebeurtenis die in de omgeving is gedefinieerd (Lijst 2).

Kopieer
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;

Lijst 2: De Oasis Lite runtime herkent een reeks gebeurtenissen gedocumenteerd als een opgesomde set in het Oasis Lite runtime header bestand. (Bron code: NXP)

De voorbeeldtoepassing kan ontwikkelaars stap voor stap debugberichten bezorgen die de resultaten beschrijven van elke gebeurtenis die door de gebeurtenisbehandelaar (EvtHandler) wordt verwerkt. Bijvoorbeeld, nadat de kwaliteitscontrole is voltooid (OASISLT_EVT_QUALITY_CHK_COMPLETE), drukt het systeem debug-berichten af die het resultaat beschrijven, en nadat de gezichtsherkenning is voltooid (OASISLT_EVT_REC_COMPLETE), haalt het systeem het gebruikers-id en de naam uit zijn database voor herkende gezichten en drukt die informatie af (Lijst 3).

Kopieer
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;

Lijst 3: Zoals te zien is in dit fragment uit een voorbeeldtoepassing in de NXP-softwaredistributie, verwerkt een event handler gebeurtenissen die zich voordoen tijdens de gezichtsherkenningssequentie. (Bron code: NXP)

De NXP SLN-VIZNAS-IOT-software ondersteunt niet alleen de verwerking van gezichtsherkenningseisen, maar is ook ontworpen om de gebruiksomgeving te beschermen. Om runtime beveiliging te garanderen, is het systeem ontworpen om de integriteit en authenticiteit van elk ondertekend image dat in het systeem wordt geladen te verifiëren met behulp van een certificaat dat in het bestandssysteem van de SLN-VIZNAS-IO-kit is opgeslagen. Aangezien deze verificatiesequentie begint met een vertrouwde bootloader die is opgeslagen in het alleen-lezengeheugen (ROM), zorgt dit proces voor een vertrouwensketen voor het uitvoeren van toepassingsfirmware. Omdat het ondertekenen en verifiëren van code de ontwikkeling kan vertragen, is dit verificatieproces zo ontworpen dat het kan worden omzeild tijdens het ontwerpen en debuggen van software. In feite wordt de SLN-VIZNAS-IOT-kit vooraf geladen met ondertekende afbeeldingen, maar de verificatie van de codehandtekening wordt standaard omzeild. Ontwikkelaars kunnen eenvoudig opties instellen om volledige verificatie van codehandtekeningen voor productie mogelijk te maken.

Samen met de runtime-omgeving en bijbehorende voorbeeldapplicatiecode levert NXP mobiele Android-apps met volledige java-broncode. Eén app, de VIZNAS FaceRec Manager, biedt een eenvoudige interface voor het registreren van gezichten en het beheren van gebruikers. Met een andere app, de VIZNAS Companion-app, kunnen gebruikers de kit voorzien van Wi-Fi-referenties via een bestaande Wi-Fi- of BLE-verbinding.

Conclusie

Gezichtsherkenning is een doeltreffende methode om de toegang tot intelligente producten te verifiëren, maar voor de toepassing ervan zijn meestal lokale krachtige computers of een permanente verbinding met hoge bandbreedte nodig om snel te kunnen reageren. Het is ook het doelwit geweest van spoofing en er bestaat bezorgdheid over de privacy van de gebruikers.

Zoals aangetoond bieden een gespecialiseerde processor en softwarebibliotheek van NXP Semiconductors een alternatieve aanpak die offline gezichtsherkenning in minder dan een seconde nauwkeurig kan uitvoeren zonder cloudverbinding, terwijl pogingen tot spoofing worden ondervangen.

DigiKey logo

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.

Achtergrondinformatie over deze auteur

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk heeft meer dan 20 jaar ervaring in het schrijven voor en over de elektronicasector met betrekking tot heel wat onderwerpen, waaronder hardware, software, systemen en toepassingen zoals het IoT. Hij behaalde zijn filosofiediplomain neurowetenschappen over neuronale netwerken en werkte in de ruimtevaartsector op massaal verspreide veilige systemen en algoritmeversnellingsmethoden. Wanneer hij geen artikels over technologie en techniek schrijft, werkt hij aan toepassingen voor “deep learning” voor herkennings- en aanbevelingssystemen.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey