NXP AN14263, Framewor에서 LVGL GUI 얼굴 인식 구현
제품 정보
명세서
- 제품 이름: 프레임워크에서 LVGL GUI 얼굴 인식
- 문서 개정: 1년 19월 2024일~XNUMX일
- 키워드: 얼굴 인식, LVGL GUI, 프레임워크
제품 사용 지침
- 위에view
이 제품은 간단한 LVGL GUI로 얼굴 인식 기능을 구현하는 프레임워크에서 얼굴 인식을 위한 AI&ML 비전 알고리즘 모델을 구현합니다.ampSLN-TLHMI-IOT 보드에 있는 파일입니다. - 프레임워크 종료view
솔루션 소프트웨어는 장치 관리를 담당하는 장치 관리자, 기본 세부 정보를 추상화하는 HAL 장치, 서로 다른 장치 간의 통신을 위한 이벤트를 포함하는 프레임워크 아키텍처를 중심으로 설계되었습니다. - 특징
카메라 사전을 통한 얼굴인식 기능 구현이 가능한 제품입니다.view 얼굴 등록, 인식 및 제거를 실행하는 버튼이 있는 GUI 화면. 등록된 얼굴 데이터는 다음을 통해 Flash에 저장됩니다. file 체계. - 애플리케이션 노트 내용
애플리케이션 노트는 카메라 사전 설정이 포함된 LVGL GUI 화면을 제공합니다.view 얼굴 관련 작업을 위한 버튼도 있습니다. 개발자가 프레임워크와 제공된 ex를 사용하여 얼굴 인식을 구현하는 방법을 이해하는 데 도움이 됩니다.amp르.
위에view
NXP는 스마트 HMI 애플리케이션에 초점을 맞춘 SLN-TLHMI-IOT라는 솔루션 개발 키트를 출시했습니다. 하나의 NXP i.MX RT117H MCU에 ML 비전, 음성 및 그래픽 UI가 구현되어 스마트 HMI를 구현합니다. 솔루션 소프트웨어는 SDK를 기반으로 유연한 디자인과 비전, 음성 기능의 커스터마이징을 지원하는 프레임워크라는 디자인으로 구축됩니다. 사용자가 소프트웨어 플랫폼을 더 잘 사용할 수 있도록 몇 가지 기본 문서가 제공됩니다.ample, 소프트웨어 개발 사용자 가이드. 이 가이드에서는 개발자가 SLN-TLHMI-IOT를 사용하여 애플리케이션을 보다 쉽고 효율적으로 구현할 수 있도록 지원하는 프레임워크를 포함하여 솔루션의 모든 구성 요소를 다루는 애플리케이션의 기본 소프트웨어 설계 및 아키텍처를 소개합니다.
솔루션 및 관련 문서에 대한 자세한 내용을 보려면 web ML Vision, 음성 및 그래픽 UI를 갖춘 i.MX RT117H 기반 NXP EdgeReady 스마트 HMI 솔루션 페이지입니다. 그러나 개발자가 이러한 기본 가이드를 참조하여 스마트 HMI 애플리케이션을 구현하는 것은 여전히 쉽지 않습니다. 프레임워크 개발을 단계별로 연구하는 데 도움이 되는 일련의 애플리케이션 노트가 계획되어 있습니다. 이 애플리케이션 노트는 LVGL GUI 카메라 사전 구현을 기반으로 합니다.view 프레임워크(문서 AN14147). 이 애플리케이션 노트에서는 카메라 사전을 통해 얼굴 인식 기능을 구현하기 위해 프레임워크에서 얼굴 인식용 AI&ML 비전 알고리즘 모델을 활성화하는 방법을 설명합니다.view 간단한 LVGL GUI ex를 사용하여 GUI 화면에서ampSLN-TLHMI-IOT 보드에 있는 파일입니다. 애플리케이션 노트에는 example는 카메라 사전 설정이 포함된 LVGL GUI 화면을 제공합니다.view 얼굴 등록, 인식 및 제거를 실행하는 일부 버튼이 있습니다. 등록된 얼굴 데이터는 플래시에 저장됩니다. file 체계.
높은 수준에서 애플리케이션 노트에는 다음 내용이 포함되어 있습니다.
- 프레임워크에서 얼굴 인식 기능을 활성화합니다.
- 다음을 통해 프레임워크에 얼굴 데이터베이스 지원을 추가하세요. file 플래시의 시스템.
- LVGL GUI 앱을 구현합니다. 위의 소개를 통해 이 문서는 개발자가 다음을 수행하는 데 도움이 됩니다.
- 프레임워크와 스마트 HMI 솔루션 소프트웨어를 더욱 깊이 이해해보세요.
- LVGL GUI 앱을 사용하여 프레임워크에서 AI 및 ML 얼굴 인식을 개발합니다.
프레임워크 종료view
솔루션 소프트웨어는 주로 다음과 같은 여러 부분으로 구성된 프레임워크 아키텍처의 사용을 중심으로 설계되었습니다.
- 장치 관리자 - 핵심 부분
- HAL(하드웨어 추상화 계층) 장치
- 메시지/이벤트
그림 1에서 볼 수 있듯이,view 프레임워크의 메커니즘은 다음과 같습니다.
장치 관리자는 시스템에서 사용되는 장치를 관리하는 역할을 담당합니다. 각 장치 유형(입력, 출력 등)에는 고유한 유형별 장치 관리자가 있습니다. 장치 관리자는 장치가 등록된 후 시작되어 등록된 장치를 초기화하고 시작한 후 장치 및 다른 관리자에게 데이터를 전송하기 위한 메시지를 기다리고 확인합니다. HAL 장치는 하위 수준 드라이버 코드 위에 작성되어 많은 기본 세부 정보를 추상화하여 코드 이해도를 높이는 데 도움이 됩니다.
이벤트는 관리자를 통해 여러 장치 간에 정보가 전달되는 수단입니다. 이벤트가 트리거되면 이벤트를 처음 수신한 장치는 해당 이벤트를 관리자에게 전달한 다음 이벤트를 수신하도록 지정된 다른 관리자에게 알립니다.
프레임워크의 아키텍처 설계는 세 가지 주요 목표에 중점을 두었습니다.
- 사용 편의성
- 유연성/이식성
- 성능
이 프레임워크는 비전 및 기타 기계 학습 애플리케이션의 출시 기간을 단축하는 것을 목표로 설계되었습니다. 시장 출시 기간을 단축하려면 소프트웨어 자체를 이해하고 수정하기 쉬운 것이 중요합니다. 이 목표를 염두에 두고 프레임워크의 아키텍처는 제한을 두지 않고 성능 저하 없이 쉽게 수정할 수 있습니다.
프레임워크에 대한 자세한 내용은 Smart HMI 소프트웨어 개발 사용자 가이드(MCU-SMHMI-SDUG 문서)를 참조하세요.
가볍고 다재다능한 그래픽 라이브러리(LVGL)
LVGL(Light and Versatile Graphics Library)은 사용하기 쉬운 그래픽 요소, 아름다운 시각 효과 및 낮은 메모리 공간을 갖춘 임베디드 GUI를 만드는 데 필요한 모든 것을 제공하는 무료 오픈 소스 그래픽 라이브러리입니다.
GUI 가이더
GUI Guider는 오픈 소스 LVGL 그래픽 라이브러리를 사용하여 고품질 디스플레이를 신속하게 개발할 수 있는 NXP의 사용자 친화적인 그래픽 사용자 인터페이스 개발 도구입니다. GUI Guider의 드래그 앤 드롭 편집기를 사용하면 위젯, 애니메이션, 스타일 등 LVGL의 다양한 기능을 쉽게 사용하여 코딩을 최소화하거나 전혀 사용하지 않고 GUI를 만들 수 있습니다.
버튼을 클릭하면 시뮬레이션된 환경에서 애플리케이션을 실행하거나 대상 프로젝트로 내보낼 수 있습니다. GUI Guider에서 생성된 코드를 프로젝트에 쉽게 추가할 수 있으므로 개발 프로세스가 가속화되고 임베디드 사용자 인터페이스를 애플리케이션에 원활하게 추가할 수 있습니다. GUI Guider는 NXP의 범용 및 크로스오버 MCU와 함께 무료로 사용할 수 있으며 지원되는 여러 플랫폼을 위한 내장 프로젝트 템플릿이 포함되어 있습니다. GUI Guider의 LVGL 및 GUI 개발에 대해 자세히 알아보려면 Light and Versatile Graphics Library and GUI Guider를 확인하세요.
개발 환경
먼저 ex 구현을 위한 하드웨어 및 소프트웨어 환경을 준비하고 설정합니다.amp프레임워크에 대한 파일입니다.
하드웨어 환경
Ex를 검증하기 위한 하드웨어 환경이 설정되었습니다.amp르 :
- NXP i.MX RT117H(SLN_TLHMI_IOT 키트)를 기반으로 하는 스마트 HMI 개발 키트
- 9핀 Cortex-M 어댑터 및 V7.84a 또는 최신 버전의 드라이버가 있는 SEGGER J-Link
소프트웨어 환경
ex 개발을 위한 소프트웨어 환경이 설정되었습니다.amp르 :
- MCUXpresso IDE V11.7.0
- GUI 가이더 V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – 예amp두 번째 애플리케이션 노트의 코드를 개발의 기본 소프트웨어로 사용합니다. 자세한 내용은 다음을 참조하세요. https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – 개발을 위한 코드 리소스로 사용됩니다.
- SLN-TLHMI-IOT 소프트웨어 V1.1.2 – 개발을 위한 코드 리소스로 NXP GitHub 저장소에 공개된 스마트 HMI 소스 코드입니다. 자세한 내용은 GitHub – v1.1.2의 NXP/mcu-smhmi를 참조하세요.
소프트웨어 환경 획득 및 설정에 대한 자세한 내용은 SLN-TLHMI-IOT 시작하기를 참조하세요.
프레임워크의 비전 아키텍처
프레임워크의 비전 아키텍처는 그림 2에 나와 있습니다. 비전 알고리즘 HAL(OASIS_HAL)에는 다음 프로세스가 있습니다.
- 출력 UI HAL에서 관련 이벤트를 수신한 후 AI&ML 비전 알고리즘 모델을 통해 얼굴 등록 및 인식을 수행합니다. 알고리즘 모델의 추론 결과를 출력 UI HAL에 알립니다.
- 작은 데이터를 기반으로 얼굴 특징 데이터베이스에 액세스(추가, 삭제…) file 출력 UI HAL에서 관련 이벤트를 수신한 후 FaceDB HAL의 API를 호출하여 시스템을 구현합니다.
- 얼굴 등록 및 인식을 수행할 때 카메라 HAL에서 카메라 비디오 프레임을 요청합니다.
프레임워크에 얼굴 인식 구현
LVGL GUI 얼굴 인식 예amp르 (전ample는 나중에 제공됨) 프레임워크에서는 ex를 기반으로 구현됩니다.ampLVGL GUI 카메라 사전 구현 파일 코드view 프레임워크(문서 AN14147).
Ex에서 얼굴 인식을 시연하기 위해ampGUI 앱(그림 3의 메인 화면 참조)의 기본 기능은 다음과 같이 설계되었습니다.
- GUI 앱은 등록 또는 인식 버튼을 클릭하면 출력 UI HAL에 얼굴 등록 또는 인식 이벤트를 트리거합니다. 그리고 출력 UI HAL은 얼굴 등록이 성공한 후 비전 알고리즘 HAL에 사용자를 추가하는 이벤트를 알립니다.
- GUI 앱은 사용자의 얼굴이 인식된 후 사용자 삭제 버튼을 클릭하면 출력 UI HAL에 사용자를 삭제하는 이벤트를 트리거합니다.
- GUI 앱은 버튼과 이미지 외부의 화면을 클릭하면 출력 UI HAL로 실행되는 oasis 알고리즘을 중지하는 이벤트를 트리거합니다.
ex 구현을 위한 소프트웨어 패키지 준비amp르.
- 기본 소프트웨어 lvgl_gui_camera_pre 복제view_cm7. 프로젝트 이름과 메인을 변경하세요. file이름을 lvgl_gui_face_rec_cm7로 지정하세요.
- 프레임워크 코어의 소스 코드가 버전 1.1.2부터 GitHub에 공개되기 시작했기 때문에 소프트웨어에서 프레임워크를 업데이트해야 합니다.
- 프레임워크 폴더를 GitHub의 V1.1.2 복사본으로 대체합니다. filen inc\ 아래의 fwk_log.h 및 fwk_common.h는 일련의 애플리케이션 노트에 대해 수정되었습니다. 작업은 그림 4에 나와 있습니다.
- libs 그룹 아래의 Framework_cm7 폴더를 삭제하고, 코어의 소스코드가 제공되므로 프로젝트 > 속성 > C/C++ 빌드 > 설정 > 도구 설정 > MCU C++ 링커 > 라이브러리에서 구성된 Framework_cm7 라이브러리와 해당 검색 경로를 제거합니다.
프레임워크에서 얼굴 인식 기능 활성화
얼굴 인식 기능은 NXP의 오아시스 라이트 런타임 라이브러리인 정적 라이브러리로 제공되는 ML 비전 알고리즘 모델을 기반으로 구축되었습니다. 라이브러리는 작고 매우 효율적이며 사용자 정의되고 최적화된 AI 라이브러리입니다. 모델에는 얼굴 감지, 얼굴 인식, 유리 감지 및 생체 감지가 포함됩니다. 이벤트 콜백을 통해 호출자에게 결과를 업데이트하면서 얼굴 인식 파이프라인을 실행하고, 소스 프레임 정보, 콜백, 메모리를 지정한 후 얼굴 데이터베이스 콜백을 통해 데이터베이스에 얼굴을 추가/업데이트/삭제하는 API OASISLT_run_extended()를 주로 제공합니다. 초기화 시 다른 API OASISLT_init()를 호출하여 라이브러리에서 사용하는 풀입니다. API 호출과 콜백 함수는 프레임워크의 비전 알고리즘 HAL에서 구현됩니다.
비전 알고리즘 모델 라이브러리 추가
- 라이브러리 및 관련 헤더가 포함된 폴더 oasis를 복사합니다. file smart HMI\coffee_machine\cm7\libs\에서 ex의 libs 폴더로 이동합니다.amp르 SW.
- 헤더의 검색 경로 추가 file 프로젝트 > 속성 > C/C++ 빌드 > 설정 > 도구 설정 > MCU C 컴파일러 > 포함 및 MCU C++ 컴파일러 > 포함: “${workspace_loc:/${ProjName}/libs/oasis/include}”
- 프로젝트 > 속성 > C/C++ 빌드 > 설정 > MCU C+ + 링커 > 라이브러리: liboasis_lite2D_DEFAULT_117f_ae.a "${workspace_loc:/${ProjName}/libs/oasis}"에 lib 및 해당 검색 경로와 매크로 정의를 추가합니다. 프로젝트 > 속성 > C/C++ 빌드 > 설정 > 도구 설정 > MCU C 컴파일러 > 전처리기 및 MCU C++ 컴파일러 > 전처리기: SMART_TLHMI_2D에서 기능을 활성화합니다.
비전 알고리즘 HAL 활성화
비전 알고리즘 HAL은 비전 알고리즘 모델이 작동하도록 구동하고 이벤트를 수신한 후 UI 출력 HAL에 결과를 응답합니다.
활성화하려면 기존의 유사한 HAL 드라이버를 복제하세요. file 아래 기능이 구현되는 위치:
- 얼굴 데이터베이스 작업 및 이벤트 처리에 대한 콜백을 구현합니다.
- oasis 라이브러리의 API를 호출하여 비전 알고리즘이 작동하도록 하세요.
- 사용자 얼굴 데이터베이스 및 앱 데이터베이스에 액세스합니다(예전에는 필요하지 않음).amp르).
- 출력 UI HAL에서 이벤트를 수신하고 결과를 출력 UI HAL로 보냅니다.
주요 작업은 ex용 HAL을 구현하는 것입니다.amp르:
- 기존 유사한 HAL 드라이버 복제 file 관련 이름을 변경합니다.
- 앱 데이터 작업과 관련된 코드를 제거합니다.
- ex에 따라 출력 UI HAL의 이벤트를 처리하기 위한 정의 및 함수를 업데이트합니다.amp설계.
- oasis 초기화에 필요한 구성을 추가합니다.
자세한 단계는 다음과 같습니다.
- hal_vision_algo_oasis_coffeemachine.c를 복제합니다. 변경 filehal_vision_algo_oasis_guifacerec.c에 이름을 지정합니다. 그리고 모든 문자열 CoffeeMachine을 GUIFaceRec으로 바꿉니다. file.
- 예를 들어 앱 데이터베이스와 관련된 문자열 Coffeedb(대소문자 구분 안 함)가 포함된 코드를 제거합니다.amp파일, #include hal_sln_coffeedb.h.
- 출력 UI HAL의 이벤트를 처리하기 위해 HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() 함수를 수정합니다.
- 새로운 얼굴 특징 데이터를 데이터베이스에 추가하는 이벤트 처리를 위해 이벤트 정의 kEventFaceRecId_RegisterCoffeeSelection을 kEventFaceRecId_RegisterUserFace로 변경하고 구조 문자열 regCoffeeSelection을 regGUIFaceRec로 변경합니다.
- ex에서 얼굴 인식 작업의 표준 프로세스를 보여줍니다.amp파일에서 상태 정의를 사용하여 kEventFaceRecID_OasisSetState의 경우 처리를 수정합니다.
- kOASISLiteState
- kOASISLiteState 등록
- kOASISLiteState 인식
- 중단됨
- 위 단계에서 언급한 이벤트 정의를 추가하고 수정합니다.
- 헤더 복사 file smart HMI\coffee_machine\cm7\source\event_handlers\의 smart_tlhmi_event_descriptor.h를 ex 폴더 소스로 복사합니다.amp르 SW. 업데이트 file 아래와 같습니다:
- 열거형 유형 _event_smart_tlhmi_id에서 이벤트 정의 kEventFaceRecId_RegisterCoffeeSelection을 kEventFaceRecId_RegisterUserFace로 변경하고 구조 문자열 regCoffeeSelection을 구조체 _event_smart_tlhmi에서 regGUIFaceRec로 변경합니다. 따라서 regCoffeeSelection에 대한 구조체 Register_coffee_selection_event_t를 Register_gui_facerec_event_t로 변경하십시오.
- 예를 들어 커피머신 앱에 사용된 else 콘텐츠를 삭제하세요.ample, 음성 관련 코드 라인: #include “hal_event_descriptor_voice.h”.
- 아래와 같이 프로젝트의 Framework>hal>vision 아래 hal_vision_algo.h의 열거형 oasis_lite_state_t에 kOASISLiteState_Stopped 및 kOASISLiteState_Running 유형을 추가합니다.
typedef 열거형 _oasis_lite_state {- kOASISLiteState
- 실행 중, kOASISLiteState
- 중지됨, kOASISLiteState
- 인식,
- kOASISLiteState
- 등록, kOASISLiteState
- 등록 취소, kOASISLiteState
- 원격등록, kOASISLiteState
- 세다
- 위의 업데이트된 struct oasis_lite_state_t를 사용하여 프로젝트의 Framework>hal>vision 아래 hal_event_descriptor_face_rec.h에서 oasis_state_event_t 구조체를 아래와 같이 구체화합니다. typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- 비전 algo HAL에서 듀얼 코어 대신 단일 코어가 사용되는 동일한 코어에서 실행되는 다른 HAL로 이벤트를 전송하기 위해 모든 kEventInfo_Remote를 kEventInfo_Local로 변경합니다.amp르.
- OASISLT_init()에서 oasis 초기화를 위해 아래 구성을 추가하고 수정합니다.
- board_define.h에 비디오 프레임에 대한 매크로 정의 및 메모리 섹션을 추가합니다: #define OASIS_RGB_FRAME_WIDTH 800
- #define OASIS_RGB_FRAME_HEIGHT 600
- #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
- #OASIS_RGB_FRAME_BYTE_PER_PIXEL 3 정의
- #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __attribute__((section(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __속성__((정렬(alignbytes)))
- 그림 5에 표시된 프로젝트 > 속성 > C/C++ 빌드 > MCU 설정에서 위 메모리 섹션 fb_sh_mem에 대한 메모리 할당을 구성합니다.
- lvgl_gui_face_rec_cm7.cpp에서 전역 변수 g_DTCOPBuf를 선언합니다: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- 위 변수에 사용된 정의를 계속 추가합니다.
- Board_define.h에서 위 섹션을 정의합니다.
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- attribute__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- attribute__((aligned(alignbytes)))
- 헤더 포함 file lvgl_gui_face_rec_cm7.cpp에 포함된 app_config.h의 매크로 정의 DTC_OPTIMIZE_BUFFER_SIZE를 포함하는 hal_vision_algo.h.
- board_define.h에 비디오 프레임에 대한 매크로 정의 및 메모리 섹션을 추가합니다: #define OASIS_RGB_FRAME_WIDTH 800
- 얼굴 인식 진행 상태를 표시하려면 s_debugOption 변수를 true로 설정하세요.
- 헤더의 검색 경로 추가 file프로젝트의 비전 HAL > 속성 > C/C++ 빌드 > 설정 > 도구 설정 > MCU C 컴파일러 > 포함 및 MCU C++ 컴파일러 > 포함: “${workspace_loc:/${ProjName}/framework/hal/vision}”
- Board_define.h에서 비전 알고리즘 HAL을 활성화하려면 아래 정의를 추가하세요. #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
출력 UI HAL 사용 설정
출력 UI HAL은 이벤트를 비전 알고리즘 HAL에 알리고 비전 알고리즘 HAL의 추론 결과에 응답합니다. GUI 앱을 사용하면 일반적으로 이벤트가 앱에 의해 트리거되고 결과가 앱에 표시됩니다.
활성화하려면 기존의 유사한 HAL 드라이버를 복제하세요. file 일반적으로 아래 기능이 구현됩니다.
- 얼굴 인식 및 데이터베이스 접근에 대한 이벤트를 알립니다.
- 이벤트를 트리거하는 GUI 앱에 대한 콜백을 구현합니다.
- 비전 알고리즘 모듈의 추론 결과를 처리합니다.
- 타이머와 얼굴 가이드 사각형으로 제어되는 진행 표시줄을 통해 이벤트 처리 과정과 결과를 UI에 표시합니다.
주요 작업은 ex용 HAL을 구현하는 것입니다.amp이 문서에 사용된 파일은 다음과 같습니다.
- 기존 유사한 HAL 드라이버 복제 file 관련 이름을 변경합니다.
- 앱과 관련된 코드를 제거하세요.
- ex에 따른 이벤트 알림 및 결과 응답 기능 업데이트amp설계.
- 이벤트를 트리거하려면 GUI 앱에 대한 콜백을 추가하세요.
자세한 단계는 다음과 같습니다.
- hal_output_ui_coffee_machine.c를 복제합니다. 변경 filehal_output_ui_guifacerec.c에 이름을 지정합니다.
- 모든 문자열 CoffeeMachine을 GUIFaceRec으로 교체합니다. file.
- 앱 – 커피 머신 관련 코드를 제거하세요.
- WakeUp() 및 _StandBy() 함수와 관련 코드를 제거합니다(wake_up 및 대기 문자열을 검색할 수 있음).
- 사전 제거view HAL_OutputDev_UiGUIFaceRec_Input Notify()에서 관련 코드를 처리하는 모드 이벤트입니다.
- UI_xxx_Callback() 함수와 gui_ 문자열이 포함된 코드 및 사전에 대한 gui_set_virtual_face()를 제외하고 커피 머신의 GUI와 관련된 화면을 제거합니다.view 모드 기능.
- 커피 머신 앱과 관련된 s_IsWaitingAnotherSelection 및 s_IsWaitingRegisterSelection 변수와 관련된 모든 코드를 제거합니다.
- 음성, 오디오, 언어와 관련된 코드를 제거합니다. 예를 들어amp르 :
- #include “hal_voice_algo_asr_local.h”,
- #include “hal_event_descriptor_voice.h”
- 다양한 이벤트 알림을 위해서는 _StopFaceRec(), _RegisterCoffeeSelection(), DeregisterCoffeeSelection() 함수를 참조하여 새로운 함수인 _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec(), DeregisterGUIFaceRec()를 구현한 후 삭제하세요.
- _OutputManagerNotify()는 비전 알고리즘 HAL에 이벤트를 보내는 기본 이벤트 출력 함수를 구현합니다. 아래 함수는 이를 호출하여 자체 이벤트를 보냅니다.
- _SetFaceRec()는 kEventFaceRecID_OasisSetState 이벤트를 전송하여 얼굴 등록, 인식을 위한 비전 알고리즘을 트리거하고 알고리즘을 중지합니다.
- _RegisterGUIFaceRec()는 등록이 성공하면 얼굴 특징 데이터를 데이터베이스에 추가하기 위해 smart_tlhmi_event_descriptor.h에 정의된 kEventFaceRecId_RegisterGUIFaceRec 이벤트를 보냅니다.
- DeregisterGUIFaceRec()는 얼굴 인식을 통과할 때 데이터베이스에서 얼굴 특징 데이터를 삭제하기 위해 kEventFaceRecID_DelUser 이벤트를 보냅니다.
- ex에 따라 _InferComplete_Vision() 함수에서 얼굴 등록 및 인식의 추론 결과를 위해 LVGL GUI 앱에서 API를 호출하여 GUI 새로 고침을 포함하여 해당 작업을 수행하도록 코드를 업데이트합니다.amp르 디자인. 예를 들어amp르, 얼굴 등록이 성공하면,
- _FaceRecProcess_Stop()을 호출하여 진행 상황 표시를 중지합니다.
- _SetFaceRec(kOASISLiteState_Stopped);를 호출하여 얼굴 등록을 중지합니다.
- GUI에 성공적인 결과를 표시합니다: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- 얼굴 데이터를 데이터베이스에 등록합니다: _RegisterUserFace(s_UserId);
- 이벤트를 처리하기 위한 UI 콜백 함수 추가: preview, 얼굴 등록, 인식 및 사용자 삭제가 GUI에서 실행됩니다. 예를 들어amp파일, 얼굴 등록 콜백: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- 그리고 _FaceRecProcess_Start() 및 _FaceRecProcess_Stop() 함수를 추가하여 다양한 이벤트 및 결과의 진행 상황과 상태를 표시합니다.
- 다음을 호출하여 시간 초과 사례를 처리하도록 타이머 ISR 콜백 함수 _SessionTimer_Callback()을 업데이트합니다. gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Board_define.h에서 UI 출력 HAL을 활성화하려면 아래 정의를 추가하세요. #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
알아채다:
얼굴 인식 기능을 더 잘 표현하려면 출력 UI HAL에 얼굴 인식 과정과 결과를 표시하는 기능을 유지하세요. 기능은 아래와 같습니다.
- 얼굴 가이드 직사각형은 파란색으로 표시되고, 진행률 표시줄에는 얼굴 등록이나 인식을 시작할 때 진행 상황이 표시됩니다.
- 얼굴 등록이 성공하면 얼굴 안내 직사각형이 빨간색으로 표시됩니다.
- 얼굴 인식에 성공하면 얼굴 가이드 직사각형이 녹색으로 표시됩니다.
- 얼굴 가이드 직사각형은 파란색을 유지하고, 타이머 만료 후 작업이 실패하면 진행률 표시줄에 전체 진행률이 표시됩니다. 그 시점에서는 얼굴 등록이나 인식을 중지하세요.
진행률 표시줄과 얼굴 안내 사각형은 리소스 바이너리에 내장된 아이콘으로 표시됩니다. file 플래시에 프로그래밍할 수 있습니다. SDRAM의 아이콘 데이터에 대한 포인터는 출력 UI HAL의 출력 UI HAL 기기 초기화에서 호출되는 LoadIcons(APP_ICONS_BASE) 함수에서 설정됩니다. 해당 기능에 대한 아이콘 지원을 구현해야 합니다.
아이콘 지원 구현
- LVGL GUI 앱에서 사용되는 이미지와 아이콘을 결합하여 리소스를 구축합니다.
- 4개의 아이콘 헤더를 복제합니다. file스마트 HMI의 process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h 및 virtual_face_red_420x426.h
\coffee machine\resource\icons\를 ex의 리소스 폴더 아래에 있는 새 폴더 아이콘으로 복사합니다.amp르 SW. - 4개 아이콘에 대한 검색 경로 추가 fileCamera_pre에 있어요view_resource.txt file 예를 들어 리소스 폴더에amp파일: icon ../resource/icons/process_bar_240x14.h
- Camera_pre 실행view_resource_build.bat - 빈을 생성하기 위한 이미지와 아이콘 리소스를 빌드합니다. file 카메라_프리view_resource.bin 및 정보 file resources_information_table.txt(그림 6 참조).
- 4개의 아이콘 헤더를 복제합니다. file스마트 HMI의 process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h 및 virtual_face_red_420x426.h
- SDRAM의 시작 주소와 app_config.h의 아이콘 크기를 정의합니다. 주소는 GUI 앱의 이미지 옆에서 시작됩니다. 크기는 정보에서 생성됩니다. file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
- app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 및 프로젝트 > 속성 > C/C++ 빌드 > MCU 설정에서 해당 설정을 다시 정의하여 res_sh_mem이라는 메모리 섹션의 할당된 크기를 0x200000으로 업데이트합니다.
- 메인의 APP_LoadResource() 함수에서 Flash에서 SDRAM으로 로드된 리소스의 전체 크기에 아이콘 크기를 추가합니다. file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
알아채다: 얼굴 인식 기능을 완성하려면 LVGL GUI 앱 지원이 필요합니다. 출력 UI HAL의 UI 콜백 함수는 UI 화면의 이벤트를 처리하기 위해 LVGL GUI 앱에서 호출됩니다. 반면 출력 UI HAL은 LVGL GUI 앱에서 API를 호출하여 UI를 업데이트하여 결과와 상태를 표시합니다. LVGL GUI 앱의 개발은 비교적 독립적이며 섹션 4.3에 소개되어 있습니다.
4.1.5 얼굴 인식을 위한 HAL 장치 및 관리자 시작
활성화된 비전 알고리즘 HAL 및 UI 출력 HAL과 해당 관리자는 기본에서 시작됩니다. file
lvgl_gui_face_rec_cm7.cpp는 아래와 같이 프레임워크에서 개발 변환을 따릅니다.
- 헤더 포함 file 다음 코드 줄을 추가하여 두 HAL 관리자와 관련됩니다.
- #include “fwk_output_manager.h”
- #include “fwk_vision_algo_manager.h”
- HAL 장치를 선언합니다.
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- HAL 장치를 등록합니다.
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- 관리자를 초기화합니다.
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- 관리자를 시작합니다.
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
- 관리자 작업의 우선순위를 정의합니다.
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #OUTPUT_MANAGER_TASK_PRIORITY 1 정의
프레임워크에 얼굴 데이터베이스 지원 추가
등록된 얼굴 특징 데이터는 Flash에 저장된 얼굴 데이터베이스에서 약간의 방법을 통해 액세스됩니다. file 체계. 얼굴 데이터베이스 지원을 추가하는 단계는 아래에 설명되어 있습니다.
플래시 저장소용 드라이버 추가
플래시 인터페이스 FlexSPI 드라이버 복사 filefsl_flexspi.c 및 fsl_flexspi.h 및 데이터 암호화 드라이버 files SDK_2_13_0_MIMXRT1170-EVK\devices\MIMRX1176\drivers\ 경로의 fsl_caam.c 및 fsl_caam.h를 ex의 drivers 폴더로amp르 SW.
보드 수준 지원 추가
- Board.h에 온보드 플래시 장치에 사용되는 FlexSPI 정의를 추가합니다.
- #BOARD_FLEXSPI FLEXSPI1 정의
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- 연산자 및 구성 복사 filesmart HMI\coffee_machine\cm25\source\flash_config\ 경로 아래 플래시 장치 flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w256q7jvs.h 및 sln_flash_ops.h를 ex 폴더 보드에 복사합니다.amp르 SW.
- C/C++ 빌드 > 설정에서 마우스 오른쪽 버튼을 클릭한 후 "빌드에서 리소스 제외"를 선택 취소합니다. file의 이름을 입력하고 프로젝트에 빌드할 수 있도록 속성을 엽니다.
- 포함된 헤더 변경 filesln_flash_config.h의 이름을 sln_flash_config.c 및 flexspi_nor_flash_ops.h의 sln_flash_config_w25q256jvs.h로 지정합니다.
- FlexSPI1 클록 소스를 다음에서 설정합니다. file 커피 머신 앱을 참조하는 clock_config.c.
어댑터 및 중간 수준 지원 추가
- 복사하다 filesln_flash.c, sln_flash.h, sln_encrypt.c 및 sln_encrypt.h를 위한 어댑터 드라이버 file smart HMI\coffee_machine\cm7\source\ 경로에서 ex 폴더 소스로의 시스템 및 앱amp르. 새로운 업데이트 files:
- 빌드하려면 "빌드에서 리소스 제외"를 선택 취소하세요.
- 포함된 헤더를 모두 변경합니다. file sln_flash_config.h의 이름을 sln_flash_config_w25q256jvs.h로 지정합니다.
- 폴더 복사 file작은 API를 포함하는 시스템 file스마트 HMI \coffee_machine\cm7\source\의 시스템 및 HAL 드라이버를 ex로amp르 SW. 그리고 새 폴더에 대한 업데이트:
- 빌드하려면 "빌드에서 리소스 제외"를 선택 취소하세요.
- 프로젝트 설정에 포함 경로를 추가하세요: “${workspace_loc:/${ProjName}/file체계}"
- 포함된 헤더 변경 file sln_flash_config.h를 sln_flash_config_w25q256jvs.h로, fica_definition.h를 app_config.h로 이름을 지정하세요. file sln_flash_littlefs.h.
- 미들웨어가 포함된 littlefs 폴더를 복사합니다. fileSDK_2_13_0_ MIMXRT1170-EVK\middleware\ 경로에서 ex로의 시스템amp르 SW. 그리고 새 폴더를 업데이트합니다.
- 빌드하려면 "빌드에서 리소스 제외"를 선택 취소하세요.
- 프로젝트 설정에 포함 경로를 추가하세요: “${workspace_loc:/${ProjName}/littlefs}”
HAL 드라이버 추가
- 두 개의 HAL 장치가 있습니다. file 시스템 및 얼굴 데이터베이스 HAL은 데이터베이스 액세스 기능을 지원하며 변경 사항 없이 이미 프레임워크에 구현되어 있습니다. Board_define.h에 아래 정의를 추가하여 활성화하세요.
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
그리고 전 애인의 얼굴 데이터베이스 이름을 변경하세요amp파일: #define OASIS_FACE_DB_DIR "oasis_gui_face_rec"
앱 수준 지원 추가
- 메인 업데이트 file lvgl_gui_face_rec_cm7.cpp:
- 헤더 포함 file 플래시와 관련된 file 다음 코드 줄을 추가하여 시스템 HAL 관리자: #include “fwk_flash.h”
- 신고 및 등록 file 시스템 HAL 장치:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
메모: 그 file 모든 장치 관리자가 APP_InitFramework() 함수에서 초기화되기 전에 시스템 HAL 장치를 등록해야 합니다.
- MPU를 구성하려면 APP_BoardInit()에서 BOARD_ConfigMPU() 함수를 호출하세요.
- 설정하다 file 플래시에 시스템 할당 file app_config.h에서 사용되는 매크로 정의를 정의하여 file sln_flash_littlefs.h:
- #FICA_IMG_ 정의FILE_SYS_ADDR(FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #FICA 정의_FILE_SYS_SIZE(0x280000)
구성
충분한 성능을 위해 일부 Flash 관련 코드는 SRAM ITC 영역에서 실행됩니다. smart HMI\coffee_machine\cm7\ 경로에서 링커 구성이 포함된 linkscripts 폴더를 ex로 복사합니다.amp르 SW.
LVGL GUI 앱 구현
프레임워크 기반 LVGL GUI 앱 개발은 출력 UI HAL에서 API를 호출하고 출력 UI HAL에 API를 제공합니다(출력 UI HAL 구현은 섹션 4.1.3 참조).
그러나 LVGL GUI 앱의 세부 구현은 애플리케이션의 요구 사항과 디자인에 따라 다릅니다. 이 ex의 GUI 앱amp파일은 섹션 4의 시작 부분에 설명된 대로 설계되었습니다.
다음은 구현 소개입니다.
- 사용자 정의 코드는 GUI Guider 프로젝트와 임베디드 시스템 프로젝트 간의 인터페이스로 GUI Guider에서 제공하는 custom.c 및 custom.h에 구현됩니다.
- 아래 기능을 구현하려면 custom.c에 gui_xxx()라는 새 기능을 추가하세요.
- 출력 UI HAL 및 GUI 앱의 경우 UI를 업데이트합니다.
- GUI 앱이 출력 UI HAL에서 UI 콜백 함수를 호출하여 이벤트를 트리거하는 경우.
예를 들어amp파일에서 새로운 함수 gui_event_face_rec_action()은 UI 콜백 함수를 호출하여 관련 버튼을 클릭할 때 GUI 앱에서 트리거되는 얼굴 등록, 얼굴 인식 및 사용자 삭제 이벤트 중 하나를 처리합니다.
참고: 사전에 대한 출력 UI HAL에서 호출된 gui_set_virtual_face() 함수view 모드는 custom.c에서 구현되어야 합니다.
- 스마트 HMI\coffee_machine\cm4\custom\custom.c에서 gui_set_virtual_face() 함수를 복제합니다.
- 위젯 이름 home_img_cameraPre 변경view screen_img_camera_pre로view 기능에서.
- 출력 UI HAL의 이러한 함수는 GUI Guider 프로젝트와 호환되도록 custom.c의 매크로 정의 #ifndef RT_PLATFORM 제어 하에 출력 UI HAL의 모든 함수에 동일한 프로토타입을 사용하여 UI 콜백 함수를 구현합니다. 임베디드 플랫폼. custom.c에서는 GUI 가이드의 시뮬레이터에 의존하며 임베디드 플랫폼에 독립적입니다. 예를 들어ample, 얼굴 등록 콜백은 실행 중인 GUI Guider 시뮬레이터에 대해 아래와 같이 구현됩니다. #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = 거짓; 반품; }
메모: 섹션 6의 4.1.3단계에서 소개된 함수의 동일한 프로토타입을 참조하세요.
매크로 정의 RT_PLATFORM은 그림 7과 같이 MCUXpresso의 프로젝트 설정에서 설정됩니다. - custom.h에 UI_xxx_Callback() 및 gui_xxx()라는 함수를 모두 선언하고 smart_tlhmi_event_descriptor.h에 포함된 custom.h를 추가하여 GUI API를 UI 출력 HAL에 공유합니다.
- 아래 기능을 구현하려면 custom.c에 gui_xxx()라는 새 기능을 추가하세요.
- GUI Guider에서 GUI 개발:
- 폴더 카메라 사전 복제view 기본 소프트웨어 패키지 lvgl_gui_camera_pre의 gui_guider 폴더에 GUI Guider 프로젝트 소프트웨어가 포함되어 있습니다.view_cm7. 관련 이름 Camera_pre 변경view 새로운 전 애인을 위해 Face_Rec에amp르.
- 위에서 업데이트된 custom.c 및 custom을 복사합니다. h를 새로운 GUI Guider 프로젝트 소프트웨어로 전환합니다.
- GUI Guider에서 새로운 Face_rec 프로젝트를 엽니다. 아래와 같이 업데이트하세요.
- 사용자 삭제라고 표시된 새 버튼을 추가합니다. GUI 앱이 시작될 때 버튼이 숨겨지도록 Hidden 플래그를 추가하세요.
- 얼굴 등록, 얼굴 인식 및 사용자 삭제 이벤트를 트리거하기 위해 모든 버튼 등록, 인식 및 사용자 삭제의 이벤트 설정에서 "릴리스" 트리거에 다른 이벤트 ID 매개변수를 사용하여 API gui_event_face_rec_action()을 호출하는 코드 라인을 추가합니다. 그림 8은 등록 버튼 이벤트에 대한 코드를 보여줍니다.
- GUI Guider에서 생성된 코드를 MCUXpresso 프로젝트로 업데이트합니다.
- MCUXpresso 프로젝트 SW로 생성된 폴더에서 폴더 이미지를 제외한 내용을 GUI Guider 프로젝트 SW로 생성된 폴더의 해당 폴더로 교체합니다.
메모: 위에 소개된 수정 사항에 대한 자세한 내용은 ex를 확인하세요.amp르 소프트웨어 https://mcuxpresso.nxp.com/appcodehub.
전 애인과의 확인amp르 프로젝트
전 애인을 얻으려면amp이 애플리케이션 노트에 대한 리소스와 도구가 포함된 파일 소프트웨어 패키지를 보려면 다음 사이트를 방문하세요. https://mcuxpresso.nxp.com/appcodehub. 전직을 열어라ampMCUXpresso IDE의 파일 프로젝트. .axf 빌드 및 프로그래밍 file 주소 0x30000000으로 이동하고 리소스 저장소를 프로그래밍하세요. file 카메라_프리view_resource.bin을 주소 0x30800000으로 복사합니다.
LVGL GUI 얼굴 인식 예ample는 아래와 같이 정상적으로 작동합니다.
- 사전view: 전원을 켜면 카메라가 캡처한 비디오 스트림이 카메라 프리의 특정 영역에 표시됩니다.view GUI 화면에서. 상태 라벨에 "Preview…”. 자세한 내용은 그림 3을 참조하세요. 사용자 삭제 버튼이 숨겨져 있습니다. 버튼과 이미지 이외의 영역을 클릭하면 사전 화면이 표시됩니다.view 얼굴 등록이나 인식 작업이 끝난 후 위와 같이 상태가 됩니다.
- 등록:
- 타트업: 등록 버튼을 클릭하면 얼굴 등록이 시작됩니다. 상태 라벨이 "등록..."으로 변경되고 얼굴 안내 직사각형이 파란색으로 표시되며 진행률 표시줄에 진행률이 표시되기 시작합니다. 등록을 위해 사용자의 얼굴이 파란색 얼굴 가이드 직사각형에 표시되는지 확인하세요.
- 성공: 상태 라벨에 "등록...확인"과 등록된 사용자 ID 번호가 표시됩니다. 진행률 표시줄에 진행률이 가득 찼다고 표시되기 전에 얼굴 등록이 성공하면 얼굴 가이드 사각형이 빨간색으로 변합니다.
- 실패 -> 시간 초과: 진행률 표시줄에 진행률이 가득 찼을 때 얼굴 등록에 여전히 실패하면 상태 라벨에 "등록...시간 초과"가 표시됩니다.
- 실패 -> 복제: 상태 라벨에 "등록...실패"가 표시되고, 진행률 표시줄에 전체 진행률이 표시되기 전에 등록된 얼굴이 인식되면 얼굴 가이드 직사각형이 녹색으로 변합니다.
- 인식:
- 시작 : 인식 버튼을 클릭하면 얼굴 인식이 시작됩니다. 상태 라벨이 "인식..."으로 변경되고 얼굴 안내 직사각형이 파란색으로 표시되며 진행률 표시줄에 진행률이 표시되기 시작합니다. 등록을 위해 사용자의 얼굴이 파란색 얼굴 가이드 직사각형에 표시되는지 확인하세요.
- 성공: 상태 라벨에 "인식...정상"이 표시되고 인식된 사용자 ID 번호가 표시됩니다. 진행률 표시줄에 진행률이 가득 표시되기 전에 얼굴 인식이 성공하면 얼굴 가이드 직사각형이 녹색으로 변합니다. 이때 사용자 삭제 버튼이 나타납니다. 이는 사용자가 인식된 경우에만 삭제가 허용된다는 의미입니다.
- 아일루어: 바에 진행률이 가득 찼을 때 얼굴 인식에 여전히 실패하면 상태 라벨에 "인식...시간 초과"가 표시됩니다.
- 사용자 삭제: “사용자 삭제” 버튼을 클릭하면 얼굴 인식이 성공한 후 상태 라벨이 “사용자 삭제… 사용자 삭제 버튼이 다시 숨겨집니다. 인식된 얼굴/사용자는 데이터베이스에서 삭제됩니다. 이는 다시 등록될 때까지 이 얼굴/사용자를 인식할 수 없음을 의미합니다.
문서의 소스 코드에 대한 참고 사항
Examp이 문서에 표시된 파일 코드에는 다음과 같은 저작권 및 BSD-3-Clause 라이선스가 있습니다.
Copyright 2024 NXP 소스 및 바이너리 형식의 재배포 및 사용은 수정 여부에 관계없이 다음 조건이 충족되는 경우 허용됩니다.
- 소스 코드를 재배포하는 경우에는 위의 저작권 고지, 본 조건 목록 및 다음 면책 조항을 그대로 유지해야 합니다.
- 바이너리 형식의 재배포는 위의 저작권 고지, 이 조건 목록 및 문서 및/또는 기타 자료의 다음 면책 조항을 배포와 함께 제공해야 합니다.
- 구체적인 사전 서면 승인 없이는 저작권 소유자의 이름이나 기여자의 이름을 사용하여 이 소프트웨어에서 파생된 제품을 보증하거나 홍보할 수 없습니다.
이 소프트웨어는 저작권 소유자 및 기여자에 의해 "있는 그대로" 제공되며 상품성과 특정 목적에의 적합성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 명시적 또는 묵시적 보증은 부인됩니다. 어떠한 경우에도 저작권 소유자 또는 기여자는 계약, 엄격책임 또는 불법행위(과실 또는 기타 포함)에 따른 책임 이론에 따라 이 소프트웨어의 사용으로 인해 발생하는 직접적, 간접적, 우발적, 특별, 모범적 또는 결과적 손해(대체 상품 또는 서비스의 조달, 사용 불가, 데이터 또는 수익 손실, 업무 중단을 포함하되 이에 국한되지 않음)에 대해 책임을 지지 않습니다. 이는 그러한 손해의 가능성을 사전에 알고 있었더라도 마찬가지입니다.
개정 내역
법적 정보
정의
초안 - 문서의 초안 상태는 콘텐츠가 여전히 내부 검토 중임을 나타냅니다.view 그리고 수정이나 추가가 있을 수 있는 공식 승인을 받아야 합니다. NXP Semiconductors는 문서의 초안 버전에 포함된 정보의 정확성이나 완전성에 대해 어떠한 진술이나 보증도 제공하지 않으며, 그러한 정보의 사용으로 인한 결과에 대해 책임을 지지 않습니다.
부인 성명
- 제한된 보증 및 책임 — 이 문서의 정보는 정확하고 신뢰할 수 있는 것으로 간주됩니다. 그러나 NXP Semiconductors는 그러한 정보의 정확성 또는 완전성에 대해 명시적이든 묵시적이든 어떠한 진술이나 보증도 하지 않으며 그러한 정보의 사용 결과에 대해 책임을 지지 않습니다. NXP Semiconductors는 NXP Semiconductors 외부의 정보 출처에서 제공한 경우 이 문서의 내용에 대해 책임을 지지 않습니다.
NXP Semiconductors는 어떠한 경우에도 간접적, 부수적, 징벌적, 특별 또는 결과적 손해(이익 손실, 저축 손실, 사업 중단, 제품 제거 또는 교체 관련 비용 또는 재작업 비용을 포함하되 이에 국한되지 않음)에 대해 책임을 지지 않습니다. 그러한 손해는 불법 행위(과실 포함), 보증, 계약 위반 또는 기타 법적 이론에 근거하지 않습니다.
어떤 이유로든 고객이 입을 수 있는 손해에도 불구하고 여기에 설명된 제품에 대한 고객에 대한 NXP Semiconductors의 총체적이고 누적된 책임은 NXP Semiconductors의 상업적 판매 약관에 따라 제한됩니다. - 변경할 권리 — NXP Semiconductors는 사양 및 제품 설명을 포함하되 이에 국한되지 않는 이 문서에 게시된 정보를 사전 통지 없이 언제든지 변경할 수 있는 권한을 보유합니다. 이 문서는 발행 전에 제공된 모든 정보를 대체하고 대체합니다.
- 사용에 대한 적합성 — NXP Semiconductors 제품은 생명 유지, 생명에 중요한 또는 안전에 중요한 시스템이나 장비, NXP Semiconductors 제품의 고장 또는 오작동으로 인해 부상, 사망 또는 심각한 재산 또는 환경 피해. NXP Semiconductors 및 그 공급업체는 그러한 장비 또는 응용 프로그램에 NXP Semiconductors 제품을 포함 및/또는 사용하는 것에 대해 책임을 지지 않으므로 그러한 포함 및/또는 사용에 대한 책임은 고객에게 있습니다.
- 응용 프로그램 — 이러한 제품에 대해 여기에 설명된 응용 프로그램은 설명을 위한 것입니다. NXP Semiconductors는 이러한 응용 프로그램이 추가 테스트 또는 수정 없이 지정된 용도에 적합할 것이라는 진술이나 보증을 하지 않습니다.
고객은 NXP Semiconductors 제품을 사용하는 애플리케이션 및 제품의 설계 및 운영에 대한 책임이 있으며, NXP Semiconductors는 애플리케이션 또는 고객 제품 설계에 대한 지원에 대해 어떠한 책임도 지지 않습니다. NXP Semiconductors 제품이 고객의 애플리케이션과 계획된 제품뿐만 아니라 고객의 제3자 고객의 계획된 애플리케이션 및 사용에 적합하고 적합한지 여부를 결정하는 것은 전적으로 고객의 책임입니다. 고객은 애플리케이션 및 제품과 관련된 위험을 최소화하기 위해 적절한 설계 및 운영 보호 장치를 제공해야 합니다. NXP Semiconductors는 고객의 애플리케이션이나 제품, 고객의 제3자 고객의 애플리케이션이나 사용의 약점이나 불이행으로 인한 모든 불이행, 손상, 비용 또는 문제와 관련된 어떠한 책임도 지지 않습니다. 고객은 애플리케이션 및 제품의 기본값 또는 고객의 제3자 고객에 의한 애플리케이션 또는 사용의 기본값을 방지하기 위해 NXP Semiconductors 제품을 사용하여 고객의 애플리케이션 및 제품에 대해 필요한 모든 테스트를 수행할 책임이 있습니다. NXP는 이와 관련하여 어떠한 책임도 지지 않습니다. - 상업적 판매 약관 — NXP Semiconductors 제품은 https://www.nxp.com/pro에 게시된 상업 판매 일반 이용약관에 따라 판매됩니다.file유효한 서면 개별 계약에서 달리 합의하지 않는 한 /terms. 개별 계약이 체결된 경우 해당 계약의 조건만 적용됩니다. NXP Semiconductors는 이로써 고객이 NXP Semiconductors 제품을 구매하는 것과 관련하여 고객의 일반 약관을 적용하는 것을 명시적으로 반대합니다.
- 수출 통제 — 이 문서와 여기에 설명된 항목은 수출 통제 규정의 적용을 받을 수 있습니다. 수출에는 관할 당국의 사전 승인이 필요할 수 있습니다.
- 비자동차 적격 제품에 사용하기 위한 적합성 — 이 문서에서 이 특정 NXP Semiconductors 제품이 자동차 인증을 받았다고 명시적으로 명시하지 않는 한, 해당 제품은 자동차용으로 적합하지 않습니다. 이는 자동차 테스트 또는 애플리케이션 요구 사항에 따라 인증되거나 테스트되지 않았습니다. NXP Semiconductors는 자동차 장비 또는 애플리케이션에 비자동차 인증 제품을 포함 및/또는 사용하는 것에 대해 어떠한 책임도 지지 않습니다.
고객이 자동차 사양 및 표준에 대한 자동차 애플리케이션의 설계 및 사용을 위해 제품을 사용하는 경우 고객 (a) 해당 자동차 애플리케이션, 용도 및 사양에 대한 제품에 대한 NXP Semiconductors의 보증 없이 제품을 사용해야 합니다. b) 고객이 NXP Semiconductors의 사양을 넘어 자동차 애플리케이션용으로 제품을 사용할 때마다 그러한 사용은 전적으로 고객의 책임이며 (c) 고객은 NXP Semiconductors의 고객 설계 및 사용으로 인한 모든 책임, 손해 또는 실패한 제품 클레임에 대해 완전히 면책합니다. NXP Semiconductors의 표준 보증 및 NXP Semiconductors의 제품 사양을 넘어선 자동차 애플리케이션용 제품입니다. - 번역 — 해당 문서의 법적 정보를 포함하여 문서의 비영어(번역) 버전은 참조용입니다. 번역된 버전과 영어 버전 간에 불일치가 있는 경우 영어 버전이 우선합니다.
- 보안 — 고객은 모든 NXP 제품이 확인되지 않은 취약점의 영향을 받거나 알려진 제한 사항이 있는 확립된 보안 표준 또는 사양을 지원할 수 있음을 이해합니다. 고객은 이러한 취약성이 고객의 응용 프로그램 및 제품에 미치는 영향을 줄이기 위해 전체 수명 주기 동안 응용 프로그램 및 제품의 설계 및 운영에 대한 책임이 있습니다. 고객의 책임은 또한 고객의 애플리케이션에서 사용하기 위해 NXP 제품이 지원하는 다른 개방형 및/또는 독점 기술로 확장됩니다. NXP는 어떠한 취약점에 대해서도 책임을 지지 않습니다. 고객은 NXP의 보안 업데이트를 정기적으로 확인하고 적절하게 후속 조치를 취해야 합니다. 고객은 의도한 응용 프로그램의 규칙, 규정 및 표준을 가장 잘 충족하는 보안 기능이 있는 제품을 선택하고 제품에 대한 최종 설계 결정을 내립니다. NXP가 제공할 수 있는 모든 정보 또는 지원.
NXP에는 NXP 제품의 보안 취약성에 대한 조사, 보고 및 솔루션 릴리스를 관리하는 PSIRT(제품 보안 사고 대응 팀)(PSIRT@nxp.com으로 연락 가능)가 있습니다.
NXP BV — NXP BV는 운영 회사가 아니며 제품을 배포하거나 판매하지 않습니다.
상표
알아채다: 참조된 모든 브랜드, 제품 이름, 서비스 이름 및 상표는 해당 소유자의 자산입니다.
NXP — 워드마크 및 로고는 NXP BV의 상표입니다.
AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed 지원, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile —은 미국 및/또는 Arm Limited(또는 그 자회사 또는 계열사)의 상표 및/또는 등록 상표입니다. 다른 곳. 관련 기술은 특허, 저작권, 디자인 및 영업 비밀 중 일부 또는 전부에 의해 보호될 수 있습니다. 판권 소유.
- i.MX — NXP BV의 상표입니다.
- J-링크 — SEGGER Microcontroller GmbH의 상표입니다.
Microsoft, Azure 및 ThreadX는 Microsoft 그룹 계열사의 상표입니다.
이 문서와 여기에 설명된 제품에 대한 중요한 고지 사항은 '법적 정보' 섹션에 포함되었습니다.
© 2024 NXP BV
자세한 내용은 다음 사이트에서 확인하세요. https://www.nxp.com
- 출시일: 19년 2024월 XNUMX일
- 문서 식별자: AN14263
자주 묻는 질문
Q: 이 제품의 주요 목적은 무엇입니까?
A: 주요 목적은 간단한 LVGL GUI ex를 사용하여 AI&ML 비전 알고리즘 모델을 사용하여 얼굴 인식 기능을 활성화하는 것입니다.ampSLN-TLHMI-IOT 보드에 있는 파일입니다.
Q: 개발자는 이 애플리케이션 노트를 통해 어떤 이점을 얻을 수 있습니까?
A: 개발자는 제공된 ex를 사용하여 프레임워크에서 얼굴 인식을 구현하는 방법을 단계별로 배울 수 있습니다.amp관련된 장치 관리자, HAL 장치 및 이벤트 메커니즘을 파일로 만들고 이해합니다.
문서 / 리소스
![]() |
NXP AN14263, Framewor에서 LVGL GUI 얼굴 인식 구현 [PDF 파일] 사용자 가이드 AN14263 Framewor에서 LVGL GUI 얼굴 인식 구현, AN14263, Framewor에서 LVGL GUI 얼굴 인식 구현, Framewor에서 LVGL GUI 얼굴 인식 구현, Framewor에서 얼굴 인식, Framewor, Framewor에서 인식 |