NXP AN14263 Implementer LVGL GUI Ansigtsgenkendelse på Framewor
Produktinformation
Specifikationer
- Produktnavn: LVGL GUI Ansigtsgenkendelse på Framework
- Dokumentrevision: 1. – 19. april 2024
- Nøgleord: Ansigtsgenkendelse, LVGL GUI, Framework
Produktbrugsvejledning
- Overview
Dette produkt muliggør AI&ML-visionsalgoritmemodel for ansigtsgenkendelse på et framework til at implementere ansigtsgenkendelsesfunktion med en simpel LVGL GUI ex.ample på SLN-TLHMI-IOT-kortet. - Ramme overståetview
Løsningssoftwaren er designet omkring rammearkitekturen, der omfatter enhedsadministratorer, der er ansvarlige for at administrere enheder, HAL-enheder til at abstrahere underliggende detaljer og begivenheder til kommunikation mellem forskellige enheder. - Funktioner
Produktet giver mulighed for implementering af ansigtsgenkendelsesfunktion via kamera preview på GUI-skærmen med knapper til at udløse ansigtsregistrering, genkendelse og fjernelse. Registrerede ansigtsdata gemmes på Flash via en file system. - Applikationsnoteindhold
Applikationsnoten præsenterer en LVGL GUI-skærm med kameraforudview og knapper til ansigtsrelaterede handlinger. Det hjælper udviklere med at forstå rammerne og hvordan man implementerer ansigtsgenkendelse ved hjælp af det medfølgende example.
Overview
NXP har lanceret et løsningsudviklingssæt ved navn SLN-TLHMI-IOT, der fokuserer på smarte HMI-applikationer. Det muliggør smart HMI med ML vision, stemme og grafik UI implementeret på én NXP i.MX RT117H MCU. Baseret på SDK'et er løsningssoftwaren konstrueret på et design kaldet framework, der understøtter fleksible designs og tilpasning af syns- og stemmefunktioner. For at hjælpe brugerne med at bruge softwareplatformen bedre, leveres nogle grundlæggende dokumenter, f.eksample, brugervejledningen til softwareudvikling. Vejledningen introducerer det grundlæggende softwaredesign og -arkitektur af applikationerne, der dækker alle komponenter i løsningen, inklusive rammeværket, for at hjælpe udviklerne lettere og mere effektivt at implementere deres applikationer ved hjælp af SLN-TLHMI-IOT.
For flere detaljer om løsningen og relevante dokumenter, besøg web side af NXP EdgeReady Smart HMI-løsning baseret på i.MX RT117H med ML Vision, Voice og Graphical UI. Det er dog stadig ikke så nemt for udviklerne at implementere deres smarte HMI-applikationer med henvisning til disse grundlæggende vejledninger. En række ansøgningsnotater er planlagt til at hjælpe med at studere udviklingen på rammen trin for trin. Denne applikationsnote er baseret på Implement LVGL GUI Camera Preview om Framework (dokument AN14147). Denne applikationsnote beskriver, hvordan man aktiverer AI&ML-visionsalgoritmemodellen for ansigtsgenkendelse på rammen for at implementere ansigtsgenkendelsesfunktionen via kameraforudview på GUI-skærmen med en simpel LVGL GUI example på SLN-TLHMI-IOT-kortet. I ansøgningsnotatet er fhvample præsenterer en LVGL GUI-skærm med et kamera preview og nogle knapper til at udløse ansigtsregistrering, genkendelse og fjernelse. De registrerede ansigtsdata gemmes på Flash via en lille smule file system.
På et højt niveau indeholder ansøgningsnotatet nedenstående indhold:
- Aktiver ansigtsgenkendelsesfunktionen på rammen.
- Tilføj ansigtsdatabaseunderstøttelse på rammen via file system på Flash.
- Implementer LVGL GUI-appen. Gennem ovenstående introduktioner hjælper dette dokument udviklerne med at:
- Forstå rammerne og den smarte HMI-løsningssoftware dybere.
- Udvikl deres AI&ML-ansigtsgenkendelse på rammer med LVGL GUI-appen.
Rammen overståetview
Løsningssoftwaren er primært designet omkring brugen af rammearkitekturen, der er sammensat af flere forskellige dele:
- Enhedsadministratorer – kernedelen
- Hardware Abstraction Layer (HAL)-enheder
- Beskeder/begivenheder
Som vist i figur 1 er den overview af rammens mekanisme er:
Enhedsadministratorer er ansvarlige for at administrere enheder, der bruges af systemet. Hver enhedstype (input, output og så videre) har sin egen typespecifikke enhedshåndtering. Med en enhedsadministrator, der starter efter, at enhederne er registreret til den, venter den og tjekker en besked for at overføre data til enhederne og andre ledere efter initialisering og start af de registrerede enheder. HAL-enhederne er skrevet oven på driverkoden på lavere niveau, hvilket hjælper med at øge kodeforståeligheden ved at abstrahere mange af de underliggende detaljer.
Hændelser er en måde, hvorpå information kommunikeres mellem forskellige enheder via deres ledere. Når en hændelse udløses, kommunikerer den enhed, der først modtog hændelsen, hændelsen til sin manager, og derefter underretter den andre ledere, der er udpeget til at modtage hændelsen.
Den arkitektoniske udformning af rammen var centreret om tre primære mål:
- Brugervenlighed
- Fleksibilitet/bærbarhed
- Præstation
Rammerne er designet med det mål at fremskynde tiden til markedet for vision og andre maskinlæringsapplikationer. For at sikre en hurtig time to market er det afgørende, at selve softwaren er nem at forstå og ændre. Med dette mål i tankerne er arkitekturen i rammeværket let at ændre uden at være restriktiv og uden at det kommer på bekostning af ydeevnen.
For flere detaljer om rammeværket, se Smart HMI Software Development User Guide (dokument MCU-SMHMI-SDUG).
Light and Versatile Graphics Library (LVGL)
LVGL (Light and Versatile Graphics Library) er et gratis og open source-grafikbibliotek, der giver alt, hvad du behøver for at skabe en indlejret GUI med brugervenlige grafiske elementer, smukke visuelle effekter og lavt hukommelsesfodaftryk.
GUI Guider
GUI Guider er et brugervenligt udviklingsværktøj til grafisk brugergrænseflade fra NXP, der muliggør hurtig udvikling af højkvalitetsskærme med LVGL-grafikbiblioteket med åben kildekode. GUI Guiders træk-og-slip-editor gør det nemt at bruge mange funktioner i LVGL såsom widgets, animationer og stilarter til at skabe en GUI med minimal eller slet ingen kodning.
Med et klik på en knap kan du køre din applikation i et simuleret miljø eller eksportere den til et målprojekt. Genereret kode fra GUI Guider kan nemt tilføjes til dit projekt, hvilket accelererer udviklingsprocessen og giver dig mulighed for problemfrit at tilføje en indlejret brugergrænseflade til din applikation. GUI Guider er gratis at bruge med NXP's generelle formål og crossover MCU'er og inkluderer indbyggede projektskabeloner til flere understøttede platforme. For at lære mere om LVGL- og GUI-udvikling på GUI Guider, tjek Light and Versatile Graphics Library og GUI Guider.
Udviklingsmiljø
Først skal du forberede og opsætte hardware- og softwaremiljøet til implementering af example om rammerne.
Hardware miljø
Hardwaremiljøet er sat op til at verificere exampdet:
- Det smarte HMI-udviklingssæt baseret på NXP i.MX RT117H (SLN_TLHMI_IOT-sættet)
- SEGGER J-Link med en 9-bens Cortex-M adapter og V7.84a eller en nyere version af driveren
Software miljø
Softwaremiljøet er sat op til udvikling af exampdet:
- MCUXpresso IDE V11.7.0
- GUI Guider V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – example kode af den anden applikation note som basis software af udviklingen. For detaljer, se https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – som koderessource for udviklingen.
- SLN-TLHMI-IOT-software V1.1.2 – smart HMI-kildekode udgivet på NXP GitHub-lageret som koderessource for udviklingen. For detaljer, se: GitHub – NXP/mcu-smhmi at v1.1.2
For detaljer om erhvervelse og opsætning af softwaremiljøet, se: Kom godt i gang med SLN-TLHMI-IOT.
Visionsarkitektur om rammer
Visionsarkitekturen på rammeværket er vist i figur 2. Visionsalgo HAL (OASIS_HAL) har nedenstående processer:
- Foretag ansigtsregistrering og -genkendelse gennem AI&ML-visionsalgoritmemodellen efter at have modtaget de relaterede hændelser fra output-UI HAL. Giv besked om slutningsresultaterne fra algoritmemodellen til output-UI HAL.
- Får adgang til (tilføj, slet...) ansigtsfunktionsdatabasen baseret på det lille file system ved at kalde API'erne for FaceDB HAL efter at have modtaget de relaterede hændelser fra output UI HAL.
- Anmod om kameraets videoramme fra kameraets HAL, når du laver ansigtsregistrering og -genkendelse.
Implementer ansigtsgenkendelse på rammerne
LVGL GUI ansigtsgenkendelse example (eksample leveres senere) på rammen er implementeret baseret på example koder for Implement LVGL GUI Camera Preview om Framework (dokument AN14147).
For at demonstrere ansigtsgenkendelsen i example, den grundlæggende funktion af GUI-appen (se hovedskærmen i figur 3) er designet som beskrevet nedenfor:
- GUI-appen udløser ansigtsregistrering eller genkendelsesbegivenhed til output-UI HAL, når du klikker på knappen Registrering eller Genkendelse. Og output UI HAL giver besked om, at en bruger tilføjes til vision algo HAL, efter at ansigtsregistreringen er vellykket.
- GUI-appen udløser tilfælde af sletning af en bruger til output-UI HAL, når du klikker på knappen Slet bruger, efter at brugerens ansigt er genkendt.
- GUI-appen udløser den hændelse, hvor oasis-algoen stopper med at køre til output-UI HAL, når du klikker på skærmen uden for knapperne og billederne.
Forbered softwarepakken til implementering af example.
- Klon basissoftwaren lvgl_gui_camera_preview_cm7. Skift projektnavn og hoved filenavn til lvgl_gui_face_rec_cm7.
- Rammerne er nødvendige for at blive opdateret i softwaren, da kildekoderne til frameworkkernen er begyndt at være offentlige på GitHub fra version 1.1.2.
- Erstat rammemappen med kopien af V1.1.2 fra GitHub med undtagelse af files fwk_log.h og fwk_common.h under inc\, da de er blevet ændret for rækken af ansøgningsnoter. Operationerne er vist i figur 4:
- Slet mappen framework_cm7 under libs-gruppen og fjern biblioteket framework_cm7 og dets søgesti konfigureret i Projekt > Egenskaber > C/C++ Byg > indstillinger > Værktøjsindstillinger > MCU C++ Linker > Biblioteker, da kernens kildekode er angivet.
Aktiver ansigtsgenkendelsesfunktionen på rammen
Ansigtsgenkendelsesfunktionen er bygget på ML-visionsalgoritmemodellen leveret som et statisk bibliotek – et oasis lite runtime-bibliotek fra NXP. Biblioteket er et lille, meget effektivt, tilpasset og optimeret AI-bibliotek. Modellen inkluderer ansigtsgenkendelse, ansigtsgenkendelse, glasgenkendelse og livlighedsgenkendelse. Det leverer hovedsageligt API'en OASISLT_run_extended() til at køre ansigtsgenkendelsespipelinen, mens resultaterne opdateres til den, der ringer gennem hændelses-tilbagekald, og tilføje/opdatere/slette ansigter i databasen gennem ansigtsdatabase-tilbagekald efter specificering af kilderammeoplysninger, tilbagekald og hukommelse pulje brugt af biblioteket ved at kalde en anden API OASISLT_init() ved initialisering. Kaldningen af API'erne og tilbagekaldsfunktionerne er implementeret i rammeværkets vision algo HAL.
Tilføj vision algo modelbibliotek
- Kopiér mappe-oase, der indeholder biblioteket og den tilhørende header file fra smart HMI\coffee_machine\cm7\libs\ ind i mappen libs i example SW.
- Tilføj søgestien til overskriften file i Projekt > Egenskaber > C/C++ Build > indstillinger > Værktøjsindstillinger > MCU C compiler > Inkluderer og MCU C++ compiler > Inkluderer: "${workspace_loc:/${ProjName}/libs/oasis/include}"
- Tilføj lib og dets søgesti på Projekt > Egenskaber > C/C++ Byg > indstillinger > MCU C+ + Linker > Biblioteker: liboasis_lite2D_DEFAULT_117f_ae.a "${workspace_loc:/${ProjName}/libs/oasis}" og makrodefinitionen til aktiver funktionen på Projekt > Egenskaber > C/C++ Byg > indstillinger > Værktøjsindstillinger > MCU C-kompiler > Preprocessor og MCU C++-kompiler > Preprocessor: SMART_TLHMI_2D
Aktiver vision algo HAL
Vision algo HAL driver vision algo-modellen til at fungere og svarer resultaterne til UI-output HAL efter at have modtaget begivenhederne fra den.
For at aktivere det skal du klone den eksisterende lignende HAL-driver file hvor nedenstående funktioner er implementeret:
- Implementer tilbagekald af ansigtsdatabaseoperationer og hændelseshåndtering.
- Få visionen til at fungere ved at ringe til oasisbibliotekets API'er.
- Få adgang til brugeransigtsdatabase og appdatabase (det er ikke nødvendigt i example).
- Modtag hændelser fra og send resultater til output UI HAL.
De store arbejder med at implementere HAL for exampde er:
- Klon den eksisterende lignende HAL-driver file og ændre de relaterede navne.
- Fjern de koder, der er relateret til appens dataoperationer.
- Opdater definitionerne og funktionerne til håndtering af hændelser fra output UI HAL pr. exampdesign.
- Tilføj de nødvendige konfigurationer i oasis-initialisering.
De detaljerede trin er som nedenfor:
- Klon hal_vision_algo_oasis_kaffemaskine.c. Skift filenavn til hal_vision_algo_oasis_guifacerec.c. Og udskift alle strenge CoffeeMachine med GUIFaceRec i file.
- Fjern koderne, der indeholder strengen coffeedb (der skelnes ikke mellem store og små bogstaver) relateret til appdatabasen, f.eksample, #inkluder hal_sln_coffeedb.h.
- Rediger funktionen HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() til håndtering af hændelser fra output-UI HAL.
- Skift hændelsesdefinitionen kEventFaceRecId_RegisterCoffeeSelection til kEventFaceRecId_RegisterUserFace og strukturstrengen regCoffeeSelection til regGUIFaceRec for hændelseshåndteringen for at tilføje nye ansigtsfunktionsdata til databasen.
- For at vise standardprocessen for ansigtsgenkendelseshandlingerne i example, modificer håndteringen i tilfælde af kEventFaceRecID_OasisSetState med definitionerne af tilstandene:
- kOASISLiteState
- Registrering kOASISLiteState
- Anerkendelse kOASISLiteState
- Stoppet
- Tilføj og rediger definitionerne af begivenhederne nævnt i ovenstående trin.
- Kopiér overskriften file smart_tlhmi_event_descriptor.h fra smart HMI\coffee_machine \cm7\source\event_handlers\ ind i mappekilden til ex.ample SW. Opdater file som nedenfor:
- Skift begivenhedsdefinitionen kEventFaceRecId_RegisterCoffeeSelection til kEventFaceRecId_RegisterUserFace i enum-typen _event_smart_tlhmi_id og strukturstrengen regCoffeeSelection til regGUIFaceRec i struct _event_smart_tl. Så skift strukturen register_coffee_selection_event_t for regCoffeeSelection til register_gui_facerec_event_t.
- Slet det andet indhold, der bruges til kaffemaskine-appen, f.eksample, kodelinjen om stemme: #include "hal_event_descriptor_voice.h".
- Tilføj typerne kOASISLiteState_Stopped og kOASISLiteState_Running til enum-typen oasis_lite_state_t i hal_vision_algo.h under framework>hal>vision i projektet som nedenfor:
typedef enum _oasis_lite_state {- kOASISLiteState
- Kører, kOASISLiteState
- Stoppet, kOASISLiteState
- Anerkendelse,
- kOASISLiteState
- Registrering, kOASISLiteState
- Afregistrering, kOASISLiteState
- Fjernregistrering, kOASISLiteState
- Tælle
- Brug ovenstående opdaterede struct oasis_lite_state_t til at forfine struct oasis_state_event_t i hal_event_descriptor_face_rec.h under framework>hal>vision i projektet som nedenfor: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Skift alle kEventInfo_Remote til kEventInfo_Local for at sende hændelser fra vision algo HAL til andre HAL'er, der kører på samme kerne som single core i stedet for dual-core bruges i example.
- Tilføj og rediger nedenstående konfigurationer for oasisinitialisering i OASISLT_init():
- Tilføj makrodefinitionerne og hukommelsessektionerne for videorammen i board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- #define OASIS_RGB_FRAME_HEIGHT 600
- #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
- #define OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
- #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __attribute__((section(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __attribut__((aligned(alignbytes)))
- Konfigurer hukommelsestildelingen til ovenstående hukommelsessektion fb_sh_mem på Projekt > Egenskaber > C/C++ Byg > MCU-indstillinger vist i figur 5:
- Erklær den globale variabel g_DTCOPBuf i lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Fortsæt med at tilføje definitionerne brugt i ovenstående variabel:
- Definer ovenstående afsnit i board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- attribut__((sektion(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- attribut__((aligned(alignbytes)))
- Inkluder overskriften file hal_vision_algo.h indeholdende makrodefinitionen DTC_OPTIMIZE_BUFFER_SIZE i app_config.h inkluderet i lvgl_gui_face_rec_cm7.cpp.
- Tilføj makrodefinitionerne og hukommelsessektionerne for videorammen i board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Indstil variablen s_debugOption til sand for at vise statusstatus for ansigtsgenkendelse.
- Tilføj søgestien til overskriften files af vision HAL på Projekt > Egenskaber >C/C++ Byg > indstillinger > Værktøjsindstillinger > MCU C compiler > Inkluderer og MCU C++ compiler > Inkluderer: "${workspace_loc:/${ProjName}/framework/hal/vision}"
- Tilføj nedenstående definition for at aktivere vision algo HAL i board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Aktiver output UI HAL
Output UI HAL underretter begivenhederne til vision algo HAL og reagerer på slutningsresultaterne fra vision algo HAL. Med GUI-appen udløses begivenhederne generelt af appen, og resultaterne vises på appen.
For at aktivere det skal du klone den eksisterende lignende HAL-driver file hvor nedenstående funktioner generelt er implementeret:
- Underret begivenhederne for ansigtsgenkendelse og databaseadgang.
- Implementer tilbagekaldene til GUI-appen for at udløse begivenhederne.
- Håndter slutningsresultaterne fra vision algo-modulet.
- Vis processen og resultaterne af hændelseshåndteringen på brugergrænsefladen ved hjælp af statuslinjen styret med timere og ansigtsguiderektangel.
De store arbejder med at implementere HAL for exampDe brugte i dette dokument er:
- Klon den eksisterende lignende HAL-driver file og ændre de relaterede navne.
- Fjern de koder, der er relateret til appen.
- Opdater funktionerne for begivenhedsmeddelelsen og resultatsvar pr. exampdesign.
- Tilføj tilbagekald til GUI-appen for at udløse begivenhederne.
De detaljerede trin er som nedenfor:
- Klon hal_output_ui_coffee_machine.c. Skift filenavn til hal_ output_ui_guifacerec.c.
- Udskift alle strenge CoffeeMachine med GUIFaceRec i file.
- Fjern koderne relateret til appen – kaffemaskine.
- Fjern funktionerne WakeUp() og _StandBy() og de relaterede koder (kan søge i strengen wake_up og standby efter dem).
- Fjern præview tilstandshændelser, der håndterer relaterede koder i HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Fjern funktionerne UI_xxx_Callback() og koderne, der indeholder strengen gui_ og skærm relateret til kaffemaskinens GUI bortset fra gui_set_virtual_face() for preview tilstandsfunktion.
- Fjern alle koder, der er involveret i variablerne s_IsWaitingAnotherSelection og s_IsWaitingRegisterSelection relateret til kaffemaskine-appen.
- Fjern de koder, der er relateret til stemme, lyd og sprog. F.eksampdet:
- #include "hal_voice_algo_asr_local.h",
- #include "hal_event_descriptor_voice.h"
- For de forskellige hændelsesmeddelelser skal du implementere de nye funktioner _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() og DeregisterGUIFaceRec() med henvisning til funktionerne _StopFaceRec(), _RegisterCoffeeSelection() og DeregisterCoffeeSelection() før du sletter dem.
- _OutputManagerNotify() implementerer den grundlæggende hændelsesoutputfunktion til at sende en hændelse til vision algo HAL. Nedenstående funktioner kalder det at sende deres egne begivenheder.
- _SetFaceRec() sender hændelsen kEventFaceRecID_OasisSetState for at udløse synsalgoen for ansigtsregistrering, genkendelse og stoppe algoen.
- _RegisterGUIFaceRec() sender hændelsen kEventFaceRecId_RegisterGUIFaceRec, der er defineret i smart_tlhmi_event_descriptor.h for at tilføje ansigtsegenskabsdata til databasen, når registreringen er OK.
- DeregisterGUIFaceRec() sender hændelsen kEventFaceRecID_DelUser for at slette ansigtsegenskabsdata fra databasen, når ansigtsgenkendelsen passerer.
- Opdater koderne for at udføre de tilsvarende handlinger, herunder opdatere GUI'en ved at kalde API'erne fra LVGL GUI-appen for slutningsresultaterne af ansigtsregistrering og -genkendelse i funktionen _InferComplete_Vision() pr.ample's design. F.eksample, når ansigtsregistrering er vellykket,
- Stop med at vise fremskridtene ved at kalde _FaceRecProcess_Stop();
- Stop ansigtsregistreringen ved at kalde _SetFaceRec(kOASISLiteState_Stopped);
- Vis det vellykkede resultat på GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Registrer ansigtsdataene til databasen: _RegisterUserFace(s_UserId);
- Tilføj UI-tilbagekaldsfunktioner for at håndtere begivenhederne: preview, ansigtsregistrering, genkendelse og sletning af bruger udløst fra GUI. F.eksample, ansigtsregistreringstilbagekaldet: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Og tilføj funktionerne _FaceRecProcess_Start() og _FaceRecProcess_Stop() for at vise fremskridt og status i de forskellige hændelser og resultater.
- Opdater timer ISR-tilbagekaldsfunktionen _SessionTimer_Callback() for at håndtere tilfældet af time-out ved at kalde: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Tilføj nedenstående definitioner for at aktivere UI-output HAL i board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Meddelelse:
For at præsentere ansigtsgenkendelsesfunktionen bedre, behold funktionen til at vise processen og resultaterne af ansigtsgenkendelse i output UI HAL. Funktionen er beskrevet som nedenfor
- Ansigtsguiderektanglet viser blåt, og statuslinjen viser fremskridtene, når ansigtsregistreringen eller -genkendelsen startes.
- Ansigtsguiderektanglet viser rødt, når ansigtsregistreringen er vellykket.
- Ansigtsguiderektanglet viser grønt, når ansigtsgenkendelse er vellykket.
- Ansigtsguiderektanglet forbliver blåt, og statuslinjen viser fuld fremgang, når handlingen mislykkes efter timerens udløb. På det tidspunkt skal du stoppe ansigtsregistreringen eller -genkendelsen.
Statuslinjen og ansigtsguiderektangelet præsenteres som de ikoner, der er indbygget i den binære ressource file skal programmeres til Flash. Pointerne til ikondata på SDRAM er sat op i funktionen LoadIcons(APP_ICONS_BASE) kaldet på output UI HAL-enhedens initialisering i output UI HAL. Det skal implementere ikonernes understøttelse af funktionen.
Implementer understøttelse af ikoner
- Byg ressourcen ved at kombinere ikonerne med billederne, der bruges i LVGL GUI-appen:
- Klon de fire ikonoverskrifter files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h og virtual_face_red_420x426.h fra smart HMI
\kaffemaskine\ressource\ikoner\ til de nye mappeikoner under ressourcemappen i f.eksample SW. - Tilføj søgestien for de fire ikoner files i camera_preview_ressource.txt file i ressourcemappen, f.eksample: ikon ../resource/icons/process_bar_240x14.h
- Udfør camera_preview_resource_build.bat til at bygge billeder og ikonressourcer til at generere skraldespanden file camera_preview_resource.bin og info file resource_information_table.txt (Se figur 6).
- Klon de fire ikonoverskrifter files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h og virtual_face_red_420x426.h fra smart HMI
- Definer startadressen på SDRAM og størrelsen af ikonerne i app_config.h. Adressen starter ved siden af billederne af GUI-appen. Størrelsen genereres i infoen file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
- Opdater den tildelte størrelse af hukommelsessektionen ved navn res_sh_mem til 0x200000 ved at omdefinere den i app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 og den tilsvarende indstilling i Projekt > Egenskaber > C/C++ Byg > MCU-indstillinger.
- Tilføj ikonstørrelsen til den samlede størrelse af ressourcen indlæst fra Flash til SDRAM i funktionen APP_LoadResource() i hovedmenuen file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Meddelelse: For at fuldføre ansigtsgenkendelsesfunktionen er LVGL GUI-appen nødvendig. UI-tilbagekaldsfunktionerne i output-UI HAL kaldes af LVGL GUI-appen til håndtering af hændelser fra UI-skærmen. På den anden side kalder output-UI HAL API'erne fra LVGL GUI-appen for at opdatere brugergrænsefladen for at vise resultatet og status. Udviklingen af LVGL GUI-appen er relativt uafhængig og introduceret i afsnit 4.3.
4.1.5 Start HAL-enheder og -administratorer til ansigtsgenkendelse
Den aktiverede vision algo HAL og UI output HAL og deres ledere startes i hovedsagen file
lvgl_gui_face_rec_cm7.cpp efter konverteringer af udvikling på rammen som nedenfor:
- Inkluder overskriften file relateret til de to HAL-managere ved at tilføje kodelinjen:
- #include " fwk_output_manager.h "
- #include "fwk_vision_algo_manager.h"
- Erklær HAL-enhederne:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Registrer HAL-enhederne:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- Initialiser lederne:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- Start lederne:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
- Definer prioriteringen af lederens opgaver:
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #define OUTPUT_MANAGER_TASK_PRIORITY 1
Tilføj ansigtsdatabaseunderstøttelse på framework
De registrerede ansigtsegenskabsdata tilgås i ansigtsdatabasen gemt på Flash via en lille smule file system. Trinene til at tilføje understøttelse af ansigtsdatabasen er beskrevet nedenfor.
Tilføj drivere til Flash-lagring
Kopier Flash-interface FlexSPI-driveren files fsl_flexspi.c og fsl_flexspi.h og datakrypteringsdriveren files fsl_caam.c og fsl_caam.h fra stien SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ til drivers-mappen i ex.ample SW.
Tilføj support på board-niveau
- Tilføj definitionerne af FlexSPI, der bruges til Flash-enheden ombord i board.h:
- #define BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Kopier operatørerne og konfigurationerne files af Flash-enheden flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, ogsln_flash_ops.h under stien smart HMI_7\coffee_source_maskinen til mappen ex\coffee_igfcm til mappen ex.ample SW.
- Fjern markeringen i "Ekskluder ressource fra build" i C/C++ Build > Indstillinger efter at have højreklikket på files' navn og åbning af egenskaberne for at gøre det muligt at indbygge dem i projektet.
- Skift den medfølgende overskrift filenavngiv sln_flash_config.h til sln_flash_config_w25q256jvs.h i sln_flash_config.c og flexspi_nor_flash_ops.h.
- Indstil FlexSPI1-urkilden i file clock_config.c henviser til kaffemaskinens app.
Tilføj adapter og støtte på mellemniveau
- Kopier files sln_flash.c, sln_flash.h, sln_encrypt.c og sln_encrypt.h som adapterdrivere til file system og app fra stien til smart HMI\coffee_machine\cm7\source\ til mappekilden til eks.ample. Opdater den nye files:
- Fjern markeringen i "Ekskluder ressource fra build" på dem for at bygge.
- Skift alle de inkluderede overskrifter file navngiv sln_flash_config.h til sln_flash_config_w25q256jvs.h.
- Kopier mappen filesystem, der indeholder API'erne for de små filesystem og HAL driver fra smart HMI \kaffemaskine\cm7\kilde\ til example SW. Og opdatering til den nye mappe:
- Fjern markeringen i "Ekskluder ressource fra build" på den for at bygge.
- Tilføj inkluderingsstien til det i projektindstillinger: "${workspace_loc:/${ProjName}/filesystem}"
- Skift den medfølgende overskrift file navngiv sln_flash_config.h til sln_flash_config_w25q256jvs.h og fica_definition.h til app_config.h i file sln_flash_littlefs.h.
- Kopier mappen littlefs, der indeholder mellemvaren – lille filesystem fra stien SDK_2_13_0_ MIMXRT1170-EVK\middleware\ til example SW. Og opdater den nye mappe:
- Fjern markeringen i "Ekskluder ressource fra build" på den for at bygge.
- Tilføj inkluderingsstien til det i projektindstillinger: "${workspace_loc:/${ProjName}/littlefs}"
Tilføj HAL-drivere
- Der er to HAL-enheder – file system- og ansigtsdatabase-HAL understøttes for databaseadgangsfunktionen, og de er allerede implementeret i rammen uden ændringer. Aktiver dem ved at tilføje nedenstående definitioner i board_define.h:
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
Og skift ansigtsdatabasenavnet for f.eksample: #define OASIS_FACE_DB_DIR "oasis_gui_face_rec"
Tilføj support på app-niveau
- Opdater de vigtigste file lvgl_gui_face_rec_cm7.cpp:
- Inkluder overskriften file relateret til Flash file system HAL manager ved at tilføje kodelinjen: #include "fwk_flash.h"
- Angiv og registrer file system HAL enhed:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
Note: Den file system HAL-enhed skal registreres, før alle enhedsadministratorer initialiseres i funktionen APP_InitFramework().
- Kald funktionen BOARD_ConfigMPU() i APP_BoardInit() for at konfigurere MPU.
- Indstil file systemtildeling på Flash i file app_config.h ved at definere de makrodefinitioner, der bruges i file sln_flash_littlefs.h:
- #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #define FICA_FILE_SYS_SIZE (0x280000)
Konfigurationer
Nogle Flash-relaterede koder udføres i SRAM ITC-området for tilstrækkelig ydeevne. Kopier mappen linkscripts, der indeholder linker-konfigurationerne fra stien smart HMI\coffee_machine\cm7\ til ex'enample SW.
Implementer en LVGL GUI-app
Udviklingen af en LVGL GUI-app baseret på framework kalder API'erne fra output UI HAL og giver API'erne til output UI HAL (se afsnit 4.1.3 for implementering af output UI HAL).
Den detaljerede implementering af en LVGL GUI-app afhænger dog af applikationens krav og design. GUI-appen i dette example er udformet som beskrevet i begyndelsen af afsnittet Afsnit 4.
Nedenfor er implementeringsintroduktionerne:
- De tilpassede koder er implementeret i custom.c og custom.h givet af GUI Guider som grænsefladen mellem GUI Guider-projektet og det indlejrede systemprojekt.
- Tilføj de nye funktioner ved navn gui_xxx() i custom.c for at opnå nedenstående funktioner:
- Til output UI HAL og GUI app for at opdatere UI.
- Til GUI-app til at udløse hændelser ved at kalde UI-tilbagekaldsfunktioner fra output UI HAL.
F.eksample, den nye funktion gui_event_face_rec_action() kalder UI-tilbagekaldsfunktioner for at håndtere en af begivenhederne med ansigtsregistrering, ansigtsgenkendelse og sletning af brugere, der udløses fra GUI-appen, når der klikkes på den relaterede knap.
Bemærk: Funktionen gui_set_virtual_face() kaldte i output UI HAL for preview tilstand skal implementeres i custom.c:
- Klon funktion gui_set_virtual_face() fra smart HMI\coffee_machine\cm4\custom \custom.c.
- Skift widgetens navn home_img_cameraPreview til screen_img_camera_preview i funktionen.
- Implementer UI callback-funktionerne med den samme prototype til alle dem i output UI HAL under kontrol af makrodefinitionen #ifndef RT_PLATFORM i custom.c for at være kompatible med GUI Guider-projektet, fordi disse funktioner i output UI HAL er afhængige af indlejret platform. I custom.c er de afhængige af simulatoren på GUI guider og er uafhængige af den indlejrede platform. F.eksample, ansigtsregistreringstilbagekaldet implementeres som nedenfor for GUI Guider-simulatoren, der kører: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = falsk; Vend tilbage; }
Note: Se den samme prototype af funktionen introduceret i trin 6 i afsnit 4.1.3
Makrodefinitionen RT_PLATFORM er indstillet på projektindstillingerne for MCUXpresso som vist i figur 7: - Erklær alle funktionerne kaldet UI_xxx_Callback() og gui_xxx() i custom.h og tilføj custom.h inkluderet i smart_tlhmi_event_descriptor.h for at dele GUI API'erne til UI output HAL.
- Tilføj de nye funktioner ved navn gui_xxx() i custom.c for at opnå nedenstående funktioner:
- Udvikl GUI på GUI Guider:
- Klon mappen kamera preview indeholdende GUI Guider-projektsoftwaren i mappen gui_guider i basissoftwarepakken lvgl_gui_camera_preview_cm7. Skift det relaterede navn camera_preview til face_rec for den nye example.
- Kopier ovenstående opdaterede custom.c og custom. h til den nye GUI Guider-projektsoftware.
- Åbn det nye face_rec-projekt på GUI Guider. Opdater som nedenfor:
- Tilføj den nye knap mærket Slet bruger. Tilføj flaget Hidden til det, så knappen bliver skjult, når GUI-appen starter op.
- Tilføj kodelinjen for at kalde API'en gui_event_face_rec_action() med en anden hændelses-id-parameter på "Released"-udløseren i hændelsesindstillingen for alle knapperne Registrering, Genkendelse og Slet bruger for at udløse begivenhederne med ansigtsregistrering, ansigtsgenkendelse og sletning af bruger. Figur 8 viser koden for begivenheden med knappen Registrering:
- Opdater den genererede kode fra GUI Guider til MCUXpresso-projektet.
- Erstat indholdet undtagen mappebillederne i mappen, der er genereret af MCUXpresso-projektet SW, med de tilsvarende i mappen, der er genereret af GUI Guider-projektet SW.
Note: For flere detaljer om de ændringer, der er introduceret ovenfor, tjek f.eksampsoftwaren på https://mcuxpresso.nxp.com/appcodehub.
Verifikationer med exampet projekt
For at få exampsoftwarepakken, der indeholder ressourcerne og værktøjerne til denne applikationsnote, besøg: https://mcuxpresso.nxp.com/appcodehub. Åbn exampprojektet på MCUXpresso IDE. Byg og programmer .axf file til adressen 0x30000000 og programmer ressourcebakken file camera_preview_resource.bin til adressen 0x30800000.
LVGL GUI ansigtsgenkendelse example fungerer normalt som nedenfor:
- Preview: Med opstart vises videostreams optaget af kameraet på det specifikke område af kameraet førview på GUI-skærmen. Statusetiketten viser "Preview…”. For detaljer, se figur 3. Knappen Slet bruger er skjult. Når du klikker på området uden for knapperne og billederne, viser det preview angives som ovenstående, efter at ansigtsregistreringen eller genkendelseshandlingen slutter.
- Tilmelding:
- tartup: Når der klikkes på knappen Registrering, starter ansigtsregistreringen. Statusetiketten ændres til at vise "Registrering...", ansigtsguiderektanglet viser blåt, og statuslinjen begynder at vise fremskridtene. Sørg for, at brugerens ansigt vises i det blå ansigtsguiderektangel for registrering.
- succes: Statusetiketten viser "Registration...OK" og det registrerede bruger-id-nummer, ansigtsguiderektanglet bliver rødt, hvis ansigtsregistreringen er vellykket, før fremskridtene vises fuldt ud på bjælken.
- Fejl -> Timeout: Statusetiketten viser "Registrering...Timeout", hvis ansigtsregistreringen stadig mislykkes, når fremskridtene viser fuld på bjælken.
- Fejl -> Duplikering: Statusetiketten viser "Registrering...Mislykket", ansigtsguiderektanglet bliver grønt, hvis det registrerede ansigt genkendes, før fremskridtene viser fuld på bjælken.
- anerkendelse:
- Opstart: Når der klikkes på knappen Genkendelse, starter ansigtsgenkendelsen. Statusetiketten ændres til at vise "Anerkendelse...", ansigtsguiderektanglet viser blåt, og statuslinjen begynder at vise fremskridtene. Sørg for, at brugerens ansigt vises i det blå ansigtsguiderektangel for registrering.
- succes: Statusetiketten viser "Genkendelse...OK" og det genkendte bruger-id-nummer, ansigtsguiderektanglet bliver grønt, hvis ansigtsgenkendelsen er vellykket, før fremskridtene viser fuld på bjælken. På det tidspunkt vises knappen Slet bruger. Det betyder, at brugeren kun må slettes, når den genkendes.
- lidelse: Statusetiketten viser "Recognition...Timeout", hvis ansigtsgenkendelsen stadig mislykkes, når fremskridtene viser fuld på bjælken.
- Slet bruger: Når der klikkes på knappen "Slet bruger", efter at ansigtsgenkendelsen er lykkedes, ændres statusetiketten til at vise "Slet bruger...OK", hvor ansigtsguiderektanglet bliver blåt, og fremskridtene vises fuldt ud på bjælken. Knappen Slet bruger er skjult igen. Det genkendte ansigt/bruger slettes fra databasen. Det betyder, at dette ansigt/bruger ikke kan genkendes, før det er registreret igen.
Bemærk om kildekoden i dokumentet
ExampKoden vist i dette dokument har følgende copyright- og BSD-3-klausul-licens:
Copyright 2024 NXP Omfordeling og brug i kilde- og binære former, med eller uden ændringer, er tilladt, forudsat at følgende betingelser er opfyldt:
- Videredistribution af kildekode skal bevare ovenstående copyright-meddelelse, denne liste over betingelser og følgende ansvarsfraskrivelse.
- Videredistribution i binær form skal gengive ovenstående copyright-meddelelse, denne liste over betingelser og følgende ansvarsfraskrivelse i dokumentationen og/eller andet materiale skal leveres sammen med distributionen.
- Hverken navnet på ophavsretsindehaveren eller navnene på dennes bidragydere må bruges til at støtte eller promovere produkter afledt af denne software uden specifik forudgående skriftlig tilladelse
DENNE SOFTWARE LEVERES AF OPHAVSRETSHEDHEDERNE OG BIDRAGENDE "SOM DEN ER" OG ENHVER UDTRYKKELIG ELLER UNDERFORSTÅET GARANTI, INKLUSIVE, MEN IKKE BEGRÆNSET TIL, DE UNDERFORSTÅEDE GARANTIER OM SALGBARHED OG EGNETHED TIL EN EVENTUELL UDVIKLING. UNDER INGEN OMSTÆNDIGHEDER KAN OPHAVSRETSHEDEREN ELLER BIDRAGENDE ER ANSVARLIG FOR NOGEN DIREKTE, INDIREKTE, TILFÆLDELIGE, SÆRLIGE, EKSEMPELISKE ELLER FØLGESKADER (INKLUSIVE, MEN IKKE BEGRÆNSET TIL, INDKØB AF ERSTATNINGSGODER, D. ELLER FORTJENESTE; ELLER FORRETNINGSAFBRYDELSE), HVAD ELLER FORÅRSAGET OG PÅ ENHVER ANSVARSTEORI, UANSET I KONTRAKTER, STRIKT ANSVAR ELLER TORTER (HERunder Uagtsomhed ELLER ANDEN MÅDE), SOM OPSTÅR PÅ ENHVER MÅDE UD AF ANVENDELSEN. MULIGHED FOR SÅDAN SKADE.
Revisionshistorie
Juridiske oplysninger
Definitioner
Kladde — En kladdestatus på et dokument angiver, at indholdet stadig er under intern repræsentationview og underlagt formel godkendelse, hvilket kan resultere i ændringer eller tilføjelser. NXP Semiconductors afgiver ingen erklæringer eller garantier med hensyn til nøjagtigheden eller fuldstændigheden af oplysningerne i et udkast til et dokument og har intet ansvar for konsekvenserne af brugen af sådanne oplysninger.
Ansvarsfraskrivelse
- Begrænset garanti og ansvar — Oplysningerne i dette dokument menes at være nøjagtige og pålidelige. NXP Semiconductors giver dog ingen repræsentationer eller garantier, hverken udtrykte eller underforståede, med hensyn til nøjagtigheden eller fuldstændigheden af sådanne oplysninger og påtager sig intet ansvar for konsekvenserne af brugen af sådanne oplysninger. NXP Semiconductors påtager sig intet ansvar for indholdet i dette dokument, hvis det leveres af en informationskilde uden for NXP Semiconductors.
NXP Semiconductors kan under ingen omstændigheder holdes ansvarlig for indirekte, tilfældige, strafbare, særlige eller følgeskader (herunder – uden begrænsning – tabt fortjeneste, mistede besparelser, forretningsafbrydelser, omkostninger i forbindelse med fjernelse eller udskiftning af produkter eller omarbejdningsgebyrer) uanset om eller ikke er sådanne skader baseret på erstatningsansvar (herunder uagtsomhed), garanti, kontraktbrud eller enhver anden juridisk teori.
Uanset eventuelle skader, som kunden måtte pådrage sig af en hvilken som helst årsag, er NXP Semiconductors' samlede og kumulative ansvar over for kunden for de heri beskrevne produkter begrænset i overensstemmelse med Vilkår og betingelser for kommercielt salg af NXP Semiconductors. - Ret til at foretage ændringer — NXP Semiconductors forbeholder sig retten til at foretage ændringer af information offentliggjort i dette dokument, herunder uden begrænsning specifikationer og produktbeskrivelser, til enhver tid og uden varsel. Dette dokument erstatter og erstatter alle oplysninger, der er givet før offentliggørelsen heraf.
- Brugsegnethed — NXP Semiconductors-produkter er ikke designet, godkendt eller garanteret til at være egnet til brug i livsunderstøttende, livskritiske eller sikkerhedskritiske systemer eller udstyr, og heller ikke i applikationer, hvor fejl eller funktionsfejl i et NXP Semiconductors-produkt med rimelighed kan forventes at resultere i personskade, dødsfald eller alvorlig ejendoms- eller miljøskade. NXP Semiconductors og dets leverandører påtager sig intet ansvar for inklusion og/eller brug af NXP Semiconductors produkter i sådant udstyr eller applikationer, og derfor er sådan inkludering og/eller brug på kundens egen risiko.
- Ansøgninger — Anvendelser, der er beskrevet heri for nogen af disse produkter, er kun til illustrative formål. NXP Semiconductors giver ingen repræsentation eller garanti for, at sådanne applikationer vil være egnede til den specificerede brug uden yderligere test eller modifikation.
Kunder er ansvarlige for design og drift af deres applikationer og produkter ved hjælp af NXP Semiconductors-produkter, og NXP Semiconductors påtager sig intet ansvar for nogen form for assistance med applikationer eller kundeproduktdesign. Det er kundens eneansvar at afgøre, om NXP Semiconductors-produktet er egnet og egnet til kundens applikationer og planlagte produkter, samt til den planlagte anvendelse og brug af kundens tredjepartskunde(r). Kunder bør sørge for passende design- og driftssikkerhedsforanstaltninger for at minimere de risici, der er forbundet med deres applikationer og produkter. NXP Semiconductors påtager sig intet ansvar i forbindelse med misligholdelse, skader, omkostninger eller problemer, som er baseret på en eventuel svaghed eller misligholdelse i kundens applikationer eller produkter, eller applikationen eller brugen af kundens tredjepartskunde(r). Kunden er ansvarlig for at udføre alle nødvendige tests for kundens applikationer og produkter ved hjælp af NXP Semiconductors-produkter for at undgå misligholdelse af applikationerne og produkterne eller applikationen eller brugen af kundens tredjepartskunde(r). NXP påtager sig intet ansvar i denne henseende. - Vilkår og betingelser for kommercielt salg — NXP Semiconductors produkter sælges i henhold til de generelle vilkår og betingelser for kommercielt salg, som offentliggjort på https://www.nxp.com/profile/vilkår, medmindre andet er aftalt i en gyldig skriftlig individuel aftale. I tilfælde af at der indgås en individuel aftale, er det kun vilkårene og betingelserne i den respektive aftale, der gælder. NXP Semiconductors gør hermed udtrykkeligt indsigelse mod at anvende kundens generelle vilkår og betingelser med hensyn til kundens køb af NXP Semiconductors produkter.
- Eksportkontrol — Dette dokument såvel som de varer, der er beskrevet heri, kan være underlagt eksportkontrolregler. Eksport kan kræve en forudgående tilladelse fra de kompetente myndigheder.
- Egnethed til brug i ikke-automotive kvalificerede produkter — Medmindre dette dokument udtrykkeligt angiver, at dette specifikke NXP Semiconductors-produkt er automotive-kvalificeret, er produktet ikke egnet til bilbrug. Det er hverken kvalificeret eller testet i overensstemmelse med biltest eller anvendelseskrav. NXP Semiconductors påtager sig intet ansvar for inkludering og/eller brug af ikke-automotive kvalificerede produkter i biludstyr eller applikationer.
I tilfælde af at kunden bruger produktet til design-in og brug i automotive applikationer i henhold til automotive specifikationer og standarder, skal kunden (a) bruge produktet uden NXP Semiconductors' garanti for produktet til sådanne automotive applikationer, brug og specifikationer, og ( b) når kunden bruger produktet til bilapplikationer ud over NXP Semiconductors' specifikationer, skal en sådan brug udelukkende ske på kundens egen risiko, og (c) kunden holder NXP Semiconductors fuldt ud skadesløs for ethvert ansvar, skader eller fejlbehæftede produktkrav som følge af kundens design og brug af produktet til bilapplikationer ud over NXP Semiconductors' standardgaranti og NXP Semiconductors' produktspecifikationer. - Oversættelser — En ikke-engelsk (oversat) version af et dokument, inklusive den juridiske information i dette dokument, er kun til reference. Den engelske version har forrang i tilfælde af uoverensstemmelse mellem de oversatte og engelske versioner.
- Sikkerhed — Kunden forstår, at alle NXP-produkter kan være underlagt uidentificerede sårbarheder eller kan understøtte etablerede sikkerhedsstandarder eller specifikationer med kendte begrænsninger. Kunden er ansvarlig for design og drift af sine applikationer og produkter gennem hele deres livscyklus for at reducere effekten af disse sårbarheder på kundens applikationer og produkter. Kundens ansvar omfatter også andre åbne og/eller proprietære teknologier, der understøttes af NXP-produkter til brug i kundens applikationer. NXP påtager sig intet ansvar for nogen sårbarhed. Kunden bør regelmæssigt tjekke sikkerhedsopdateringer fra NXP og følge passende op. Kunden skal vælge produkter med sikkerhedsfunktioner, der bedst opfylder regler, forskrifter og standarder for den påtænkte anvendelse og træffe de ultimative designbeslutninger vedrørende sine produkter og er eneansvarlig for overholdelse af alle lovmæssige, regulatoriske og sikkerhedsrelaterede krav vedrørende sine produkter, uanset af enhver information eller support, der kan leveres af NXP.
NXP har et Product Security Incident Response Team (PSIRT) (tilgængelig på PSIRT@nxp.com), der styrer undersøgelsen, rapporteringen og løsningsfrigivelsen til sikkerhedssårbarheder i NXP-produkter.
NXP BV — NXP BV er ikke et driftsselskab, og det distribuerer eller sælger ikke produkter.
Varemærker
Meddelelse: Alle refererede mærker, produktnavne, servicenavne og varemærker tilhører deres respektive ejere.
NXP — ordmærke og logo er varemærker tilhørende NXP BV
AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile — er varemærker og/eller registrerede varemærker tilhørende Arm Limited (eller dets datterselskaber eller associerede selskaber) i USA og/eller andre steder. Den relaterede teknologi kan være beskyttet af enhver eller alle patenter, copyrights, designs og forretningshemmeligheder. Alle rettigheder forbeholdes.
- i.MX — er et varemærke tilhørende NXP BV
- J-Link — er et varemærke tilhørende SEGGER Microcontroller GmbH.
Microsoft, Azure og ThreadX — er varemærker tilhørende Microsoft-koncernen.
Vær opmærksom på, at vigtige meddelelser vedrørende dette dokument og de produkter, der er beskrevet heri, er inkluderet i afsnittet 'Juridiske oplysninger'.
© 2024 NXP BV
For mere information, besøg venligst: https://www.nxp.com
- Udgivelsesdato: 19. april 2024
- Dokument-id: AN14263
FAQ
Q: Hvad er hovedformålet med dette produkt?
A: Hovedformålet er at aktivere ansigtsgenkendelsesfunktion ved hjælp af en AI&ML-visionsalgoritmemodel med en simpel LVGL GUI ex.ample på SLN-TLHMI-IOT-kortet.
Q: Hvordan kan udviklere drage fordel af denne applikationsnote?
A: Udviklere kan lære at implementere ansigtsgenkendelse på rammen trin for trin ved hjælp af det medfølgende examplæse og forstå de involverede enhedsadministratorer, HAL-enheder og hændelsesmekanismer.
Dokumenter/ressourcer
![]() |
NXP AN14263 Implementer LVGL GUI Ansigtsgenkendelse på Framewor [pdfBrugervejledning AN14263 Implementer LVGL GUI Ansigtsgenkendelse på Framewor, AN14263, Implementer LVGL GUI Ansigtsgenkendelse på Framewor, LVGL GUI Face Recognition på Framewor, Ansigtsgenkendelse på Framewor, Recognition on Framewor, Framewor |