클라우드 연결 없는 위조 방지 얼굴 인식을 빠르게 구현

작성자: Stephen Evanczuk

DigiKey 북미 편집자 제공

안면 인식이 스마트폰에의 액세스를 인증하는 방법으로 널리 사용되고 있지만, 이 기술의 효율성 및 사용의 간편성에도 불구하고 이를 다른 영역에 더 광범위하게 적용하려는 시도는 잘 이루어지지 않았습니다. 개발자는 신뢰할 수 있는 저비용의 머신러닝 솔루션을 구현하는 기술적인 과제와 더불어, 위조에 취약한 클라우드 연결에 의존하는 기존 안면 인식 방법의 안정성 및 개인 정보 보호와 관련된 사용자 문제를 해결해야 합니다.

이 기사에서는 보안 인증의 어려움에 대해 다룬 다음, 그러한 문제를 해결해 주는 NXP Semiconductors 의 하드웨어 및 소프트웨어 솔루션을 소개합니다. 그런 다음 머신러닝에 대한 경험이 전무한 개발자들이 이 솔루션을 사용하여 스마트 제품에서 오프라인 위조 방지 안면 인식을 빠르게 구현하는 방법을 살펴봅니다.

스마트 제품에서의 보안 인증 관련 당면 과제

스마트 제품에서의 보안과 관련된 문제가 증가함에 따라, 이를 해결하는 과정에서 개발자는 빠르면서도 안전한 액세스를 원하는 사용자를 신뢰 가능한 방법으로 인증할 수 있는 지속 가능한 옵션이 거의 없다는 것을 깨닫게 되었습니다. 기존의 방법은 기존의 세 가지 인증 요소 조합을 이용하는 다단계 인증 방법에 의존합니다. 다단계 인증의 세 가지 요소는 "사용자가 알고 있는 것"(비밀번호 등), "사용자가 가지고 있는 것"(물리적인 열쇠 또는 카드식 열쇠 등), "사용자의 생체인식 정보"(통상적으로 지문 또는 동공 등의 생체인식 요소)입니다. 이러한 접근으로 생각해 보면, 강력하게 인증된 도어락을 열기 위해서는 사용자가 비밀번호와 카드식 열쇠를 사용한 다음 지문까지도 추가로 제공해야 할 수 있습니다. 실제로 스마트폰이나 다른 정기적으로 쓰는 장치에의 액세스를 위해 자주 그리고 간편하게 인증을 수행하고자 하는 소비자의 입장에서, 그렇게 철저한 요구 사항을 처리하는 일은 매우 불편하기도 또 불가능하기도 합니다.

스마트폰에서는 안면 인식이 인증 과정을 상당히 단순화했지만, 이와 관련해서 스마트폰이 지닌 장점을 다른 장치도 가지고 있지는 않을 수도 있습니다. 최첨단 스마트폰의 우수한 처리 성능 외에도 상시 작동되는 연결성은 사용자가 통상 기대하는 매우 복잡하고 다양한 서비스를 제공하기 위해 필수 불가결한 요구 사항입니다.

보안 인증이 요구되는 많은 제품에서의 기본 작동 플랫폼은 통상적으로 제한된 컴퓨팅 리소스 및 연결성을 제공합니다. 선도적인 클라우드 서비스 제공업체들에서는 안면 인식 서비스의 처리 부하를 클라우드로 전환하지만, 최소한의 응답 대기 시간을 보장하기 위한 강력한 연결의 필요성이 있기 때문에 해당 플랫폼의 기능을 넘어서는 요구 사항이 충족되어야 할 수도 있습니다. 사용자 입장에서 이와 같거나 더 큰 문제가 되는 것은 이를 처리하는 과정에서 자신의 이미지가 공용 네트워크를 통해 전송되고 클라우드에 저장될 가능성이 있다는 점인데, 이는 중대한 개인 정보 보호 문제를 야기합니다.

이제 개발자는 NXP Semiconductors의 i.MX RT106F 프로세서 및 관련 소프트웨어를 사용하여 이러한 문제를 직접 해결하는 오프라인 안면 인식을 구현할 수 있습니다.

위조 방지 오프라인 안면 인식을 위한 하드웨어 및 소프트웨어

NXP i.MX RT1060 크로스오버 마이크로컨트롤러(MCU) 제품군에 속하는 NXP i.MX RT106F 계열은 오프라인 안면 인식을 스마트 홈 장치, 소비자 가전, 보안 장치 및 산업용 장비에 간편하게 통합하는 작업을 지원하도록 특별히 설계되었습니다. Arm® Cortex®-M7 프로세서 코어를 기반으로 하는 이 프로세서는 산업용 등급 MIMXRT106FCVL5B에서는 528MHz, MIMXRT106FDVL6AMIMXRT106FDVL6B와 같은 상업용 등급 프로세서에서는 600MHz로 실행됩니다.

광범위한 외부 메모리 인터페이스를 지원하는 것 외에도, i.MX RT106F 프로세서에는 1Mbyte의 온칩 RAM(Random Access Memory)이 포함되는데, 범용 RAM으로 구성된 512Kbyte와, 범용 RAM 또는 명령어(I-TCM) 또는 데이터(D-TCM)용으로 긴밀하게 결합된 메모리(TCM)로 구성할 수 있는 512Kbyte입니다. 이 프로세서는 온칩 전력 관리와 더불어 그래픽, 보안, 시스템 제어, 통상적으로 소비자 장치를 지원하기 위해 필요한 아날로그 및 디지털 인터페이스, 산업용 인간 기계 간 인터페이스(HMI) 및 모터 제어기를 위한 광범위한 통합 기능을 제공합니다(그림 1).

NXP Semiconductor의 i.MX RT106F 프로세서 구성도(확대하려면 클릭)그림 1: NXP Semiconductor의 i.MX RT106F 프로세서는 소비자, 산업용 및 보안 제품에서의 안면 인식을 지원하는 데 필요한 완전한 기능 블록 세트를 제공합니다. (이미지 출처: NXP)

i.MX RT106F 프로세서는 다른 i.MX RT1060 제품군과 유사하지만, NXP의 Oasis Lite 안면 인식 소프트웨어용 런타임 라이선스에 번들로 제공됩니다. 이러한 등급의 프로세서의 추론 속도를 높일 수 있도록 설계된 Oasis Lite 런타임 환경은, 추론 엔진 및 MiNiCV에서 실행되는 신경망(NN) 추론 모델을 사용하여 안면 감지, 인식 및 제한된 감정 분류까지도 수행합니다. MiniCV는 오픈 소스 OpenCV 컴퓨터 비전 라이브러리에서 가장 중요한 부분만을 남긴 버전입니다. 추론 엔진은 NXP NN 라이브러리 및 Arm Cortex 마이크로컨트롤러 시스템 인터페이스 표준 NN(CMSIS-NN) 라이브러리를 기반으로 합니다(그림 2).

NXP Oasis Lite 런타임 라이브러리 구성도그림 2: NXP Oasis Lite 런타임 라이브러리에는 MiniCV를 사용하는 Oasis Lite 코어와 NXP 및 Arm의 신경망 라이브러리를 기반으로 하는 NXP 추론 엔진이 포함되어 있습니다. (이미지 출처: NXP)

이 추론 모델은 i.MX RT106F 플랫폼에 내장되어 있으므로, 머신러닝을 실행하기 위해 클라우드 기반 리소스에 의존해야 하는 다른 솔루션과는 달리 안면 감지 및 인식이 로컬에서 실행됩니다. 이러한 안면 인식 기능 덕분에 스마트 제품의 설계자는 낮은 대역폭이나 낮은 품질의 인터넷 연결에서도 비공개의 안전한 인증을 보장할 수 있습니다. 또한 이 하드웨어와 소프트웨어 조합에서는 인증 속도가 빠른데, 이는 프로세서가 저전력 대기 상태로부터 활성화되어 안면 인식을 완료하기까지 800ms밖에 걸리지 않기 때문입니다.

