NXP AN14263 Implementer LVGL GUI ansiktsgjenkjenning på Framewor
Produktinformasjon
Spesifikasjoner
- Produktnavn: LVGL GUI Ansiktsgjenkjenning på Framework
- Dokumentrevisjon: 1. – 19. april 2024
- Nøkkelord: Ansiktsgjenkjenning, LVGL GUI, Framework
Produktbruksinstruksjoner
- Overview
Dette produktet muliggjør AI&ML-synsalgoritmemodell for ansiktsgjenkjenning på et rammeverk for å implementere ansiktsgjenkjenningsfunksjon med en enkel LVGL GUI example på SLN-TLHMI-IOT-kortet. - Rammeverk overview
Løsningsprogramvaren er designet rundt rammeverksarkitekturen som inkluderer enhetsbehandlere som er ansvarlige for å administrere enheter, HAL-enheter for å abstrahere underliggende detaljer og hendelser for kommunikasjon mellom ulike enheter. - Funksjoner
Produktet muliggjør implementering av ansiktsgjenkjenningsfunksjon via kameraforhåndview på GUI-skjermen med knapper for å utløse ansiktsregistrering, gjenkjenning og fjerning. Registrerte ansiktsdata lagres på Flash via en file system. - Søknadsnotatinnhold
Applikasjonsnotatet presenterer en LVGL GUI-skjerm med kameraforhåndview og knapper for ansiktsrelaterte handlinger. Det hjelper utviklere med å forstå rammeverket og hvordan man implementerer ansiktsgjenkjenning ved å bruke det oppgitte eksample.
Overview
NXP har lansert et løsningsutviklingssett kalt SLN-TLHMI-IOT som fokuserer på smarte HMI-applikasjoner. Den muliggjør smart HMI med ML vision, stemme og grafikk UI implementert på én NXP i.MX RT117H MCU. Basert på SDK, er løsningsprogramvaren konstruert på et design kalt rammeverk som støtter fleksible design og tilpasning av syns- og stemmefunksjoner. For å hjelpe brukere til å bruke programvareplattformen bedre, er det gitt noen grunnleggende dokumenter, f.eksample, brukerveiledningen for programvareutvikling. Veiledningen introduserer den grunnleggende programvaredesignen og -arkitekturen til applikasjonene som dekker alle komponenter i løsningen, inkludert rammeverket for å hjelpe utviklerne enklere og mer effektivt å implementere applikasjonene sine ved å bruke SLN-TLHMI-IOT.
For mer informasjon om løsningen og relevante dokumenter, besøk web side av NXP EdgeReady Smart HMI-løsning Basert på i.MX RT117H med ML Vision, Voice og Graphical UI. Imidlertid er det fortsatt ikke så lett for utviklerne å implementere sine smarte HMI-applikasjoner med henvisning til disse grunnleggende veiledningene. En serie søknadsnotater er planlagt for å hjelpe med å studere utviklingen på rammeverket trinn for trinn. Dette applikasjonsnotatet er basert på Implement LVGL GUI Camera Preview på Framework (dokument AN14147). Dette applikasjonsnotatet beskriver hvordan du aktiverer AI&ML-synsalgoritmemodellen for ansiktsgjenkjenning på rammeverket for å implementere ansiktsgjenkjenningsfunksjonen via kamera forhåndview på GUI-skjermen med en enkel LVGL GUI example på SLN-TLHMI-IOT-kortet. I søknadsnotatet har eksample presenterer en LVGL GUI-skjerm med en kamerapreview og noen knapper for å utløse ansiktsregistrering, gjenkjenning og fjerning. De registrerte ansiktsdataene lagres på Flash via litt file system.
På et høyt nivå inneholder søknadsnotatet følgende innhold:
- Aktiver ansiktsgjenkjenningsfunksjonen på rammeverket.
- Legg til ansiktsdatabasestøtte på rammeverket via file system på Flash.
- Implementer LVGL GUI-appen. Gjennom introduksjonene ovenfor hjelper dette dokumentet utviklerne med å:
- Forstå rammeverket og programvaren for smarte HMI-løsninger dypere.
- Utvikle deres AI&ML-ansiktsgjenkjenning på rammeverk med LVGL GUI-appen.
Rammeverk overview
Løsningsprogramvaren er primært designet rundt bruken av rammeverksarkitekturen som er sammensatt av flere ulike deler:
- Enhetsadministratorer – kjernedelen
- Hardware Abstraksjonslag (HAL) enheter
- Meldinger/hendelser
Som vist i figur 1, overview av mekanismen til rammeverket er:
Enhetsadministratorer er ansvarlige for å administrere enheter som brukes av systemet. Hver enhetstype (inngang, utgang og så videre) har sin egen typespesifikke enhetsbehandling. Med en enhetsbehandling som starter etter at enhetene er registrert på den, venter den og sjekker en melding for å overføre data til enhetene og andre ledere etter initialisering og start av de registrerte enhetene. HAL-enhetene er skrevet på toppen av driverkoden på lavere nivå, og bidrar til å øke kodeforståelsen ved å abstrahere mange av de underliggende detaljene.
Hendelser er et middel for å kommunisere informasjon mellom ulike enheter via deres ledere. Når en hendelse utløses, kommuniserer enheten som først mottok hendelsen den hendelsen til sin leder, og deretter varsler den andre ledere som er utpekt til å motta hendelsen.
Den arkitektoniske utformingen av rammeverket var sentrert om tre hovedmål:
- Enkel å bruke
- Fleksibilitet/portabilitet
- Ytelse
Rammeverket er designet med mål om å fremskynde tiden til markedet for visjon og andre maskinlæringsapplikasjoner. For å sikre en rask time to market, er det avgjørende at selve programvaren er enkel å forstå og modifisere. Med dette målet i bakhodet, er arkitekturen til rammeverket enkel å endre uten å være restriktiv, og uten å gå på bekostning av ytelsen.
For mer detaljer om rammeverket, se Smart HMI Software Development User Guide (dokument MCU-SMHMI-SDUG).
Lett og allsidig grafikkbibliotek (LVGL)
LVGL (Light and Versatile Graphics Library) er et gratis og åpen kildekode-grafikkbibliotek som gir alt du trenger for å lage et innebygd GUI med brukervennlige grafiske elementer, vakre visuelle effekter og lite minne.
GUI Guider
GUI Guider er et brukervennlig utviklingsverktøy for grafisk brukergrensesnitt fra NXP som muliggjør rask utvikling av høykvalitetsskjermer med åpen kildekode LVGL-grafikkbiblioteket. GUI Guiders dra-og-slipp-redigering gjør det enkelt å bruke mange funksjoner i LVGL som widgets, animasjoner og stiler for å lage et GUI med minimal eller ingen koding i det hele tatt.
Med et klikk på en knapp kan du kjøre programmet i et simulert miljø eller eksportere det til et målprosjekt. Generert kode fra GUI Guider kan enkelt legges til prosjektet ditt, akselerere utviklingsprosessen og lar deg sømløst legge til et innebygd brukergrensesnitt til applikasjonen din. GUI Guider er gratis å bruke med NXPs generelle formål og crossover MCUer og inkluderer innebygde prosjektmaler for flere støttede plattformer. For å lære mer om LVGL og GUI-utvikling på GUI Guider, sjekk Light and Versatile Graphics Library og GUI Guider.
Utviklingsmiljø
Først må du forberede og sette opp maskinvare- og programvaremiljøet for implementering av eksample på rammeverket.
Maskinvaremiljø
Maskinvaremiljøet er satt opp for å verifisere eksampde:
- Det smarte HMI-utviklingssettet basert på NXP i.MX RT117H (SLN_TLHMI_IOT-settet)
- SEGGER J-Link med en 9-pinners Cortex-M-adapter og V7.84a eller en nyere versjon av driveren
Programvaremiljø
Programvaremiljøet er satt opp for å utvikle eksampde:
- MCUXpresso IDE V11.7.0
- GUI Guider V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – eksample koden til den andre applikasjonsnotatet som basisprogramvare for utviklingen. For detaljer, se https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – som koderessurs for utviklingen.
- SLN-TLHMI-IOT-programvare V1.1.2 – smart HMI-kildekode utgitt på NXP GitHub-depotet som koderessurs for utviklingen. For detaljer, se: GitHub – NXP/mcu-smhmi at v1.1.2
For detaljer om anskaffelse og oppsett av programvaremiljøet, se: Komme i gang med SLN-TLHMI-IOT.
Visjonsarkitektur på rammeverk
Visjonsarkitekturen på rammeverket er vist i figur 2. Visjonalgo HAL (OASIS_HAL) har følgende prosesser:
- Gjør ansiktsregistrering og gjenkjenning gjennom AI&ML-synsalgoritmemodellen etter å ha mottatt relaterte hendelser fra utdata-UI HAL. Varsle slutningsresultatene fra algoritmemodellen til utdata-UI HAL.
- Får tilgang til (legg til, slett ...) ansiktsfunksjonsdatabasen basert på det lille file systemet ved å kalle API-ene til FaceDB HAL etter å ha mottatt de relaterte hendelsene fra utdata-UI HAL.
- Be om kameravideorammen fra kameraets HAL når du gjør ansiktsregistrering og gjenkjenning.
Implementer ansiktsgjenkjenning på rammeverket
LVGL GUI ansiktsgjenkjenning eksample (eksample er gitt senere) på rammeverket er implementert basert på eksample koder for Implement LVGL GUI Camera Preview på Framework (dokument AN14147).
For å demonstrere ansiktsgjenkjenningen i eksample, den grunnleggende funksjonen til GUI-appen (se hovedskjermbildet i figur 3) er utformet som beskrevet nedenfor:
- GUI-appen utløser ansiktsregistrering eller gjenkjenningshendelse til utdata-UI HAL når du klikker på knappen Registrering eller Gjenkjenning. Og utdata UI HAL varsler hendelsen med å legge til en bruker til vision algo HAL etter at ansiktsregistreringen er vellykket.
- GUI-appen utløser hendelsen med å slette en bruker til utdata-UI HAL når du klikker på knappen Slett bruker etter at ansiktet til brukeren er gjenkjent.
- GUI-appen utløser hendelsen med å stoppe oasis-algo-kjøringen til utdata-UI HAL når du klikker på skjermen utenfor knappene og bildene.
Forbered programvarepakken for implementering av eksample.
- Klon basisprogramvaren lvgl_gui_camera_preview_cm7. Endre prosjektnavn og hoved filenavn til lvgl_gui_face_rec_cm7.
- Rammeverket må oppdateres i programvaren ettersom kildekodene for rammeverkkjernen har begynt å være offentlige på GitHub fra versjon 1.1.2.
- Erstatt rammeverkmappen med kopien av V1.1.2 fra GitHub bortsett fra files fwk_log.h og fwk_common.h under inc\ ettersom de har blitt modifisert for serien med søknadsnotat. Operasjonene er vist i figur 4:
- Slett mappen framework_cm7 under libs-gruppen og fjern biblioteket framework_cm7 og dets søkesti konfigurert i Prosjekt > Egenskaper > C/C++ Bygg > innstillinger > Verktøyinnstillinger > MCU C++ Linker > Biblioteker siden kildekoden til kjernen er gitt.
Aktiver funksjonen for ansiktsgjenkjenning på rammeverket
Ansiktsgjenkjenningsfunksjonen er bygget på ML vision-algoritmemodellen levert som et statisk bibliotek – et oasis lite runtime-bibliotek av NXP. Biblioteket er et lite, svært effektivt, tilpasset og optimalisert AI-bibliotek. Modellen inkluderer ansiktsgjenkjenning, ansiktsgjenkjenning, glassdeteksjon og livlighetsdeteksjon. Den gir hovedsakelig API OASISLT_run_extended() for å kjøre ansiktsgjenkjenningspipelinen mens du oppdaterer resultatene til den som ringer gjennom hendelsestilbakekallinger, og legger til/oppdater/slett ansikter i databasen gjennom ansiktsdatabasetilbakekallinger etter å ha spesifisert kilderammeinformasjon, tilbakeringinger og minne pool brukt av biblioteket ved å kalle et annet API OASISLT_init() ved initialisering. Oppkallingen av APIene og tilbakeringingsfunksjonene er implementert i rammeverkets visjonalgo HAL.
Legg til vision algo modellbibliotek
- Kopier mappeoase som inneholder biblioteket og den tilhørende overskriften file fra smart HMI\coffee_machine\cm7\libs\ inn i mappen libs til example SW.
- Legg til søkebanen til overskriften file i Prosjekt > Egenskaper > C/C++ Bygg > innstillinger > Verktøyinnstillinger > MCU C-kompilator > Inkluderer og MCU C++-kompilator > Inkluderer: «${workspace_loc:/${ProjName}/libs/oasis/include}»
- Legg til lib og søkebanen på Prosjekt > Egenskaper > C/C++ Bygg > innstillinger > MCU C+ + Linker > Biblioteker: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” og makrodefinisjonen til aktiver funksjonen på Prosjekt > Egenskaper > C/C++ Bygg > innstillinger > Verktøyinnstillinger > MCU C kompilator > Preprosessor og MCU C++ kompilator > Preprosessor: SMART_TLHMI_2D
Aktiver vision algo HAL
Visjon algo HAL driver visjon algo-modellen til å fungere og svarer resultatene til UI-utdata HAL etter å ha mottatt hendelsene fra den.
For å aktivere det, klone den eksisterende lignende HAL-driveren file hvor funksjonene nedenfor er implementert:
- Implementer tilbakeringing av ansiktsdatabaseoperasjoner og hendelseshåndtering.
- Få visjonen til å fungere ved å ringe API-ene til oasis-biblioteket.
- Få tilgang til brukeransiktsdatabase og appdatabase (det er ikke nødvendig i eksample).
- Motta hendelser fra og sende resultater til utdata UI HAL.
Hovedarbeidene for å implementere HAL for eksampde er:
- Klone den eksisterte lignende HAL-driveren file og endre de relaterte navnene.
- Fjern kodene knyttet til appdataoperasjonene.
- Oppdater definisjonene og funksjonene for håndtering av hendelsene fra utdata-UI HAL per eksampdesign.
- Legg til konfigurasjonene som kreves i oasis-initialisering.
De detaljerte trinnene er som følger:
- Klon hal_vision_algo_oasis_kaffemaskin.c. Endre filenavn til hal_vision_algo_oasis_guifacerec.c. Og bytt ut alle strengene CoffeeMachine med GUIFaceRec i file.
- Fjern kodene som inneholder strengen coffeedb (ikke skille mellom store og små bokstaver) relatert til appdatabasen, for eksempelample, #inkluder hal_sln_coffeedb.h.
- Endre funksjonen HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() for å håndtere hendelsene fra utdata-UI HAL.
- Endre hendelsesdefinisjonen kEventFaceRecId_RegisterCoffeeSelection til kEventFaceRecId_RegisterUserFace og strukturstrengen regCoffeeSelection til regGUIFaceRec for at hendelseshåndteringen skal legge til nye ansiktsfunksjonsdata til databasen.
- For å vise standardprosessen for ansiktsgjenkjenningshandlingene i eksample, endre håndteringen i tilfelle kEventFaceRecID_OasisSetState med definisjonene av tilstandene:
- kOASISLiteState
- Registrering kOASISLiteState
- Gjenkjennelse kOASISLiteState
- Stoppet
- Legg til og endre definisjonene av hendelsene nevnt i trinnet ovenfor.
- Kopier overskriften file smart_tlhmi_event_descriptor.h fra smart HMI\coffee_machine \cm7\source\event_handlers\ inn i mappekilden til eksenample SW. Oppdater file som nedenfor:
- Endre hendelsesdefinisjonen kEventFaceRecId_RegisterCoffeeSelection til kEventFaceRecId_RegisterUserFace i enum-typen _event_smart_tlhmi_id og strukturstrengen regCoffeeSelection til regGUIFaceRec i strukturen _event_smart_tlhmi.tlhmi. Så endre strukturen register_coffee_selection_event_t for regCoffeeSelection til register_gui_facerec_event_t.
- Slett det øvrige innholdet som brukes til kaffemaskin-appen, for eksempelample, kodelinjen om stemme: #include "hal_event_descriptor_voice.h".
- Legg til typene kOASISLiteState_Stopped og kOASISLiteState_Running til enum-typen oasis_lite_state_t i hal_vision_algo.h under framework>hal>vision i prosjektet som nedenfor:
typedef enum _oasis_lite_state {- kOASISLiteState
- Kjører, kOASISLiteState
- Stoppet, kOASISLiteState
- Anerkjennelse,
- kOASISLiteState
- Registrering, kOASISLiteState
- Avregistrering, kOASISLiteState
- Fjernregistrering, kOASISLiteState
- Telle
- Bruk den ovenfor oppdaterte struct oasis_lite_state_t for å avgrense struct oasis_state_event_t i hal_event_descriptor_face_rec.h under framework>hal>vision i prosjektet som nedenfor: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Endre alle kEventInfo_Remote til kEventInfo_Local for å sende hendelser fra vision algo HAL til andre HAL som kjører på samme kjerne som enkeltkjerne i stedet for dual-core brukes i example.
- Legg til og endre konfigurasjonene nedenfor for oasisinitialisering i OASISLT_init():
- Legg til makrodefinisjoner og minneseksjoner 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__((seksjon(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __attribute__((aligned(alignbytes)))
- Konfigurer minnetildelingen til minneseksjonen ovenfor fb_sh_mem på Prosjekt > Egenskaper > C/C++ Bygg > MCU-innstillinger vist i figur 5:
- Erklær den globale variabelen g_DTCOPBuf i lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Fortsett å legge til definisjonene brukt i variabelen ovenfor:
- Definer seksjonen ovenfor i board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- attributt__((seksjon(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- attributt__((aligned(alignbytes)))
- Ta med overskriften file hal_vision_algo.h som inneholder makrodefinisjonen DTC_OPTIMIZE_BUFFER_SIZE i app_config.h inkludert i lvgl_gui_face_rec_cm7.cpp.
- Legg til makrodefinisjoner og minneseksjoner for videorammen i board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Sett variabelen s_debugOption til sann for å vise fremdriftsstatus ved ansiktsgjenkjenning.
- Legg til søkebanen til overskriften files av visjons-HAL på Prosjekt > Egenskaper >C/C++ Bygg > innstillinger > Verktøyinnstillinger > MCU C-kompilator > Inkluderer og MCU C++-kompilator > Inkluderer: «${workspace_loc:/${ProjName}/framework/hal/vision}»
- Legg til definisjonen nedenfor for å aktivere vision algo HAL i board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Aktiver utgang UI HAL
Utdata-UI HAL varsler hendelsene til vision algo HAL og reagerer på slutningsresultatene fra vision algo HAL. Med GUI-appen utløses hendelsene vanligvis av appen, og resultatene vises på appen.
For å aktivere det, klone den eksisterende lignende HAL-driveren file hvor funksjonene nedenfor generelt er implementert:
- Varsle hendelsene for ansiktsgjenkjenning og databasetilgang.
- Implementer tilbakeringingene for GUI-appen for å utløse hendelsene.
- Håndter konklusjonsresultatene fra vision algo-modulen.
- Vis prosessen og resultatene av hendelseshåndteringen i brukergrensesnittet ved hjelp av fremdriftslinjen kontrollert med tidtakerne og rektangelet for ansiktsguiden.
Hovedarbeidene for å implementere HAL for eksampDe som brukes i dette dokumentet er:
- Klone den eksisterte lignende HAL-driveren file og endre de relaterte navnene.
- Fjern kodene knyttet til appen.
- Oppdater funksjonene for hendelsesvarsling og resultatsvar per eksampdesign.
- Legg til tilbakeringinger for GUI-appen for å utløse hendelsene.
De detaljerte trinnene er som følger:
- Klon hal_output_ui_coffee_machine.c. Endre filenavn til hal_ output_ui_guifacerec.c.
- Bytt ut alle strengene CoffeeMachine med GUIFaceRec i file.
- Fjern kodene knyttet til appen – kaffemaskin.
- Fjern funksjonene WakeUp() og _StandBy() og de relaterte kodene (kan søke i strengen wake_up og standby for dem).
- Fjern preview modushendelser som håndterer relaterte koder i HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Fjern funksjonene UI_xxx_Callback() og kodene som inneholder strengen gui_ og skjerm relatert til GUI av kaffemaskinen bortsett fra gui_set_virtual_face() for preview modusfunksjon.
- Fjern alle koder som er involvert med variablene s_IsWaitingAnotherSelection og s_IsWaitingRegisterSelection relatert til kaffemaskinappen.
- Fjern kodene knyttet til tale, lyd og språk. For eksampde:
- #include "hal_voice_algo_asr_local.h",
- #include "hal_event_descriptor_voice.h"
- For de ulike hendelsesvarslingene, implementer de nye funksjonene _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() og DeregisterGUIFaceRec() med henvisning til funksjonene _StopFaceRec(), _RegisterCoffeeSelection(), og DeregisterCoffeeSelection() før du sletter dem.
- _OutputManagerNotify() implementerer den grunnleggende hendelsesutdatafunksjonen for å sende en hendelse til vision algo HAL. Funksjonene nedenfor kaller det å sende sine egne hendelser.
- _SetFaceRec() sender hendelsen kEventFaceRecID_OasisSetState for å utløse synsalgoen for ansiktsregistrering, gjenkjenning og stoppe algoen.
- _RegisterGUIFaceRec() sender hendelsen kEventFaceRecId_RegisterGUIFaceRec som er definert i smart_tlhmi_event_descriptor.h for å legge til ansiktsfunksjonsdata til databasen når registreringen er OK.
- DeregisterGUIFaceRec() sender hendelsen kEventFaceRecID_DelUser for å slette ansiktsfunksjonsdata fra databasen når ansiktsgjenkjenningen passerer.
- Oppdater kodene for å utføre de tilsvarende handlingene, inkludert å oppdatere GUI ved å kalle API-ene fra LVGL GUI-appen for slutningsresultater av ansiktsregistrering og -gjenkjenning i funksjonen _InferComplete_Vision() i henhold til eks.ample sitt design. For eksample, når ansiktsregistrering er vellykket,
- Slutt å vise fremdriften ved å ringe _FaceRecProcess_Stop();
- Stopp ansiktsregistreringen ved å ringe _SetFaceRec(kOASISLiteState_Stopped);
- Vis det vellykkede resultatet på GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Registrer ansiktsdataene til databasen: _RegisterUserFace(s_UserId);
- Legg til tilbakeringingsfunksjoner i brukergrensesnittet for å håndtere hendelsene: preview, ansiktsregistrering, gjenkjenning og sletting av brukere utløst fra GUI. For eksample, tilbakeringing av ansiktsregistrering: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Og legg til funksjonene _FaceRecProcess_Start() og _FaceRecProcess_Stop() for å vise fremdriften og statusen i de forskjellige hendelsene og resultatene.
- Oppdater timer ISR tilbakeringingsfunksjonen _SessionTimer_Callback() for å håndtere tilfellet med time-out ved å ringe: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Legg til definisjonene nedenfor for å aktivere UI-utdata HAL i board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Merk:
For å presentere ansiktsgjenkjenningsfunksjonen bedre, behold funksjonen for å vise prosessen og resultatene av ansiktsgjenkjenning i utdata-UI HAL. Funksjonen er beskrevet som nedenfor
- Ansiktsguiderektangelet viser blått, og fremdriftslinjen viser fremdriften når du starter ansiktsregistrering eller -gjenkjenning.
- Ansiktsguiderektangelet viser rødt når ansiktsregistreringen er vellykket.
- Ansiktsguiderektangelet viser grønt når ansiktsgjenkjenningen er vellykket.
- Ansiktsguiderektangelet beholder blått, og fremdriftslinjen viser full fremdrift når handlingen mislykkes etter at tidtakeren utløper. På det tidspunktet stopper du ansiktsregistreringen eller -gjenkjenningen.
Fremdriftslinjen og ansiktsguiderektangelet presenteres som ikonene som er innebygd i ressursbinæren file skal programmeres til Flash. Pekerne til ikondataene på SDRAM er satt opp i funksjonen LoadIcons(APP_ICONS_BASE) kalt utgangs-UI HAL-enhetens initialisering i utgangs-UI HAL. Den må implementere ikonstøtte for funksjonen.
Implementer støtte for ikoner
- Bygg ressursen ved å kombinere ikonene med bildene som brukes i LVGL GUI-appen:
- Klon overskriften med fire ikoner files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h og virtual_face_red_420x426.h fra smart HMI
\kaffemaskin\ressurs\ikoner\ til de nye mappeikonene under ressursmappen til eksample SW. - Legg til søkebanen for de fire ikonet files i camera_preview_resource.txt file i ressursmappen, f.eksample: ikon ../resource/icons/process_bar_240x14.h
- Kjør camera_preview_resource_build.bat for å bygge bilder og ikonressurser for å generere søppelkassen file camera_preview_resource.bin og informasjonen file resource_information_table.txt (se figur 6).
- Klon overskriften med fire ikoner 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 på ikonene i app_config.h. Adressen starter ved siden av bildene av 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
- Oppdater den tilordnede størrelsen på minneseksjonen som heter res_sh_mem til 0x200000 ved å omdefinere den i app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 og den tilsvarende innstillingen i Prosjekt > Egenskaper > C/C++ Bygg > MCU-innstillinger.
- Legg til ikonstørrelsen til den totale størrelsen på ressursen lastet fra Flash til SDRAM i funksjonen APP_LoadResource() i hovedfunksjonen file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Legg merke til: For å fullføre funksjonen for ansiktsgjenkjenning er LVGL GUI-appen nødvendig. UI-tilbakekallingsfunksjonene i utdata-UI HAL kalles opp av LVGL GUI-appen for å håndtere hendelsene fra UI-skjermen. På den annen side kaller utdata-UI HAL API-ene fra LVGL GUI-appen for å oppdatere brukergrensesnittet for å vise resultatet og statusen. Utviklingen av LVGL GUI-appen er relativt uavhengig og introdusert i avsnitt 4.3.
4.1.5 Start HAL-enheter og administratorer for ansiktsgjenkjenning
Den aktiverte vision algo HAL og UI utgang HAL og deres ledere startes i hovedsak file
lvgl_gui_face_rec_cm7.cpp etter konverteringene av utviklingen på rammeverket som nedenfor:
- Ta med overskriften file relatert til de to HAL-lederne ved å legge til kodelinjen:
- #include " fwk_output_manager.h "
- #include "fwk_vision_algo_manager.h"
- Erklær HAL-enhetene:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Registrer HAL-enhetene:
- 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 av lederoppgavene:
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #define OUTPUT_MANAGER_TASK_PRIORITY 1
Legg til ansiktsdatabasestøtte på rammeverket
De registrerte ansiktsfunksjonsdataene er tilgjengelige i ansiktsdatabasen som er lagret på Flash via litt file system. Trinnene for å legge til støtte for ansiktsdatabasen er beskrevet nedenfor.
Legg til drivere for Flash-lagring
Kopier Flash-grensesnitt FlexSPI-driveren files fsl_flexspi.c og fsl_flexspi.h, og datakrypteringsdriveren files fsl_caam.c og fsl_caam.h fra banen SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ til drivere-mappen til ex.ample SW.
Legg til støtte på styrenivå
- Legg til definisjonene av FlexSPI brukt for Flash-enheten ombord i board.h:
- #define BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Kopier operatørene og konfigurasjonene files av Flash-enheten flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, ogsln_flash_ops.h under banen smart HMI_7\coffee_source\fcm-mappen til ex.ample SW.
- Fjern merket for "Ekskluder ressurs fra bygg" i C/C++ Bygg > Innstillinger etter å ha høyreklikket på files' navn og åpne egenskapene for at de kan bygges inn i prosjektet.
- Endre den medfølgende overskriften filenavn sln_flash_config.h til sln_flash_config_w25q256jvs.h i sln_flash_config.c og flexspi_nor_flash_ops.h.
- Still inn FlexSPI1-klokkekilden i file clock_config.c som refererer til kaffemaskin-appen.
Legg til adapter og mellomnivåstøtte
- Kopier files sln_flash.c, sln_flash.h, sln_encrypt.c og sln_encrypt.h som adapterdrivere for file system og app fra banen til smart HMI\coffee_machine\cm7\source\ til mappekilden til eksenample. Oppdater den nye files:
- Fjern merket for "Ekskluder ressurs fra bygg" på dem for bygging.
- Endre alle de inkluderte overskriftene file navn sln_flash_config.h til sln_flash_config_w25q256jvs.h.
- Kopier mappen filesystem som inneholder API-ene for de små filesystem og HAL-driver fra smart HMI \kaffemaskin\cm7\kilde\ til eksample SW. Og oppdatering for den nye mappen:
- Fjern merket for "Ekskluder ressurs fra bygg" på den for bygging.
- Legg til inkluderingsbanen for den i prosjektinnstillingene: «${workspace_loc:/${ProjName}/filesystem}"
- Endre den medfølgende overskriften file navn 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 som inneholder mellomvarene – little filesystem fra banen SDK_2_13_0_ MIMXRT1170-EVK\middleware\ til example SW. Og oppdater den nye mappen:
- Fjern merket for "Ekskluder ressurs fra bygg" på den for bygging.
- Legg til inkluderingsbanen for den i prosjektinnstillingene: «${workspace_loc:/${ProjName}/littlefs}»
Legg til HAL-drivere
- Det er to HAL-enheter – file system- og ansiktsdatabase HAL støttes for databasetilgangsfunksjonen, og de er allerede implementert i rammeverket uten endringer. Aktiver dem ved å legge til definisjonene nedenfor i board_define.h:
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
Og endre ansiktsdatabasenavnet for eksenample: #define OASIS_FACE_DB_DIR "oasis_gui_face_rec"
Legg til støtte på appnivå
- Oppdater hovedsiden file lvgl_gui_face_rec_cm7.cpp:
- Ta med overskriften file relatert til Flash file system HAL manager ved å legge til kodelinjen: #include "fwk_flash.h"
- Erklære og registrere file system HAL-enhet:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
Note: Den file system HAL-enhet må registreres før alle enhetsbehandlere initialiseres i funksjonen APP_InitFramework().
- Kall funksjonen BOARD_ConfigMPU() i APP_BoardInit() for å konfigurere MPU.
- Still inn file systemoppgave på Flash i file app_config.h ved å definere makrodefinisjonene som brukes 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)
Konfigurasjoner
Noen Flash-relaterte koder kjøres i SRAM ITC-området for nok ytelse. Kopier mappelinkscripts som inneholder linkerkonfigurasjonene fra banen smart HMI\coffee_machine\cm7\ til example SW.
Implementer en LVGL GUI-app
Utviklingen av en LVGL GUI-app basert på rammeverk kaller API-ene fra utdata-UI HAL og gir API-ene til utdata UI HAL (se avsnitt 4.1.3 for implementering av utdata-UI HAL).
Den detaljerte implementeringen av en LVGL GUI-app avhenger imidlertid av kravene og utformingen av applikasjonen. GUI-appen i dette eksample er utformet som beskrevet i begynnelsen av avsnitt 4.
Nedenfor er implementeringsintroduksjonene:
- De tilpassede kodene er implementert i custom.c og custom.h gitt av GUI Guider som grensesnittet mellom GUI Guider-prosjektet og det innebygde systemprosjektet.
- Legg til de nye funksjonene kalt gui_xxx() i custom.c for å oppnå funksjonene nedenfor:
- For utdata UI HAL og GUI app for å oppdatere UI.
- For at GUI-appen skal utløse hendelser ved å kalle UI-tilbakeringingsfunksjoner fra utdata-UI HAL.
For eksample, den nye funksjonen gui_event_face_rec_action() kaller tilbakeringingsfunksjoner i brukergrensesnittet for å håndtere en av hendelsene med ansiktsregistrering, ansiktsgjenkjenning og sletting av brukere som utløses fra GUI-appen når den relaterte knappen klikkes.
Merk: Funksjonen gui_set_virtual_face() kalte ut UI HAL for preview modus må implementeres i custom.c:
- Klone funksjon gui_set_virtual_face() fra smart HMI\kaffemaskin\cm4\custom \custom.c.
- Endre widgetens navn home_img_cameraPreview til screen_img_camera_preview i funksjonen.
- Implementer tilbakeringingsfunksjonene for brukergrensesnittet med samme prototype til alle i utdata-UI HAL under kontroll av makrodefinisjonen #ifndef RT_PLATFORM i custom.c for å være kompatible med GUI Guider-prosjektet fordi disse funksjonene i utdata-UI HAL er avhengige av innebygd plattform. I custom.c er de avhengige av simulatoren på GUI guider og er uavhengige av den innebygde plattformen. For eksample, ansiktsregistrering tilbakeringing implementeres som nedenfor for GUI Guider-simulatoren som kjører: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = usann; komme tilbake; }
Note: Se den samme prototypen av funksjonen som ble introdusert i trinn 6 i avsnitt 4.1.3
Makrodefinisjonen RT_PLATFORM er satt på prosjektinnstillingene til MCUXpresso som vist i figur 7: - Deklarer alle funksjonene kalt UI_xxx_Callback() og gui_xxx() i custom.h og legg til custom.h inkludert i smart_tlhmi_event_descriptor.h for å dele GUI-API-ene til UI-utdata HAL.
- Legg til de nye funksjonene kalt gui_xxx() i custom.c for å oppnå funksjonene nedenfor:
- Utvikle GUI på GUI Guider:
- Klone mappen kamera preview som inneholder GUI Guider-prosjektprogramvaren i mappen gui_guider i basisprogramvarepakken lvgl_gui_camera_preview_cm7. Endre det relaterte navnet camera_preview til face_rec for den nye eksenample.
- Kopier den ovenfor oppdaterte custom.c og custom. h til den nye GUI Guider-prosjektprogramvaren.
- Åpne det nye face_rec-prosjektet på GUI Guider. Oppdater som nedenfor:
- Legg til den nye knappen merket Slett bruker. Legg til flagget Hidden slik at knappen blir skjult når GUI-appen starter opp.
- Legg til kodelinjen for å kalle API-en gui_event_face_rec_action() med en annen hendelses-ID-parameter på "Released"-utløseren i hendelsesinnstillingen for alle knappene Registrering, Gjenkjenning og Slett bruker for å utløse hendelser med ansiktsregistrering, ansiktsgjenkjenning og sletting av bruker. Figur 8 viser koden for hendelsen for knappen Registrering:
- Oppdater den genererte koden fra GUI Guider til MCUXpresso-prosjektet.
- Erstatt innholdet bortsett fra mappebildene i mappen generert av MCUXpresso-prosjektet SW med de tilsvarende i mappen som er generert av GUI Guider-prosjektet SW.
Note: For mer informasjon om endringene introdusert ovenfor, sjekk eksampprogramvaren på https://mcuxpresso.nxp.com/appcodehub.
Verifikasjoner med eksampprosjektet
For å få eksenampprogramvarepakken som inneholder ressursene og verktøyene for dette applikasjonsnotatet, besøk: https://mcuxpresso.nxp.com/appcodehub. Åpne eksenampprosjektet på MCUXpresso IDE. Bygg og programmer .axf file til adressen 0x30000000 og programmer ressursbingen file camera_preview_resource.bin til adressen 0x30800000.
LVGL GUI ansiktsgjenkjenning eksample fungerer normalt som nedenfor:
- Preview: Med oppstart vises videostrømmene tatt av kameraet på det spesifikke området av kameraet førview på GUI-skjermen. Statusetiketten viser "Preview…”. For detaljer, se figur 3. Knappen Slett bruker er skjult. Når du klikker på området utenfor knappene og bildene, viser den preview angi som ovenfor etter at ansiktsregistreringen eller gjenkjenningshandlingen avsluttes.
- Registrering:
- tartup: Når registreringsknappen klikkes, starter ansiktsregistreringen. Statusetiketten endres til å vise "Registrering...", ansiktsguiderektangelet viser blått, og fremdriftslinjen begynner å vise fremdriften. Sørg for at brukerens ansikt vises i det blå ansiktsguiderektangelet for registrering.
- suksess: Statusetiketten viser "Registrering...OK" og det registrerte bruker-ID-nummeret, ansiktsguiderektangelet blir rødt hvis ansiktsregistreringen er vellykket før fremdriften vises fullt på linjen.
- Feil -> Tidsavbrudd: Statusetiketten viser "Registrering ... Tidsavbrudd" hvis ansiktsregistreringen fortsatt mislykkes når fremdriften viser full på linjen.
- Feil -> Duplisering: Statusetiketten viser "Registrering ... Mislykket", ansiktsguiderektangelet blir grønt hvis det registrerte ansiktet gjenkjennes før fremdriften vises fullt på linjen.
- ecognition:
- Oppstart: Når gjenkjenningsknappen klikkes, starter ansiktsgjenkjenningen. Statusetiketten endres til å vise "Recognition...", ansiktsguiderektangelet viser blått, og fremdriftslinjen begynner å vise fremdriften. Sørg for at brukerens ansikt vises i det blå ansiktsguiderektangelet for registrering.
- suksess: Statusetiketten viser "Recognition...OK" og det gjenkjente bruker-ID-nummeret, ansiktsguiderektangelet blir grønt hvis ansiktsgjenkjenningen er vellykket før fremdriften vises fullt på linjen. På dette tidspunktet vises knappen Slett bruker. Det betyr at brukeren kun kan slettes når den gjenkjennes.
- ailure: Statusetiketten viser "Recognition...Time out" hvis ansiktsgjenkjenningen fortsatt mislykkes når fremdriften viser full på linjen.
- Slett bruker: Når knappen "Slett bruker" klikkes, etter at ansiktsgjenkjenningen er vellykket, endres statusetiketten til å vise "Slett bruker...OK" med ansiktsguiderektangelet som blir blått og fremdriften vises fullt på linjen. Knappen Slett bruker er skjult igjen. Det gjenkjente ansiktet/brukeren slettes fra databasen. Det betyr at dette ansiktet/brukeren ikke kan gjenkjennes før den er registrert på nytt.
Merknad om kildekoden i dokumentet
ExampKoden vist i dette dokumentet har følgende opphavsrett og BSD-3-klausul lisens:
Copyright 2024 NXP Redistribusjon og bruk i kilde- og binære former, med eller uten modifikasjoner, er tillatt forutsatt at følgende betingelser er oppfylt:
- Videredistribusjon av kildekode må beholde opphavsrettserklæringen ovenfor, denne listen over vilkår og følgende ansvarsfraskrivelse.
- Videredistribusjoner i binær form må gjengi ovennevnte opphavsrettsmerknad, denne listen over betingelser og følgende ansvarsfraskrivelse i dokumentasjonen og/eller annet materiale må følge med distribusjonen.
- Verken navnet på opphavsrettsinnehaveren eller navnene på dens bidragsytere kan brukes til å støtte eller markedsføre produkter avledet fra denne programvaren uten spesifikk skriftlig tillatelse på forhånd
DENNE PROGRAMVAREN LEVERES AV OPPhavsrettighetsinnehaverne og bidragsyterne "SOM DEN ER" OG EVENTUELLE UTTRYKTE ELLER UNDERFORSTÅTE GARANTIER, INKLUDERT, MEN IKKE BEGRENSET TIL, DE UNDERFORSTÅTE GARANTIER OM SALGBARHET OG EGNETHET FOR EN ANSIKTIG PARTI. UNDER INGEN OMSTENDIGHET SKAL OPPHAVSRETTSINNEHAVEREN ELLER BIDRAGENDE ER ANSVARLIG FOR EVENTUELLE DIREKTE, INDIREKTE, TILFELDIGE, SPESIELLE, EKSEMPELISKE ELLER FØLGESKADER (INKLUDERT, MEN IKKE BEGRENSET TIL, ANSKAFFELSE AV ERSTATNINGSSERVICE AV OSS, D; ELLER FORTJENESTE; ELLER FORRETNINGSAVBRUTT) HVORDAN FORÅRSAKET OG PÅ ENHVER ANSVARSTEORI, ENTEN I KONTRAKT, STRIKT ANSVAR ELLER ORGANISERING (INKLUDERT UAKTSOMHET ELLER ANNET) SOM OPPSTÅR PÅ NOEN MÅTE AV DETTE, ELLER SOM ER AV BRUKEN. MULIGHET FOR SLIK SKADE.
Revisjonshistorikk
Juridisk informasjon
Definisjoner
Utkast — En utkaststatus på et dokument indikerer at innholdet fortsatt er interntview og underlagt formell godkjenning, noe som kan føre til endringer eller tillegg. NXP Semiconductors gir ingen representasjoner eller garantier med hensyn til nøyaktigheten eller fullstendigheten av informasjonen som er inkludert i en utkastversjon av et dokument, og skal ikke ha noe ansvar for konsekvensene av bruk av slik informasjon.
Ansvarsfraskrivelse
- Begrenset garanti og ansvar — Informasjonen i dette dokumentet antas å være nøyaktig og pålitelig. NXP Semiconductors gir imidlertid ingen representasjoner eller garantier, uttrykt eller underforstått, med hensyn til nøyaktigheten eller fullstendigheten av slik informasjon og skal ikke ha noe ansvar for konsekvensene av bruken av slik informasjon. NXP Semiconductors tar ikke noe ansvar for innholdet i dette dokumentet hvis det leveres av en informasjonskilde utenfor NXP Semiconductors.
NXP Semiconductors skal ikke under noen omstendigheter holdes ansvarlig for indirekte, tilfeldige, straffbare, spesielle eller følgeskader (inkludert – uten begrensning – tapt fortjeneste, tapte sparepenger, forretningsavbrudd, kostnader knyttet til fjerning eller erstatning av produkter eller omarbeidsgebyrer) eller ikke er slike skader basert på erstatningsrett (inkludert uaktsomhet), garanti, kontraktsbrudd eller annen juridisk teori.
Til tross for eventuelle skader som kunden måtte pådra seg uansett grunn, skal NXP Semiconductors sitt samlede og kumulative ansvar overfor kunden for produktene beskrevet her begrenses i samsvar med vilkårene og betingelsene for kommersielt salg av NXP Semiconductors. - Rett til å gjøre endringer — NXP Semiconductors forbeholder seg retten til å gjøre endringer i informasjon publisert i dette dokumentet, inkludert uten begrensning spesifikasjoner og produktbeskrivelser, når som helst og uten varsel. Dette dokumentet erstatter og erstatter all informasjon som er gitt før publiseringen av dette dokumentet.
- Egnethet for bruk — NXP Semiconductors-produkter er ikke designet, autorisert eller garantert til å være egnet for bruk i livsviktige, livskritiske eller sikkerhetskritiske systemer eller utstyr, og heller ikke i applikasjoner der feil eller funksjonsfeil i et NXP Semiconductors-produkt med rimelighet kan forventes å resultere i personskade, død eller alvorlig skade på eiendom eller miljø. NXP Semiconductors og dets leverandører påtar seg intet ansvar for inkludering og/eller bruk av NXP Semiconductors-produkter i slikt utstyr eller applikasjoner, og derfor er slik inkludering og/eller bruk på kundens egen risiko.
- Søknader – Applikasjoner som er beskrevet her for noen av disse produktene er kun ment som illustrasjon. NXP Semiconductors gir ingen representasjon eller garanti for at slike applikasjoner vil være egnet for spesifisert bruk uten ytterligere testing eller modifikasjoner.
Kunder er ansvarlige for design og drift av sine applikasjoner og produkter ved bruk av NXP Semiconductors-produkter, og NXP Semiconductors påtar seg intet ansvar for assistanse med applikasjoner eller kundeproduktdesign. Det er kundens eneansvar å avgjøre om NXP Semiconductors-produktet er egnet og egnet for kundens applikasjoner og produkter som er planlagt, så vel som for den planlagte applikasjonen og bruken av kundens tredjepartskunde(r). Kunder bør sørge for passende design- og driftssikkerhetstiltak for å minimere risikoen forbundet med deres applikasjoner og produkter. NXP Semiconductors aksepterer ikke noe ansvar knyttet til eventuelle mislighold, skader, kostnader eller problemer som er basert på svakhet eller mislighold i kundens applikasjoner eller produkter, eller applikasjonen eller bruken av kundens tredjepartskunde(r). Kunden er ansvarlig for å utføre all nødvendig testing for kundens applikasjoner og produkter ved bruk av NXP Semiconductors-produkter for å unngå en standard for applikasjonene og produktene eller applikasjonen eller bruken av kundens tredjepartskunde(r). NXP påtar seg ikke noe ansvar i denne forbindelse. - Vilkår og betingelser for kommersielt salg — NXP Semiconductors-produkter selges underlagt de generelle vilkårene og betingelsene for kommersielt salg, som publisert på https://www.nxp.com/profile/vilkår, med mindre annet er avtalt i en gyldig skriftlig individuell avtale. Dersom det inngås en individuell avtale, er det kun vilkårene i den respektive avtalen som gjelder. NXP Semiconductors motsetter seg herved uttrykkelig å anvende kundens generelle vilkår og betingelser med hensyn til kjøp av NXP Semiconductors-produkter av kunden.
- Eksportkontroll — Dette dokumentet samt varen(e) beskrevet her kan være underlagt eksportkontrollforskrifter. Eksport kan kreve forhåndsgodkjenning fra kompetente myndigheter.
- Egnethet for bruk i ikke-bilkvalifiserte produkter — Med mindre dette dokumentet uttrykkelig sier at dette spesifikke NXP Semiconductors-produktet er bilkvalifisert, er produktet ikke egnet for bilbruk. Den er verken kvalifisert eller testet i henhold til biltesting eller brukskrav. NXP Semiconductors påtar seg intet ansvar for inkludering og/eller bruk av ikke-bilkvalifiserte produkter i bilutstyr eller applikasjoner.
I tilfelle kunden bruker produktet for design-in og bruk i bilapplikasjoner i henhold til bilspesifikasjoner og standarder, skal kunden (a) bruke produktet uten NXP Semiconductors' garanti for produktet for slike bilapplikasjoner, bruk og spesifikasjoner, og ( b) når kunden bruker produktet til bilapplikasjoner utover NXP Semiconductors' spesifikasjoner, skal slik bruk utelukkende skje på kundens egen risiko, og (c) kunden holder NXP Semiconductors fullstendig skadesløs for ethvert ansvar, skader eller mislykkede produktkrav som følge av kundedesign og bruk av produktet for bilapplikasjoner utover NXP Semiconductors' standardgaranti og NXP Semiconductors' produktspesifikasjoner. - Oversettelser — En ikke-engelsk (oversatt) versjon av et dokument, inkludert den juridiske informasjonen i det dokumentet, er kun til referanse. Den engelske versjonen skal gjelde i tilfelle uoverensstemmelse mellom den oversatte og engelske versjonen.
- Sikkerhet — Kunden forstår at alle NXP-produkter kan være gjenstand for uidentifiserte sårbarheter eller kan støtte etablerte sikkerhetsstandarder eller spesifikasjoner med kjente begrensninger. Kunden er ansvarlig for utformingen og driften av sine applikasjoner og produkter gjennom hele livssyklusen for å redusere effekten av disse sårbarhetene på kundens applikasjoner og produkter. Kundens ansvar strekker seg også til andre åpne og/eller proprietære teknologier som støttes av NXP-produkter for bruk i kundens applikasjoner. NXP påtar seg intet ansvar for noen sårbarhet. Kunden bør regelmessig sjekke sikkerhetsoppdateringer fra NXP og følge opp på riktig måte. Kunden skal velge produkter med sikkerhetsfunksjoner som best oppfyller regler, forskrifter og standarder for den tiltenkte applikasjonen og ta de endelige designbeslutningene angående produktene sine og er eneansvarlig for overholdelse av alle juridiske, regulatoriske og sikkerhetsrelaterte krav angående produktene sine, uansett av all informasjon eller støtte som kan gis av NXP.
NXP har et Product Security Incident Response Team (PSIRT) (tilgjengelig på PSIRT@nxp.com) som administrerer etterforskning, rapportering og løsningsutgivelse for sikkerhetssårbarheter til NXP-produkter.
NXP B.V. — NXP B.V. er ikke et driftsselskap, og det distribuerer eller selger ikke produkter.
Varemerker
Legg merke til: Alle refererte merker, produktnavn, tjenestenavn og varemerker tilhører sine respektive eiere.
NXP — ordmerke og logo er varemerker for 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 varemerker og/eller registrerte varemerker for Arm Limited (eller dets datterselskaper eller tilknyttede selskaper) i USA og/eller andre steder. Den relaterte teknologien kan være beskyttet av noen eller alle patenter, opphavsrettigheter, design og forretningshemmeligheter. Alle rettigheter forbeholdt.
- i.MX — er et varemerke for NXP BV
- J-Link — er et varemerke for SEGGER Microcontroller GmbH.
Microsoft, Azure og ThreadX — er varemerker for Microsoft-gruppen av selskaper.
Vær oppmerksom på at viktige merknader angående dette dokumentet og produktet(e) som er beskrevet her, er inkludert i avsnittet 'Juridisk informasjon'.
© 2024 NXP BV
For mer informasjon, vennligst besøk: https://www.nxp.com
- Utgivelsesdato: 19. april 2024
- Dokumentidentifikator: AN14263
FAQ
Spørsmål: Hva er hovedformålet med dette produktet?
A: Hovedformålet er å aktivere ansiktsgjenkjenningsfunksjon ved å bruke en AI&ML-synsalgoritmemodell med en enkel LVGL GUI-eks.ample på SLN-TLHMI-IOT-kortet.
Spørsmål: Hvordan kan utviklere dra nytte av dette applikasjonsnotatet?
A: Utviklere kan lære hvordan de implementerer ansiktsgjenkjenning på rammeverket trinn for trinn ved å bruke eksamplese og forstå enhetsbehandlere, HAL-enheter og hendelsesmekanismer som er involvert.
Dokumenter / Ressurser
![]() |
NXP AN14263 Implementer LVGL GUI ansiktsgjenkjenning på Framewor [pdfBrukerhåndbok AN14263 Implementer LVGL GUI Ansiktsgjenkjenning på Framewor, AN14263, Implementer LVGL GUI Ansiktsgjenkjenning på Framewor, LVGL GUI Ansiktsgjenkjenning på Framewor, Ansiktsgjenkjenning på Framewor, Recognition on Framewor, Framewor |