nxp-logo

NXP AN14263 Implementeer LVGL GUI gezichtsherkenning op Framewor

NXP-AN14263-Implement-LVGL-GUI Gezichtsherkenning-op-frame-product

Productinformatie

Specificaties

  • Productnaam: LVGL GUI Gezichtsherkenning op Framework
  • Documentherziening: 1 – 19 april 2024
  • Trefwoorden: Gezichtsherkenning, LVGL GUI, Framework

Instructies voor productgebruik

  1. Overview
    Dit product maakt een AI&ML vision-algoritmemodel voor gezichtsherkenning mogelijk op een raamwerk om de gezichtsherkenningsfunctie te implementeren met een eenvoudige LVGL GUI exampbestand op het SLN-TLHMI-IOT-bord.
  2. Kader voorbijview
    De oplossingssoftware is ontworpen rond de raamwerkarchitectuur die apparaatbeheerders omvat die verantwoordelijk zijn voor het beheer van apparaten, HAL-apparaten om onderliggende details te abstraheren en gebeurtenissen voor communicatie tussen verschillende apparaten.
  3. Functies
    Het product maakt de implementatie van gezichtsherkenningsfunctie via camera pre mogelijkview op het GUI-scherm met knoppen om gezichtsregistratie, herkenning en verwijdering te activeren. Geregistreerde gezichtsgegevens worden op Flash opgeslagen via a file systeem.
  4. Toepassingsnotitie Inhoud
    De toepassingsnotitie presenteert een LVGL GUI-scherm met camera preview en knoppen voor gezichtsgerelateerde acties. Het helpt ontwikkelaars het raamwerk te begrijpen en gezichtsherkenning te implementeren met behulp van de meegeleverde exampik.

Overview

NXP heeft een oplossingsontwikkelingskit gelanceerd met de naam SLN-TLHMI-IOT die zich richt op slimme HMI-toepassingen. Het maakt slimme HMI mogelijk met ML vision-, spraak- en grafische gebruikersinterface geïmplementeerd op één NXP i.MX RT117H MCU. De oplossingssoftware is gebaseerd op de SDK en is gebouwd op een ontwerp dat een raamwerk wordt genoemd en dat flexibele ontwerpen en aanpassing van zicht- en stemfuncties ondersteunt. Om gebruikers te helpen het softwareplatform beter te gebruiken, worden bijvoorbeeld enkele basisdocumenten verstrektample, de gebruikershandleiding voor softwareontwikkeling. De gids introduceert het basissoftwareontwerp en de architectuur van de applicaties en omvat alle componenten van de oplossing, inclusief het raamwerk, om de ontwikkelaars te helpen hun applicaties eenvoudiger en efficiënter te implementeren met behulp van de SLN-TLHMI-IOT.
Ga voor meer informatie over de oplossing en relevante documenten naar de web pagina van de NXP EdgeReady Smart HMI-oplossing gebaseerd op i.MX RT117H met ML Vision, Voice en Grafische UI. Het is echter nog steeds niet zo eenvoudig voor de ontwikkelaars om hun slimme HMI-applicaties te implementeren met behulp van deze basishandleidingen. Er zijn een reeks toepassingsnotities gepland om de ontwikkeling van het raamwerk stap voor stap te helpen bestuderen. Deze toepassingsnotitie is gebaseerd op Implement LVGL GUI Camera Preview over raamwerk (document AN14147). Deze toepassingsnotitie beschrijft hoe u het AI&ML vision-algoritmemodel voor gezichtsherkenning op het raamwerk kunt inschakelen om de gezichtsherkenningsfunctie via cameravoorbewerking te implementerenview op het GUI-scherm met een eenvoudige LVGL GUI exampbestand op het SLN-TLHMI-IOT-bord. In de aanvraagnota wordt example presenteert een LVGL GUI-scherm met een camera preview en enkele knoppen om gezichtsregistratie, herkenning en verwijdering te activeren. De geregistreerde gezichtsgegevens worden via een beetje op Flash opgeslagen file systeem.

Op een hoog niveau bevat de toepassingsnota de onderstaande inhoud:

  • Schakel de gezichtsherkenningsfunctie op het raamwerk in.
  • Voeg ondersteuning voor gezichtsdatabases toe aan het raamwerk via file systeem op Flash.
  • Implementeer de LVGL GUI-app. Via de bovenstaande inleidingen helpt dit document de ontwikkelaars om:
  • Begrijp het raamwerk en de slimme HMI-oplossingssoftware dieper.
  • Ontwikkel hun AI&ML-gezichtsherkenning op een raamwerk met de LVGL GUI-app.

Kader voorbijview
De oplossingssoftware is voornamelijk ontworpen rond het gebruik van de raamwerkarchitectuur die uit verschillende delen bestaat:

  • Apparaatbeheerders – het kernonderdeel
  • Hardware Abstraction Layer (HAL)-apparaten
  • Berichten/evenementen

Zoals weergegeven in figuur 1, de overview van het mechanisme van het raamwerk is:

Apparaatbeheerders zijn verantwoordelijk voor het beheer van de apparaten die door het systeem worden gebruikt. Elk apparaattype (invoer, uitvoer, enzovoort) heeft zijn eigen typespecifieke apparaatbeheer. Wanneer een apparaatbeheerder start nadat de apparaten zijn geregistreerd, wacht en controleert deze een bericht om gegevens over te dragen naar de apparaten en andere beheerders na het initialiseren en starten van de geregistreerde apparaten. De HAL-apparaten zijn bovenop de drivercode op een lager niveau geschreven, waardoor de begrijpelijkheid van de code wordt vergroot door veel van de onderliggende details te abstraheren.

Gebeurtenissen zijn een manier waarop informatie via hun managers tussen verschillende apparaten wordt gecommuniceerd. Wanneer een gebeurtenis wordt geactiveerd, communiceert het apparaat dat de gebeurtenis als eerste heeft ontvangen, die gebeurtenis naar zijn manager en stelt het vervolgens andere managers op de hoogte die zijn aangewezen om de gebeurtenis te ontvangen.

NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (1)

Het architecturale ontwerp van het raamwerk was gericht op drie hoofddoelen:

  1. Gebruiksgemak
  2. Flexibiliteit/draagbaarheid
  3. Prestatie

Het raamwerk is ontworpen met als doel de time-to-market voor vision- en andere machine-learning-toepassingen te versnellen. Om een ​​snelle time-to-market te garanderen, is het van cruciaal belang dat de software zelf gemakkelijk te begrijpen en aan te passen is. Met dit doel voor ogen is de architectuur van het raamwerk eenvoudig aan te passen zonder beperkend te zijn en zonder dat dit ten koste gaat van de prestaties.
Voor meer details over het raamwerk, zie Smart HMI Software Development User Guide (document MCU-SMHMI-SDUG).

Lichte en veelzijdige grafische bibliotheek (LVGL)
LVGL (Light and Versatile Graphics Library) is een gratis en open-source grafische bibliotheek die alles biedt wat u nodig hebt om een ​​ingebouwde GUI te creëren met gebruiksvriendelijke grafische elementen, prachtige visuele effecten en een lage geheugenbelasting.