Oasis Lite 런타임은 i.MX RT106F 프로세서와 함께 사용되어 스마트 제품에 대한 오프라인 안면 인식 구현을 단순화하지만, 프로세서 및 런타임 환경은 필수적인 시스템 솔루션의 일부분일 뿐입니다. 더욱 완전한 시스템 부품 세트와 더불어, 효과적인 인증 솔루션은 위조지문 공격으로 불리는 보안 위협을 완화할 수 있는 이미징 역량을 요구합니다. 이러한 공격은 사진을 사용하여 안면 인식 인증 위조를 시도합니다. 개발하는 제품에 안면 기반 인증을 빠르게 배포하려는 개발자를 위해, NXP SLN-VIZNAS-IOT 개발 키트 및 관련 소프트웨어는 오프라인, 위조 방지 안면 인식의 평가, 시제품 제작 및 개발을 위한 즉시 사용 가능한 플랫폼을 제공합니다.

안면 인식을 위한 완전한 보안 시스템 솔루션

대부분의 고급 프로세서와 마찬가지로, i.MX RT106F 프로세서에 몇 가지의 부품만 더하면 효율적인 컴퓨팅 플랫폼이 제공됩니다. NXP SLN-VIZNAS-IOT 키트는 i.MX RT106F를 추가 장치와 통합하여 설계를 완성함으로써 완전한 하드웨어 플랫폼을 제공합니다(그림 3).

NXP SLN-VIZNAS-IOT 키트 구성도(확대하려면 클릭)그림 3: NXP SLN-VIZNAS-IOT 키트에는 인증 소프트웨어를 실행하는 데 필요한 강력한 연결 시스템 플랫폼을 제공하는 연결된 모듈이 포함됩니다. (이미지 출처: NXP)

이 키트의 연결된 모듈 기판은 NXP MIMXRT106FDVL6A i.MX RT106F 프로세서, NXP A71CH 보안 소자 및 2개의 연결 옵션(NXP의 MKW41Z512VHT4 Kinetis KW41Z Bluetooth 저에너지(BLE) 시스템 온칩(SoC) 및 Murata ElectronicsLBEE5KL1DX-883 Wi-Fi/Bluetooth 모듈)을 결합합니다.

프로세서의 온칩 메모리를 보완하기 위해, 연결된 모듈은 Winbond ElectronicsW9825G6JB 256Mbit 동기식 다이내믹 RAM(SDRAM), Integrated Silicon Solution. Inc.(ISSI) IS26KL256S-DABLI00 256Mbit NOR 플래시 및 ISSI의 IS25LP256D 256Mbit 쿼드 직렬 주변 장치 인터페이스(SPI) 장치를 추가합니다.

마지막으로, 모듈은 연결된 모듈 기판의 추가 장치에 대한 i.MX RT106F 프로세서의 내부 전력 관리 기능을 보완하기 위해 Torex Semiconductor XCL214B333DR 벅 컨버터를 추가합니다.

결과적으로, 연결된 모듈은 비전 응용 제품 기판에 실장되는데, 이 기판은 Murata Electronics IRA-S210ST01 수동 적외선(PIR) 센서, 동작 센서, 배터리 충전기, 오디오 지원, 발광 다이오드(LED), 버튼 및 인터페이스 커넥터를 결합합니다(그림 4).

NXP SLN-VIZNAS-IOT 키트 이미지(확대하려면 클릭)그림 4: NXP SLN-VIZNAS-IOT 키트에서 연결된 모듈(왼쪽)은 안면 인식을 위한 하드웨어 기반을 제공하기 위해 비전 응용 제품 기판에 부착됩니다. (이미지 출처: NXP)

이러한 시스템 플랫폼과 함께 안면 인식 시스템 설계에는 사용자 얼굴의 이미지를 찍기 위해 적절한 카메라 센서가 반드시 요구됩니다. 그러나 앞서 언급했듯이, 위조지문 공격과 관련된 문제로 인해 추가적인 이미징 역량이 요구됩니다.

위조지문 공격 완화

연구자들은 수 년간 생체인식 기반의 인증 시스템을 위조하기 위해 잠재지문 또는 안면의 이미지를 사용하는 등의 시도를 완화하기 위해 설계된 여러 위조지문 공격 탐지기술(PAD) 방법을 탐색해 왔습니다. 이 기사에서 이와 관련된 모든 세부 사항을 다룰 수는 없지만, 일반적으로 PAD 방법은 처리 과정의 일부로 얻게 된 생체인식 데이터의 품질과 특성에 대한 심층 분석 및 해당 생체인식 데이터가 움직이는 사람의 것인 경우 "생체" 감지 방법을 사용합니다. 이렇게 다양한 많은 방법의 기본인 심층 신경망(DNN) 모델은 안면 인식 뿐 아니라 시스템 위조 시도를 식별하는 데에서도 중요한 역할을 합니다. 그럼에도 불구하고, 사용자의 얼굴을 찍기 위해 사용되는 이미징 시스템은 추가적인 생체 감지와 관련된 지원을 제공할 수 있습니다.

SLN-VIZNAS-IOT 키트에는 ON SemiconductorMT9M114 이미지 센서 쌍을 갖춘 카메라 모듈이 포함됩니다. 여기에서 한 카메라는 빨간색, 녹색, 파란색(RGB) 필터를, 다른 카메라는 적외선(IR) 필터를 갖추고 있습니다. 카메라 인터페이스를 통해 비전 응용 제품 기판에 부착되어, RGB 카메라는 일반적인 가시광선 이미지를 생성하고 IR 카메라는 사람의 이미지와 비교했을 때 차별화되는 움직이는 사람의 이미지를 찍습니다. 내부 안면 인식 기능과 함께 이러한 생체 감지 접근 방식을 사용하는 SLN-VIZNAS-IOT 키트는 약 30mm x 40mm 크기의 패키지에서 오프라인 위조 방지 안면 인식 기능을 제공합니다(그림 5).

NXP SLN-VIZNAS-IOT 하드웨어 키트 이미지그림 5: NXP SLN-VIZNAS-IOT 하드웨어 키트는 생체 감지를 위한 이중 카메라 시스템(위)과 비전 응용 제품 기판(아래)을 연결된 모듈과 통합하여 위조 방지 기능이 있는 오프라인 안면 인식을 위한 드롭인 솔루션을 제공합니다. (이미지 출처: NXP)

SLN-VIZNAS-IOT 키트 시작하기

NXP SLN-VIZNAS-IOT 키트에는 내장형 안면 인식 모델이 포함되어 즉시 사용 가능합니다. 개발자는 USB 케이블을 연결하고 키트의 버튼을 터치하여 사전 로드 된 "e락(elock)" 응용 제품과 모바일 앱을 사용하여 간편하게 수동으로 얼굴을 등록합니다. 얼굴이 등록되면, 키트가 등록된 얼굴을 인증하는 경우 모바일 앱에 "안녕하세요" 메시지와 "잠금 해제됨" 레이블이 표시됩니다.(그림 6, 오른쪽).

즉시 사용 가능한 NXP SLN-VIZNAS-IOT 하드웨어 키트 이미지그림 6: NXP SLN-VIZNAS-IOT 하드웨어 키트는 즉시 사용 가능하며, 컴패니언 앱을 활용하여 얼굴을 등록하고(왼쪽) 등록된 얼굴을 인지합니다(오른쪽). (이미지 출처: NXP)

이 키트의 Oasis Lite 안면 인식 소프트웨어는 99.6%의 인식 정확도로 최대 3000개의 RGB 얼굴과 96.5%의 위조 방지 정확도로 최대 100개의 IR 얼굴의 데이터베이스를 활용하여 모델을 프로세스합니다. 앞서 언급했듯이, NXP 하드웨어/소프트웨어 솔루션은 0.2m ~ 1.0m 범위에서 안면 감지, 이미지 정렬, 품질 확인, 생체 감지 및 인식을 수행하는 데 1초도 걸리지 않습니다. 실제로 이 시스템은 0.5초 미만의 시간 동안 이러한 동일한 결과를 수행할 수 있는 대안적인 "라이트" 추론 모델을 지원하지만, 더 적은 최대 데이터베이스 크기(1000개의 RGB 얼굴 및 50개의 IR 얼굴)를 지원합니다.

맞춤형 안면 인식 응용 제품 설계

개발자는 NXP SLN-VIZNAS-IOT 키트를 즉시 사용하여 안면 인식 응용 제품을 빠르게 평가, 시제품 제작 및 개발할 수 있습니다. 맞춤형 하드웨어 솔루션 생성 시, 이 키트는 전체 회로도 및 자재 명세서(BOM)를 포함한 완전한 참조 설계를 제공합니다. 프로그래머는 소프트웨어 개발을 위해 NXP MCUXpresso 통합 개발 환경(IDE)을 FreeRTOS 지원 및 구성 도구와 함께 사용할 수 있습니다. 이 응용 제품을 위해 개발자는 NXP의 온라인 MCUXpresso SDK 빌더를 사용하여 NXP의 VIZNAS SDK로 소프트웨어 개발 환경을 구성할 수 있으며, 여기에는 NXP Oasis Lite 머신러닝 비전 엔진이 포함됩니다(그림 7).

포괄적인 소프트웨어 환경을 제공하는 NXP 구성도그림 7: NXP는 FreeRTOS 운영 체제에서 NXP Oasis Lite 런타임 라이브러리 및 유틸리티 미들웨어를 실행하는 포괄적인 소프트웨어 환경을 제공합니다. (이미지 출처: NXP)

이 소프트웨어 패키지에는 운영 환경을 위한 완전한 소스 코드 및 앞서 언급된 e락(elock) 샘플 애플리케이션이 포함됩니다. NXP는 Oasis Lite 엔진 또는 모델 전용 소스 코드를 제공하지 않습니다. 그 대신 개발자는 제공된 응용 프로그램 프로그래밍 인터페이스(API)를 사용하여 Oasis Lite 런타임 라이브러리를 활용할 수 있으며, 여기에는 지원되는 작동을 수행하기 위한 직관적인 기능 호츨 세트가 포함됩니다. 또한 개발자는 제공된 C 정의 및 구조를 사용하여 이미지 크기, 메모리 할당, 콜백 및 Oasis Lite 런타임 환경을 시작할 때 시스템이 사용하는 활성화된 기능 등 다양한 파라미터를 지정할 수 있습니다.

복사
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;

목록 1: 개발자는 Oasis Lite 런타임 초기화를 위해 여기에서 보이는 것과 같은 구조의 내용을 수정하여 소프트웨어 실행 파라미터를 수정할 수 있습니다. (코드 출처: NXP)

e락(elock) 샘플 애플리케이션 코드는 FreeRTOS에서 실행되는 작업으로써 Oasis를 시작하고, 환경을 초기화하며, 정상적인 실행 단계에 들어가기 위한 주요 설계 패턴을 보여줍니다. 실행 단계에서는, 런타임 환경이 해당 환경에서 정의된 각 이벤트와 관련되어 제공된 콜백 함수를 실행하면서 특정 이미지의 각 프레임에서 작동합니다(목록 2).

복사
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;

목록 2: Oasis Lite 런타임은 Oasis Lite 런타임 헤더 파일에서 문서화된 일련의 이벤트를 열거된 세트로 인식합니다. (코드 출처: NXP)

샘플 애플리케이션은 이벤트 핸들러(EvtHandler)에 의해 처리되는 각 이벤트와 관련된 결과를 설명하는 단계별 디버그 메시지를 개발자에게 제공할 수 있습니다. 예를 들어 이 시스템에서는 품질 검사가 완료된 후(OASISLT_EVT_QUALITY_CHK_COMPLETE) 해당 결과를 설명하는 디버그 메시지를 인쇄하며, 안면 인식이 완료된 후(OASISLT_EVT_REC_COMPLETE)에는 인식된 얼굴에 대한 사용자 ID와 이름을 데이터베이스에서 가져와 해당 정보를 인쇄합니다(목록 3).

복사
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;

목록 3: NXP 소프트웨어 배포의 샘플 애플리케이션의 이 스니펫에서 볼 수 있듯이, 이벤트 핸들러는 안면 인식 시퀀스 중에 발생한 이벤트를 처리합니다. (코드 출처: NXP)

안면 인식 처리 관련 요구 사항을 지원하는 이외에도, NXP SLN-VIZNAS-IOT 소프트웨어는 운영 환경을 보호하기 위해 설계되었습니다. 이 시스템은 런타임 보안의 보장을 위해 SLN-VIZNAS-IOT 키트의 파일 시스템에 저장된 인증서를 사용하여 시스템에 로드된 각 서명된 이미지의 무결성과 신뢰성을 확인하도록 설계되었습니다. 이 확인 시퀀스는 읽기 전용 메모리(ROM)에 저장된 신뢰할 수 있는 부트로더에서 시작되므로, 이 프로세스는 애플리케이션 펌웨어 실행을 위한 신뢰성을 제공합니다. 또한 코드 서명 및 확인은 개발 속도를 늦출 수 있으므로, 소프트웨어 설계 및 디버그 중 이 확인 과정은 우회되도록 설계되었습니다. 실제로 SLN-VIZNAS-IOT 키트에는 서명된 이미지가 사전 로드되어 있지만, 코드 서명 확인은 기본적으로 우회됩니다. 개발자는 생산을 위해 전체 코드 서명 확인을 활성화하는 옵션을 간편하게 설정할 수 있습니다.

NXP는 런타임 환경 및 관련 샘플 애플리케이션 코드와 함께 전체 자바 소스 코드가 포함된 Android 모바일 앱을 제공합니다. 그중 하나인 VIZNAS FaceRec Manager 앱은 안면 등록 및 사용자 관리를 위한 간단한 인터페이스를 제공합니다. VIZNAS Companion 앱의 경우에는 사용자가 기존 Wi-Fi 또는 BLE 연결을 사용하여 키트에 Wi-Fi 자격 증명을 제공할 수 있습니다.

결론

안면 인식은 스마트 제품에의 액세스를 인증하기 위한 효과적인 접근 방식을 제공하지만, 이를 구현하기 위해서는 통상적으로 빠른 응답을 위한 로컬 고성능 컴퓨팅 또는 상시 작동하는 높은 대역폭 연결이 요구되었습니다. 또한 위조의 타겟이 되어 오기도 했으며, 개인 정보 보호와 관련된 문제가 야기되기도 쉽습니다.

위에서 보았듯이, NXP Semiconductors의 특수 프로세서 및 소프트웨어는 위조 가능성을 낮추는 동시에 클라우드 연결 없이도 1초 이내에 정확하게 오프라인 안면 인식을 수행할 수 있는 대안적인 접근 방식을 제공합니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk는 전자 산업에 관해 하드웨어, 소프트웨어, 시스템, 응용 제품(예: IoT)을 비롯한 광범위한 주제에 대해 20년 이상 집필한 경력을 갖고 있습니다. 그는 신경 과학의 뉴런 네트워크 박사 학위를 받았으며항공 우주 산업 분야의 광범위하게 분포된 보안 시스템 및 알고리즘 가속 메서드 관련 업무를 수행했습니다. 현재, 기술 및 엔지니어링에 대해 기사를 쓰지 않을 때에는 인식 및 추천 시스템에 대한 심층적 학습 응용 프로그램을 연구하고 있습니다.

게시자 정보

DigiKey 북미 편집자