PLN | EUR | USD

Szybkie wdrożenie rozpoznawania twarzy odpornego na spoofing bez połączenia z chmurą

Przez: Stephen Evanczuk

Przekazane przez: Północnoamerykańscy redaktorzy Digi-Key

Rozpoznawanie twarzy zyskało powszechną akceptację w uwierzytelnianiu dostępu do smartfonów, ale próby szerszego zastosowania tej technologii nie powiodły się w innych dziedzinach, mimo jej skuteczności i łatwości użycia. Oprócz technicznych wyzwań związanych z wdrażaniem niezawodnych, tanich rozwiązań uczenia maszynowego, deweloperzy muszą zająć się obawami użytkowników dotyczącymi niezawodności i prywatności konwencjonalnych metod rozpoznawania twarzy, które zależą od połączeń w chmurze, podatnych na spoofing.

Artykuł omawia trudności związane z bezpiecznym uwierzytelnianiem, a następnie przedstawia rozwiązanie sprzętowe i programowe firmy NXP Semiconductors, które rozwiązuje te problemy. Następnie demonstruje, jak deweloperzy bez wcześniejszego doświadczenia w metodach uczenia maszynowego mogą wykorzystać to rozwiązanie do szybkiego wdrożenia odpornego na spoofing rozpoznawania twarzy w trybie offline w inteligentnym produkcie.

Wyzwania związane z bezpiecznym uwierzytelnianiem w produktach inteligentnych

W obliczu rosnących obaw związanych z bezpieczeństwem produktów inteligentnych deweloperzy znaleźli się w sytuacji, w której mają do wyboru niewiele opcji niezawodnego uwierzytelniania użytkowników poszukujących szybkiego, ale bezpiecznego dostępu. Tradycyjne metody polegają na wieloskładnikowych metodach uwierzytelniania, które opierają się na pewnej kombinacji klasycznych trzech składników uwierzytelniania: „Coś, co wiesz”, na przykład hasło; „Coś, co masz”, na przykład klucz fizyczny lub karta z kluczem; i „Coś, czym jesteś”, co jest zwykle czynnikiem biometrycznym, takim jak odcisk palca lub obraz tęczówki. Stosując to podejście, silnie uwierzytelniony zamek drzwiowy może wymagać od użytkownika wprowadzenia kodu dostępu, użycia karty kluczowej, a następnie wprowadzenia odcisku palca w celu otwarcia drzwi. W praktyce tak rygorystyczne wymogi są uciążliwe lub po prostu niepraktyczne dla konsumentów, którzy muszą często i łatwo ponownie uwierzytelniać się w smartfonie lub innym często używanym urządzeniu.

Zastosowanie rozpoznawania twarzy znacznie uprościło uwierzytelnianie dla użytkowników smartfonów, ale smartfony mają pewne zalety, które mogą nie być dostępne w innych urządzeniach. Oprócz znacznej mocy obliczeniowej dostępnej w najnowocześniejszych smartfonach, zawsze dostępna łączność jest podstawowym wymogiem dla dostarczania wyrafinowanego zakresu usług, jakich rutynowo oczekują użytkownicy.

W przypadku wielu produktów, które wymagają bezpiecznego uwierzytelniania, podstawowa platforma operacyjna zwykle zapewnia skromniejsze zasoby obliczeniowe i bardziej ograniczoną łączność. Usługi rozpoznawania twarzy oferowane przez wiodących dostawców usług w chmurze przenoszą ciężar przetwarzania do chmury, ale potrzeba dobrej jakości łączności zapewniającej minimalne opóźnienia reakcji może narzucić wymagania, które są poza możliwościami platformy. Równie lub bardziej niepokojące dla użytkowników jest to, że przesyłanie ich wizerunku przez sieci publiczne w celu przetwarzania i potencjalnego przechowywania w chmurze wiąże się z istotnymi kwestiami dotyczącymi prywatności.

Korzystając z procesorów i.MX RT106F firmy NXP Semiconductors i odpowiedniego oprogramowania, deweloperzy mogą teraz wdrażać rozpoznawanie twarzy w trybie offline, które bezpośrednio rozwiązuje te problemy.

Sprzęt i oprogramowanie do odpornego na spoofing rozpoznawania twarzy w trybie offline

Należąca do grupy mikrokontrolerów (MCU) NXP i.MX RT1060 Crossover seria NXP i.MX RT106F została specjalnie zaprojektowana, aby wspierać łatwą integrację rozpoznawania twarzy w trybie offline w urządzeniach domu inteligentnego, urządzeniach konsumenckich, urządzeniach zabezpieczających i przemysłowych. Bazujące na rdzeniu procesora Arm® Cortex®-M7 procesory pracują z częstotliwością 528MHz w wersji przemysłowej MIMXRT106FCVL5B lub 600MHz w wersjach komercyjnych MIMXRT106FDVL6A i MIMXRT106FDVL6B.

Oprócz obsługi szerokiego zakresu interfejsów pamięci zewnętrznej, procesory i.MX RT106F zawierają 1MB wbudowanej pamięci o dostępie swobodnym (RAM), w tym 512kB skonfigurowanych jako pamięć RAM ogólnego przeznaczenia oraz 512kB które można skonfigurować jako pamięć RAM ogólnego przeznaczenia lub jako pamięć ściśle przyległą (TCM) na instrukcje (I-TCM) lub dane (D-TCM). Oprócz wbudowanego zarządzania energią, procesory te oferują bogaty zestaw zintegrowanych funkcji graficznych, zabezpieczeń, kontroli systemu oraz interfejsów analogowych i cyfrowych potrzebnych do obsługi urządzeń powszechnego użytku, przemysłowych interfejsów człowiek-maszyna (HMI) oraz sterowania silnikami (ilustracja 1).

Schemat procesorów i.MX RT106F firmy NXP Semiconductor (kliknij, aby powiększyć)Ilustracja 1: procesory i.MX RT106F firmy NXP Semiconductor łączą w sobie pełen zestaw bloków funkcjonalnych potrzebnych do obsługi rozpoznawania twarzy w produktach konsumenckich, przemysłowych i zabezpieczeniach. (Źródło obrazu: NXP)

Chociaż procesory i.MX RT106F są podobne do innych urządzeń z grupy i.MX RT1060, zawierają w pakiecie licencję środowiska uruchomieniowego na oprogramowanie do rozpoznawania twarzy Oasis Lite firmy NXP. Zaprojektowane w celu przyspieszenia wnioskowania na tej klasie procesorów, środowisko uruchomieniowe Oasis Lite wykonuje wykrywanie i rozpoznawanie twarzy, a nawet ograniczoną klasyfikację emocji przy użyciu modeli wnioskowania opartych na sieciach neuronowych (NN) wykorzystujących aparat wnioskowania i MiniCV - okrojoną wersję otwartoźródłowej biblioteki systemu wizyjnego OpenCV. Aparat wnioskowania bazuje na bibliotece NN firmy NXP oraz bibliotece Arm Cortex Microcontroller System Interface Standard NN (CMSIS-NN) (ilustracja 2).

Schemat biblioteki środowiska uruchomieniowego NXP Oasis LiteIlustracja 2: biblioteka środowiska uruchomieniowego NXP Oasis Lite zawiera rdzeń Oasis Lite wykorzystujący MiniCV oraz aparat wnioskowania NXP zbudowany na bazie bibliotek sieci neuronowych firm NXP i Arm. (Źródło obrazu: NXP)

Modele wnioskowania znajdują się na platformie i.MX RT106F, więc wykrywanie i rozpoznawanie twarzy odbywa się lokalnie, w przeciwieństwie do innych rozwiązań, które do uruchamiania algorytmów uczenia maszynowego wykorzystują zasoby w chmurze. Dzięki możliwości rozpoznawania twarzy w trybie offline, projektanci inteligentnych produktów mogą zapewnić prywatne, bezpieczne uwierzytelnianie pomimo małej szerokości pasma lub słabej łączności z Internetem. Co więcej, dzięki temu połączeniu sprzętu i oprogramowania uwierzytelnianie przebiega szybko - procesor potrzebuje niecałych 800ms, aby wybudzić się z trybu gotowości o niskim poborze mocy i wykonać rozpoznawanie twarzy.

Używane z procesorem i.MX RT106F środowisko uruchomieniowe Oasis Lite upraszcza wdrożenie rozpoznawania twarzy offline w inteligentnych produktach, ale procesor i środowisko uruchomieniowe są oczywiście tylko częścią wymaganego rozwiązania systemowego. Oprócz pełniejszego zestawu komponentów systemowych, skuteczne rozwiązanie uwierzytelniania wymaga możliwości przetwarzania obrazu, które mogą zniwelować rodzaj zagrożenia bezpieczeństwa zwany atakami prezentacyjnymi. Ataki te próbują oszukać uwierzytelnianie za pomocą rozpoznawania twarzy przy użyciu fotografii. Dla deweloperów, którzy chcą szybko wdrożyć uwierzytelnianie na podstawie twarzy we własnych produktach, zestaw rozwojowy NXP SLN-VIZNAS-IOT i powiązane oprogramowanie stanowią gotową do użycia platformę do ewaluacji, prototypowania i rozwoju odpornego na spoofing rozpoznawania twarzy w trybie offline.

Kompletne, bezpieczne rozwiązanie systemowe do rozpoznawania twarzy

Jak w przypadku większości zaawansowanych procesorów, procesor i.MX RT106F wymaga tylko kilku dodatkowych komponentów, aby stworzyć efektywną platformę obliczeniową. Zestaw NXP SLN-VIZNAS-IOT dopełnia projekt, integrując mikrokontroler i.MX RT106F z dodatkowymi urządzeniami w celu uzyskania kompletnej platformy sprzętowej (ilustracja 3).

Schemat zestawu NXP SLN-VIZNAS-IOT (kliknij, aby powiększyć)Ilustracja 3: Zestaw NXP SLN-VIZNAS-IOT zawiera moduł połączony, który zapewnia solidną platformę systemu połączonego, niezbędną do uruchomienia oprogramowania uwierzytelniającego. (Źródło obrazu: NXP)

Dostępna w zestawie płytka modułu połączonego zawiera procesor NXP MIMXRT106FDVL6A i.MX RT106F, element bezpieczny NXP A71CH i dwie opcje łączności - układ SoC MKW41Z512VHT4 Kinetis KW41Z Bluetooth low energy (BLE) firmy NXP i moduł Wi-Fi/Bluetooth firmy Murata Electronics - LBEE5KL1DX-883.

W celu uzupełnienia zintegrowanej pamięci procesora podłączony moduł dodaje 256Mb synchronicznej pamięci dynamicznej RAM (SDRAM) firmy Winbond Electronics W9825G6JB, dostarczonej przez firmę Integrated Silicon Solution. Inc. (ISSI) pamięć flash NOR 256MbIS26KL256S-DABLI00, oraz poczwórny szeregowy interfejs urządzeń peryferyjnych (SPI) IS25LP256D 256Mb firmy ISSI.

Moduł zawiera również dostarczoną przez firmę Torex Semiconductor przetwornicę obniżającą XCL214B333DR uzupełniającą wewnętrzne możliwości zarządzania energią przez procesor i.MX RT106F w odniesieniu do dodatkowych urządzeń na płytce modułu połączonego.

Moduł połączony z kolei montuje się na płycie aplikacji wizyjnej, która łączy pasywny czujnik podczerwieni (PIR) IRA-S210ST01 firmy Murata Electronics, czujnik ruchu, ładowarkę baterii, obsługę audio, diody elektroluminescencyjne (LED), przyciski i złącza interfejsu (ilustracja 4).

Wygląd zestawu NXP SLN-VIZNAS-IOT (kliknij, aby powiększyć)Ilustracja 4: w zestawie NXP SLN-VIZNAS-IOT moduł połączony (po lewej) jest dołączony do płytki aplikacji wizyjnej, aby zapewnić podstawę sprzętową do rozpoznawania twarzy. (Źródło obrazu: NXP)

Wraz z tą platformą systemową projekt systemu rozpoznawania twarzy oczywiście wymaga odpowiedniego czujnika kamery do przechwytywania obrazu twarzy użytkownika. Jak jednak wspomniano wcześniej, obawy związane z atakami prezentacyjnymi wymagają dodatkowych możliwości przetwarzania obrazu.

Przeciwdziałanie atakom prezentacyjnym

Naukowcy od lat badają różne metody wykrywania ataków prezentacyjnych (presentation attack detection - PAD), których celem jest zniwelowanie prób wykorzystania pozostawionych linii papilarnych lub obrazów twarzy do oszukania systemów uwierzytelniania opartych na danych biometrycznych. Chociaż szczegóły wykraczają poza zakres tego artykułu, metody PAD zasadniczo wykorzystują dogłębną analizę jakości i charakterystyki danych biometrycznych przechwyconych w ramach procesu, jak również metody detekcji „oznak życia” zaprojektowane w celu określenia, czy dane biometryczne zostały przechwycone od żywej osoby. U podstaw wielu z tych różnych metod leżą modele głębokich sieci neuronowych (DNN), które odgrywają ważną rolę nie tylko w rozpoznawaniu twarzy, ale także w identyfikowaniu prób oszukania systemu. Niemniej jednak system przetwarzania obrazu używany do przechwytywania twarzy użytkownika może zapewnić dodatkowe wsparcie w wykrywaniu oznak życia.

Do zestawu SLN-VIZNAS-IOT firma NXP dołącza moduły kamer, które zawierają parę dostarczonych przez firmę ON Semiconductor czujników obrazu MT9M114. W tym przypadku jedna kamera jest wyposażona w filtr czerwony, zielony i niebieski (RGB), a druga w filtr podczerwieni (IR). Podłączona przez interfejsy kamery do płytki aplikacji wizyjnej kamera RGB generuje normalny obraz światła widzialnego, podczas gdy kamera IR rejestruje obraz, który byłby inny dla żywej osoby w porównaniu z obrazem tej osoby. Wykorzystując tę metodę wykrywania oznak życia wraz z wewnętrzną funkcją rozpoznawania twarzy, zestaw SLN-VIZNAS-IOT zapewnia odporną na spoofing możliwość rozpoznawania twarzy w trybie offline, w obudowie o wymiarach około 30 x 40 mm (ilustracja 5).

Wygląd zestawu sprzętowego NXP SLN-VIZNAS-IOTIlustracja 5: zestaw sprzętowy NXP SLN-VIZNAS-IOT integruje system podwójnej kamery do wykrywania oznak życia (u góry) oraz płytkę aplikacji wizyjnej (u dołu) z modułem połączonym, aby zapewnić gotowe rozwiązanie do rozpoznawania twarzy w trybie offline z funkcją zapobiegania oszustwom. (Źródło obrazu: NXP)

Pierwsze kroki z zestawem SLN-VIZNAS-IOT

Zestaw NXP SLN-VIZNAS-IOT jest dostarczany w postaci gotowej do użycia z wbudowanymi modelami rozpoznawania twarzy. Deweloperzy podłączają kabel USB i dotykają przycisku na zestawie, aby przeprowadzić prostą ręczną rejestrację twarzy za pomocą preinstalowanej aplikacji „elock” i towarzyszącej jej aplikacji mobilnej (ilustracja 6, po lewej). Po rejestracji aplikacja mobilna wyświetli komunikat „witaj w domu” i etykietę „odblokowane”, gdy zestaw uwierzytelni zarejestrowaną twarz (ilustracja 6, po prawej).

Wygląd zestawu sprzętowego NXP SLN-VIZNAS-IOT działającego zaraz po rozpakowaniuIlustracja 6: zestaw sprzętowy NXP SLN-VIZNAS-IOT działa zaraz po rozpakowaniu, wykorzystując dołączoną aplikację do rejestracji twarzy (po lewej) i rozpoznawania zarejestrowanych twarzy (po prawej). (Źródło obrazu: NXP)

Oprogramowanie do rozpoznawania twarzy Oasis Lite dołączone do zestawu przetwarza modele z bazy danych zawierającej do 3000 twarzy RGB z dokładnością rozpoznawania 99,6% oraz do 100 twarzy IR z dokładnością odporności na oszustwo 96,5%. Jak wspomniano wcześniej, rozwiązanie sprzętowo-programowe firmy NXP potrzebuje niecałej sekundy, aby przeprowadzić wykrywanie twarzy, dopasowanie obrazu, sprawdzenie jakości, wykrywanie braku oznak życia i rozpoznawanie w zakresie od 0,2 do 1,0m. W rzeczywistości system obsługuje alternatywny, „lekki” model wnioskowania, który jest w stanie wykonać tę samą sekwencję w czasie poniżej 0,5s, ale obsługuje mniejszy maksymalny rozmiar bazy danych wynoszący 1000 twarzy RGB i 50 twarzy IR.

Tworzenie niestandardowych aplikacji do rozpoznawania twarzy

Zestaw SLN-VIZNAS-IOT firmy NXP, użyty w postaci, w jakiej się znajduje, pozwala deweloperom na szybką ewaluację, prototypowanie i rozwój aplikacji do rozpoznawania twarzy. Podczas tworzenia własnych rozwiązań sprzętowych, zestaw służy jako kompletny projekt referencyjny z pełnymi schematami i szczegółowym wykazem materiałów (BOM). Do tworzenia oprogramowania programiści mogą wykorzystać zintegrowane środowisko deweloperskie (IDE) NXP MCUXpresso z obsługą FreeRTOS i narzędziami konfiguracyjnymi. W tym celu deweloperzy używają po prostu narzędzia online MCUXpresso SDK Builder firmy NXP, aby skonfigurować swoje środowisko programistyczne z zestawem VIZNAS SDK firmy NXP, który zawiera aparat wizyjny NXP Oasis Lite z funkcją uczenia maszynowego (ilustracja 7).

Schemat - NXP zapewnia kompleksowe środowisko programistyczneIlustracja 7: firma NXP dostarcza kompleksowe środowisko programistyczne, które uruchamia bibliotekę środowiska uruchomieniowego NXP Oasis Lite i narzędziowe oprogramowanie pośredniczące w systemie operacyjnym FreeRTOS. (Źródło obrazu: NXP)

Pakiet oprogramowania zawiera kompletny kod źródłowy dla środowiska operacyjnego oraz wspomnianą wcześniej przykładową aplikację „elock”. Firma NXP nie udostępnia kodu źródłowego do swojego zastrzeżonego aparatu Oasis Lite ani do modeli. Zamiast tego deweloperzy pracują z biblioteką środowiska uruchomieniowego Oasis Lite za pomocą dostarczonego interfejsu programowania aplikacji (API), który zawiera zestaw intuicyjnych wywołań funkcji do wykonywania obsługiwanych operacji. Ponadto deweloperzy używają dostarczonego zestawu definicji i struktur języka C do określania różnych parametrów, w tym rozmiaru obrazu, alokacji pamięci, wywołań zwrotnych i włączonych funkcji używanych przez system podczas uruchamiania środowiska uruchomieniowego Oasis Lite (listing 1).

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

Listing 1: deweloperzy mogą modyfikować parametry wykonania oprogramowania przez zmianę zawartości struktur, takich jak przedstawiona struktura inicjalizacji środowiska uruchomieniowego Oasis Lite. (Źródło kodu: NXP)

Przykładowy kod aplikacji „elock” demonstruje kluczowe wzorce projektowe dla uruchomienia środowiska Oasis jako zadania działającego w systemie FreeRTOS, inicjalizacji środowiska i przejścia do etapu normalnego działania. W fazie uruchamiania środowisko uruchomieniowe działa na każdej klatce obrazu, wykonując dostarczone funkcje wywołania zwrotnego związane z każdym zdarzeniem zdefiniowanym w środowisku (listing 2).

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

Listing 2: środowisko uruchomieniowe Oasis Lite rozpoznaje szereg zdarzeń, które są udokumentowane jako zbiór wyliczany w pliku nagłówkowym biblioteki środowiska uruchomieniowego Oasis Lite. (Źródło kodu: NXP)

Przykładowa aplikacja może udostępniać deweloperom krok po kroku komunikaty debugowania opisujące wyniki związane z każdym zdarzeniem przetwarzanym przez funkcję obsługi zdarzeń (EvtHandler). Na przykład po wykonaniu sprawdzenia jakości (OASISLT_EVT_QUALITY_CHK_COMPLETE), system zwraca komunikaty debugowania opisujące wynik, a po zakończeniu rozpoznawania twarzy (OASISLT_EVT_REC_COMPLETE), system wyszukuje id użytkownika i jego nazwę z bazy rozpoznanych twarzy i zwraca te informacje (listing 3).

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

Listing 3: jak pokazano na tym fragmencie przykładowej aplikacji z dystrybucji oprogramowania firmy NXP, obsługa zdarzeń przetwarza zdarzenia napotkane podczas sekwencji rozpoznawania twarzy. (Źródło kodu: NXP)

Poza obsługą wymagań dotyczących przetwarzania rozpoznawania twarzy, oprogramowanie NXP SLN-VIZNAS-IOT zostało zaprojektowane z myślą o ochronie środowiska operacyjnego. W celu zapewnienia bezpieczeństwa środowiska uruchomieniowego, system został zaprojektowany tak, aby weryfikować integralność i autentyczność każdego podpisanego obrazu załadowanego do systemu za pomocą certyfikatu przechowywanego w systemie plików zestawu SLN-VIZNAS-IOT. Ponieważ ta sekwencja weryfikacji rozpoczyna się od zaufanego programu ładującego zapisanego w pamięci tylko do odczytu (ROM), proces ten zapewnia łańcuch zaufania dla uruchamianego oprogramowania układowego aplikacji. Ponadto, ponieważ podpisywanie i weryfikacja kodu może spowolnić prace rozwojowe, proces weryfikacji został zaprojektowany tak, aby można go było pominąć podczas projektowania oprogramowania i usuwania błędów. W rzeczywistości zestaw SLN-VIZNAS-IOT jest fabrycznie wyposażony w podpisane obrazy, ale weryfikacja podpisu kodu jest domyślnie pomijana. Deweloperzy mogą łatwo ustawić opcje, aby włączyć pełną weryfikację podpisu kodu w oprogramowaniu produkcyjnym.

Wraz ze środowiskiem uruchomieniowym i związanym z nim przykładowym kodem aplikacji, firma NXP dostarcza aplikacje mobilne dla systemu Android z pełnym kodem źródłowym java. Jedna z aplikacji, VIZNAS FaceRec Manager, zapewnia prosty interfejs do rejestrowania twarzy i zarządzania użytkownikami. Inna aplikacja, VIZNAS Companion, pozwala użytkownikom podawać do zestawu dane uwierzytelniające Wi-Fi przy użyciu istniejącego połączenia Wi-Fi lub BLE.

Podsumowanie

Rozpoznawanie twarzy stanowi skuteczną metodę uwierzytelniania dostępu do produktów inteligentnych, ale jej wdrożenie wymaga zazwyczaj lokalnych wysokowydajnych systemów obliczeniowych lub stałej łączności o dużej szerokości pasma w celu zapewnienia szybkiego reagowania. Jest ono również celem spoofingu i budzi obawy o prywatność użytkowników.

Specjalistyczny procesor i biblioteka oprogramowania firmy NXP Semiconductors oferuje alternatywne podejście, które może wykonać dokładne rozpoznawanie twarzy w trybie offline w czasie krótszym od jednej sekundy bez połączenia z chmurą, jednocześnie przeciwdziałając próbom oszustwa.

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 Digi-Key Electronics or official policies of Digi-Key Electronics.

Informacje o autorze

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

Informacje o wydawcy

Północnoamerykańscy redaktorzy Digi-Key