GUI-gids
GUI Guider is een gebruiksvriendelijke ontwikkelingstool voor grafische gebruikersinterfaces van NXP die een snelle ontwikkeling van hoogwaardige beeldschermen mogelijk maakt met de open-source LVGL grafische bibliotheek. De drag-and-drop-editor van GUI Guider maakt het gemakkelijk om veel functies van LVGL, zoals widgets, animaties en stijlen, te gebruiken om een ​​GUI te creëren met minimale of helemaal geen codering.

Met één klik op de knop kunt u uw applicatie in een gesimuleerde omgeving uitvoeren of naar een doelproject exporteren. De door GUI Guider gegenereerde code kan eenvoudig aan uw project worden toegevoegd, waardoor het ontwikkelingsproces wordt versneld en u naadloos een ingebedde gebruikersinterface aan uw applicatie kunt toevoegen. GUI Guider is gratis te gebruiken met de algemene en crossover-MCU's van NXP en bevat ingebouwde projectsjablonen voor verschillende ondersteunde platforms. Voor meer informatie over LVGL- en GUI-ontwikkeling op GUI Guider, raadpleegt u Light and Versatile Graphics Library en GUI Guider.

Ontwikkelomgeving

Bereid eerst de hardware- en softwareomgeving voor en stel deze in voor de implementatie van het example op het raamwerk.

Hardware-omgeving
De hardwareomgeving is ingericht voor het verifiëren van de exampon:

  • De slimme HMI-ontwikkelkit gebaseerd op NXP i.MX RT117H (de SLN_TLHMI_IOT-kit)
  • SEGGER J-Link met een 9-pins Cortex-M-adapter en V7.84a of een nieuwere versie van de driver

software-omgeving
De softwareomgeving is ingericht voor het ontwikkelen van de exampon:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – bijvamplecode van de tweede applicatienota als de basissoftware van de ontwikkeling. Voor details, zie https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – als codebron voor de ontwikkeling.
  • SLN-TLHMI-IOT-software V1.1.2 – slimme HMI-broncode vrijgegeven op de NXP GitHub-repository als codebron voor de ontwikkeling. Zie voor details: GitHub – NXP/mcu-smhmi op v1.1.2

Voor details over de aanschaf en inrichting van de softwareomgeving, zie: Aan de slag met de SLN-TLHMI-IOT.

Visie architectuur op raamwerk

De visiearchitectuur op het raamwerk wordt weergegeven in Figuur 2. De visie algo HAL (OASIS_HAL) kent de onderstaande processen:

  • Voer gezichtsregistratie en herkenning uit via het AI&ML vision-algoritmemodel na ontvangst van de gerelateerde gebeurtenissen van de output UI HAL. Meld de gevolgtrekkingsresultaten van het algoritmemodel aan de uitvoer-UI HAL.
  • Krijgt toegang (toevoegen, verwijderen...) van de database met gezichtskenmerken op basis van het kleine file systeem door de API's van FaceDB HAL aan te roepen na ontvangst van de gerelateerde gebeurtenissen van de uitvoer-UI HAL.
  • Vraag het cameravideoframe op bij de camera HAL wanneer u gezichtsregistratie en -herkenning uitvoert.

NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (3)

Implementeer gezichtsherkenning op het raamwerk

De LVGL GUI gezichtsherkenning example (de example wordt later verstrekt) op het raamwerk wordt geïmplementeerd op basis van de exampbestandscodes van Implement LVGL GUI Camera Preview over raamwerk (document AN14147).

Voor het demonstreren van de gezichtsherkenning in de example is de basisfunctie van de GUI-app (zie het hoofdscherm in Figuur 3) ontworpen zoals hieronder beschreven:

  • De GUI-app activeert de gezichtsregistratie- of herkenningsgebeurtenis naar de uitvoer-UI HAL wanneer u op de knop Registratie of Herkenning klikt. En de uitvoer-UI HAL meldt de gebeurtenis van het toevoegen van een gebruiker aan de vision-algo HAL nadat de gezichtsregistratie succesvol is geweest.
  • De GUI-app activeert de gebeurtenis waarbij een gebruiker wordt verwijderd uit de uitvoer-UI HAL wanneer op de knop Gebruiker verwijderen wordt geklikt nadat het gezicht van de gebruiker is herkend.
  • De GUI-app activeert de gebeurtenis waarbij de oase wordt gestopt en naar de uitvoer-UI HAL wordt uitgevoerd wanneer op het scherm buiten de knoppen en afbeeldingen wordt geklikt.

NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (10)

Bereid het softwarepakket voor op de implementatie van de exampik.

  • Kloon de basissoftware lvgl_gui_camera_preview_cm7. Wijzig de projectnaam en het hoofdbestand filenaam naar lvgl_gui_face_rec_cm7.
  • Het raamwerk moet in de software worden bijgewerkt, aangezien de broncodes voor de raamwerkkern vanaf versie 1.1.2 openbaar zijn geworden op GitHub.
  • Vervang de framework-map door de kopie van V1.1.2 van GitHub, behalve de files fwk_log.h en fwk_common.h onder inc\ zoals ze zijn aangepast voor de reeks toepassingsnotities. De bewerkingen worden weergegeven in Figuur 4:NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (11)
  • Verwijder de map framework_cm7 onder de libs-groep en verwijder de bibliotheek framework_cm7 en het zoekpad dat is geconfigureerd in Project > Eigenschappen > C/C++ Build > instellingen > Tool-instellingen > MCU C++ Linker > Bibliotheken, aangezien de broncode van de core is opgegeven.

Schakel de gezichtsherkenningsfunctie in op het framework
De gezichtsherkenningsfunctie is gebouwd op het ML vision-algoritmemodel dat wordt aangeboden als een statische bibliotheek – een oasis lite runtime-bibliotheek van NXP. De bibliotheek is een kleine, zeer efficiënte, op maat gemaakte en geoptimaliseerde AI-bibliotheek. Het model omvat gezichtsdetectie, gezichtsherkenning, glasdetectie en liveness-detectie. Het biedt voornamelijk de API OASISLT_run_extended() om de gezichtsherkenningspijplijn uit te voeren terwijl de resultaten naar de aanroeper worden bijgewerkt via gebeurtenis-callbacks, en gezichten in de database toe te voegen/bij te werken/verwijderen via de face-database-callbacks na het specificeren van de bronframe-informatie, callbacks en geheugen pool gebruikt door de bibliotheek door bij initialisatie een andere API OASISLT_init() aan te roepen. Het aanroepen van de API's en de callback-functies zijn geïmplementeerd in de visie algo HAL van het raamwerk.

Voeg een vision algo-modelbibliotheek toe

  1. Kopieer mapoase met daarin de bibliotheek en de bijbehorende header file van smart HMI\coffee_machine\cm7\libs\ naar de map libs van de example ZW.
  2. Voeg het zoekpad van de koptekst toe file in Project > Eigenschappen > C/C++ Build > instellingen > Tool-instellingen > MCU C-compiler > Inclusief en MCU C++-compiler > Inclusief: “${workspace_loc:/${ProjName}/libs/oasis/include}”
  3. Voeg de lib en het bijbehorende zoekpad toe aan Project > Eigenschappen > C/C++ Build > instellingen > MCU C+ + Linker > Bibliotheken: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” en de macrodefinitie naar schakel de functie in via Project > Eigenschappen > C/C++ Build > instellingen > Tool-instellingen > MCU C-compiler > Preprocessor en MCU C++-compiler > Preprocessor: SMART_TLHMI_2D

Schakel vision algo HAL in
De vision-algo HAL zorgt ervoor dat het vision-algo-model werkt en reageert op de resultaten op de UI-uitvoer HAL nadat de gebeurtenissen ervan zijn ontvangen.

Om dit in te schakelen, kloont u het bestaande vergelijkbare HAL-stuurprogramma file waar de onderstaande functies zijn geïmplementeerd:

  • Implementeer de callbacks van gezichtsdatabasebewerkingen en gebeurtenisafhandeling.
  • Laat de visie-algo werken door de API's van de oasebibliotheek aan te roepen.
  • Toegang tot de database met gebruikersgezichten en de app-database (dit is niet nodig in de example).
  • Ontvang gebeurtenissen van en stuur resultaten naar de uitvoerUI HAL.

De grote werkzaamheden ter implementatie van de HAL voor de exampzij zijn:

  • Kloon de bestaande vergelijkbare HAL-driver file en wijzig de gerelateerde namen.
  • Verwijder de codes die verband houden met de app-gegevensbewerkingen.
  • Werk de definities en functies bij voor het afhandelen van de gebeurtenissen van de uitvoer-UI HAL volgens de exampontwerp.
  • Voeg de configuraties toe die vereist zijn voor de initialisatie van de oase.

De gedetailleerde stappen zijn als volgt:

  1. Kloon hal_vision_algo_oasis_coffeemachine.c. Verander de filenaam naar hal_vision_algo_oasis_guifacerec.c. En vervang alle snaren CoffeeMachine door GUIfaceRec in de file.
  2. Verwijder bijvoorbeeld de codes die de string coffeedb bevatten (niet hoofdlettergevoelig) gerelateerd aan de app-databaseample, #include hal_sln_coffeedb.h.
  3. Wijzig de functie HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() voor het afhandelen van de gebeurtenissen van de uitvoer-UI HAL.
    • Wijzig de gebeurtenisdefinitie kEventFaceRecId_RegisterCoffeeSelection in kEventFaceRecId_RegisterUserFace en de structuurreeks regCoffeeSelection in regGUIFaceRec voor de gebeurtenisafhandeling om nieuwe gezichtskenmerkgegevens aan de database toe te voegen.
    • Om het standaardproces van de gezichtsherkenningsacties in de example, wijzig de afhandeling in het geval van kEventFaceRecID_OasisSetState met de definities van de staten:
      • kOASISLiteState
      • Registratie kOASISLiteState
      • Erkenning kOASISLiteState
      • Gestopt
  4. Voeg de definities van de in de bovenstaande stap genoemde gebeurtenissen toe en wijzig deze.
    • Kopieer de koptekst file smart_tlhmi_event_descriptor.h van smart HMI\coffee_machine \cm7\source\event_handlers\ naar de mapbron van de example ZW. Update de file zoals hieronder:
    • Wijzig de gebeurtenisdefinitie kEventFaceRecId_RegisterCoffeeSelection in kEventFaceRecId_RegisterUserFace in het enumtype _event_smart_tlhmi_id en de structuurreeks regCoffeeSelection in regGUIFaceRec in de struct _event_smart_tlhmi. Wijzig dus de structuur register_coffee_selection_event_t voor regCoffeeSelection in register_gui_facerec_event_t.
    • Verwijder bijvoorbeeld de overige inhoud die voor de koffiemachine-app wordt gebruiktample, de coderegel over stem: #include “hal_event_descriptor_voice.h”.
    • Voeg de typen kOASISLiteState_Stopped en kOASISLiteState_Running toe aan het enumtype oasis_lite_state_t in hal_vision_algo.h onder framework>hal>vision in het project, zoals hieronder:
      typedef opsomming _oasis_lite_state {
      • kOASISLiteState
      • Actief, kOASISLiteState
      • Gestopt, kOASISLiteState
      • Herkenning,
      • kOASISLiteState
      • Registratie, kOASISLiteState
      • Deregistratie, kOASISLiteState
      • Registratie op afstand, kOASISLiteState
      • Graaf
    • Gebruik de hierboven bijgewerkte struct oasis_lite_state_t om de struct oasis_state_event_t in hal_event_descriptor_face_rec.h onder framework>hal>vision in het project te verfijnen, zoals hieronder: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oase_state_event_t;
  5. Wijzig alle kEventInfo_Remote in kEventInfo_Local voor het verzenden van gebeurtenissen van de vision algo HAL naar andere HAL's die op dezelfde kern draaien, omdat single core in plaats van dual-core wordt gebruikt in de exampik.
  6. Voeg de onderstaande configuraties voor oase-initialisatie toe en wijzig deze in OASISLT_init():
    • Voeg de macrodefinities en geheugensecties voor het videoframe toe in 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
      • __kenmerk__((uitgelijnd(uitgelijndbytes)))
    • Configureer de geheugentoewijzing aan de bovenstaande geheugensectie fb_sh_mem in Project > Eigenschappen > C/C++ Build > MCU-instellingen, weergegeven in Figuur 5:NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (12)
    • Declareer de globale variabele g_DTCOPBuf in lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Ga door met het toevoegen van de definities die in de bovenstaande variabele worden gebruikt:
    • Definieer de bovenstaande sectie in board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • attribuut__((sectie(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • attribuut__((uitgelijnd(uitgelijndbytes)))
    • Voeg de kop toe file hal_vision_algo.h met de macrodefinitie DTC_OPTIMIZE_BUFFER_SIZE in app_config.h opgenomen in lvgl_gui_face_rec_cm7.cpp.
  7. Stel de variabele s_debugOption in op true om de voortgangsstatus van gezichtsherkenning weer te geven.
  8. Voeg het zoekpad van de koptekst toe files van de visie HAL op Project > Eigenschappen >C/C++ Build > instellingen > Tool-instellingen > MCU C-compiler > Inclusief en MCU C++-compiler > Inclusief: “${workspace_loc:/${ProjName}/framework/hal/vision}”
  9. Voeg de onderstaande definitie toe om vision algo HAL in board_define.h in te schakelen: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Schakel uitvoer-UI HAL in
De uitvoer-UI HAL meldt de gebeurtenissen aan de visie-algo HAL en reageert op de gevolgtrekkingsresultaten van de visie-algo HAL. Bij de GUI-app worden de gebeurtenissen doorgaans door de app geactiveerd en worden de resultaten op de app weergegeven.

Om dit in te schakelen, kloont u het bestaande vergelijkbare HAL-stuurprogramma file waar over het algemeen de onderstaande functies worden geïmplementeerd:

  • Breng de gebeurtenissen op de hoogte voor gezichtsherkenning en databasetoegang.
  • Implementeer de callbacks voor de GUI-app om de gebeurtenissen te activeren.
  • Behandel de gevolgtrekkingsresultaten van de vision algo-module.
  • Toon het proces en de resultaten van de afhandeling van gebeurtenissen op de gebruikersinterface via de voortgangsbalk die wordt bestuurd met de timers en de gezichtsgidsrechthoek.

De grote werkzaamheden ter implementatie van de HAL voor de exampbestanden die in dit document worden gebruikt zijn:

  • Kloon de bestaande vergelijkbare HAL-driver file en wijzig de gerelateerde namen.
  • Verwijder de codes gerelateerd aan de app.
  • Update de functies voor de gebeurtenismelding en de resultatenreactie per exampontwerp.
  • Voeg de callbacks voor de GUI-app toe om de gebeurtenissen te activeren.

De gedetailleerde stappen zijn als volgt:

  1. Kloon hal_output_ui_coffee_machine.c. Verander de filenaam naar hal_output_ui_guifacerec.c.
  2. Vervang alle strings CoffeeMachine met GUIfaceRec in het file.
  3. Verwijder de codes gerelateerd aan de app – koffiezetapparaat.
    • Verwijder de functies WakeUp() en _StandBy() en de bijbehorende codes (kan hiervoor zoeken in de string wake_up en standby).
    • Verwijder voorafview mode-gebeurtenissen die gerelateerde codes verwerken in HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Verwijder de functies UI_xxx_Callback() en de codes die de string gui_ en scherm bevatten die verband houden met de GUI van de koffiemachine, behalve gui_set_virtual_face() voor de preview modusfunctie.
    • Verwijder alle codes die betrokken zijn bij de variabelen s_IsWaitingAnotherSelection en s_IsWaitingRegisterSelection gerelateerd aan de koffiemachine-app.
    • Verwijder de codes met betrekking tot stem, audio en taal. Bijvoorbeeldampon:
      • #include “hal_voice_algo_asr_local.h”,
      • #include “hal_event_descriptor_voice.h”
  4. Voor de melding van verschillende gebeurtenissen implementeert u de nieuwe functies _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() en DeregisterGUIFaceRec() die verwijzen naar de functies _StopFaceRec(), _RegisterCoffeeSelection() en DeregisterCoffeeSelection() voordat u deze verwijdert.
    • De _OutputManagerNotify() implementeert de basisfunctie voor gebeurtenisuitvoer om een ​​gebeurtenis naar de vision-algo HAL te sturen. De onderstaande functies noemen het het verzenden van hun eigen gebeurtenissen.
    • De _SetFaceRec() verzendt de gebeurtenis kEventFaceRecID_OasisSetState om de vision-algo te activeren voor gezichtsregistratie, herkenning en het stoppen van de algo.
    • De _RegisterGUIFaceRec() verzendt de gebeurtenis kEventFaceRecId_RegisterGUIFaceRec die is gedefinieerd in smart_tlhmi_event_descriptor.h om gezichtskenmerkgegevens aan de database toe te voegen wanneer de registratie OK is.
    • De DeregisterGUIFaceRec() verzendt de gebeurtenis kEventFaceRecID_DelUser om de gezichtskenmerkgegevens uit de database te verwijderen bij het passeren van de gezichtsherkenning.
  5. Werk de codes bij om de bijbehorende acties uit te voeren, waaronder het vernieuwen van de GUI door de API's aan te roepen vanuit de LVGL GUI-app voor de gevolgtrekkingsresultaten van gezichtsregistratie en herkenning in de functie _InferComplete_Vision() volgens de example's ontwerp. Bijvoorbeeldample, wanneer de gezichtsregistratie succesvol is,
    • Stop met het tonen van de voortgang door _FaceRecProcess_Stop() aan te roepen;
    • Stop de gezichtsregistratie door _SetFaceRec(kOASISLiteState_Stopped) aan te roepen;
    • Toon het succesvolle resultaat op de GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Registreer de gezichtsgegevens in de database: _RegisterUserFace(s_UserId);
  6. Voeg UI-callback-functies toe om de gebeurtenissen af ​​te handelen: preview, gezichtsregistratie, herkenning en verwijdering van gebruikers geactiveerd vanuit de GUI. Bijvoorbeeldample, de callback voor gezichtsregistratie: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • En voeg de functies _FaceRecProcess_Start() en _FaceRecProcess_Stop() toe om de voortgang en status van de verschillende gebeurtenissen en resultaten weer te geven.
    • Werk de timer ISR callback-functie _SessionTimer_Callback() bij om het geval van een time-out af te handelen door het aanroepen van: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Voeg de onderstaande definities toe om UI-uitvoer HAL in board_define.h in te schakelen: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Kennisgeving:
Om de gezichtsherkenningsfunctie beter te presenteren, behoudt u de functie om het proces en de resultaten van gezichtsherkenning in de uitvoerUI HAL weer te geven. De functie wordt hieronder beschreven

  • De rechthoek van de gezichtsgeleiding is blauw en de voortgangsbalk toont de voortgang bij het starten van de gezichtsregistratie of -herkenning.
  • De rechthoek van de gezichtsgeleider wordt rood wanneer de gezichtsregistratie succesvol is.
  • De rechthoek voor de gezichtsgeleiding wordt groen wanneer de gezichtsherkenning succesvol is.
  • De rechthoek van de gezichtsgeleider blijft blauw en de voortgangsbalk toont de volledige voortgang wanneer de actie niet succesvol is nadat de timer is verstreken. Stop op dat moment de gezichtsregistratie of -herkenning.

De voortgangsbalk en de rechthoek van de gezichtsgeleider worden weergegeven als de pictogrammen die in het binaire bronbestand zijn ingebouwd file in Flash te programmeren. De verwijzingen naar de pictogramgegevens op SDRAM worden ingesteld in de functie LoadIcons (APP_ICONS_BASE) die wordt aangeroepen bij de initialisatie van het uitvoer-UI HAL-apparaat in de uitvoer-UI HAL. Het moet de pictogrammenondersteuning voor de functie implementeren.

Implementeer de pictogrammenondersteuning

  1. Bouw de bron door de pictogrammen te combineren met de afbeeldingen die worden gebruikt in de LVGL GUI-app:
    • Kloon de koptekst met vier pictogrammen files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h en virtual_face_red_420x426.h van slimme HMI
      \coffee machine\resource\icons\ naar de nieuwe mappictogrammen onder de bronmap van het example ZW.
    • Voeg het zoekpad voor het vier pictogram toe files in de camera_preview_resource.txt file in de bronnenmap, bijvoorbeeldampbestand: icon ../resource/icons/process_bar_240x14.h
    • Voer camera_pre uitview_resource_build.bat om de bronnen voor afbeeldingen en pictogrammen te bouwen om de prullenbak te genereren file camera_preview_resource.bin en de info file resource_information_table.txt (zie figuur 6).NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (13)
  2. Definieer het startadres op SDRAM en de grootte van de pictogrammen in app_config.h. Het adres begint naast de afbeeldingen van de GUI-app. De grootte wordt gegenereerd in de info file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Werk de toegewezen grootte van de geheugensectie met de naam res_sh_mem bij naar 0x200000 door deze opnieuw te definiëren in app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 en de overeenkomstige instelling in Project > Eigenschappen > C/C++ Build > MCU-instellingen.
  4. Voeg de pictogramgrootte toe aan de totale grootte van de bron die van Flash naar SDRAM is geladen in de functie APP_LoadResource() in het hoofdvenster. file lvgl_gui_face_rec_cm7.cpp: memcpy((ongeldig *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Kennisgeving: Om de gezichtsherkenningsfunctie te voltooien, is ondersteuning van de LVGL GUI-app nodig. De UI-callback-functies in de uitvoer-UI HAL worden aangeroepen door de LVGL GUI-app voor het afhandelen van de gebeurtenissen vanaf het UI-scherm. Aan de andere kant roept de uitvoer-UI HAL de API's van de LVGL GUI-app aan om de gebruikersinterface bij te werken om het resultaat en de status weer te geven. De ontwikkeling van de LVGL GUI-app is relatief onafhankelijk en wordt geïntroduceerd in paragraaf 4.3.

4.1.5 Start HAL-apparaten en managers voor gezichtsherkenning
De ingeschakelde visie algo HAL en UI-uitvoer HAL en hun managers zijn in hoofdzaak gestart file
lvgl_gui_face_rec_cm7.cpp na de conversies van de ontwikkeling op het raamwerk, zoals hieronder:

  1. Voeg de kop toe file gerelateerd aan de twee HAL-managers door de coderegel toe te voegen:
    • #include "fwk_output_manager.h"
    • #include “fwk_vision_algo_manager.h”
  2. Declareer de HAL-apparaten:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Registreer de HAL-apparaten:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Initialiseer de managers:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(UitvoerManager, ret);
  5. Begin met de managers:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(UitvoerManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Definieer de prioriteit van de managertaken:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Voeg ondersteuning voor gezichtsdatabases toe aan het framework
De geregistreerde gezichtskenmerkgegevens zijn via een beetje toegankelijk in de gezichtsdatabase die in Flash is opgeslagen file systeem. De stappen voor het toevoegen van ondersteuning voor de gezichtsdatabase worden hieronder beschreven.

Voeg stuurprogramma's toe voor Flash-opslag
Kopieer het FlexSPI-stuurprogramma van de Flash-interface files fsl_flexspi.c en fsl_flexspi.h, en het stuurprogramma voor gegevenscodering files fsl_caam.c en fsl_caam.h van het pad SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ naar de map drivers van de example ZW.

Ondersteuning op bestuursniveau toevoegen

  1. Voeg de definities toe van FlexSPI die wordt gebruikt voor het Flash-apparaat aan boord in board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopieer de operators en configuraties files van het Flash-apparaat flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, andsln_flash_ops.h onder het pad smart HMI\coffee_machine\cm7\source\flash_config\ naar het mappenbord van de example ZW.
    • Verwijder het vinkje bij “Resource uitsluiten van build” in C/C++ Build > Instellingen nadat u met de rechtermuisknop op het files' naam en het openen van de Eigenschappen zodat ze in het project kunnen worden ingebouwd.
  3. Wijzig de opgenomen header filenaam sln_flash_config.h naar sln_flash_config_w25q256jvs.h in sln_flash_config.c en flexspi_nor_flash_ops.h.
  4. Stel de FlexSPI1-klokbron in in het file clock_config.c verwijzend naar de koffiemachine-app.

Voeg adapter- en middenniveau-ondersteuning toe

  1. Kopieer de files sln_flash.c, sln_flash.h, sln_encrypt.c en sln_encrypt.h als adapterstuurprogramma's voor de file systeem en app van het pad van smart HMI\coffee_machine\cm7\source\ naar de mapbron van de example. Update het nieuwe files:
    • Haal het vinkje weg bij 'Bron uitsluiten van build' om te bouwen.
    • Wijzig alle opgenomen headers file naam sln_flash_config.h naar sln_flash_config_w25q256jvs.h.
  2. Kopieer de map filesysteem met de API's voor de kleine filesysteem en HAL-driver van slimme HMI \coffee_machine\cm7\source\ naar de example ZW. En update voor de nieuwe map:
    • Haal het vinkje weg bij “Resource uitsluiten van build” om te bouwen.
    • Voeg het include-pad ervoor toe in de projectinstellingen: “${workspace_loc:/${ProjName}/filesysteem}"
    • Wijzig de opgenomen header file naam sln_flash_config.h naar sln_flash_config_w25q256jvs.h en fica_definition.h naar app_config.h in de file sln_flash_littlefs.h.
  3. Kopieer de map littlefs met daarin de middle ware – little filesysteem van het pad SDK_2_13_0_MIMXRT1170-EVK\middleware\ naar de example ZW. En update de nieuwe map:
    • Haal het vinkje weg bij “Resource uitsluiten van build” om te bouwen.
    • Voeg het include-pad ervoor toe in de projectinstellingen: “${workspace_loc:/${ProjName}/littlefs}”

Voeg HAL-stuurprogramma's toe 

  • Er zijn twee HAL-apparaten – file systeem- en gezichtsdatabase HAL ondersteund voor de databasetoegangsfunctie en ze zijn al zonder enige verandering in het raamwerk geïmplementeerd. Schakel ze in door de onderstaande definities toe te voegen in board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

En verander de naam van de gezichtsdatabase voor de exampbestand: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”

Ondersteuning op app-niveau toevoegen

  1. Werk de belangrijkste bij file lvgl_gui_face_rec_cm7.cpp:
    • Voeg de kop toe file gerelateerd aan de flits file systeem HAL-manager door de coderegel toe te voegen: #include “fwk_flash.h”
    • Aangeven en registreren file systeem HAL-apparaat:
      • HAL_FLASH_DEV_DECLARE(Kleinefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Opmerking: De file systeem-HAL-apparaat moet worden geregistreerd voordat alle apparaatbeheerders worden geïnitialiseerd in de functie APP_InitFramework().
    • Roep de functie BOARD_ConfigMPU() aan in APP_BoardInit() om MPU te configureren.
  2. Stel de file systeemtoewijzing op Flash in de file app_config.h door de macrodefinities te definiëren die worden gebruikt in de file sln_flash_littlefs.h:
    • #define VAIS_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define VAIS_FILE_SYS_SIZE (0x280000)

Configuraties
Sommige Flash-gerelateerde codes worden uitgevoerd in het SRAM ITC-gebied voor voldoende prestaties. Kopieer de map linkscripts met de linkerconfiguraties van het pad smart HMI\coffee_machine\cm7\ naar de example ZW.

Implementeer een LVGL GUI-app
De ontwikkeling van een LVGL GUI-app op basis van een raamwerk roept de API's aan van output UI HAL en levert de API's voor output UI HAL (zie paragraaf 4.1.3 voor de implementatie van output UI HAL).

De gedetailleerde implementatie van een LVGL GUI-app is echter afhankelijk van de vereisten en het ontwerp van de applicatie. De GUI-app in deze exampbestand is ontworpen zoals beschreven aan het begin van paragraaf 4.

Hieronder vindt u de implementatie-introducties:

  1. De aangepaste codes worden geïmplementeerd in de custom.c en custom.h die door GUI Guider worden gegeven als de interface tussen het GUI Guider-project en het embedded systeemproject.
    •  Voeg de nieuwe functies met de naam gui_xxx() toe in custom.c om de onderstaande functies te bereiken:
      • Voor uitvoer-UI HAL en GUI-app om de gebruikersinterface bij te werken.
      • Voor de GUI-app om gebeurtenissen te activeren door UI-callback-functies aan te roepen vanuit de uitvoer-UI HAL.
        Bijvoorbeeldample roept de nieuwe functie gui_event_face_rec_action() UI-callback-functies op om een ​​van de gebeurtenissen van gezichtsregistratie, gezichtsherkenning en het verwijderen van een gebruiker af te handelen die vanuit de GUI-app wordt geactiveerd wanneer op de gerelateerde knop wordt geklikt.
        Opmerking: De functie gui_set_virtual_face() riep uitvoer-UI HAL op voor preview modus moet worden geïmplementeerd in custom.c:
    •  Kloon functie gui_set_virtual_face() van slimme HMI\coffee_machine\cm4\custom \custom.c.
    •  Wijzig de naam van de widget home_img_cameraPreview naar screen_img_camera_preview in de functie.
    •  Implementeer de UI callback-functies met hetzelfde prototype voor alle functies in uitvoer UI HAL onder controle van de macrodefinitie #ifndef RT_PLATFORM in custom.c om compatibel te zijn met het GUI Guider-project, omdat deze functies in uitvoer UI HAL afhankelijk zijn van de ingebed platform. In custom.c zijn ze afhankelijk van de simulator op de GUI-guider en zijn ze onafhankelijk van het ingebedde platform. Bijvoorbeeldample, de callback voor gezichtsregistratie wordt geïmplementeerd zoals hieronder voor de actieve GUI Guider-simulator: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = onwaar; opbrengst; }
      Opmerking: Verwijs naar hetzelfde prototype van de functie geïntroduceerd in stap 6 van Paragraaf 4.1.3
      De macrodefinitie RT_PLATFORM wordt ingesteld in de projectinstellingen van MCUXpresso, zoals weergegeven in Figuur 7:NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (14)
    • Declareer alle functies genaamd UI_xxx_Callback() en gui_xxx() in custom.h en voeg custom.h toe die is opgenomen in smart_tlhmi_event_descriptor.h om de GUI-API's te delen met de UI-uitvoer HAL.
  2. Ontwikkel de GUI op GUI Guider:
    • Kloon de map camera preview met de GUI Guider-projectsoftware in de map gui_guider in het basissoftwarepakket lvgl_gui_camera_preview_cm7. Wijzig de gerelateerde naam camera_preview naar face_rec voor de nieuwe exampik.
    • Kopieer de bovenstaande bijgewerkte custom.c en custom. h naar de nieuwe GUI Guider-projectsoftware.
    •  Open het nieuwe face_rec-project op GUI Guider. Update zoals hieronder:
      • Voeg de nieuwe knop met het label Gebruiker verwijderen toe. Voeg er de vlag Verborgen aan toe, zodat de knop verborgen is wanneer de GUI-app opstart.
      • Voeg de coderegel toe voor het aanroepen van de API gui_event_face_rec_action() met verschillende gebeurtenis-ID-parameters op de trigger "Vrijgegeven" in de gebeurtenisinstelling van alle knoppen Registratie, Herkenning en Gebruiker verwijderen voor het activeren van de gebeurtenissen van gezichtsregistratie, gezichtsherkenning en het verwijderen van de gebruiker. Figuur 8 toont de code voor de gebeurtenis van de knop Registratie:NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (15)
  3. Update de gegenereerde code van GUI Guider naar het MCUXpresso-project.
    • Vervang de inhoud, behalve de mapafbeeldingen in de map die is gegenereerd door de MCUXpresso-project-SW, door de overeenkomstige inhoud in de map die is gegenereerd door het GUI Guider-project-SW.

Opmerking: Voor meer details over de hierboven geïntroduceerde wijzigingen, bekijk de example software op https://mcuxpresso.nxp.com/appcodehub.

Verificaties bij de examphet project

Om de ex te krijgenample-softwarepakket met de bronnen en hulpmiddelen voor deze toepassingsnota, ga naar: https://mcuxpresso.nxp.com/appcodehub. Open de example-project op MCUXpresso IDE. Bouw en programmeer de .axf file naar het adres 0x30000000 en programmeer de resourcebak file camera_preview_resource.bin naar het adres 0x30800000.

De LVGL GUI gezichtsherkenning exampbestand werkt normaal zoals hieronder:

  • Preview: Bij het inschakelen worden de videostreams die door de camera zijn vastgelegd, weergegeven in het specifieke gebied van de cameravoorafview op het GUI-scherm. Op het statuslabel wordt “Preview…”. Zie Figuur 3 voor meer informatie. De knop Gebruiker verwijderen is verborgen. Wanneer u op het gebied buiten de knoppen en afbeeldingen klikt, wordt de pre weergegevenview status als hierboven nadat de gezichtsregistratie of herkenningsactie is beëindigd.
  • Registratie:
    • taartje: Wanneer op de knop Registratie wordt geklikt, start de gezichtsregistratie. Het statuslabel verandert en geeft 'Registratie...' weer, de rechthoek van de gezichtsgids wordt blauw en de voortgangsbalk begint de voortgang weer te geven. Zorg ervoor dat het gezicht van de gebruiker zichtbaar is in de blauwe gezichtsgeleiderrechthoek voor registratie.
    • succes: Het statuslabel toont “Registratie…OK” en het geregistreerde gebruikers-ID-nummer. De rechthoek van de gezichtsgids wordt rood als de gezichtsregistratie succesvol is voordat de voortgang volledig op de balk wordt weergegeven.
    • Mislukt -> Time-out: Het statuslabel toont “Registratie…Time-out” als de gezichtsregistratie nog steeds mislukt is terwijl de voortgang volledig op de balk wordt weergegeven.
    • Mislukt -> Duplicatie: Het statuslabel toont “Registratie…Mislukt”, de rechthoek van de gezichtsgids wordt groen als het geregistreerde gezicht wordt herkend voordat de voortgang volledig op de balk wordt weergegeven.
  • herkenning:
    • Opstarten: Wanneer op de knop Herkenning wordt geklikt, start de gezichtsherkenning. Het statuslabel verandert en geeft 'Herkenning...' weer, de rechthoek van de gezichtsgids wordt blauw en de voortgangsbalk begint de voortgang weer te geven. Zorg ervoor dat het gezicht van de gebruiker ter registratie in de blauwe gezichtsgeleiderrechthoek wordt weergegeven.
    • succes: Het statuslabel toont “Herkenning…OK” en het herkende gebruikers-ID-nummer, de rechthoek van de gezichtsgids wordt groen als de gezichtsherkenning succesvol is voordat de voortgang volledig op de balk wordt weergegeven. Op dat moment verschijnt de knop Gebruiker verwijderen. Dit betekent dat de gebruiker alleen mag worden verwijderd als deze wordt herkend.
    • ziekte: Het statuslabel toont “Herkenning…Time-out” als de gezichtsherkenning nog steeds mislukt terwijl de voortgang volledig op de balk wordt weergegeven.
  • Gebruiker verwijderen: Wanneer op de knop “Gebruiker verwijderen” wordt geklikt, nadat de gezichtsherkenning succesvol is, verandert het statuslabel in de weergave “Gebruiker verwijderen…OK” waarbij de rechthoek van de gezichtsgeleiding blauw wordt en de voortgang volledig op de balk wordt weergegeven. De knop Gebruiker verwijderen is weer verborgen. Het herkende gezicht/de gebruiker wordt uit de database verwijderd. Dit betekent dat dit gezicht/deze gebruiker pas kan worden herkend nadat hij opnieuw is geregistreerd.

Opmerking over de broncode in het document
ExampDe code die in dit document wordt getoond, heeft de volgende copyright- en BSD-3-Clause-licentie:

Copyright 2024 NXP Herdistributie en gebruik in bron- en binaire vorm, met of zonder wijziging, is toegestaan ​​mits aan de volgende voorwaarden wordt voldaan:

  1. Bij herdistributie van de broncode moeten de bovenstaande copyrightvermelding, deze lijst met voorwaarden en de volgende disclaimer behouden blijven.
  2. Bij herdistributies in binaire vorm moeten de bovenstaande copyrightkennisgeving, deze lijst met voorwaarden en de volgende disclaimer in de documentatie en/of andere materialen worden verstrekt bij de distributie.
  3. Noch de naam van de houder van het auteursrecht, noch de namen van zijn bijdragers mogen worden gebruikt om producten die van deze software zijn afgeleid te onderschrijven of te promoten zonder specifieke voorafgaande schriftelijke toestemming

DEZE SOFTWARE WORDT DOOR DE HOUDERS VAN HET AUTEURSRECHT EN MEDEWERKERS GELEVERD “ZOALS HET IS” EN ALLE EXPLICIETE OF IMPLICIETE GARANTIES, INCLUSIEF, MAAR NIET BEPERKT TOT, DE IMPLICIETE GARANTIES VAN VERKOOPBAARHEID EN GESCHIKTHEID VOOR EEN BEPAALD DOEL, WORDEN AFGEWEZEN. IN GEEN GEVAL ZIJN DE HOUDER VAN HET AUTEURSRECHT OF BIJDRAGERS AANSPRAKELIJK VOOR ENIGE DIRECTE, INDIRECTE, INCIDENTELE, SPECIALE, VOORBEELDIGE OF GEVOLGSCHADE (MET INBEGRIP VAN, MAAR NIET BEPERKT TOT, AANSCHAF VAN VERVANGENDE GOEDEREN OF DIENSTEN; VERLIES VAN GEBRUIK, GEGEVENS OF WINST; OF BEDRIJFSONDERBREKING), ONGEACHT DE OORZAAK EN OP BASIS VAN WELKE AANSPRAKELIJKHEIDSTHEORIE DAN OOK, HETZIJ IN CONTRACT, STRIKTE AANSPRAKELIJKHEID OF ONRECHTMATIGE DAAD (MET INBEGRIP VAN NALATIGHEID OF ANDERSZINS), DIE OP ENIGERLEI WIJZE VOORTVLOEIT UIT HET GEBRUIK VAN DEZE SOFTWARE, ZELFS ALS ZE OP DE HOOGTE ZIJN GESTELD VAN DE MOGELIJKHEID VAN DERGELIJKE SCHADE.

Revisiegeschiedenis

NXP-AN14263-Werktuig-LVGL-GUI Gezichtsherkenning-op-frame-fig- (16)

Juridische informatie

Definities
Concept — De conceptstatus van een document geeft aan dat de inhoud nog intern wordt bewerkt.view en onder voorbehoud van formele goedkeuring, wat kan leiden tot wijzigingen of aanvullingen. NXP Semiconductors geeft geen verklaringen of garanties met betrekking tot de nauwkeurigheid of volledigheid van informatie die is opgenomen in een conceptversie van een document en is niet aansprakelijk voor de gevolgen van het gebruik van dergelijke informatie.

Vrijwaring

  • Beperkte garantie en aansprakelijkheid — De informatie in dit document wordt geacht nauwkeurig en betrouwbaar te zijn. NXP Semiconductors geeft echter geen enkele verklaring of garantie, expliciet of impliciet, met betrekking tot de nauwkeurigheid of volledigheid van dergelijke informatie en is niet aansprakelijk voor de gevolgen van het gebruik van dergelijke informatie. NXP Semiconductors aanvaardt geen verantwoordelijkheid voor de inhoud van dit document indien verstrekt door een informatiebron buiten NXP Semiconductors.
    NXP Semiconductors is in geen geval aansprakelijk voor enige indirecte, incidentele, punitieve, speciale of gevolgschade (inclusief – maar niet beperkt tot – gederfde winst, gemiste besparingen, bedrijfsonderbreking, kosten in verband met de verwijdering of vervanging van producten of kosten voor herbewerking), ongeacht of dergelijke schade al dan niet gebaseerd is op onrechtmatige daad (inclusief nalatigheid), garantie, contractbreuk of enige andere juridische theorie.
    Niettegenstaande eventuele schade die de klant om welke reden dan ook zou kunnen oplopen, is de totale en cumulatieve aansprakelijkheid van NXP Semiconductors jegens de klant voor de hierin beschreven producten beperkt in overeenstemming met de algemene voorwaarden voor commerciële verkoop van NXP Semiconductors.
  • Recht om wijzigingen aan te brengen — NXP Semiconductors behoudt zich het recht voor om op elk moment en zonder voorafgaande kennisgeving wijzigingen aan te brengen in de informatie die in dit document is gepubliceerd, inclusief maar niet beperkt tot specificaties en productbeschrijvingen. Dit document vervangt en vervangt alle informatie die is verstrekt voorafgaand aan de publicatie hiervan.
  • Geschiktheid voor gebruik — NXP Semiconductors-producten zijn niet ontworpen, geautoriseerd of gegarandeerd om geschikt te zijn voor gebruik in levensondersteunende, levenskritieke of veiligheidskritieke systemen of apparatuur, noch in toepassingen waar redelijkerwijs kan worden verwacht dat een storing of storing van een NXP Semiconductors-product zal leiden tot persoonlijk letsel, de dood of ernstige materiële of milieuschade. NXP Semiconductors en haar leveranciers aanvaarden geen aansprakelijkheid voor opname en/of gebruik van producten van NXP Semiconductors in dergelijke apparatuur of toepassingen en daarom is dergelijke opname en/of gebruik op eigen risico van de klant.
  • Toepassingen — Toepassingen die hierin voor elk van deze producten worden beschreven, zijn alleen voor illustratieve doeleinden. NXP Semiconductors geeft geen verklaring of garantie dat dergelijke toepassingen zonder verdere tests of aanpassingen geschikt zijn voor het gespecificeerde gebruik.
    Klanten zijn verantwoordelijk voor het ontwerp en de werking van hun applicaties en producten die gebruik maken van NXP Semiconductors-producten, en NXP Semiconductors aanvaardt geen aansprakelijkheid voor enige hulp bij applicaties of klantproductontwerp. Het is uitsluitend de verantwoordelijkheid van de klant om te bepalen of het product van NXP Semiconductors geschikt is voor de toepassingen en geplande producten van de klant, evenals voor de geplande toepassing en het gebruik van de externe klant(en) van de klant. Klanten moeten passende ontwerp- en operationele veiligheidsmaatregelen bieden om de risico's die verband houden met hun toepassingen en producten te minimaliseren. NXP Semiconductors aanvaardt geen enkele aansprakelijkheid met betrekking tot enig verzuim, schade, kosten of probleem dat gebaseerd is op enige zwakte of tekortkoming in de applicaties of producten van de klant, of de toepassing of het gebruik door de derde klant(en) van de klant. De klant is verantwoordelijk voor het uitvoeren van alle noodzakelijke tests voor de applicaties en producten van de klant met behulp van producten van NXP Semiconductors om een ​​defect van de applicaties en de producten of van de applicatie of het gebruik door de externe klant(en) van de klant te voorkomen. NXP aanvaardt ter zake geen enkele aansprakelijkheid.
  • Algemene voorwaarden voor commerciële verkoop — NXP Semiconductors-producten worden verkocht onder de algemene voorwaarden voor commerciële verkoop, zoals gepubliceerd op https://www.nxp.com/profile/voorwaarden, tenzij anders overeengekomen in een geldige schriftelijke individuele overeenkomst. In het geval dat een individuele overeenkomst wordt gesloten, zijn alleen de voorwaarden van de betreffende overeenkomst van toepassing. NXP Semiconductors maakt hierbij uitdrukkelijk bezwaar tegen toepassing van de algemene voorwaarden van de klant met betrekking tot de aankoop van producten van NXP Semiconductors door de klant.
  • Exportcontrole — Dit document en de artikelen die hierin worden beschreven, kunnen onderworpen zijn aan exportcontrolevoorschriften. Voor export is mogelijk een voorafgaande toestemming van de bevoegde autoriteiten vereist.
  • Geschiktheid voor gebruik in niet-automotive gekwalificeerde producten — Tenzij in dit document uitdrukkelijk wordt vermeld dat dit specifieke NXP Semiconductors-product gekwalificeerd is voor de automobielsector, is het product niet geschikt voor gebruik in de automobielsector. Het is niet gekwalificeerd of getest in overeenstemming met autotests of toepassingsvereisten. NXP Semiconductors aanvaardt geen aansprakelijkheid voor opname en/of gebruik van niet-automobielgekwalificeerde producten in auto-uitrusting of -toepassingen.
    In het geval dat de klant het product gebruikt voor design-in en gebruik in automobieltoepassingen volgens automobielspecificaties en -normen, zal de klant (a) het product gebruiken zonder de garantie van NXP Semiconductors op het product voor dergelijke automobieltoepassingen, gebruik en specificaties, en ( b) wanneer de klant het product voor automobieltoepassingen gebruikt buiten de specificaties van NXP Semiconductors, is dit gebruik uitsluitend op eigen risico van de klant, en (c) de klant vrijwaart NXP Semiconductors volledig voor alle aansprakelijkheid, schade of mislukte productclaims die voortvloeien uit het ontwerp en het gebruik van het product voor automobieltoepassingen dat verder gaat dan de standaardgarantie van NXP Semiconductors en de productspecificaties van NXP Semiconductors.
  • Vertalingen — Een niet-Engelse (vertaalde) versie van een document, inclusief de juridische informatie in dat document, is alleen ter referentie. De Engelse versie prevaleert in geval van enige discrepantie tussen de vertaalde en Engelse versie.
  • Beveiliging — De klant begrijpt dat alle NXP-producten onderhevig kunnen zijn aan niet-geïdentificeerde kwetsbaarheden of gevestigde beveiligingsstandaarden of specificaties met bekende beperkingen kunnen ondersteunen. De klant is verantwoordelijk voor het ontwerp en de werking van zijn applicaties en producten gedurende hun levenscyclus, om de gevolgen van deze kwetsbaarheden op de applicaties en producten van de klant te verminderen. De verantwoordelijkheid van de klant strekt zich ook uit tot andere open en/of bedrijfseigen technologieën die door NXP-producten worden ondersteund voor gebruik in de toepassingen van de klant. NXP aanvaardt geen aansprakelijkheid voor eventuele kwetsbaarheden. De Klant dient regelmatig de beveiligingsupdates van NXP te controleren en hier adequaat gevolg aan te geven. De Klant zal producten selecteren met beveiligingskenmerken die het beste voldoen aan de regels, voorschriften en normen van de beoogde toepassing en de uiteindelijke ontwerpbeslissingen nemen met betrekking tot zijn producten, en is als enige verantwoordelijk voor de naleving van alle wettelijke, regelgevende en veiligheidsgerelateerde vereisten met betrekking tot zijn producten, ongeacht van alle informatie of ondersteuning die door NXP kan worden verstrekt.

NXP heeft een Product Security Incident Response Team (PSIRT) (bereikbaar via PSIRT@nxp.com) dat het onderzoek, de rapportage en het vrijgeven van oplossingen voor beveiligingsproblemen van NXP-producten beheert.
NXP BV — NXP BV is geen werkmaatschappij en distribueert of verkoopt geen producten.

Handelsmerken
Kennisgeving: Alle genoemde merken, productnamen, servicenamen en handelsmerken zijn eigendom van hun respectievelijke eigenaren.

NXP — woordmerk en logo zijn handelsmerken van 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 — zijn handelsmerken en/of geregistreerde handelsmerken van Arm Limited (of haar dochterondernemingen of gelieerde ondernemingen) in de VS en/of ergens anders. De gerelateerde technologie kan worden beschermd door een of meer patenten, auteursrechten, ontwerpen en handelsgeheimen. Alle rechten voorbehouden.

  • i.MX — is een handelsmerk van NXP BV
  • J-link — is een handelsmerk van SEGGER Microcontroller GmbH.

Microsoft, Azure en ThreadX zijn handelsmerken van de Microsoft-bedrijvengroep.

Houd er rekening mee dat belangrijke mededelingen over dit document en de hierin beschreven producten zijn opgenomen in de sectie 'Juridische informatie'.

© 2024 NXP BV
Voor meer informatie, bezoek: https://www.nxp.com

  • Datum van uitgave: 19 april 2024
  • Document-ID: AN14263

Veelgestelde vragen

Vraag: Wat is het belangrijkste doel van dit product?
A: Het belangrijkste doel is om de gezichtsherkenningsfunctie mogelijk te maken met behulp van een AI&ML vision-algoritmemodel met een eenvoudige LVGL GUI exampbestand op het SLN-TLHMI-IOT-bord.

Vraag: Hoe kunnen ontwikkelaars profiteren van deze toepassingsnotitie?
A: Ontwikkelaars kunnen stap voor stap leren hoe ze gezichtsherkenning op het raamwerk kunnen implementeren met behulp van de meegeleverde exampleer en begrijp de betrokken apparaatbeheerders, HAL-apparaten en gebeurtenismechanismen.

Documenten / Bronnen

NXP AN14263 Implementeer LVGL GUI gezichtsherkenning op Framewor [pdf] Gebruikershandleiding
AN14263 Implementeer LVGL GUI Gezichtsherkenning op Framewor, AN14263, Implementeer LVGL GUI Gezichtsherkenning op Framewor, LVGL GUI Gezichtsherkenning op Framewor, Gezichtsherkenning op Framewor, Herkenning op Framewor, Framewor

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *