nxp-logotip

NXP AN14263 Implementiraj LVGL GUI Face Recognition na Framewor

NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-product

Informacije o izdelku

Specifikacije

  • Ime izdelka: LVGL GUI Face Recognition on Framework
  • Revizija dokumenta: 1. – 19. april 2024
  • Ključne besede: Prepoznavanje obraza, LVGL GUI, Framework

Navodila za uporabo izdelka

  1. konecview
    Ta izdelek omogoča model algoritma vida AI&ML za prepoznavanje obrazov na ogrodju za implementacijo funkcije prepoznavanja obrazov s preprostim GUI LVGL example na plošči SLN-TLHMI-IOT.
  2. Konec okvirjaview
    Programska oprema rešitve je zasnovana okoli okvirne arhitekture, ki vključuje upravitelje naprav, odgovorne za upravljanje naprav, naprave HAL za abstrahiranje osnovnih podrobnosti in dogodke za komunikacijo med različnimi napravami.
  3. Lastnosti
    Izdelek omogoča implementacijo funkcije prepoznavanja obraza preko pred kameroview na zaslonu GUI z gumbi za sprožitev registracije obraza, prepoznavanja in odstranitve. Podatki o registriranem obrazu so shranjeni na Flash prek a file sistem.
  4. Vsebina opombe o aplikaciji
    Opomba o aplikaciji predstavlja zaslon LVGL GUI s kamero predview in gumbi za dejanja, povezana z obrazom. Razvijalcem pomaga razumeti okvir in kako implementirati prepoznavanje obrazov z uporabo priloženega example.

konecview

NXP je lansiral komplet za razvoj rešitev z imenom SLN-TLHMI-IOT, ki se osredotoča na pametne aplikacije HMI. Omogoča pametni HMI z ML vizualnim, glasovnim in grafičnim uporabniškim vmesnikom, implementiranim na enem NXP i.MX RT117H MCU. Programska oprema rešitve, ki temelji na SDK, je zasnovana na zasnovi, imenovani framework, ki podpira prilagodljive oblike in prilagajanje vidnih in glasovnih funkcij. Za pomoč uporabnikom pri boljši uporabi programske platforme je na voljo nekaj osnovnih dokumentov, nprample, uporabniški priročnik za razvoj programske opreme. Priročnik predstavlja osnovno zasnovo programske opreme in arhitekturo aplikacij, ki pokrivajo vse komponente rešitve, vključno z ogrodjem, ki razvijalcem pomaga pri lažji in učinkovitejši implementaciji njihovih aplikacij z uporabo SLN-TLHMI-IOT.
Za več podrobnosti o rešitvi in ​​ustreznih dokumentih obiščite web stran rešitve NXP EdgeReady Smart HMI, ki temelji na i.MX RT117H z ML Vision, Voice in Graphic UI. Vendar pa razvijalcem še vedno ni tako enostavno implementirati svoje pametne aplikacije HMI ob upoštevanju teh osnovnih vodnikov. Načrtovana je vrsta opomb o aplikaciji, ki bodo korak za korakom pomagale preučiti razvoj ogrodja. Ta opomba o aplikaciji temelji na Implement LVGL GUI Camera Preview o okviru (dokument AN14147). Ta opomba o aplikaciji opisuje, kako omogočiti model algoritma vida AI&ML za prepoznavanje obrazov v ogrodju za implementacijo funkcije prepoznavanja obrazov prek kamere predview na zaslonu GUI s preprostim GUI LVGL nprample na plošči SLN-TLHMI-IOT. V prijavni opombi je prample predstavlja zaslon LVGL GUI s kamero predview in nekaj gumbov za sprožitev registracije, prepoznave in odstranitve obraza. Podatki o registriranem obrazu so shranjeni na Flashu prek malo file sistem.

Na visoki ravni vsebuje opomba o aplikaciji naslednjo vsebino:

  • Omogočite funkcijo prepoznavanja obraza na ogrodju.
  • Dodajte podporo za zbirko podatkov obrazov v okvir prek file sistem na Flash.
  • Izvedite aplikacijo LVGL GUI. Z zgornjimi uvodi ta dokument razvijalcem pomaga pri:
  • Poglobite se v okvir in programsko opremo pametne rešitve HMI.
  • Razvijte njihovo prepoznavanje obrazov AI&ML na ogrodju z aplikacijo LVGL GUI.

Konec okvirjaview
Programska oprema rešitve je v prvi vrsti zasnovana glede na uporabo ogrodne arhitekture, ki je sestavljena iz več različnih delov:

  • Upravljalniki naprav – jedro
  • Naprave sloja abstrakcije strojne opreme (HAL).
  • Sporočila/Dogodki

Kot je prikazano na sliki 1, nadview mehanizma ogrodja je:

Upravitelji naprav so odgovorni za upravljanje naprav, ki jih uporablja sistem. Vsaka vrsta naprave (vhod, izhod itd.) ima svojega upravitelja naprav, specifičnega za vrsto. Z upraviteljem naprav, ki se zažene po registraciji naprav, čaka in preveri sporočilo za prenos podatkov v naprave in druge upravitelje po inicializaciji in zagonu registriranih naprav. Naprave HAL so zapisane na vrhu kode gonilnika nižje ravni, kar pomaga povečati razumljivost kode z abstrahiranjem številnih osnovnih podrobnosti.

Dogodki so sredstvo, s katerim se informacije sporočajo med različnimi napravami prek njihovih upraviteljev. Ko se sproži dogodek, naprava, ki je dogodek prva prejela, sporoči ta dogodek svojemu upravitelju, nato pa obvesti druge upravitelje, ki so določeni za sprejem dogodka.

NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (1)

Arhitekturna zasnova ogrodja je bila osredotočena na tri glavne cilje:

  1. Enostavnost uporabe
  2. Prilagodljivost/prenosljivost
  3. Učinkovitost

Ogrodje je zasnovano s ciljem pospešiti čas za trženje vida in drugih aplikacij za strojno učenje. Da bi zagotovili hiter čas za trženje, je ključnega pomena, da je programsko opremo enostavno razumeti in spreminjati. Ob upoštevanju tega cilja je arhitekturo ogrodja enostavno spremeniti, ne da bi bila omejujoča in brez stroškov delovanja.
Za več podrobnosti o ogrodju glejte Uporabniški priročnik za razvoj programske opreme Smart HMI (dokument MCU-SMHMI-SDUG).

Lahka in vsestranska grafična knjižnica (LVGL)
LVGL (Light and Versatile Graphics Library) je brezplačna in odprtokodna grafična knjižnica, ki ponuja vse, kar potrebujete za ustvarjanje vdelanega GUI z grafičnimi elementi, ki so enostavni za uporabo, čudovitimi vizualnimi učinki in majhnim pomnilniškim odtisom.

GUI vodnik
GUI Guider je uporabniku prijazno orodje za razvoj grafičnega uporabniškega vmesnika podjetja NXP, ki omogoča hiter razvoj visokokakovostnih zaslonov z odprtokodno grafično knjižnico LVGL. GUI Guiderjev urejevalnik povleci in spusti olajša uporabo številnih funkcij LVGL, kot so pripomočki, animacije in slogi, za ustvarjanje grafičnega uporabniškega vmesnika z minimalnim kodiranjem ali brez njega.

S klikom na gumb lahko zaženete svojo aplikacijo v simuliranem okolju ali jo izvozite v ciljni projekt. Kodo, ustvarjeno iz GUI Guiderja, je mogoče enostavno dodati vašemu projektu, kar pospeši razvojni proces in vam omogoči nemoteno dodajanje vdelanega uporabniškega vmesnika vaši aplikaciji. GUI Guider je brezplačen za uporabo z NXP-jevimi splošnimi in navzkrižnimi MCU-ji in vključuje vgrajene projektne predloge za več podprtih platform. Če želite izvedeti več o razvoju LVGL in GUI v GUI Guider, preverite Light and Versatile Graphics Library in GUI Guider.

Razvojno okolje

Najprej pripravite in nastavite strojno in programsko okolje za izvedbo example na okvirju.

Okolje strojne opreme
Okolje strojne opreme je nastavljeno za preverjanje example:

  • Pametni razvojni komplet HMI, ki temelji na NXP i.MX RT117H (komplet SLN_TLHMI_IOT)
  • SEGGER J-Link z 9-polnim adapterjem Cortex-M in V7.84a ali novejšo različico gonilnika

Programsko okolje
Programsko okolje je nastavljeno za razvoj example:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – nprample kodo druge opombe aplikacije kot osnovne programske opreme razvoja. Za podrobnosti glejte https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – kot kodni vir za razvoj.
  • Programska oprema SLN-TLHMI-IOT V1.1.2 – izvorna koda pametnega HMI, izdana v repozitoriju NXP GitHub kot kodni vir za razvoj. Za podrobnosti glejte: GitHub – NXP/mcu-smhmi na v1.1.2

Za podrobnosti o pridobitvi in ​​nastavitvi programskega okolja glejte: Začetek uporabe SLN-TLHMI-IOT.

Arhitektura vizije na ogrodju

Arhitektura vizije na ogrodju je prikazana na sliki 2. Algo vizije HAL (OASIS_HAL) ima spodnje procese:

  • Izvedite registracijo in prepoznavanje obraza prek modela algoritma vida AI&ML, potem ko prejmete povezane dogodke iz izhodnega uporabniškega vmesnika HAL. Sporoči rezultate sklepanja iz modela algoritma v izhodni uporabniški vmesnik HAL.
  • Dostopa (dodaj, izbriši ...) podatkovne zbirke funkcij obraza na podlagi malega file sistem s klicem API-jev FaceDB HAL po prejemu povezanih dogodkov iz izhodnega uporabniškega vmesnika HAL.
  • Zahtevajte video okvir kamere iz HAL kamere, ko izvajate registracijo in prepoznavanje obraza.

NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (3)

Izvedite prepoznavanje obrazov na ogrodju

LVGL GUI prepoznavanje obraza nprample (prejample je na voljo pozneje) na ogrodju je implementiran na podlagi exampkode Implement LVGL GUI Camera Preview o okviru (dokument AN14147).

Za demonstracijo prepoznave obraza v prample je osnovna funkcija aplikacije GUI (glejte glavni zaslon na sliki 3) zasnovana, kot je opisano spodaj:

  • Aplikacija GUI sproži dogodek registracije ali prepoznave obraza v izhodnem uporabniškem vmesniku HAL, ko kliknete gumb Registration or Recognition. In izhodni uporabniški vmesnik HAL obvesti o dogodku dodajanja uporabnika v algo za vid HAL po uspešni registraciji obraza.
  • Aplikacija GUI sproži dogodek brisanja uporabnika v izhodni uporabniški vmesnik HAL, ko kliknete gumb Izbriši uporabnika, potem ko je obraz uporabnika prepoznan.
  • Aplikacija GUI sproži dogodek ustavitve izvajanja alga oasis na izhodnem uporabniškem vmesniku HAL, ko kliknete zaslon zunaj gumbov in slik.

NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (10)

Pripraviti programski paket za izvedbo example.

  • Klonirajte osnovno programsko opremo lvgl_gui_camera_preview_cm7. Spremenite ime projekta in glavno fileime v lvgl_gui_face_rec_cm7.
  • Ogrodje je treba posodobiti v programski opremi, saj so izvorne kode za jedro ogrodja začele biti javne na GitHubu od različice 1.1.2.
  • Zamenjajte okvirno mapo s kopijo V1.1.2 iz GitHuba, razen za files fwk_log.h in fwk_common.h pod inc\, saj sta bila spremenjena za niz aplikacijskih opomb. Operacije so prikazane na sliki 4:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (11)
  • Izbrišite mapo framework_cm7 pod skupino libs in odstranite knjižnico framework_cm7 in njeno iskalno pot, konfigurirano v Project > Properties > C/C++ Build > settings > Tool Settings > MCU C++ Linker > Libraries, ker je na voljo izvorna koda jedra.

Omogoči funkcijo prepoznavanja obraza v okviru
Funkcija prepoznavanja obraza je zgrajena na modelu algoritma ML vision, ki je na voljo kot statična knjižnica – knjižnica oasis lite runtime by NXP. Knjižnica je majhna, zelo učinkovita, prilagojena in optimizirana knjižnica AI. Model vključuje zaznavanje obrazov, prepoznavanje obrazov, zaznavanje stekla in zaznavanje živosti. V glavnem zagotavlja API OASISLT_run_extended() za zagon cevovoda za prepoznavanje obrazov med posodabljanjem rezultatov klicatelju prek povratnih klicev dogodkov in dodajanje/posodabljanje/brisanje obrazov v zbirki podatkov prek povratnih klicev baze podatkov obrazov po podajanju informacij izvornega okvira, povratnih klicev in pomnilnika bazen, ki ga knjižnica uporablja s klicem drugega API-ja OASISLT_init() ob inicializaciji. Klicanje API-jev in funkcije povratnega klica so implementirane v vision algo HAL ogrodja.

Dodajte knjižnico modelov vision algo

  1. Kopirajte mapo Oasis, ki vsebuje knjižnico in povezano glavo file iz pametnega HMI\coffee_machine\cm7\libs\ v mapo libs example SW.
  2. Dodajte iskalno pot glave file v Project > Properties > C/C++ Build > settings > Tool Settings > MCU C prevajalnik > Vključuje in MCU C++ prevajalnik > Vključuje: “${workspace_loc:/${ProjName}/libs/oasis/include}”
  3. Dodajte knjižnico in njeno iskalno pot v Project > Properties > C/C++ Build > settings > MCU C+ + Linker > Libraries: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” in definicijo makra v omogočite funkcijo v Project > Properties > C/C++ Build > settings > Tool Settings > MCU C prevajalnik > Predprocesor in MCU C++ prevajalnik > Predprocesor: SMART_TLHMI_2D

Omogoči vidni algo HAL
Vision algo HAL poganja model vision algo, da deluje, in se odziva na rezultate na izhod uporabniškega vmesnika HAL, potem ko od njega prejme dogodke.

Če ga želite omogočiti, klonirajte obstoječi podoben gonilnik HAL file kjer se izvajajo naslednje funkcije:

  • Implementirajte povratne klice operacij baze podatkov obrazov in obravnavo dogodkov.
  • S klicem API-jev knjižnice oasis poganjajte algo za vizijo.
  • Dostopajte do podatkovne baze obrazov uporabnikov in baze podatkov aplikacij (ni potrebna v prample).
  • Prejemanje dogodkov iz in pošiljanje rezultatov v izhodni uporabniški vmesnik HAL.

Glavna dela za implementacijo HAL za prample so:

  • Klonirajte obstoječ podoben gonilnik HAL file in spremenite povezana imena.
  • Odstranite kode, povezane s podatkovnimi operacijami aplikacije.
  • Posodobite definicije in funkcije za obravnavanje dogodkov iz izhodnega uporabniškega vmesnika HAL glede na primerampoblikovanje.
  • Dodajte konfiguracije, potrebne za inicializacijo oasis.

Podrobni koraki so naslednji:

  1. Kloniraj hal_vision_algo_oasis_coffeemachine.c. Spremenite fileime v hal_vision_algo_oasis_guifacerec.c. In zamenjajte vse nize CoffeeMachine z GUIFaceRec v file.
  2. Odstranite kode, ki vsebujejo niz coffeedb (ni občutljivo na velike in male črke), povezane z bazo podatkov aplikacije, nprample, #include hal_sln_coffeedb.h.
  3. Spremenite funkcijo HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() za obravnavanje dogodkov iz izhodnega uporabniškega vmesnika HAL.
    • Spremenite definicijo dogodka kEventFaceRecId_RegisterCoffeeSelection v kEventFaceRecId_RegisterUserFace in strukturni niz regCoffeeSelection v regGUIFaceRec za obravnavo dogodka, da v bazo podatkov dodate nove podatke o funkcijah obraza.
    • Za prikaz standardnega postopka dejanj prepoznavanja obraza v prample, spremenite ravnanje v primeru kEventFaceRecID_OasisSetState z definicijami stanj:
      • kOASISLiteState
      • Registracija kOASISLiteState
      • Priznanje kOASISLiteState
      • ustavil
  4. Dodajte in spremenite definicije dogodkov, omenjenih v zgornjem koraku.
    • Kopirajte glavo file smart_tlhmi_event_descriptor.h iz pametnega HMI\coffee_machine \cm7\source\event_handlers\ v izvorno mapo example SW. Posodobite file kot spodaj:
    • Spremenite definicijo dogodka kEventFaceRecId_RegisterCoffeeSelection v kEventFaceRecId_RegisterUserFace v tipu enum _event_smart_tlhmi_id in strukturni niz regCoffeeSelection v regGUIFaceRec v strukturi struct _event_smart_tlhmi. Torej spremenite strukturo register_coffee_selection_event_t za regCoffeeSelection v register_gui_facerec_event_t.
    • Izbrišite drugo vsebino, ki se uporablja za aplikacijo kavnega avtomata, nprample, kodna vrstica o glasu: #include “hal_event_descriptor_voice.h”.
    • Dodajte tipa kOASISLiteState_Stopped in kOASISLiteState_Running tipu enum oasis_lite_state_t v hal_vision_algo.h pod framework>hal>vision v projektu, kot je prikazano spodaj:
      typedef enum _oasis_lite_state {
      • kOASISLiteState
      • Teče, kOASISLiteState
      • Ustavljeno, kOASISLiteState
      • priznanje,
      • kOASISLiteState
      • Registracija, kOASISLiteState
      • Odjava, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • štetje
    • Uporabite zgornjo posodobljeno strukturo oasis_lite_state_t, da izboljšate strukturo oasis_state_event_t v hal_event_descriptor_face_rec.h pod framework>hal>vision v projektu, kot je prikazano spodaj: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
  5. Spremenite vse kEventInfo_Remote v kEventInfo_Local za pošiljanje dogodkov iz vision algo HAL v druge HAL-e, ki se izvajajo v istem jedru, saj je enojedrni namesto dvojedrnega uporabljen v example.
  6. Dodajte in spremenite spodnje konfiguracije za inicializacijo oaze v OASISLT_init():
    • Dodajte definicije makrov in razdelke pomnilnika za video okvir v 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.
      • __atribut__((poravnano(poravnanobytes)))
    • Konfigurirajte dodelitev pomnilnika zgornjemu razdelku pomnilnika fb_sh_mem na Projekt > Lastnosti > Zgradba C/C++ > Nastavitve MCU, prikazane na sliki 5:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (12)
    • Razglasite globalno spremenljivko g_DTCOPBuf v lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Nadaljujte z dodajanjem definicij, uporabljenih v zgornji spremenljivki:
    • Definirajte zgornji razdelek v board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • atribut__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • atribut__((poravnano(poravnanobytes)))
    • Vključite glavo file hal_vision_algo.h, ki vsebuje definicijo makra DTC_OPTIMIZE_BUFFER_SIZE v app_config.h, vključenem v lvgl_gui_face_rec_cm7.cpp.
  7. Nastavite spremenljivko s_debugOption na true za prikaz stanja napredka pri prepoznavanju obraza.
  8. Dodajte iskalno pot glave filevizije HAL v projektu > Lastnosti > Gradnja C/C++ > nastavitve > Nastavitve orodja > Prevajalnik MCU C > Vključuje in prevajalnik MCU C++ > Vključuje: “${workspace_loc:/${ProjName}/framework/hal/vision}”
  9. Dodajte spodnjo definicijo, da omogočite vision algo HAL v board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Omogoči izhodni uporabniški vmesnik HAL
Izhodni uporabniški vmesnik HAL obvešča o dogodkih vizijski algo HAL in se odziva na rezultate sklepanja iz vizijskega algo HAL. Pri aplikaciji GUI dogodke običajno sproži aplikacija in rezultati so prikazani v aplikaciji.

Če ga želite omogočiti, klonirajte obstoječi podoben gonilnik HAL file kjer se na splošno izvajajo naslednje funkcije:

  • Obveščanje o dogodkih za prepoznavanje obrazov in dostop do baze podatkov.
  • Izvedite povratne klice za aplikacijo GUI, da sprožite dogodke.
  • Obravnava rezultate sklepanja iz modula vision algo.
  • Prikažite postopek in rezultate obravnave dogodkov v uporabniškem vmesniku z vrstico napredka, ki jo nadzirate s časovniki in pravokotnikom vodnika obraza.

Glavna dela za implementacijo HAL za prampdatoteke, uporabljene v tem dokumentu, so:

  • Klonirajte obstoječ podoben gonilnik HAL file in spremenite povezana imena.
  • Odstranite kode, povezane z aplikacijo.
  • Posodobite funkcije za obveščanje o dogodkih in odziv na rezultate po prampoblikovanje.
  • Dodajte povratne klice za aplikacijo GUI, da sprožite dogodke.

Podrobni koraki so naslednji:

  1. Kloniraj hal_output_ui_coffee_machine.c. Spremenite fileime za hal_ output_ui_guifacerec.c.
  2. Zamenjajte vse nize CoffeeMachine z GUIFaceRec v file.
  3. Odstranite kode, povezane z aplikacijo – aparat za kavo.
    • Odstranite funkciji WakeUp() in _StandBy() ter povezane kode (lahko jih poiščete v nizu wake_up in standby).
    • Odstrani predview dogodki načina, ki obravnavajo povezane kode v HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Odstranite funkcije UI_xxx_Callback() in kode, ki vsebujejo niz gui_ in zaslon, povezane z GUI kavnega avtomata, razen gui_set_virtual_face() za preview funkcijo načina.
    • Odstranite vse kode, povezane s spremenljivkama s_IsWaitingAnotherSelection in s_IsWaitingRegisterSelection, povezanimi z aplikacijo kavnega avtomata.
    • Odstranite kode, povezane z glasom, zvokom in jezikom. Na primerample:
      • #include “hal_voice_algo_asr_local.h”,
      • #include “hal_event_descriptor_voice.h”
  4. Za obveščanje o različnih dogodkih implementirajte nove funkcije _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() in DeregisterGUIFaceRec(), ki se nanašajo na funkcije _StopFaceRec(), _RegisterCoffeeSelection() in DeregisterCoffeeSelection(), preden jih izbrišete.
    • _OutputManagerNotify() implementira osnovno funkcijo izpisa dogodka za pošiljanje dogodka algo HAL za vid. Spodnje funkcije ga pokličejo za pošiljanje lastnih dogodkov.
    • _SetFaceRec() pošlje dogodek kEventFaceRecID_OasisSetState, da sproži algo vida za registracijo obraza, prepoznavanje in ustavi algo.
    • _RegisterGUIFaceRec() pošlje dogodek kEventFaceRecId_RegisterGUIFaceRec, ki je definiran v smart_tlhmi_event_descriptor.h, da doda podatke o funkcijah obraza v bazo podatkov, ko je registracija OK.
    • DeregisterGUIFaceRec() pošlje dogodek kEventFaceRecID_DelUser za izbris podatkov o funkciji obraza iz baze podatkov, ko posreduje prepoznavanje obraza.
  5. Posodobite kode za izvajanje ustreznih dejanj, vključno z osvežitvijo grafičnega uporabniškega vmesnika s klicem API-jev iz aplikacije LVGL GUI za rezultate sklepanja registracije in prepoznavanja obraza v funkciji _InferComplete_Vision() na primerample-jevo oblikovanje. Na primerample, ko je registracija obraza uspešna,
    • Ustavite prikazovanje napredka s klicem _FaceRecProcess_Stop();
    • Ustavite registracijo obraza s klicem _SetFaceRec(kOASISLiteState_Stopped);
    • Pokažite uspešen rezultat na GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Registrirajte podatke o obrazu v bazo podatkov: _RegisterUserFace(s_UserId);
  6. Dodajte funkcije povratnega klica uporabniškega vmesnika za obravnavo dogodkov: preview, registracija obraza, prepoznavanje in brisanje uporabnika, ki se sproži iz GUI. Na primerample, povratni klic registracije obraza: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • In dodajte funkciji _FaceRecProcess_Start() in _FaceRecProcess_Stop(), da prikažete napredek in stanje v različnih dogodkih in rezultatih.
    • Posodobite funkcijo povratnega klica časovnika ISR _SessionTimer_Callback() za obravnavo primera časovne omejitve s klicem: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Dodajte spodnje definicije, da omogočite izhod uporabniškega vmesnika HAL v board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Obvestilo:
Za boljšo predstavitev funkcije prepoznavanja obrazov obdržite funkcijo za prikaz postopka in rezultatov prepoznavanja obrazov v izhodnem uporabniškem vmesniku HAL. Funkcija je opisana spodaj

  • Pravokotnik vodnika obraza je modro, vrstica napredka pa prikazuje napredek ob začetku registracije ali prepoznavanja obraza.
  • Ko je registracija obraza uspešna, pravokotnik vodila za obraz sveti rdeče.
  • Ko je prepoznavanje obraza uspešno, pravokotnik vodnika obraza sveti zeleno.
  • Pravokotnik vodnika obraza ostane moder, vrstica napredka pa prikazuje popoln napredek, ko je dejanje po izteku časovnika neuspešno. Na tej točki ustavite registracijo ali prepoznavanje obraza.

Vrstica napredka in pravokotnik vodnika obraza sta predstavljena kot ikone, ki so vgrajene v dvojiško datoteko vira file programirati v Flash. Kazalci na podatke o ikonah v SDRAM-u so nastavljeni v funkciji LoadIcons(APP_ICONS_BASE), ki je klicana pri inicializaciji naprave izhodnega uporabniškega vmesnika HAL v izhodnem uporabniškem vmesniku HAL. Izvajati mora podporo ikon za funkcijo.

Izvedite podporo za ikone

  1. Zgradite vir tako, da združite ikone s slikami, uporabljenimi v aplikaciji LVGL GUI:
    • Klonirajte glavo štirih ikon files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h in virtual_face_red_420x426.h iz pametnega HMI
      \coffee machine\resource\icons\ v nove ikone mape pod mapo virov example SW.
    • Dodajte iskalno pot za štiri ikone files v kameri_preview_resource.txt file v mapi virov, nprample: ikona ../resource/icons/process_bar_240x14.h
    • Izvedite camera_preview_resource_build.bat za izdelavo virov slik in ikon za ustvarjanje koša file camera_preview_resource.bin in informacije file resource_information_table.txt (glejte sliko 6).NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (13)
  2. Določite začetni naslov na SDRAM in velikost ikon v app_config.h. Naslov se začne poleg slik aplikacije GUI. Velikost je ustvarjena v informacijah file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Posodobite dodeljeno velikost razdelka pomnilnika z imenom res_sh_mem na 0x200000, tako da jo ponovno definirate v app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 in ustrezno nastavitev v Projekt > Lastnosti > Zgradba C/C++ > Nastavitve MCU.
  4. Dodajte velikost ikone skupni velikosti vira, naloženega iz Flasha v SDRAM v funkciji APP_LoadResource() v glavnem file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Obvestilo: Za dokončanje funkcije prepoznavanja obraza je potrebna podpora za aplikacijo LVGL GUI. Funkcije povratnega klica uporabniškega vmesnika v izhodnem uporabniškem vmesniku HAL kliče aplikacija LVGL GUI za obravnavanje dogodkov z zaslona uporabniškega vmesnika. Po drugi strani pa izhodni uporabniški vmesnik HAL pokliče API-je iz aplikacije LVGL GUI, da posodobi uporabniški vmesnik za prikaz rezultata in stanja. Razvoj aplikacije LVGL GUI je razmeroma neodvisen in predstavljen v razdelku 4.3.

4.1.5 Zaženite naprave in upravitelje HAL za prepoznavanje obraza
Omogočen vizijski algo HAL in izhod uporabniškega vmesnika HAL ter njuni upravitelji se zaženejo v glavnem file
lvgl_gui_face_rec_cm7.cpp po pretvorbah razvoja v ogrodju, kot je spodaj:

  1. Vključite glavo file povezane z dvema upraviteljema HAL z dodajanjem kodne vrstice:
    • #include ” fwk_output_manager.h ”
    • #include “fwk_vision_algo_manager.h”
  2. Deklarirajte naprave HAL:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Registrirajte naprave HAL:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Inicializirajte upravitelje:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Zaženite upravitelje:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Določite prednostne naloge upravitelja:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Dodajte podporo za zbirko podatkov obrazov v okviru
Podatki o registriranih funkcijah obraza so dostopni v podatkovni zbirki obrazov, shranjeni v Flashu, prek a file sistem. Spodaj so opisani koraki za dodajanje podpore za bazo podatkov obrazov.

Dodajte gonilnike za pomnilnik Flash
Kopirajte gonilnik vmesnika Flash FlexSPI files fsl_flexspi.c in fsl_flexspi.h ter gonilnik za šifriranje podatkov files fsl_caam.c in fsl_caam.h s poti SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ v mapo gonilnikov example SW.

Dodajte podporo na ravni plošče

  1. V board.h dodajte definicije FlexSPI, ki se uporablja za napravo Flash na krovu:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopirajte operaterje in konfiguracije fileS Flash naprave flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, insln_flash_ops pod potjo \ vir \ vir \ vir \ vir \ vir \ vir \ vir \ vir \ vir \ vir \ vir \ vir.ample SW.
    • Počistite polje »Izključi vir iz gradnje« v C/C++ Build > Nastavitve po desnem kliku na fileime in odpiranje lastnosti, da omogočite njihovo vgradnjo v projekt.
  3. Spremenite vključeno glavo fileime sln_flash_config.h v sln_flash_config_w25q256jvs.h v sln_flash_config.c in flexspi_nor_flash_ops.h.
  4. Nastavite izvor ure FlexSPI1 v file clock_config.c, ki se nanaša na aplikacijo aparata za kavo.

Dodajte adapter in podporo na srednji ravni

  1. Kopiraj files sln_flash.c, sln_flash.h, sln_encrypt.c in sln_encrypt.h kot gonilniki adapterjev za file sistema in aplikacije s poti pametnega HMI\coffee_machine\cm7\source\ v mapo source example. Posodobite novo files:
    • Počistite polje »Izključi vir iz gradnje« na njih za gradnjo.
    • Spremenite vse vključene glave file ime sln_flash_config.h v sln_flash_config_w25q256jvs.h.
  2. Kopirajte mapo filesistem, ki vsebuje API-je za male filesistem in gonilnik HAL iz pametnega HMI \coffee_machine\cm7\source\ na example SW. In posodobitev za novo mapo:
    • Za gradnjo počistite polje »Izključi vir iz gradnje«.
    • Dodajte pot za vključitev v nastavitve projekta: “${workspace_loc:/${ProjName}/filesistem}”
    • Spremenite vključeno glavo file ime sln_flash_config.h v sln_flash_config_w25q256jvs.h in fica_definition.h v app_config.h v file sln_flash_littlefs.h.
  3. Kopirajte mapo littlefs, ki vsebuje srednjo opremo – little filesistema s poti SDK_2_13_0_ MIMXRT1170-EVK\middleware\ do example SW. In posodobite novo mapo:
    • Za gradnjo počistite polje »Izključi vir iz gradnje«.
    • Dodajte pot za vključitev v nastavitve projekta: “${workspace_loc:/${ProjName}/littlefs}”

Dodajte gonilnike HAL 

  • Obstajata dve napravi HAL – file podatkovna zbirka sistema in obraza HAL podpira funkcijo dostopa do baze podatkov in sta že implementirana v okvir brez kakršnih koli sprememb. Omogočite jih tako, da v board_define.h dodate spodnje definicije:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

In spremenite ime podatkovne baze obrazov za example: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”

Dodajte podporo na ravni aplikacije

  1. Posodobite glavno file lvgl_gui_face_rec_cm7.cpp:
    • Vključite glavo file povezane z Flashom file upravitelj sistema HAL z dodajanjem kodne vrstice: #include “fwk_flash.h”
    • Prijavi in ​​registriraj file sistemska naprava HAL:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Opomba: The file sistemska naprava HAL mora biti registrirana, preden se vsi upravitelji naprav inicializirajo v funkciji APP_InitFramework().
    • Pokličite funkcijo BOARD_ConfigMPU() v APP_BoardInit(), da konfigurirate MPU.
  2. Nastavite file sistemska dodelitev na Flash v file app_config.h z definiranjem definicij makrov, uporabljenih v file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define FICA_FILE_SYS_SIZE (0x280000)

Konfiguracije
Nekatere kode, povezane s Flashom, se izvajajo v območju SRAM ITC za zadostno zmogljivost. Kopirajte mapo linkscripts, ki vsebuje konfiguracije povezovalnika, iz poti smart HMI\coffee_machine\cm7\ v example SW.

Izvedite aplikacijo GUI LVGL
Razvoj aplikacije GUI LVGL, ki temelji na ogrodju, kliče API-je iz izhodnega uporabniškega vmesnika HAL in zagotavlja API-je za izhodni uporabniški vmesnik HAL (glejte razdelek 4.1.3 za implementacijo izhodnega uporabniškega vmesnika HAL).

Vendar je podrobna izvedba aplikacije LVGL GUI odvisna od zahtev in zasnove aplikacije. Aplikacija GUI v tem exampje zasnovan tako, kot je opisano na začetku 4. razdelka.

Spodaj je uvod v izvedbo:

  1. Prilagojene kode so implementirane v custom.c in custom.h, ki ju poda GUI Guider kot vmesnik med projektom GUI Guider in projektom vdelanega sistema.
    •  Dodajte nove funkcije z imenom gui_xxx() v custom.c, da dosežete spodnje funkcije:
      • Za izhodni uporabniški vmesnik HAL in aplikacija GUI za posodobitev uporabniškega vmesnika.
      • Za aplikacijo GUI, ki sproži dogodke s klicem funkcij povratnega klica uporabniškega vmesnika iz izhodnega uporabniškega vmesnika HAL.
        Na primerample, nova funkcija gui_event_face_rec_action() kliče funkcije povratnega klica uporabniškega vmesnika za obravnavo enega od dogodkov registracije obraza, prepoznavanja obraza in brisanja uporabnika, ki se sproži iz aplikacije GUI, ko se klikne ustrezni gumb.
        Opomba: funkcija gui_set_virtual_face() je poklicala v izhodnem uporabniškem vmesniku HAL za preview način je treba implementirati v custom.c:
    •  Kloniraj funkcijo gui_set_virtual_face() iz pametnega HMI\coffee_machine\cm4\custom \custom.c.
    •  Spremenite ime pripomočka home_img_cameraPreview na screen_img_camera_preview v funkciji.
    •  Implementirajte funkcije povratnega klica uporabniškega vmesnika z istim prototipom za vse v izhodnem uporabniškem vmesniku HAL pod nadzorom definicije makra #ifndef RT_PLATFORM v custom.c za združljivost s projektom GUI Guider, ker so te funkcije v izhodnem uporabniškem vmesniku HAL odvisne od vgrajena platforma. V custom.c so odvisni od simulatorja na GUI vodniku in neodvisni od vdelane platforme. Na primerample je povratni klic registracije obraza implementiran kot spodaj za simulator GUI Guider, ki se izvaja: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = false; vrnitev; }
      Opomba: Glejte isti prototip funkcije, predstavljene v 6. koraku razdelka 4.1.3
      Definicija makra RT_PLATFORM je nastavljena na nastavitve projekta MCUXpresso, kot je prikazano na sliki 7:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (14)
    • Navedite vse funkcije z imenom UI_xxx_Callback() in gui_xxx() v custom.h in dodajte custom.h, ki je vključen v smart_tlhmi_event_descriptor.h, da delite GUI API z izhodom UI HAL.
  2. Razvijte GUI na GUI Guider:
    • Klonirajte mapo camera preview ki vsebuje projektno programsko opremo GUI Guider v mapi gui_guider v osnovnem programskem paketu lvgl_gui_camera_preview_cm7. Spremenite sorodno ime camera_preview na face_rec za novega bivšegaample.
    • Kopirajte zgornji posodobljeni custom.c in custom. h v novo projektno programsko opremo GUI Guider.
    •  Odprite nov projekt face_rec v GUI Guiderju. Posodobite kot spodaj:
      • Dodajte nov gumb z oznako Izbriši uporabnika. Dodajte mu zastavico Hidden, da bo gumb skrit, ko se zažene aplikacija GUI.
      • Dodajte kodno vrstico za klicanje API-ja gui_event_face_rec_action() z drugačnim parametrom ID-ja dogodka na sprožilec »Izpuščeno« v nastavitvah dogodkov vseh gumbov Registracija, Prepoznavanje in Brisanje uporabnika za sprožitev dogodkov registracije obraza, prepoznavanja obraza in brisanja uporabnika. Slika 8 prikazuje kodo za dogodek gumba Registracija:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (15)
  3. Posodobite ustvarjeno kodo iz GUI Guiderja v projekt MCUXpresso.
    • Vsebino, razen slik mape, v mapi, ustvarjeni s programsko opremo projekta MCUXpresso, zamenjajte z ustreznimi vsebinami v mapi, ustvarjeni s programsko opremo projekta GUI Guider.

Opomba: Za več podrobnosti o zgoraj uvedenih spremembah preverite example programska oprema na https://mcuxpresso.nxp.com/appcodehub.

Preverjanja pri example projekt

Da dobim bivšegaample programski paket, ki vsebuje vire in orodja za to aplikacijo Opomba, obiščite: https://mcuxpresso.nxp.com/appcodehub. Odpri example projekt na MCUXpresso IDE. Zgradite in programirajte datoteko .axf file na naslov 0x30000000 in programirajte predal za sredstva file camera_preview_resource.bin na naslov 0x30800000.

LVGL GUI prepoznavanje obraza nprample deluje normalno kot spodaj:

  • Prejview: Ko je vklopljen, se video tokovi, ki jih posname kamera, prikažejo na določenem območju kamere predview na zaslonu GUI. Oznaka stanja prikazuje »Predview…«. Za podrobnosti glejte sliko 3. Gumb Izbriši uporabnika je skrit. Ko kliknete območje zunaj gumbov in slik, se prikaže predview navedite kot zgoraj, ko se registracija ali prepoznavanje obraza konča.
  • Registracija:
    • tartup: Ko kliknete gumb Registracija, se začne registracija obraza. Oznaka stanja se spremeni v prikaz »Registracija ...«, pravokotnik vodnika obraza postane moder, vrstica napredka pa začne prikazovati napredek. Prepričajte se, da je uporabnikov obraz prikazan v modrem pravokotniku vodnika obraza za registracijo.
    • uccess: Oznaka stanja prikazuje »Registracija…V redu« in številko ID registriranega uporabnika, pravokotnik vodnika obraza postane rdeč, če je registracija obraza uspešna, preden se napredek na vrstici prikaže polno.
    • Napaka -> Časovna omejitev: statusna oznaka prikazuje »Registracija ... Časovna omejitev«, če registracija obraza še vedno ni uspela, ko je napredek v vrstici poln.
    • Napaka -> Podvojitev: statusna oznaka prikazuje »Registracija… neuspešna«, pravokotnik vodnika obraza postane zelen, če je registrirani obraz prepoznan, preden se napredek prikaže polno na vrstici.
  • ecognition:
    • Zagon: Ko kliknete gumb Prepoznavanje, se začne prepoznavanje obraza. Oznaka stanja se spremeni v prikaz »Prepoznavanje ...«, pravokotnik vodnika po obrazu je moder, vrstica napredka pa začne prikazovati napredek. Prepričajte se, da je uporabnikov obraz prikazan v modrem pravokotniku vodila obraza za registracijo.
    • uccess: Oznaka stanja prikazuje »Prepoznavanje…V redu« in identifikacijsko številko prepoznanega uporabnika, pravokotnik vodnika po obrazu postane zelen, če je prepoznavanje obraza uspešno, preden se napredek na vrstici prikaže v celoti. Na točki se pojavi gumb Izbriši uporabnika. To pomeni, da je uporabnika dovoljeno izbrisati šele, ko je prepoznan.
    • ailure: Oznaka stanja prikazuje »Recognition…Time out«, če prepoznavanje obraza še vedno ni uspelo, ko je napredek v vrstici poln.
  • Izbriši uporabnika: Ko kliknete gumb »Izbriši uporabnika«, se po uspešnem prepoznavanju obraza oznaka stanja spremeni v prikaz »Izbriši uporabnika…V redu«, pri čemer pravokotnik vodnika obraza postane moder, napredek pa je poln v vrstici. Gumb Izbriši uporabnika je spet skrit. Prepoznan obraz/uporabnik se izbriše iz baze podatkov. To pomeni, da tega obraza/uporabnika ni mogoče prepoznati, dokler ni ponovno registriran.

Opomba o izvorni kodi v dokumentu
Exampkoda datoteke, prikazana v tem dokumentu, ima naslednje avtorske pravice in licenco klavzule BSD-3:

Copyright 2024 NXP Nadaljnja distribucija in uporaba v izvorni in dvojiški obliki, s spremembami ali brez njih, sta dovoljeni, če so izpolnjeni naslednji pogoji:

  1. Nadaljnja distribucija izvorne kode mora ohraniti zgornje obvestilo o avtorskih pravicah, ta seznam pogojev in naslednjo zavrnitev odgovornosti.
  2. Nadaljnje distribucije v binarni obliki morajo reproducirati zgornje obvestilo o avtorskih pravicah, ta seznam pogojev in naslednjo zavrnitev odgovornosti v dokumentaciji in/ali drugem gradivu morajo biti priloženi distribuciji.
  3. Niti ime imetnika avtorskih pravic niti imena njegovih sodelavcev se ne smejo uporabljati za odobritev ali promocijo izdelkov, ki izhajajo iz te programske opreme, brez posebnega predhodnega pisnega dovoljenja

TO PROGRAMSKO OPREMO PONUJAJO IMETNIKI AVTORSKIH PRAVIC IN SODELUJOČI »TAKŠNA, KOT JE« IN VSE IZRECNE ALI NAZNAČENE GARANCIJE, VKLJUČNO, VENDAR NE OMEJENO NA, NAZNAČENE GARANCIJE GLEDE PRODAJE IN PRIMERNOSTI ZA DOLOČEN NAMEN ZAVRNJENO. IMETNIK AVTORSKIH PRAVIC ALI SODELUJOČI V NOBENEM PRIMERU NISO ODGOVORNI ZA NEPOSREDNO, POSREDNO, NAKLJUČNO, POSEBNO, EKSEMPLARNO ALI POSLEDIČNO ŠKODO (VKLJUČNO, VENDAR NE OMEJENO NA NABAVO NADOMESTNEGA BLAGA ALI STORITEV); IZGUBA UPORABE, PODATKOV ALI DOBIČKA; ALI PREKINITEV POSLOVANJA), NE glede na to, KI JE POVZROČENA KAKRŠNA KOLI TEORIJA ODGOVORNOSTI, BODISI V POGODBI, STROGA ODGOVORNOSTI (VKLJUČNO Z MALOMARNOSTJO ALI DRUGAČEM), KI NASTANE NA KAKRŠEN KOLI NAČIN IZ UPORABE TE PROGRAMSKE OPREME, TUDI ČE JE OBVEŠČEN O MOŽNOSTI TAKŠNE ŠKODE.

Zgodovina revizij

NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (16)

Pravne informacije

Definicije
Osnutek — status osnutka na dokumentu pomeni, da je vsebina še vedno v internem pregleduview in predmet formalne odobritve, ki lahko povzroči spremembe ali dodatke. NXP Semiconductors ne daje nobenih zagotovil ali jamstev glede točnosti ali popolnosti informacij, vključenih v osnutek različice dokumenta, in ne prevzema nobene odgovornosti za posledice uporabe takih informacij.

Zavrnitev odgovornosti

  • Omejena garancija in odgovornost — Podatki v tem dokumentu naj bi bili točni in zanesljivi. Vendar pa NXP Semiconductors ne daje nobenih izrecnih ali implicitnih zagotovil ali jamstev glede točnosti ali popolnosti takšnih informacij in ne prevzema nobene odgovornosti za posledice uporabe takih informacij. NXP Semiconductors ne prevzema nikakršne odgovornosti za vsebino v tem dokumentu, če jo zagotavlja vir informacij zunaj NXP Semiconductors.
    Podjetje NXP Semiconductors v nobenem primeru ni odgovorno za kakršno koli posredno, naključno, kaznovalno, posebno ali posledično škodo (vključno z – brez omejitev – izgubljenim dobičkom, izgubljenimi prihranki, prekinitvijo poslovanja, stroški, povezanimi z odstranitvijo ali zamenjavo katerega koli izdelka ali stroški predelave), ne glede na to, ali ali ne, takšna škoda temelji na odškodninski odgovornosti (vključno z malomarnostjo), garanciji, kršitvi pogodbe ali kateri koli drugi pravni teoriji.
    Ne glede na morebitno škodo, ki bi jo stranka lahko utrpela iz kakršnega koli razloga, je skupna in kumulativna odgovornost družbe NXP Semiconductors do stranke za izdelke, opisane v tem dokumentu, omejena v skladu s pogoji komercialne prodaje družbe NXP Semiconductors.
  • Pravica do sprememb — NXP Semiconductors si pridržuje pravico do sprememb informacij, objavljenih v tem dokumentu, vključno brez omejitev s specifikacijami in opisi izdelkov, kadar koli in brez predhodnega obvestila. Ta dokument nadomešča in zamenjuje vse informacije, posredovane pred objavo tega dokumenta.
  • Primernost za uporabo — Izdelki NXP Semiconductors niso zasnovani, odobreni ali zanje ni zajamčeno, da bi bili primerni za uporabo v sistemih ali opremi za vzdrževanje življenja, življenjsko kritičnih ali varnostno kritičnih sistemih ali opremi, niti v aplikacijah, kjer je razumno pričakovati, da bo okvara ali okvara izdelka NXP Semiconductors povzročila osebne poškodbe, smrt ali huda materialna ali okoljska škoda. NXP Semiconductors in njegovi dobavitelji ne prevzemajo nobene odgovornosti za vključitev in/ali uporabo izdelkov NXP Semiconductors v tako opremo ali aplikacije, zato je taka vključitev in/ali uporaba na lastno odgovornost stranke.
  • Aplikacije — Aplikacije, ki so tukaj opisane za katerega koli od teh izdelkov, so samo v ilustrativne namene. NXP Semiconductors ne daje nobene izjave ali jamstva, da bodo takšne aplikacije primerne za navedeno uporabo brez nadaljnjega testiranja ali spreminjanja.
    Stranke so odgovorne za načrtovanje in delovanje svojih aplikacij in izdelkov, ki uporabljajo izdelke NXP Semiconductors, NXP Semiconductors pa ne prevzema nobene odgovornosti za kakršno koli pomoč pri oblikovanju aplikacij ali izdelkov strank. Stranka je izključno odgovorna, da ugotovi, ali je izdelek NXP Semiconductors primeren in primeren za strankine aplikacije in načrtovane izdelke, kot tudi za načrtovano uporabo in uporabo kupčevih tretjih oseb. Stranke morajo zagotoviti ustrezne zaščitne ukrepe za načrtovanje in delovanje, da zmanjšajo tveganja, povezana z njihovimi aplikacijami in izdelki. NXP Semiconductors ne prevzema nobene odgovornosti v zvezi s kakršno koli napako, škodo, stroški ali težavo, ki temelji na kakršni koli slabosti ali napaki v strankinih aplikacijah ali izdelkih ali aplikaciji ali uporabi strankine tretje stranke. Stranka je odgovorna za izvajanje vseh potrebnih testiranj za strankine aplikacije in izdelke z uporabo izdelkov NXP Semiconductors, da se izogne ​​privzetim aplikacijam in izdelkim ali aplikaciji ali uporabi s strani strankine tretje stranke. NXP v zvezi s tem ne prevzema nobene odgovornosti.
  • Pogoji komercialne prodaje — Izdelki NXP Semiconductors se prodajajo v skladu s splošnimi pogoji komercialne prodaje, kot so objavljeni na https://www.nxp.com/profile/pogoji, razen če ni drugače dogovorjeno v veljavni pisni individualni pogodbi. V primeru sklenitve posamezne pogodbe veljajo le pogoji posamezne pogodbe. NXP Semiconductors s tem izrecno nasprotuje uporabi strankinih splošnih pogojev v zvezi z nakupom izdelkov NXP Semiconductors s strani stranke.
  • Izvozni nadzor — Ta dokument in predmet(i), opisani v njem, so lahko predmet predpisov o nadzoru izvoza. Izvoz lahko zahteva predhodno dovoljenje pristojnih organov.
  • Primernost za uporabo v neavtomobilskih izdelkih — Če ta dokument izrecno ne navaja, da je ta določen izdelek NXP Semiconductors primeren za uporabo v avtomobilih, izdelek ni primeren za uporabo v avtomobilih. Ni niti kvalificiran niti preizkušen v skladu z avtomobilskimi testiranji ali zahtevami uporabe. NXP Semiconductors ne prevzema nikakršne odgovornosti za vključitev in/ali uporabo neavtomobilskih izdelkov v avtomobilski opremi ali aplikacijah.
    V primeru, da stranka uporablja izdelek za načrtovanje in uporabo v avtomobilskih aplikacijah v skladu z avtomobilskimi specifikacijami in standardi, mora stranka (a) uporabljati izdelek brez garancije NXP Semiconductors za izdelek za takšne avtomobilske aplikacije, uporabo in specifikacije in ( b) kadarkoli stranka uporablja izdelek za avtomobilske aplikacije, ki presegajo specifikacije NXP Semiconductors, je taka uporaba izključno na strankino lastno odgovornost in (c) stranka v celoti odškodnini družbi NXP Semiconductors za kakršno koli odgovornost, škodo ali neuspešne zahtevke glede izdelka, ki izhajajo iz strankine zasnove in uporabe izdelek za avtomobilske aplikacije, ki presegajo standardno garancijo NXP Semiconductors in specifikacije izdelkov NXP Semiconductors.
  • Prevodi — Neangleška (prevedena) različica dokumenta, vključno s pravnimi informacijami v tem dokumentu, je samo za referenco. V primeru neskladja med prevedeno in angleško različico prevlada angleška različica.
  • Varnost — Stranka razume, da so lahko vsi izdelki NXP izpostavljeni neznanim ranljivostim ali podpirajo uveljavljene varnostne standarde ali specifikacije z znanimi omejitvami. Stranka je odgovorna za načrtovanje in delovanje svojih aplikacij in izdelkov v celotnem življenjskem ciklu, da zmanjša učinek teh ranljivosti na strankine aplikacije in izdelke. Odgovornost stranke se razširi tudi na druge odprte in/ali lastniške tehnologije, ki jih podpirajo izdelki NXP za uporabo v aplikacijah stranke. NXP ne prevzema nobene odgovornosti za kakršno koli ranljivost. Stranka mora redno preverjati varnostne posodobitve NXP in ustrezno ukrepati. Stranka bo izbrala izdelke z varnostnimi funkcijami, ki najbolje ustrezajo pravilom, predpisom in standardom predvidene uporabe, in sprejela končne odločitve glede oblikovanja svojih izdelkov ter je izključno odgovorna za skladnost z vsemi pravnimi, regulativnimi in varnostnimi zahtevami v zvezi z njenimi izdelki, ne glede na to. kakršnih koli informacij ali podpore, ki jih lahko zagotovi NXP.

NXP ima skupino za odzivanje na varnostne incidente (PSIRT) (dosegljiva na PSIRT@nxp.com), ki upravlja preiskavo, poročanje in objavo rešitev za varnostne ranljivosti izdelkov NXP.
NXP B.V. — NXP B.V. ni operativno podjetje in ne distribuira ali prodaja izdelkov.

Blagovne znamke
Obvestilo: Vse navedene blagovne znamke, imena izdelkov, imena storitev in blagovne znamke so last njihovih lastnikov.

NXP — besedni znak in logotip sta blagovni znamki 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 — so blagovne znamke in/ali registrirane blagovne znamke Arm Limited (ali njegovih hčerinskih družb ali podružnic) v ZDA in/ali drugje. Povezana tehnologija je lahko zaščitena s katerim koli ali vsemi patenti, avtorskimi pravicami, dizajni in poslovnimi skrivnostmi. Vse pravice pridržane.

  • i.MX — je blagovna znamka NXP BV
  • J-Link — je blagovna znamka družbe SEGGER Microcontroller GmbH.

Microsoft, Azure in ThreadX — so blagovne znamke skupine podjetij Microsoft.

Upoštevajte, da so pomembna obvestila o tem dokumentu in izdelkih, opisanih v njem, vključena v razdelek »Pravne informacije«.

© 2024 NXP BV
Za več informacij obiščite: https://www.nxp.com

  • Datum izdaje: 19. april 2024
  • Identifikator dokumenta: AN14263

pogosta vprašanja

V: Kaj je glavni namen tega izdelka?
O: Glavni namen je omogočiti funkcijo prepoznavanja obraza z uporabo modela algoritma vida AI&ML s preprostim GUI LVGL example na plošči SLN-TLHMI-IOT.

V: Kako lahko razvijalcem koristi ta opomba o aplikaciji?
O: Razvijalci se lahko naučijo, kako korak za korakom implementirati prepoznavanje obrazov v okvir z uporabo priloženega exampin razumeti vključene upravljalnike naprav, naprave HAL in mehanizme dogodkov.

Dokumenti / Viri

NXP AN14263 Implementiraj LVGL GUI Face Recognition na Framewor [pdf] Uporabniški priročnik
AN14263 Implementacija prepoznavanja obrazov GUI LVGL na Framewor, AN14263, Implementacija prepoznavanja obrazov GUI LVGL na Framewor, Prepoznavanje obrazov GUI LVGL na Framewor, Prepoznavanje obrazov na Framewor, Prepoznavanje na Framewor, Framewor

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *