nxp-logo

NXP AN14263 Implementearje LVGL GUI Gesichtsherkenning op Framewor

NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-framewor-produkt

Produkt ynformaasje

Spesifikaasjes

  • Produkt Namme: LVGL GUI Gesichtsherkenning op Framework
  • Dokumintferzje: 1 - 19 april 2024
  • Keywords: Gesichtsherkenning, LVGL GUI, Framework

Produkt Usage Ynstruksjes

  1. Oerview
    Dit produkt makket AI&ML fisyalgoritmemodel mooglik foar gesichtsherkenning op in ramt om gesichtsherkenningsfunksje te ymplementearjen mei in ienfâldige LVGL GUI example op it SLN-TLHMI-IOT board.
  2. Framework oerview
    De oplossingssoftware is ûntworpen om 'e ramt-arsjitektuer dy't apparaatbehearders omfettet ferantwurdlik foar it behearen fan apparaten, HAL-apparaten om ûnderlizzende details te abstraheren, en eveneminten foar kommunikaasje tusken ferskate apparaten.
  3. Features
    It produkt soarget foar de ymplemintaasje fan gesichtsherkenningsfunksje fia kamera preview op it GUI-skerm mei knoppen om gesichtsregistraasje, erkenning en ferwidering te triggerjen. Registrearre gesicht gegevens wurdt opslein op Flash fia in file systeem.
  4. Applikaasje Notysje Ynhâld
    De applikaasjenotysje presintearret in LVGL GUI-skerm mei kamera preview en knoppen foar gesicht-relatearre aksjes. It helpt ûntwikkelders it ramt te begripen en hoe't jo gesichtsherkenning kinne ymplementearje mei it levere eksample.

Oerview

NXP hat in oplossingsûntwikkelingskit lansearre mei de namme SLN-TLHMI-IOT dy't him rjochtet op tûke HMI-applikaasjes. It makket smart HMI mooglik mei ML fyzje, stim, en grafyske UI ymplementearre op ien NXP i.MX RT117H MCU. Op grûn fan 'e SDK is de oplossingssoftware boud op in ûntwerp neamd ramt dat fleksibele ûntwerpen en oanpassing fan fisy- en stimfunksjes stipet. Om brûkers te helpen it softwareplatfoarm better te brûken, wurde guon basisdokuminten levere, bygelyksample, de brûkersgids foar softwareûntwikkeling. De hantlieding yntroduseart it basissoftwareûntwerp en -arsjitektuer fan 'e applikaasjes dy't alle komponinten fan' e oplossing dekke, ynklusyf it ramt om de ûntwikkelders te helpen har applikaasjes makliker en effisjinter te ymplementearjen mei de SLN-TLHMI-IOT.
Foar mear details oer de oplossing en relevante dokuminten, besykje de web side fan 'e NXP EdgeReady Smart HMI-oplossing basearre op i.MX RT117H mei ML Vision, Voice, en Graphical UI. It is lykwols noch net sa maklik foar de ûntwikkelders om har tûke HMI-applikaasjes te ymplementearjen ferwizend nei dizze basisgidsen. In searje tapassingsnotysjes binne pland om de ûntwikkeling fan it ramt stap foar stap te studearjen. Dizze applikaasjenotysje is basearre op Implement LVGL GUI Camera Preview op Framework (dokumint AN14147). Dizze applikaasjenota beskriuwt hoe't jo it AI&ML-fisyalgoritmemodel foar gesichtsherkenning ynskeakelje kinne op it ramt om de gesichtsherkenningsfunksje fia kamera pre te ymplementearjenview op it GUI skerm mei in ienfâldige LVGL GUI example op it SLN-TLHMI-IOT board. Yn de oanfraachnota is it eksample presintearret in LVGL GUI skerm mei in kamera preview en guon knoppen om gesichtsregistraasje, erkenning en ferwidering te triggerjen. De registrearre gesicht gegevens wurdt opslein op Flash fia in bytsje file systeem.

Op in heech nivo befettet de oanfraachnotysje de folgjende ynhâld:

  • Aktivearje de funksje foar gesichtsherkenning op it ramt.
  • Foegje gesichtsdatabasestipe ta oan it ramt fia file systeem op Flash.
  • Implementearje de LVGL GUI-app. Troch de boppesteande ynliedingen helpt dit dokumint de ûntwikkelders om:
  • Begryp it ramt en de smart HMI-oplossingssoftware djipper.
  • Untwikkelje har AI&ML-gesichtsherkenning op ramt mei de LVGL GUI-app.

Framework oerview
De oplossingssoftware is primêr ûntworpen om it gebrûk fan 'e ramt-arsjitektuer dy't bestiet út ferskate ferskillende dielen:

  • Apparaatbehearders - it kearndiel
  • Hardware Abstraksje Layer (HAL) Apparaten
  • Berjochten / Events

Lykas werjûn yn figuer 1, de oerview fan it meganisme fan it ramt is:

Apparaatbehearders binne ferantwurdlik foar it behearen fan apparaten brûkt troch it systeem. Elk apparaattype (ynput, útfier, ensfh.) hat syn eigen type-spesifike apparaatbehearder. Mei in apparaatbehearder dy't begjint nei de apparaten dy't dêrop registrearre binne, wachtet en kontrolearret it in berjocht om gegevens oer te bringen nei de apparaten en oare behearders nei it initialisearjen en starten fan de registrearre apparaten. De HAL-apparaten binne skreaun boppe op 'e bestjoerderkoade op legere nivo, en helpe de koadebegryp te fergrutsjen troch in protte fan' e ûnderlizzende details te abstraheren.

Eveneminten binne in middel wêrmei ynformaasje wurdt kommunisearre tusken ferskate apparaten fia har managers. As in evenemint wurdt triggere, kommunisearret it apparaat dat it barren earst ûntfong dat barren oan syn manager, en dan op syn beurt notifikaasjes oare managers oanwiisd om it evenemint te ûntfangen.

NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (1)

It arsjitektoanysk ûntwerp fan it ramt wie sintraal op trije primêre doelen:

  1. Gemak fan gebrûk
  2. Fleksibiliteit / Portability
  3. Optreden

It ramt is ûntworpen mei it doel om de tiid te fersnellen nei merk foar fisy en oare masine-learapplikaasjes. Om in rappe tiid te garandearjen is it kritysk dat de software sels maklik te begripen en te wizigjen is. Mei dit doel yn gedachten, is de arsjitektuer fan it ramt maklik te wizigjen sûnder beheinend te wêzen, en sûnder te kommen op kosten fan prestaasjes.
Foar mear details oer it ramt, sjoch Smart HMI Software Development User Guide (dokumint MCU-SMHMI-SDUG).

Light and Versatile Graphics Library (LVGL)
LVGL (Light and Versatile Graphics Library) is in fergese en iepenboarne grafyske bibleteek dy't alles leveret dat jo nedich binne om in ynbêde GUI te meitsjen mei maklik te brûken grafyske eleminten, prachtige fisuele effekten en lege ûnthâldfoetôfdruk.

GUI Guider
GUI Guider is in brûkerfreonlik ark foar ûntwikkeling fan grafyske brûkersynterface fan NXP dat rappe ûntwikkeling fan byldskermen fan hege kwaliteit mooglik makket mei de iepen boarne LVGL-grafykbibleteek. De drag-and-drop-bewurker fan GUI Guider makket it maklik om in protte funksjes fan LVGL te brûken lykas widgets, animaasjes en stilen om in GUI te meitsjen mei minimale of gjin kodearring.

Mei de klik op in knop kinne jo jo applikaasje útfiere yn in simulearre omjouwing of eksportearje nei in doelprojekt. Generearre koade fan GUI Guider kin maklik wurde tafoege oan jo projekt, it fersnelt it ûntwikkelingsproses en lit jo naadloos in ynbêde brûkersynterface tafoegje oan jo applikaasje. GUI Guider is fergees te brûken mei NXP's algemiene doel en crossover MCU's en omfettet ynboude projektsjabloanen foar ferskate stipe platfoarms. Om mear te learen oer LVGL- en GUI-ûntwikkeling op GUI Guider, kontrolearje Light and Versatile Graphics Library en GUI Guider.

Untwikkeling omjouwing

Tariede en ynstelle earst de hardware- en softwareomjouwing foar it ymplementearjen fan de eksample op it ramt.

Hardware omjouwing
De hardware-omjouwing is ynsteld foar it ferifiearjen fan de eksample:

  • De smart HMI-ûntwikkelingskit basearre op NXP i.MX RT117H (de SLN_TLHMI_IOT-kit)
  • SEGGER J-Link mei in 9-pin Cortex-M-adapter en V7.84a as in nijere ferzje fan it stjoerprogramma

Software omjouwing
De software-omjouwing is ynsteld foar it ûntwikkeljen fan de eksample:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 - eksample koade fan de twadde applikaasje notysje as de basis software fan de ûntwikkeling. Foar details, sjoch https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 - as de koade boarne foar de ûntwikkeling.
  • SLN-TLHMI-IOT software V1.1.2 - smart HMI boarne koade útbrocht op de NXP GitHub repository as de koade boarne foar de ûntwikkeling. Sjoch foar details: GitHub - NXP/mcu-smhmi at v1.1.2

Foar details oer de oankeap en opset fan 'e softwareomjouwing, sjoch: Te begjinnen mei de SLN-TLHMI-IOT.

Fisy arsjitektuer op ramt

De fisy-arsjitektuer op it ramt wurdt werjûn yn figuer 2. De fisy algo HAL (OASIS_HAL) hat de ûndersteande prosessen:

  • Doch gesichtsregistraasje en erkenning fia it AI&ML-fisyalgoritmemodel nei ûntfangst fan de relatearre barrens fan 'e útfier UI HAL. Notify de konklúzjeresultaten fan it algoritmemodel nei de útfier UI HAL.
  • Tagong ta (taheakje, wiskje ...) de databank foar gesichtsfunksjes basearre op it lytse file systeem troch de API's fan FaceDB HAL te roppen nei ûntfangst fan de relatearre eveneminten fan 'e útfier UI HAL.
  • Freegje it kamera-fideoframe fan 'e kamera HAL oan by it dwaan fan gesichtsregistraasje en erkenning.

NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (3)

Implementearje gesichtsherkenning op it ramt

De LVGL GUI gesichtsherkenning example (eksample wurdt foarsjoen letter) op it ramt wurdt útfierd basearre op de eksample koades fan Implement LVGL GUI Camera Preview op Framework (dokumint AN14147).

Foar it demonstrearjen fan de gesichtsherkenning yn 'e eksample, de basisfunksje fan 'e GUI-app (sjoch it haadskerm yn figuer 3) is ûntwurpen lykas hjirûnder beskreaun:

  • De GUI-app trigget it gesichtsregistraasje as herkenningsevenemint út nei de útfier UI HAL as jo op de knop Registraasje of Erkenning klikke. En de útfier UI HAL meldt it barren fan it tafoegjen fan in brûker oan 'e fisy algo HAL nei't de gesichtsregistraasje suksesfol is.
  • De GUI-app triggert it barren fan it wiskjen fan in brûker nei de útfier UI HAL by it klikken op de knop Brûker wiskje neidat it gesicht fan de brûker is werkend.
  • De GUI-app triggert it barren fan it stopjen fan de oaze algo rint nei de útfier UI HAL as jo op it skerm bûten de knoppen en ôfbyldings klikke.

NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (10)

Bereid it softwarepakket foar de ymplemintaasje fan 'e eksample.

  • Kloon de basissoftware lvgl_gui_camera_preview_cm7. Feroarje de projektnamme en de haad filenamme oan lvgl_gui_face_rec_cm7.
  • It ramt is nedich om te wurde bywurke yn 'e software, om't de boarne koades foar de ramtkearn binne begon te wêzen iepenbier op GitHub fan' e ferzje 1.1.2.
  • Ferfange it ramt map mei de kopy fan V1.1.2 út GitHub útsein foar de files fwk_log.h en fwk_common.h ûnder inc \ sa't se binne wizige foar de rige fan tapassing notysje. De operaasjes wurde werjûn yn figuer 4:NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (11)
  • Wiskje de map framework_cm7 ûnder de libs-groep en ferwiderje de bibleteek framework_cm7 en syn sykpaad konfigureare yn Projekt> Eigenskippen> C/C++ Build> ynstellings> Toolynstellingen> MCU C++ Linker> Biblioteken, om't de boarnekoade fan 'e kearn wurdt levere.

Skeakelje gesichtsherkenningsfunksje yn op ramt
De funksje foar gesichtsherkenning is boud op it ML-fisyalgoritmemodel levere as in statyske bibleteek - in oasis lite runtime-bibleteek troch NXP. De bibleteek is in lytse, heul effisjinte, oanpaste en optimalisearre AI-bibleteek. It model omfettet gesichtsdeteksje, gesichtsherkenning, glêsdeteksje en libbensdeteksje. It leveret foaral de API OASISLT_run_extended () om de pipeline foar gesichtsherkenning út te fieren by it bywurkjen fan resultaten nei de beller fia event-callbacks, en gesichten tafoegje / aktualisearje / wiskje yn 'e databank fia callbacks fan' e gesichtsdatabase nei it opjaan fan de boarneframe-ynformaasje, callbacks en ûnthâld pool brûkt troch de bibleteek troch in oprop in oare API OASISLT_init () op inisjalisaasje. It oproppen fan de API's en de callback-funksjes wurde ymplementearre yn 'e fisy algo HAL fan it ramt.

Foegje vision algo model bibleteek ta

  1. Kopiearje map-oaze mei de bibleteek en de relatearre koptekst file fan smart HMI\coffee_machine\cm7\libs\ yn de map libs fan de eksample SW.
  2. Foegje it sykpaad fan 'e koptekst ta file yn Projekt> Eigenskippen> C/C++ Build> ynstellings> Arkynstellingen> MCU C-kompiler> Omfettet en MCU C++-kompiler> Omfettet: "${workspace_loc:/${ProjName}/libs/oasis/include}"
  3. Foegje de lib en syn sykpaad ta op Project> Eigenskippen> C/C++ Build> ynstellings> MCU C+ + Linker> Biblioteken: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” en de makro-definysje nei ynskeakelje de funksje op Projekt> Eigenskippen> C/C++ Build> ynstellings> Arkynstellingen> MCU C-kompiler> Preprocessor en MCU C++-kompiler> Preprocessor: SMART_TLHMI_2D

Ynskeakelje fyzje algo HAL
De vision algo HAL driuwt it vision algo-model om te wurkjen en reagearret de resultaten op 'e UI-útfier HAL nei ûntfangst fan de barrens derfan.

Om it yn te skeakeljen, klon de besteande ferlykbere HAL-bestjoerder file wêr't de folgjende funksjes wurde ymplementearre:

  • Implementearje de callbacks fan operaasjes foar gesichtsdatabase en ôfhanneling fan eveneminten.
  • Ryd de fyzje algo oan it wurk troch de API's fan 'e oazebibleteek te skiljen.
  • Tagong ta brûkersgesichtsdatabase en app-database (it is net nedich yn 'e eksample).
  • Untfang eveneminten fan en stjoer resultaten nei útfier UI HAL.

De grutte wurken om de HAL foar de eksample binne:

  • Kloon de besteande ferlykbere HAL-bestjoerder file en feroarje de besibbe nammen.
  • Ferwiderje de koades yn ferbân mei de operaasjes fan de app-gegevens.
  • Update de definysjes en funksjes foar it behanneljen fan de eveneminten fanút de útfier UI HAL per eksampûntwerpe.
  • Foegje de konfiguraasjes ta dy't nedich binne yn oasisinitialisaasje.

De detaillearre stappen binne as hjirûnder:

  1. Clone hal_vision_algo_oasis_coffeemachine.c. Feroarje de filenamme oan hal_vision_algo_oasis_guifacerec.c. En ferfange alle snaren CoffeeMachine mei GUIFaceRec yn 'e file.
  2. Ferwiderje de koades mei de tekenrige coffeedb (net haadlettergefoelich) relatearre oan de app-database, bygelyksample, #include hal_sln_coffeedb.h.
  3. Feroarje de funksje HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify () foar it behanneljen fan de eveneminten út de útfier UI HAL.
    • Feroarje de barrensdefinysje kEventFaceRecId_RegisterCoffeeSelection nei kEventFaceRecId_RegisterUserFace en de struktuerstring regCoffeeSelection nei regGUIFaceRec foar de ôfhanneling fan it barren om nije gesichtsfunksjegegevens ta te foegjen oan de databank.
    • Om it standertproses fan 'e aksjes foar gesichtsherkenning yn' e eks sjen te littenample, wizigje de ôfhanneling yn it gefal fan kEventFaceRecID_OasisSetState mei de definysjes fan 'e steaten:
      • kOASISLiteState
      • Registraasje kOASISLiteState
      • Erkenning kOASISLiteState
      • Ophâlden
  4. Foegje en wizigje de definysjes fan 'e eveneminten neamd yn' e boppeste stap.
    • Kopiearje de koptekst file smart_tlhmi_event_descriptor.h fan smart HMI\coffee_machine \cm7\source\event_handlers\ yn de map boarne fan de eksample SW. Update de file lykas hjirûnder:
    • Feroarje de evenemintdefinysje kEventFaceRecId_RegisterCoffeeSelection nei kEventFaceRecId_RegisterUserFace yn it enumtype _event_smart_tlhmi_id en de struktuerstring regCoffeeSelection nei regGUIFaceRec yn de struct _event_smart_tl. Dus, feroarje de struktuer register_coffee_selection_event_t foar regCoffeeSelection nei register_gui_facerec_event_t.
    • Wiskje de oare ynhâld dy't brûkt wurdt foar de kofjemasine-app, bygelyksample, de koade rigel oer stim: #include "hal_event_descriptor_voice.h".
    • Foegje de typen kOASISLiteState_Stopped en kOASISLiteState_Running ta oan it enum type oasis_lite_state_t yn hal_vision_algo.h ûnder framework>hal>vision yn it projekt lykas hjirûnder:
      typedef enum _oasis_lite_state {
      • kOASISLiteState
      • Running, kOASISLiteState
      • Stoppe, kOASISLiteState
      • Erkenning,
      • kOASISLiteState
      • Registraasje, kOASISLiteState
      • Deregistraasje, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • Telle
    • Brûk de boppesteande bywurke struct oasis_lite_state_t om de struct oasis_state_event_t te ferfine yn hal_event_descriptor_face_rec.h ûnder framework>hal>fisy yn it projekt lykas hjirûnder: typedef struct _oasis_state_event_t {oasis_lite_state_t state; } oasis_state_event_t;
  5. Feroarje alle kEventInfo_Remote nei kEventInfo_Local foar it ferstjoeren fan eveneminten fan 'e fisy algo HAL nei oare HAL's dy't op deselde kearn rinne as ien kearn ynstee fan dual-core wurdt brûkt yn' e eksample.
  6. Foegje en wizigje de ûndersteande konfiguraasjes foar oasisinitialisaasje yn OASISLT_init():
    • Foegje de makro-definysjes en ûnthâldseksjes ta foar it fideoframe yn 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
      • __attribute__((aligned(alignbytes)))
    • Konfigurearje de ûnthâldopdracht nei de boppesteande ûnthâldseksje fb_sh_mem op Projekt> Eigenskippen> C/C++ Build> MCU-ynstellingen werjûn yn figuer 5:NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (12)
    • Ferklearje de globale fariabele g_DTCOPBuf yn lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Trochgean mei it tafoegjen fan de definysjes brûkt yn 'e boppesteande fariabele:
    • Definiearje de boppesteande seksje yn board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • attribute__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • attribút__((aligned(alignbytes)))
    • Meitsje de koptekst yn file hal_vision_algo.h mei dêryn de makro definysje DTC_OPTIMIZE_BUFFER_SIZE yn app_config.h opnommen yn lvgl_gui_face_rec_cm7.cpp.
  7. Stel de fariabele s_debugOption op wier foar it werjaan fan de foarútgongstatus op gesichtsherkenning.
  8. Foegje it sykpaad fan 'e koptekst ta files fan 'e fyzje HAL op Projekt> Eigenskippen>C/C++ Build> ynstellings> Toolynstellingen> MCU C-kompiler> Omfettet en MCU C++-kompiler> Omfettet: "${workspace_loc:/${ProjName}/framework/hal/vision}"
  9. Foegje de ûndersteande definysje ta om fyzje algo HAL yn te skeakeljen yn board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Ynskeakelje útfier UI HAL
De útfier UI HAL meldt de eveneminten oan 'e fyzje algo HAL en reagearret op' e konklúzjeresultaten fan 'e fyzje algo HAL. Mei de GUI-app wurde de eveneminten oer it generaal triggere troch de app en de resultaten wurde werjûn op 'e app.

Om it yn te skeakeljen, klon de besteande ferlykbere HAL-bestjoerder file wêr't yn 't algemien de folgjende funksjes wurde ymplementearre:

  • Notify de barrens foar gesichtsherkenning en database tagong.
  • Implementearje de callbacks foar de GUI-app om de barrens te triggerjen.
  • Behannelje de konklúzjeresultaten fan 'e fyzje algo-module.
  • Lit it proses en de resultaten fan 'e barrens ôfhannelje op' e UI troch de foarútgongbalke regele mei de timers en rjochthoeke foar gesichtsgids.

De grutte wurken om de HAL foar de eksampLe brûkt yn dit dokumint binne:

  • Kloon de besteande ferlykbere HAL-bestjoerder file en feroarje de besibbe nammen.
  • Fuortsmite de koades yn ferbân mei de app.
  • Update de funksjes foar de notifikaasje fan eveneminten en resultaten antwurd per eksampûntwerpe.
  • Foegje de callbacks ta foar de GUI-app om de barrens te triggerjen.

De detaillearre stappen binne as hjirûnder:

  1. Clone hal_output_ui_coffee_machine.c. Feroarje de filenamme oan hal_ output_ui_guifacerec.c.
  2. Ferfange alle snaren CoffeeMachine mei GUIFaceRec yn 'e file.
  3. Fuortsmite de koades yn ferbân mei de app - kofje masine.
    • Fuortsmite de funksjes WakeUp () en _StandBy () en de besibbe koades (meie sykje de tekenrige wake_up en standby foar harren).
    • Fuortsmite preview modus-eveneminten dy't relatearre koades behannelje yn HAL_OutputDev_UiGUIFaceRec_Input Notify ().
    • Fuortsmite de funksjes UI_xxx_Callback () en de koades mei de tekenrige gui_ en skerm yn ferbân mei de GUI fan de kofje masine útsein gui_set_virtual_face () foar de preview modus funksje.
    • Fuortsmite alle koades belutsen by de fariabelen s_IsWaitingAnotherSelection en s_IsWaitingRegisterSelection yn ferbân mei de kofje masine app.
    • Ferwiderje de koades relatearre oan stim, audio en taal. Bygelyksample:
      • #include "hal_voice_algo_asr_local.h",
      • #include "hal_event_descriptor_voice.h"
  4. Foar de ferskate eveneminten notifikaasje, ymplemintearje de nije funksjes _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec(), en DeregisterGUIFaceRec() ferwizend nei de funksjes _StopFaceRec(), _RegisterCoffeeSelection(), en DeregisterCoffeeSelection() foardat se wiskje.
    • De _OutputManagerNotify() ymplementearret de basisútfierfunksje foar eveneminten om in evenemint te stjoeren nei de fisy algo HAL. De ûndersteande funksjes neame it om har eigen eveneminten te stjoeren.
    • De _SetFaceRec() stjoert it evenemint kEventFaceRecID_OasisSetState om de fyzje-algo te triggerjen foar gesichtsregistraasje, erkenning en stopje de algo.
    • De _RegisterGUIFaceRec() stjoert it barren kEventFaceRecId_RegisterGUIFaceRec dat is definiearre yn smart_tlhmi_event_descriptor.h om gesichtsfunksjegegevens oan de databank ta te foegjen as registraasje OK is.
    • De DeregisterGUIFaceRec() stjoert it barren kEventFaceRecID_DelUser om de gegevens fan de gesichtsfunksje te wiskjen út de databank by it trochjaan fan de gesichtsherkenning.
  5. Update de koades om de korrespondearjende aksjes te nimmen, ynklusyf it ferfarskje de GUI troch de API's fan 'e LVGL GUI-app op te roppen foar de konklúzjeresultaten fan gesichtsregistraasje en erkenning yn' e funksje _InferComplete_Vision() per eks.ample syn ûntwerp. Bygelyksample, as gesichtsregistraasje suksesfol is,
    • Stopje de foarútgong te sjen troch _FaceRecProcess_Stop ();
    • Stopje de gesichtsregistraasje troch te roppen _SetFaceRec (kOASISLiteState_Stopped);
    • Lit it suksesfolle resultaat sjen op 'e GUI: gui_show_face_rec_result (kFaceRecResult_OK, s_UserId);
    • Registrearje de gesichtsgegevens yn 'e databank: _RegisterUserFace(s_UserId);
  6. Foegje UI-opropfunksjes ta om de eveneminten te behanneljen: preview, gesichtsregistraasje, erkenning en wiskjen fan brûker út 'e GUI. Bygelyksample, it gesicht registraasje callback: void UI_Registration_Callback () { _SetFaceRec (kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • En heakje de funksjes _FaceRecProcess_Start () en _FaceRecProcess_Stop () ta om de foarútgong en status te sjen yn 'e ferskate eveneminten en resultaten.
    • Update de timer ISR callback funksje _SessionTimer_Callback () te behannelje it gefal fan time-out troch in oprop: gui_show_face_rec_result (kFaceRecResult_TimeOut, s_UserId);
  7. Foegje de ûndersteande definysjes ta om UI-útfier HAL yn te skeakeljen yn board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Notysje:
Om de funksje foar gesichtsherkenning better te presintearjen, hâld de funksje om it proses en resultaten fan gesichtsherkenning te sjen yn 'e útfier UI HAL. De funksje wurdt beskreaun as hjirûnder

  • De rjochthoeke foar gesichtsgids toant blau, en de foarútgongsbalke toant de foarútgong by it starten fan de gesichtsregistraasje of erkenning.
  • De rjochthoeke foar gesichtsgids lit read sjen as gesichtsregistraasje suksesfol is.
  • De rjochthoeke foar gesichtsgids lit grien sjen as gesichtsherkenning suksesfol is.
  • De rjochthoeke foar gesichtsgids hâldt blau, en de foarútgongsbalke toant folsleine foarútgong as de aksje net slagget nei it ferrinnen fan de timer. Stopje op dat punt de gesichtsregistraasje of erkenning.

De foarútgongbalke en rjochthoeke foar gesichtsgids wurde presintearre as de ikoanen dy't binne ynboud yn 'e boarne-binêre file wurde programmearre yn Flash. De oanwizers nei de ikoanen gegevens op SDRAM wurde ynsteld yn de funksje LoadIcons (APP_ICONS_BASE) neamd op de útfier UI HAL apparaat inisjalisaasje yn de útfier UI HAL. It moat de ikoanen stypje foar de funksje.

Implementearje de ikoanen stipe

  1. Bou de boarne troch de ikoanen te kombinearjen mei de ôfbyldings brûkt yn 'e LVGL GUI-app:
    • Kloon de fjouwer ikoankoptekst files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h, en virtual_face_red_420x426.h fan smart HMI
      \kofjemasine\resource\icons\ nei de nije map-ikoanen ûnder de boarne-map fan de eksample SW.
    • Foegje it sykpaad ta foar de fjouwer ikoan files yn 'e camera_preview_resource.txt file yn 'e boarne map, bygelyksample: byldkaike ../resource/icons/process_bar_240x14.h
    • Utfiere camera_preview_resource_build.bat te bouwen de bylden en byldkaikes boarnen te generearjen de bin file camera_preview_resource.bin en de ynfo file resource_information_table.txt (Sjoch figuer 6).NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (13)
  2. Definiearje it startadres op SDRAM en de grutte fan de byldkaikes yn app_config.h. It adres begjint neist de ôfbyldings fan 'e GUI-app. De grutte wurdt generearre yn 'e ynformaasje file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Update de tawiisde grutte fan it ûnthâld seksje neamd res_sh_mem nei 0x200000 troch it opnij definiearje yn app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 en de oerienkommende ynstelling yn Project> Eigenskippen> C/C++ Build> MCU-ynstellingen.
  4. Foegje de byldkaikegrutte ta oan de totale grutte fan 'e boarne laden fan Flash nei SDRAM yn' e funksje APP_LoadResource () yn 'e haadfunksje file lvgl_gui_face_rec_cm7.cpp: memcpy ((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Notysje: Om de funksje foar gesichtsherkenning te foltôgjen, is de LVGL GUI-appstipe nedich. De UI-opropfunksjes yn 'e útfier UI HAL wurde oproppen troch de LVGL GUI-app foar it behanneljen fan de barrens fan it UI-skerm. Oan 'e oare kant ropt de útfier UI HAL de API's fan 'e LVGL GUI-app op om de UI te aktualisearjen om it resultaat en status te sjen. De ûntwikkeling fan 'e LVGL GUI-app is relatyf ûnôfhinklik en yntrodusearre yn seksje 4.3.

4.1.5 Start HAL-apparaten en behearders foar gesichtsherkenning
De ynskeakele fisy algo HAL en UI útfier HAL en harren managers wurde begûn yn de wichtichste file
lvgl_gui_face_rec_cm7.cpp nei de konversaasjes fan ûntwikkeling op it ramt lykas hjirûnder:

  1. Meitsje de koptekst yn file relatearre oan de twa HAL-managers troch de koaderigel ta te foegjen:
    • #include " fwk_output_manager.h "
    • #include "fwk_vision_algo_manager.h"
  2. Ferklearje de HAL-apparaten:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Registrearje de HAL-apparaten:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Inisjalisearje de managers:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Begjin de behearders:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Definiearje de prioriteit fan 'e managertaken:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Foegje gesichtsdatabasestipe ta oan ramt
De registrearre gegevens foar gesichtsfunksjes binne tagonklik yn 'e gesichtsdatabase opslein op Flash fia in bytsje file systeem. De stappen om de stipe foar gesichtsdatabase ta te foegjen wurde hjirûnder beskreaun.

Foegje stjoerprogramma's ta foar Flash-opslach
Kopiearje de Flash-ynterface FlexSPI-bestjoerder files fsl_flexspi.c en fsl_flexspi.h, en de gegevensfersiferingsbestjoerder files fsl_caam.c en fsl_caam.h fan it paad SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ nei de drivers map fan de example SW.

Foegje stipe op boardnivo ta

  1. Foegje de definysjes fan FlexSPI ta brûkt foar it Flash-apparaat oan board yn board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopiearje de operators en konfiguraasjes files fan it Flash-apparaat flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, ensln_flash_ops.h ûnder it paad smart HMI_7\conflash_fcm de map fan \ coffeesource_igfcmample SW.
    • Skeakelje "Bûnsboarne útslute fan build" yn C/C ++ Build> Ynstellings nei't jo mei de rjochter mûsklikke op de files 'namme en it iepenjen fan de Eigenskippen om se yn te bouwen yn it projekt.
  3. Feroarje de ynbegrepen koptekst filenamme sln_flash_config.h nei sln_flash_config_w25q256jvs.h yn sln_flash_config.c en flexspi_nor_flash_ops.h.
  4. Stel de FlexSPI1 klok boarne yn de file clock_config.c ferwizend nei de kofjemasine-app.

Add adapter en middelste nivo stipe

  1. Kopiearje de files sln_flash.c, sln_flash.h, sln_encrypt.c, en sln_encrypt.h as adapterbestjoerders foar de file systeem en app fan it paad fan smart HMI\coffee_machine\cm7\source\ nei de mapboarne fan de eksample. Update de nije files:
    • Skeakelje "Bûnsboarne útslute fan build" op har foar bouwen.
    • Feroarje alle opnommen koptekst file namme sln_flash_config.h nei sln_flash_config_w25q256jvs.h.
  2. Kopiearje de map filesysteem mei dêryn de APIs foar de lytse filesysteem en HAL-bestjoerder fan smart HMI \ coffee_machine \ cm7 \ boarne \ nei de eksample SW. En update foar de nije map:
    • Untselektearje "Bûnsboarne útslute fan build" derop foar bouwen.
    • Foegje it paad dêrfoar ta yn projektynstellingen: "${workspace_loc:/${ProjName}/filesysteem}"
    • Feroarje de ynbegrepen koptekst file namme sln_flash_config.h nei sln_flash_config_w25q256jvs.h en fica_definition.h nei app_config.h yn de file sln_flash_littlefs.h.
  3. Kopiearje de map littlefs mei de middelste ware - lyts filesysteem fan it paad SDK_2_13_0_ MIMXRT1170-EVK\middleware\ nei de eksample SW. En bywurkje de nije map:
    • Untselektearje "Bûnsboarne útslute fan build" derop foar bouwen.
    • Foegje it paad dêrfoar ta yn projektynstellingen: "${workspace_loc:/${ProjName}/littlefs}"

Foegje HAL-bestjoerders ta 

  • D'r binne twa HAL-apparaten - file systeem en gesicht databank HAL stipe foar de databank tagong funksje en se binne al ymplemintearre yn it ramt sûnder feroaring. Skeakelje se yn troch de ûndersteande definysjes ta te foegjen yn board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

En feroarje de namme fan de gesichtsdatabase foar de eksample: #define OASIS_FACE_DB_DIR "oasis_gui_face_rec"

Foegje stipe ta op app-nivo

  1. Update de wichtichste file lvgl_gui_face_rec_cm7.cpp:
    • Meitsje de koptekst yn file relatearre oan de Flash file systeem HAL behearder troch it tafoegjen fan de koade rigel: #include "fwk_flash.h"
    • Ferklearje en registrearje file systeem HAL apparaat:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Noat: de file systeem HAL apparaat moat wurde registrearre foar alle apparaat managers wurde inisjalisearre yn de funksje APP_InitFramework ().
    • Rop de funksje BOARD_ConfigMPU () yn APP_BoardInit () om MPU te konfigurearjen.
  2. Stel de file systeem opdracht op Flash yn de file app_config.h troch it definiearjen fan de makro definysjes brûkt yn de file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define FICA_FILE_SYS_SIZE (0x280000)

Konfiguraasjes
Guon Flash-relatearre koades wurde útfierd yn de SRAM ITC gebiet foar genôch prestaasjes. Kopiearje de maplinkscripts mei de linkerkonfiguraasjes fan it paad smart HMI\coffee_machine\cm7\ nei de eksample SW.

Implementearje in LVGL GUI-app
De ûntwikkeling fan in LVGL GUI-app basearre op ramt ropt de API's fan útfier UI HAL en leveret de API's om UI HAL út te fieren (Sjoch paragraaf 4.1.3 foar de ymplemintaasje fan útfier UI HAL).

De detaillearre ymplemintaasje fan in LVGL GUI-app hinget lykwols ôf fan 'e easken en ûntwerp fan' e applikaasje. De GUI-app yn dizze eksample is ûntwurpen lykas beskreaun oan it begjin fan 'e seksje Seksje 4.

Hjirûnder binne de ymplemintaasje-ynliedingen:

  1. De oanpaste koades wurde ymplementearre yn de custom.c en custom.h jûn troch GUI Guider as de ynterface tusken de GUI Guider projekt en de ynbêde systeem projekt.
    •  Foegje de nije funksjes ta mei de namme gui_xxx () yn custom.c om de folgjende funksjes te berikken:
      • Foar útfier UI HAL en GUI app om UI te aktualisearjen.
      • Foar GUI-app om eveneminten te triggerjen troch UI-opropfunksjes op te roppen fanút útfier UI HAL.
        Bygelyksample, de nije funksje gui_event_face_rec_action () ropt UI callback funksjes foar in hantearje ien fan 'e eveneminten fan gesicht registraasje, gesicht erkenning en wiskjen brûker trigger út de GUI app as de relatearre knop wurdt oanklikt.
        Opmerking: De funksje gui_set_virtual_face () neamd yn útfier UI HAL foar preview modus moat wurde ymplementearre yn custom.c:
    •  Clone funksje gui_set_virtual_face () út smart HMI \ coffee_machine \ cm4 \ custom \ custom.c.
    •  Feroarje de namme fan 'e widget home_img_cameraPreview nei screen_img_camera_preview yn 'e funksje.
    •  Implementearje de UI-callback-funksjes mei itselde prototype foar allegear yn útfier UI HAL ûnder de kontrôle fan 'e makro-definysje #ifndef RT_PLATFORM yn custom.c om kompatibel te wêzen mei it GUI Guider-projekt, om't dizze funksjes yn útfier UI HAL ôfhinklik binne fan de ynbêde platfoarm. Yn custom.c binne se ôfhinklik fan de simulator op GUI guider en binne ûnôfhinklik fan it ynbêde platfoarm. Bygelyksample, it gesicht registraasje callback wurdt ymplemintearre as hjirûnder foar de GUI Guider simulator running: #ifndef RT_PLATFORM void UI_Registration_Callback () {gui_hide_del_user_btn (wier); s_InAction = false; weromkomme; }
      Noat: Ferwize nei itselde prototype fan 'e funksje yntrodusearre yn stap 6 fan seksje 4.1.3
      De makro-definysje RT_PLATFORM is ynsteld op de projektynstellingen fan MCUXpresso lykas werjûn yn figuer 7:NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (14)
    • Ferklearje alle funksjes neamd UI_xxx_Callback () en gui_xxx () yn custom.h en tafoegje custom.h opnommen yn smart_tlhmi_event_descriptor.h om de GUI APIs te dielen oan UI-útfier HAL.
  2. Untwikkelje de GUI op GUI Guider:
    • Clone de map kamera preview mei de GUI Guider-projektsoftware yn 'e map gui_guider yn it basissoftwarepakket lvgl_gui_camera_preview_cm7. Feroarje de besibbe namme camera_preview to face_rec foar de nije eksample.
    • Kopiearje de boppesteande bywurke custom.c en oanpast. h nei de nije GUI Guider-projektsoftware.
    •  Iepenje it nije face_rec-projekt op GUI Guider. Update as hjirûnder:
      • Foegje de nije knop ta mei de namme Brûker wiskje. Foegje de flagge Ferburgen ta, sadat de knop ferburgen wurdt as de GUI-app opstart.
      • Foegje de koade rigel fan in oprop fan de API gui_event_face_rec_action () mei ferskillende evenemint ID parameter op de "Released" trigger yn de Event ynstelling fan alle knoppen Registraasje, Erkenning en wiskje Brûker foar in trigger de eveneminten fan gesicht registraasje, gesicht erkenning en wiskjen brûker. Figuer 8 toant de koade foar it barren fan 'e knop Registraasje:NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (15)
  3. Update de oanmakke koade fan GUI Guider nei it MCUXpresso-projekt.
    • Ferfange de ynhâld útsein de mapôfbyldings yn 'e map generearre fan it MCUXpresso-projekt SW mei de oerienkommende yn' e map generearre fan GUI Guider-projekt SW.

Noat: Foar mear details oer de wizigingen dy't hjirboppe yntrodusearre binne, kontrolearje de eksample software at https://mcuxpresso.nxp.com/appcodehub.

Ferifikaasjes mei de eksampit projekt

Om de eksample softwarepakket mei de boarnen en ark foar dizze applikaasjenotysje, besykje: https://mcuxpresso.nxp.com/appcodehub. Iepenje de eksampit projekt op MCUXpresso IDE. Bouwe en programmearje de .axf file nei it adres 0x30000000 en programmearje de boarne bin file camera_preview_resource.bin nei it adres 0x30800000.

De LVGL GUI gesichtsherkenning example wurket normaal as hjirûnder:

  • Preview: Mei power up toant de fideostreamen dy't troch de kamera opnommen binne op it spesifike gebiet fan kamera preview op it GUI-skerm. It statuslabel lit "Preview…”. Foar details, sjoch figuer 3. De knop Brûker wiskje is ferburgen. As jo ​​​​op it gebiet bûten de knoppen en ôfbyldings klikke, toant it de preview steat as it boppesteande neidat it gesicht registraasje of erkenning aksje einiget.
  • Ynskriuwing:
    • tartup: As de Registraasje knop wurdt oanklikt, begjint de gesichtsregistraasje. It statuslabel feroaret om "Registraasje ..." wer te jaan, de rjochthoeke fan 'e gesichtsgids toant blau, en de foarútgongsbalke begjint de foarútgong te sjen. Soargje derfoar dat it gesicht fan 'e brûker yn' e rjochthoeke fan 'e blauwe gesichtsgids toant foar registraasje.
    • súkses: It statuslabel toant "Registraasje ... OK" en it registrearre brûkers-ID-nûmer, it rjochthoeke fan 'e gesichtsgids wurdt read as de gesichtsregistraasje suksesfol is foardat de foarútgong folslein op' e balke toant.
    • Mislearring -> Time-out: It statuslabel toant "Registraasje ... Time-out" as de gesichtsregistraasje noch mislearre is as de foarútgong folslein op 'e balke toant.
    • Mislearring -> Duplikaasje: It statuslabel toant "Registraasje ... Mislearre", de rjochthoeke fan 'e gesichtsgids wurdt grien as it registrearre gesicht wurdt erkend foardat de foarútgong folslein op' e balke toant.
  • erkenning:
    • Opstarten: As de knop Herkenning wurdt oanklikt, begjint de gesichtsherkenning. It statuslabel feroaret om "Erkenning ..." wer te jaan, de rjochthoeke fan 'e gesichtsgids lit blau sjen, en de foarútgongsbalke begjint de foarútgong te sjen. Soargje derfoar dat it gesicht fan 'e brûker wurdt werjûn yn' e blauwe rjochthoeke foar gesichtsgids foar registraasje.
    • súkses: It statuslabel toant "Erkenning ... OK" en it erkende brûkers-ID-nûmer, it rjochthoeke fan 'e gesichtsgids wurdt grien as de gesichtsherkenning suksesfol is foardat de foarútgong folslein op' e balke toant. Op it punt ferskynt de knop Brûker wiskje. It betsjut dat de brûker allinich kin wurde wiske as it wurdt erkend.
    • ailure: It statuslabel lit "Erkenning ... Time-out" sjen as de gesichtsherkenning noch mislearre is as de foarútgong folslein op 'e balke toant.
  • Brûker wiskje: As de knop "Brûker wiskje" wurdt oanklikt, neidat de gesichtsherkenning suksesfol is, feroaret it statuslabel om "Brûker wiskje ... OK" wer te jaan, mei it rjochthoeke fan 'e gesichtsgids blau en de foarútgong dy't folslein op' e balke toant. De knop Brûker wiskje is wer ferburgen. It erkende gesicht / brûker wurdt wiske út de databank. It betsjut dat dit gesicht / brûker kin net erkend wurde oant is registrearre wer.

Opmerking oer de boarnekoade yn it dokumint
ExampDe koade werjûn yn dit dokumint hat it folgjende auteursrjocht en lisinsje fan BSD-3-klausule:

Copyright 2024 NXP Werferdieling en gebrûk yn boarne en binêre foarmen, mei of sûnder wiziging, binne tastien op betingst dat de folgjende betingsten foldien wurde:

  1. Werferdielingen fan boarnekoade moatte de boppesteande copyright notice, dizze list mei betingsten en de folgjende disclaimer behâlde.
  2. Redistributions yn binêre foarm moatte reprodusearje boppesteande copyright notice, dizze list fan betingsten en de folgjende disclaimer yn de dokumintaasje en / of oare materialen moatte wurde foarsjoen fan de distribúsje.
  3. Noch de namme fan 'e auteursrjochthâlder noch de nammen fan har meiwurkers meie wurde brûkt om produkten ôflaat fan dizze software te ûnderskriuwen of te befoarderjen sûnder spesifike foarôfgeande skriftlike tastimming

DIT SOFTWARE WORDT LJOCHT FAN DE COPYRIGHT HOUDERS EN Meiwurkers "AS IS" EN ELKE EXPRESS OF YMPLIYTE GARANTIES, INKLUDERENDE, MAAR NET BEPERKTE TOT, DE YMPLIYTE GARANTIES FAN VERHANDELBAARHEID EN GESKIKTHEID FOAR IN DISPLYKLIKHEID. YN GEEN GEVAL SIL DE COPYRIGHTHOUDER OF CONTRIBUTEURS AANSPRAKELIJK Wêze FOAR ELKE DIREKTE, INDIREKTE, INSIDENTELE, SPESIALE, EXEMPLARY, OF GEVOLGLIKE SKADES (YNKLUDEREND, MAAR NET BEGREPEN TOT, FERKING FAN SUBSTITUTE SERVICES GOED, DAN US; OF WINSTEN; OF BEDRIJFSûnderbrekking) HOE FERGESE EN OP ELKE TEORY FAN AANSPRAKELIJKHEID, OF YN KONTRAKT, STRIKE AANSPRAKELIJKHEID, OF TORTT (YNKLUDEREF NEALLIGENS OF OF ANDERS) OANKOMST OP ELKE MANIER FAN DIT GEBRUK. MOOGLIKHEID FAN SOLKE SKADE.

Revision skiednis

NXP-AN14263-Implement-LVGL-GUI Gesichtsherkenning-op-Framewor-fig- (16)

Juridyske ynformaasje

Definysjes
Untwerp - In konsept status op in dokumint jout oan dat de ynhâld is noch ûnder ynterne review en ûnder foarbehâld fan formele goedkarring, wat kin resultearje yn oanpassings of tafoegings. NXP Semiconductors jout gjin foarstellingen of garânsjes oangeande de krektens of folsleinens fan ynformaasje opnommen yn in ûntwerpferzje fan in dokumint en sil gjin oanspraaklikens hawwe foar de gefolgen fan it brûken fan sokke ynformaasje.

Disclaimer

  • Beheinde garânsje en oanspraaklikens - Ynformaasje yn dit dokumint wurdt leaud krekt en betrouber te wêzen. NXP Semiconductors jout lykwols gjin foarstellings of garânsjes, útdrukt of ymplisearre, oangeande de krektens of folsleinens fan sokke ynformaasje en sil gjin oanspraaklikens hawwe foar de gefolgen fan it brûken fan sokke ynformaasje. NXP Semiconductors nimt gjin ferantwurdlikens foar de ynhâld yn dit dokumint as levere troch in ynformaasjeboarne bûten NXP Semiconductors.
    Yn gjin gefal sil NXP Semiconductors oanspraaklik wêze foar yndirekte, ynsidintele, bestraffende, spesjale of gefolchskea (ynklusyf - sûnder beheining - ferlerne winsten, ferlerne besparrings, bedriuwsûnderbrekking, kosten relatearre oan it fuortheljen of ferfangen fan produkten of ferwurkingskosten) of net sokke skea binne basearre op tort (ynklusyf negligens), garânsje, kontraktbreuk of in oare juridyske teory.
    Nettsjinsteande alle skea dy't de klant om hokker reden dan ek kin oprinne, sil de totale en kumulative oanspraaklikens fan NXP Semiconductors tsjin 'e klant foar de hjir beskreaune produkten wurde beheind yn oerienstimming mei de Betingsten en kondysjes fan kommersjele ferkeap fan NXP Semiconductors.
  • Rjocht om feroarings te meitsjen - NXP Semiconductors behâldt it rjocht foar om feroaringen te meitsjen oan ynformaasje publisearre yn dit dokumint, ynklusyf sûnder beheining spesifikaasjes en produktbeskriuwings, op elk momint en sûnder notice. Dit dokumint ferfangt en ferfangt alle ynformaasje levere foarôfgeand oan de publikaasje dêrfan.
  • Geskiktheid foar gebrûk - NXP Semiconductors-produkten binne net ûntworpen, autorisearre of garandearre om geskikt te wêzen foar gebrûk yn libbensstipe, libben-krityske of feiligens-krityske systemen of apparatuer, noch yn tapassingen wêr't mislearring of defekt fan in NXP Semiconductors-produkt ridlikerlik ferwachte kin resultearje yn persoanlik blessuere, dea of ​​slimme eigendom of miljeu skea. NXP Semiconductors en har leveransiers akseptearje gjin oanspraaklikens foar opnimmen en / of gebrûk fan NXP Semiconductors-produkten yn sokke apparatuer of applikaasjes en dêrom is sa'n opname en / of gebrûk op eigen risiko fan 'e klant.
  • Applikaasjes - Applikaasjes dy't hjir wurde beskreaun foar ien fan dizze produkten binne allinich foar yllustrative doelen. NXP Semiconductors makket gjin foarstelling of garânsje dat sokke applikaasjes geskikt sille wêze foar it oantsjutte gebrûk sûnder fierdere testen of modifikaasje.
    Klanten binne ferantwurdlik foar it ûntwerp en de eksploitaasje fan harren applikaasjes en produkten mei help fan NXP Semiconductors produkten, en NXP Semiconductors akseptearret gjin oanspraaklikheid foar in help mei applikaasjes of klant produkt design. It is de iennige ferantwurdlikens fan de klant om te bepalen oft it NXP Semiconductors-produkt geskikt is en geskikt is foar de plande applikaasjes en produkten fan de klant, lykas ek foar de plande tapassing en gebrûk fan klant(en) fan tredden fan klant(en). Klanten moatte passende ûntwerp- en operaasjefeiligens leverje om de risiko's ferbûn mei har applikaasjes en produkten te minimalisearjen. NXP Semiconductors akseptearret gjin oanspraaklikens yn ferbân mei standert, skea, kosten of probleem dat is basearre op in swakke of standert yn 'e applikaasjes of produkten fan' e klant, of de applikaasje of gebrûk troch klant(en) fan tredden fan klant. Klant is ferantwurdlik foar it dwaan fan alle nedige testen foar de applikaasjes en produkten fan 'e klant mei NXP Semiconductors-produkten om in standert fan' e applikaasjes en de produkten of fan 'e applikaasje of gebrûk troch klant(en) fan tredden fan klant te foarkommen. NXP akseptearret gjin oanspraaklikens yn dit ferbân.
  • Betingsten en kondysjes fan kommersjele ferkeap - NXP Semiconductors-produkten wurde ferkocht ûnder foarbehâld fan de algemiene betingsten en kondysjes fan kommersjele ferkeap, lykas publisearre op https://www.nxp.com/profile/ betingsten, útsein as oars ôfpraat yn in jildich skriftlike yndividuele oerienkomst. Yn it gefal dat in yndividuele oerienkomst wurdt sletten, binne allinich de betingsten en kondysjes fan 'e respektivelike oerienkomst fan tapassing. NXP Semiconductors makket hjirmei útdruklik beswier tsjin it tapassen fan de algemiene betingsten en kondysjes fan 'e klant oangeande de oankeap fan NXP Semiconductors-produkten troch klant.
  • Eksportkontrôle - Dit dokumint, lykas de hjiryn beskreaune artikel(en) kinne ûnderwurpen wêze oan eksportkontrôleregels. Eksportearje kin in foarôfgeande autorisaasje fan foechhawwende autoriteiten fereaskje.
  • Geskiktheid foar gebrûk yn net-automotive kwalifisearre produkten - Behalven as dit dokumint útdruklik stelt dat dit spesifike NXP Semiconductors-produkt automotive kwalifisearre is, is it produkt net geskikt foar automotive gebrûk. It is noch kwalifisearre noch hifke yn oerienstimming mei automotive testen as applikaasje easken. NXP Semiconductors akseptearret gjin oanspraaklikens foar opname en / of gebrûk fan net-automotive kwalifisearre produkten yn automotive apparatuer of applikaasjes.
    Yn it gefal dat klant it produkt brûkt foar ûntwerp-yn en gebrûk yn automotive-applikaasjes nei automotive spesifikaasjes en noarmen, klant (a) sil it produkt brûke sûnder NXP Semiconductors 'garânsje fan it produkt foar sokke automotive applikaasjes, gebrûk en spesifikaasjes, en ( b) wannear't klant it produkt brûkt foar auto-tapassingen bûten de spesifikaasjes fan NXP Semiconductors, sil sa'n gebrûk allinich op eigen risiko wêze fan 'e klant, en (c) de klant frijwaart NXP Semiconductors folslein foar alle oanspraaklikens, skea of ​​mislearre produktclaims dy't resultearje út klantûntwerp en gebrûk fan it produkt foar automotive applikaasjes bûten de standert garânsje fan NXP Semiconductors en produktspesifikaasjes fan NXP Semiconductors.
  • Translations - In net-Ingelske (oersette) ferzje fan in dokumint, ynklusyf de juridyske ynformaasje yn dat dokumint, is allinich foar referinsje. De Ingelske ferzje sil prevalearje yn gefal fan diskrepânsje tusken de oersette en Ingelske ferzjes.
  • Feiligens - Klant begrypt dat alle NXP-produkten ûnderwurpen wêze kinne oan unidentifisearre kwetsberens of kinne fêststelde feiligensnoarmen of spesifikaasjes stypje mei bekende beheiningen. Klant is ferantwurdlik foar it ûntwerp en de eksploitaasje fan har applikaasjes en produkten yn har heule libbenssyklus om it effekt fan dizze kwetsberens op 'e applikaasjes en produkten fan klanten te ferminderjen. De ferantwurdlikens fan de klant wreidet ek út nei oare iepen en/of proprietêre technologyen dy't wurde stipe troch NXP-produkten foar gebrûk yn applikaasjes fan klanten. NXP akseptearret gjin oanspraaklikens foar kwetsberens. Klant moat regelmjittich befeiligingsupdates fan NXP kontrolearje en passend folgje. Klant sil produkten selektearje mei befeiligingsfunksjes dy't it bêste foldogge oan regels, regeljouwing en noarmen fan 'e bedoelde tapassing en de ultime ûntwerpbeslissingen nimme oangeande har produkten en is allinich ferantwurdlik foar it neilibjen fan alle wetlike, regeljouwing en feiligensrelatearre easken oangeande syn produkten, nettsjinsteande fan alle ynformaasje of stipe dy't kin wurde levere troch NXP.

NXP hat in Product Security Incident Response Team (PSIRT) (berikber op PSIRT@nxp.com) dy't it ûndersyk, rapportaazje en frijlitting fan oplossing foar feiligens kwetsberens fan NXP-produkten beheart.
NXP BV - NXP BV is gjin bedriuwsfiering en it distribearret of ferkeapet gjin produkten.

Handelsmerken
Notysje: Alle ferwiisde merken, produktnammen, tsjinstnammen en hannelsmerken binne it eigendom fan har respektive eigners.

NXP - wurdmerk en logo binne hannelsmerken fan 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 - binne hannelsmerken en/of registrearre hannelsmerken fan Arm Limited (of har dochterûndernimmingen of filialen) yn 'e FS en/of earne oars. De relatearre technology kin wurde beskerme troch ien of alle patinten, auteursrjochten, ûntwerpen en hannelsgeheimen. Alle rjochten foarbehâlden.

  • i.MX — is in hannelsmerk fan NXP BV
  • J-Link - is in hannelsmerk fan SEGGER Microcontroller GmbH.

Microsoft, Azure en ThreadX - binne hannelsmerken fan 'e Microsoft-groep fan bedriuwen.

Wês asjebleaft bewust dat wichtige meidielings oangeande dit dokumint en de hjiryn beskreaune produkt(en) binne opnommen yn seksje 'Juridyske ynformaasje'.

© 2024 NXP BV
Foar mear ynformaasje kinne jo besykje: https://www.nxp.com

  • Datum fan útjefte: 19 april 2024
  • Dokumintidentifikaasje: AN14263

FAQ

F: Wat is it haaddoel fan dit produkt?
A: It haaddoel is om gesichtsherkenningsfunksje yn te skeakeljen mei in AI&ML fyzjealgoritmemodel mei in ienfâldige LVGL GUI example op it SLN-TLHMI-IOT board.

F: Hoe kinne ûntwikkelders profitearje fan dizze applikaasjenotysje?
A: Untwikkelders kinne stap foar stap leare hoe't se gesichtsherkenning kinne ymplementearje op it ramt mei it opjûne eksample en begripe de apparaat managers, HAL apparaten, en evenemint meganismen belutsen.

Dokuminten / Resources

NXP AN14263 Implementearje LVGL GUI Gesichtsherkenning op Framewor [pdf] Brûkersgids
AN14263 Implementearje LVGL GUI Gesichtsherkenning op Framewor, AN14263, Implementearje LVGL GUI Gesichtsherkenning op Framewor, LVGL GUI Face Recognition op Framewor, Gesichtsherkenning op Framewor, Erkenning op Framewor, Framewor

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *