nxp-logo

NXP AN14263 Implementați recunoașterea feței LVGL GUI pe Framewor

NXP-AN14263-Implement-LVGL-GUI Recunoaștere facială-pe-Framewor-produs

Informații despre produs

Specificații

  • Nume produs: Recunoaștere facială LVGL GUI pe cadru
  • Revizuirea documentului: 1 – 19 aprilie 2024
  • Cuvinte cheie: Recunoaștere facială, GUI LVGL, Framework

Instrucțiuni de utilizare a produsului

  1. Pesteview
    Acest produs permite modelul de algoritm de viziune AI&ML pentru recunoașterea feței pe un cadru pentru a implementa funcția de recunoaștere a feței cu o simplă GUI LVGL examppe placa SLN-TLHMI-IOT.
  2. Cadru pesteview
    Soluția software este concepută în jurul arhitecturii cadru care include manageri de dispozitive responsabili cu gestionarea dispozitivelor, dispozitive HAL pentru a abstractiza detaliile subiacente și evenimente pentru comunicarea între diferite dispozitive.
  3. Caracteristici
    Produsul permite implementarea funcției de recunoaștere a feței prin intermediul camerei preview pe ecranul GUI cu butoane pentru a declanșa înregistrarea, recunoașterea și eliminarea feței. Datele feței înregistrate sunt stocate pe Flash prin a file sistem.
  4. Conținutul notei de aplicare
    Nota aplicației prezintă un ecran GUI LVGL cu camera preview și butoane pentru acțiuni legate de față. Ajută dezvoltatorii să înțeleagă cadrul și cum să implementeze recunoașterea facială folosind example.

Pesteview

NXP a lansat un kit de dezvoltare a soluției denumit SLN-TLHMI-IOT care se concentrează pe aplicații inteligente HMI. Permite HMI inteligent cu viziune ML, voce și interfață grafică implementată pe un MCU NXP i.MX RT117H. Bazat pe SDK, soluția software este construită pe un design numit cadru care acceptă designuri flexibile și personalizarea funcțiilor de viziune și voce. Pentru a ajuta utilizatorii să folosească mai bine platforma software, sunt furnizate câteva documente de bază, de example, ghidul utilizatorului de dezvoltare software. Ghidul prezintă designul software de bază și arhitectura aplicațiilor care acoperă toate componentele soluției, inclusiv cadrul pentru a ajuta dezvoltatorii să-și implementeze mai ușor și mai eficient aplicațiile folosind SLN-TLHMI-IOT.
Pentru mai multe detalii despre soluție și documente relevante, vizitați web pagina a soluției NXP EdgeReady Smart HMI bazată pe i.MX RT117H cu ML Vision, Voice și UI grafică. Cu toate acestea, nu este încă atât de ușor pentru dezvoltatori să-și implementeze aplicațiile HMI inteligente, referindu-se la aceste ghiduri de bază. Sunt planificate o serie de note de aplicare pentru a ajuta la studiul pas cu pas al dezvoltării cadrului. Această notă de aplicație se bazează pe Implement LVGL GUI Camera Preview privind Cadru (document AN14147). Această notă de aplicație descrie cum să activați modelul de algoritm de viziune AI&ML pentru recunoașterea feței pe cadru pentru a implementa funcția de recunoaștere a feței prin intermediul camerei preview pe ecranul GUI cu o simplă GUI LVGL examppe placa SLN-TLHMI-IOT. În nota de aplicare, example prezintă un ecran GUI LVGL cu o cameră preview și câteva butoane pentru a declanșa înregistrarea, recunoașterea și eliminarea feței. Datele feței înregistrate sunt stocate pe Flash printr-un pic file sistem.

La un nivel înalt, nota de aplicare conține următoarele conținuturi:

  • Activați funcția de recunoaștere a feței pe cadru.
  • Adăugați suport pentru baze de date faciale pe cadru prin file sistem pe Flash.
  • Implementați aplicația GUI LVGL. Prin introducerile de mai sus, acest document îi ajută pe dezvoltatori să:
  • Înțelegeți mai profund cadrul și soluția software inteligentă HMI.
  • Dezvoltați recunoașterea feței AI&ML pe cadru cu aplicația LVGL GUI.

S-a terminat cadrulview
Soluția software este concepută în principal în jurul utilizării arhitecturii cadru care este compusă din mai multe părți diferite:

  • Managerii de dispozitive – partea centrală
  • Dispozitivele Hardware Abstraction Layer (HAL).
  • Mesaje/Evenimente

După cum se arată în Figura 1, pesteview a mecanismului cadrului este:

Managerii de dispozitive sunt responsabili pentru gestionarea dispozitivelor utilizate de sistem. Fiecare tip de dispozitiv (intrare, ieșire și așa mai departe) are propriul său manager de dispozitiv specific tipului. Cu un manager de dispozitive care începe după ce dispozitivele sunt înregistrate la acesta, așteaptă și verifică un mesaj pentru a transfera date către dispozitive și alți manageri după inițializarea și pornirea dispozitivelor înregistrate. Dispozitivele HAL sunt scrise deasupra codului driverului de nivel inferior, ajutând la creșterea înțelegerii codului prin abstractizarea multor detalii de bază.

Evenimentele sunt un mijloc prin care informațiile sunt comunicate între diferite dispozitive prin intermediul managerilor acestora. Când un eveniment este declanșat, dispozitivul care a primit primul eveniment comunică acel eveniment managerului său, apoi, la rândul său, anunță alți manageri desemnați să primească evenimentul.

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

Designul arhitectural al cadrului a fost centrat pe trei obiective principale:

  1. Ușurință în utilizare
  2. Flexibilitate/portabilitate
  3. Performanţă

Cadrul este conceput cu scopul de a accelera timpul de lansare pe piață pentru viziune și alte aplicații de învățare automată. Pentru a asigura un timp rapid de comercializare, este esențial ca software-ul în sine să fie ușor de înțeles și modificat. Ținând cont de acest obiectiv, arhitectura cadrului este ușor de modificat fără a fi restrictivă și fără a aduce prețul performanței.
Pentru mai multe detalii despre cadru, consultați Ghidul utilizatorului de dezvoltare software Smart HMI (document MCU-SMHMI-SDUG).

Biblioteca grafică ușoară și versatilă (LVGL)
LVGL (Light and Versatile Graphics Library) este o bibliotecă grafică gratuită și open-source care oferă tot ceea ce aveți nevoie pentru a crea o interfață grafică încorporată cu elemente grafice ușor de utilizat, efecte vizuale frumoase și spațiu de memorie redus.

Ghid GUI
GUI Guider este un instrument de dezvoltare a interfeței grafice cu utilizatorul ușor de utilizat de la NXP, care permite dezvoltarea rapidă a afișajelor de înaltă calitate cu biblioteca grafică open-source LVGL. Editorul drag-and-drop al GUI Guider face ușoară utilizarea multor funcții ale LVGL, cum ar fi widget-uri, animații și stiluri pentru a crea o interfață grafică cu codare minimă sau fără codificare.

Făcând clic pe un buton, puteți rula aplicația într-un mediu simulat sau o puteți exporta într-un proiect țintă. Codul generat de GUI Guider poate fi adăugat cu ușurință la proiectul dvs., accelerând procesul de dezvoltare și permițându-vă să adăugați fără probleme o interfață de utilizator încorporată la aplicația dvs. GUI Guider poate fi utilizat gratuit cu MCU-urile NXP cu scop general și crossover și include șabloane de proiect încorporate pentru mai multe platforme acceptate. Pentru a afla mai multe despre dezvoltarea LVGL și GUI pe GUI Guider, verificați Light and Versatile Graphics Library și GUI Guider.

Mediu de dezvoltare

Mai întâi, pregătiți și configurați mediul hardware și software pentru implementarea example pe cadru.

Mediu hardware
Mediul hardware este configurat pentru verificarea examppe:

  • Kitul de dezvoltare inteligent HMI bazat pe NXP i.MX RT117H (kitul SLN_TLHMI_IOT)
  • SEGGER J-Link cu un adaptor Cortex-M cu 9 pini și V7.84a sau o versiune mai nouă a driverului

Mediu software
Mediul software este configurat pentru dezvoltarea examppe:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – exampcodul celei de-a doua aplicații notează ca software de bază al dezvoltării. Pentru detalii, vezi https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – ca resursă de cod pentru dezvoltare.
  • Software SLN-TLHMI-IOT V1.1.2 – cod sursă inteligent HMI lansat în depozitul NXP GitHub ca resursă de cod pentru dezvoltare. Pentru detalii, consultați: GitHub – NXP/mcu-smhmi la v1.1.2

Pentru detalii despre achiziționarea și configurarea mediului software, consultați: Noțiuni introductive despre SLN-TLHMI-IOT.

Arhitectură de viziune pe cadru

Arhitectura de viziune pe cadru este prezentată în Figura 2. Algo-ul de viziune HAL (OASIS_HAL) are următoarele procese:

  • Efectuați înregistrarea și recunoașterea feței prin modelul algoritmului de viziune AI&ML după ce primiți evenimentele aferente de la ieșirea UI HAL. Notifică rezultatele inferenței din modelul de algoritm la ieșirea UI HAL.
  • Accesează (adăugați, ștergeți...) baza de date a caracteristicilor feței bazată pe mic file sistem prin apelarea API-urilor FaceDB HAL după primirea evenimentelor aferente de la ieșirea UI HAL.
  • Solicitați cadrul video al camerei de la camera HAL când faceți înregistrarea și recunoașterea feței.

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

Implementați recunoașterea feței pe cadru

Recunoașterea feței LVGL GUI example (example este furnizat mai târziu) asupra cadrului este implementat pe baza exampcodurile de implementare LVGL GUI Camera Preview privind Cadru (document AN14147).

Pentru demonstrarea recunoașterii feței în example, funcția de bază a aplicației GUI (vezi ecranul principal din Figura 3) este proiectată după cum este descris mai jos:

  • Aplicația GUI declanșează înregistrarea feței sau evenimentul de recunoaștere la ieșirea UI HAL când faceți clic pe butonul Înregistrare sau Recunoaștere. Și ieșirea UI HAL notifică evenimentul de adăugare a unui utilizator la algo-ul de viziune HAL după ce înregistrarea feței este reușită.
  • Aplicația GUI declanșează evenimentul de ștergere a unui utilizator în HAL UI de ieșire atunci când faceți clic pe butonul Șterge utilizator după ce fața utilizatorului este recunoscută.
  • Aplicația GUI declanșează evenimentul de oprire a rulării algo-oasis la ieșirea UI HAL atunci când faceți clic pe ecran în afara butoanelor și imaginilor.

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

Pregătiți pachetul software pentru implementarea example.

  • Clonează software-ul de bază lvgl_gui_camera_preview_cm7. Schimbați numele proiectului și principalul filenume la lvgl_gui_face_rec_cm7.
  • Cadrul este necesar să fie actualizat în software, deoarece codurile sursă pentru nucleul cadrului au început să fie publice pe GitHub începând cu versiunea 1.1.2.
  • Înlocuiți folderul cadru cu copia V1.1.2 din GitHub, cu excepția files fwk_log.h și fwk_common.h sub inc\, deoarece au fost modificate pentru seria de note de aplicare. Operațiile sunt prezentate în Figura 4:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (11)
  • Ștergeți folderul framework_cm7 din grupul libs și eliminați biblioteca framework_cm7 și calea de căutare configurată în Proiect > Proprietăți > C/C++ Build > setări > Tool Settings > MCU C++ Linker > Biblioteci, deoarece este furnizat codul sursă al nucleului.

Activați funcția de recunoaștere a feței pe cadru
Funcția de recunoaștere a feței este construită pe modelul algoritmului ML Vision furnizat ca bibliotecă statică – o bibliotecă de rulare oasis lite de către NXP. Biblioteca este o bibliotecă AI mică, foarte eficientă, personalizată și optimizată. Modelul include detectarea feței, recunoașterea feței, detectarea sticlei și detectarea vieții. Acesta oferă în principal API-ul OASISLT_run_extended() pentru a rula conducta de recunoaștere a feței în timp ce actualizează rezultatele către apelant prin apeluri inverse de evenimente și pentru a adăuga/actualiza/șterge fețe din baza de date prin apelurile în baza de date a feței după specificarea informațiilor de cadru sursă, a apelurilor înapoi și a memoriei. pool utilizat de bibliotecă prin apelarea unui alt API OASISLT_init() la inițializare. Apelarea API-urilor și funcțiile callback sunt implementate în algo-ul de viziune HAL al cadrului.

Adăugați biblioteca de modele Vision algo

  1. Copiați folderul oasis care conține biblioteca și antetul aferent file din smart HMI\coffee_machine\cm7\libs\ în folderul libs al example SW.
  2. Adăugați calea de căutare a antetului file în Proiect > Proprietăți > C/C++ Build > setări > Tool Settings > MCU C compilator > Include și MCU C++ compilator > Include: „${workspace_loc:/${ProjName}/libs/oasis/include}”
  3. Adăugați lib și calea de căutare pe Proiect > Proprietăți > C/C++ Build > setări > MCU C+ + Linker > Biblioteci: liboasis_lite2D_DEFAULT_117f_ae.a „${workspace_loc:/${ProjName}/libs/oasis}” și definiția macro la activați caracteristica pe Proiect > Proprietăți > Construire C/C++ > setări > Setări instrument > Compilator MCU C > Preprocesor și compilator MCU C++ > Preprocesor: SMART_TLHMI_2D

Activați algoritmul de viziune HAL
Viziunea algo HAL conduce modelul de viziune algo să funcționeze și răspunde rezultatelor la ieșirea UI HAL după ce a primit evenimentele de la acesta.

Pentru a-l activa, clonează driverul HAL similar existent file unde sunt implementate următoarele funcții:

  • Implementați apelurile inverse ale operațiunilor bazei de date faciale și gestionării evenimentelor.
  • Conduceți algo-ul de viziune să funcționeze apelând API-urile bibliotecii oasis.
  • Accesați baza de date a feței utilizatorilor și baza de date a aplicațiilor (nu este necesar în example).
  • Primiți evenimente de la și trimiteți rezultate la ieșirea UI HAL.

Principalele lucrări de implementare a HAL pentru exampsunt:

  • Clonează driverul HAL similar existent file și schimbați numele aferente.
  • Eliminați codurile legate de operațiunile de date ale aplicației.
  • Actualizați definițiile și funcțiile pentru gestionarea evenimentelor din UI HAL de ieșire conform exampproiecta.
  • Adăugați configurațiile necesare în inițializarea oasis.

Pașii detaliați sunt după cum urmează:

  1. Clonează hal_vision_algo_oasis_coffeemachine.c. Schimbați filenume la hal_vision_algo_oasis_guifacerec.c. Și înlocuiți toate șirurile CoffeeMachine cu GUIFaceRec în file.
  2. Eliminați codurile care conțin șirul coffeedb (nu ține cont de majuscule și minuscule) legate de baza de date a aplicației, de exempluample, #include hal_sln_coffeedb.h.
  3. Modificați funcția HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() pentru gestionarea evenimentelor din ieșirea UI HAL.
    • Schimbați definiția evenimentului kEventFaceRecId_RegisterCoffeeSelection în kEventFaceRecId_RegisterUserFace și șirul de structură regCoffeeSelection în regGUIFaceRec pentru gestionarea evenimentului pentru a adăuga date noi despre caracteristicile feței în baza de date.
    • Pentru a arăta procesul standard al acțiunilor de recunoaștere a feței în example, modificați manipularea în cazul kEventFaceRecID_OasisSetState cu definițiile stărilor:
      • kOASISLiteState
      • Înregistrare koASISLiteState
      • Recunoaștere koASISLiteState
      • oprit
  4. Adăugați și modificați definițiile evenimentelor menționate în pasul de mai sus.
    • Copiați antetul file smart_tlhmi_event_descriptor.h din smart HMI\coffee_machine \cm7\source\event_handlers\ în folderul sursă al ex.ample SW. Actualizați file ca mai jos:
    • Schimbați definiția evenimentului kEventFaceRecId_RegisterCoffeeSelection în kEventFaceRecId_RegisterUserFace în tipul de enumerare _event_smart_tlhmi_id și șirul de structură regCoffeeSelection în regGUIFaceRec în structura _event_smart_tlhmi. Deci, schimbați structura register_coffee_selection_event_t pentru regCoffeeSelection în register_gui_facerec_event_t.
    • Ștergeți restul conținutului folosit pentru aplicația aparat de cafea, de example, linia de cod despre voce: #include „hal_event_descriptor_voice.h”.
    • Adăugați tipurile kOASISLiteState_Stopped și kOASISLiteState_Running la tipul de enumerare oasis_lite_state_t în hal_vision_algo.h sub framework>hal>vision în proiect, după cum urmează:
      typedef enumerare _oasis_lite_state {
      • kOASISLiteState
      • Rulează, kOASISLiteState
      • Oprit, kOASISLiteState
      • Recunoaştere,
      • kOASISLiteState
      • Înregistrare, kOASISLiteState
      • Deînregistrare, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • Conta
    • Utilizați structura actualizată de mai sus oasis_lite_state_t pentru a rafina structura oasis_state_event_t în hal_event_descriptor_face_rec.h sub framework>hal>vision în proiect, după cum urmează: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
  5. Schimbați toate kEventInfo_Remote în kEventInfo_Local pentru a trimite evenimente de la algo-ul de viziune HAL la alte HAL care rulează pe același nucleu, ca și nucleu single în loc de nucleu dual este folosit în ex.ample.
  6. Adăugați și modificați configurațiile de mai jos pentru inițializarea oasis în OASISLT_init():
    • Adăugați definițiile macro și secțiunile de memorie pentru cadrul video în 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__((aliniat(aliniat(aliniat)))
    • Configurați alocarea memoriei la secțiunea de memorie de mai sus fb_sh_mem pe Proiect > Proprietăți > Construire C/C++ > Setări MCU prezentate în Figura 5:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (12)
    • Declarați variabila globală g_DTCOPBuf în lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Continuați să adăugați definițiile utilizate în variabila de mai sus:
    • Definiți secțiunea de mai sus în board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • attribute__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • atribut__((aliniat(alignbytes)))
    • Includeți antetul file hal_vision_algo.h care conține definiția macro DTC_OPTIMIZE_BUFFER_SIZE în app_config.h inclusă în lvgl_gui_face_rec_cm7.cpp.
  7. Setați variabila s_debugOption la true pentru a afișa starea progresului în recunoașterea feței.
  8. Adăugați calea de căutare a antetului files din HAL de viziune pe Proiect > Proprietăți > C/C++ Build > setări > Setări instrument > Compilatorul MCU C > Include și compilatorul MCU C++ > Include: „${workspace_loc:/${ProjName}/framework/hal/vision}”
  9. Adăugați definiția de mai jos pentru a activa algo-ul de viziune HAL în board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Activați ieșirea UI HAL
Ieșirea UI HAL notifică evenimentele algo-ului de viziune HAL și răspunde la rezultatele inferenței din algo-ul de viziune HAL. Cu aplicația GUI, evenimentele sunt în general declanșate de aplicație, iar rezultatele sunt afișate în aplicație.

Pentru a-l activa, clonează driverul HAL similar existent file unde, în general, sunt implementate următoarele funcții:

  • Notificați evenimentele pentru recunoașterea feței și accesul la baza de date.
  • Implementați apelurile inverse pentru aplicația GUI pentru a declanșa evenimentele.
  • Gestionați rezultatele inferenței din modulul de viziune algo.
  • Afișați procesul și rezultatele gestionării evenimentelor pe interfața de utilizare prin bara de progres controlată cu cronometre și dreptunghiul de ghidare a feței.

Principalele lucrări de implementare a HAL pentru exampfișierele utilizate în acest document sunt:

  • Clonează driverul HAL similar existent file și schimbați numele aferente.
  • Eliminați codurile legate de aplicație.
  • Actualizați funcțiile pentru notificarea evenimentelor și răspunsul rezultatelor pe exampproiecta.
  • Adăugați apelurile inverse pentru aplicația GUI pentru a declanșa evenimentele.

Pașii detaliați sunt după cum urmează:

  1. Clonează hal_output_ui_coffee_machine.c. Schimbați filenume la hal_ output_ui_guifacerec.c.
  2. Înlocuiți toate șirurile CoffeeMachine cu GUIFaceRec în file.
  3. Eliminați codurile legate de aplicație – aparat de cafea.
    • Eliminați funcțiile WakeUp() și _StandBy() și codurile aferente (poate căuta șirul wake_up și standby pentru ele).
    • Scoateți preview evenimente de mod care gestionează coduri asociate în HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Eliminați funcțiile UI_xxx_Callback() și codurile care conțin șirul gui_ și ecranul legat de GUI-ul mașinii de cafea, cu excepția gui_set_virtual_face() pentru preview caracteristica modului.
    • Eliminați toate codurile implicate cu variabilele s_IsWaitingAnotherSelection și s_IsWaitingRegisterSelection legate de aplicația aparat de cafea.
    • Eliminați codurile legate de voce, audio și limbă. De examppe:
      • #include „hal_voice_algo_asr_local.h”,
      • #include „hal_event_descriptor_voice.h”
  4. Pentru diferitele notificări de evenimente, implementați noile funcții _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() și DeregisterGUIFaceRec() referitor la funcțiile _StopFaceRec(), _RegisterCoffeeSelection() și DeregisterCoffeeSelection() înainte de deeeSelection.
    • _OutputManagerNotify() implementează funcția de bază de ieșire a evenimentului pentru a trimite un eveniment către algo-ul de viziune HAL. Funcțiile de mai jos îl numesc pentru a trimite propriile evenimente.
    • _SetFaceRec() trimite evenimentul kEventFaceRecID_OasisSetState pentru a declanșa algo-ul de viziune pentru înregistrarea feței, recunoașterea și oprirea algo-ului.
    • _RegisterGUIFaceRec() trimite evenimentul kEventFaceRecId_RegisterGUIFaceRec care este definit în smart_tlhmi_event_descriptor.h pentru a adăuga date despre caracteristicile feței la baza de date atunci când înregistrarea este OK.
    • DeregisterGUIFaceRec() trimite evenimentul kEventFaceRecID_DelUser pentru a șterge datele caracteristicii feței din baza de date atunci când trece recunoașterea feței.
  5. Actualizați codurile pentru a efectua acțiunile corespunzătoare, inclusiv reîmprospătarea GUI apelând API-urile din aplicația GUI LVGL pentru rezultatele inferenței înregistrării și recunoașterii feței în funcția _InferComplete_Vision() conform ex.ampdesign-ul lui. De example, când înregistrarea feței are succes,
    • Nu mai afișa progresul apelând _FaceRecProcess_Stop();
    • Opriți înregistrarea feței apelând _SetFaceRec(kOASISLiteState_Stopped);
    • Afișați rezultatul de succes pe GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Înregistrați datele feței în baza de date: _RegisterUserFace(s_UserId);
  6. Adăugați funcții de apel invers UI pentru a gestiona evenimentele: preview, înregistrarea feței, recunoașterea și ștergerea utilizatorului declanșate din GUI. De example, apel invers de înregistrare a feței: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • Și adăugați funcțiile _FaceRecProcess_Start() și _FaceRecProcess_Stop() pentru a afișa progresul și starea în diferitele evenimente și rezultate.
    • Actualizați funcția de apel invers ISR a temporizatorului _SessionTimer_Callback() pentru a gestiona cazul de expirare apelând: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Adăugați definițiile de mai jos pentru a activa ieșirea UI HAL în board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Observa:
Pentru a prezenta mai bine funcția de recunoaștere a feței, păstrați funcția pentru a afișa procesul și rezultatele recunoașterii feței în UI HAL de ieșire. Funcția este descrisă după cum urmează

  • Dreptunghiul de ghidare a feței este albastru, iar bara de progres arată progresul când începe înregistrarea sau recunoașterea feței.
  • Dreptunghiul de ghidare a feței este roșu când înregistrarea feței este reușită.
  • Dreptunghiul de ghidare a feței este verde când recunoașterea feței are succes.
  • Dreptunghiul de ghidare al feței rămâne albastru, iar bara de progres arată progresul complet atunci când acțiunea nu reușește după expirarea temporizatorului. În acel moment, opriți înregistrarea sau recunoașterea feței.

Bara de progres și dreptunghiul de ghidare a feței sunt prezentate ca pictograme care sunt încorporate în binarul de resurse file pentru a fi programat în Flash. Pointerii către datele pictogramelor de pe SDRAM sunt configurați în funcția LoadIcons(APP_ICONS_BASE) apelată la inițializarea dispozitivului UI HAL de ieșire în UI HAL de ieșire. Trebuie să implementeze suportul pentru pictograme pentru funcție.

Implementați suportul pentru pictograme

  1. Construiți resursa combinând pictogramele cu imaginile utilizate în aplicația LVGL GUI:
    • Clonează antetul celor patru pictograme files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h și virtual_face_red_420x426.h de la smart HMI
      \mașină de cafea\resource\icons\ la pictogramele noului folder sub folderul de resurse al example SW.
    • Adăugați calea de căutare pentru pictograma patru files în camera_preview_resource.txt file în folderul de resurse, de example: pictograma ../resource/icons/process_bar_240x14.h
    • Executați camera_preview_resource_build.bat pentru a construi resursele de imagini și pictograme pentru a genera coșul file camera_preview_resource.bin și informațiile file resource_information_table.txt (vezi figura 6).NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (13)
  2. Definiți adresa de pornire pe SDRAM și dimensiunea pictogramelor din app_config.h. Adresa începe lângă imaginile aplicației GUI. Mărimea este generată în informații file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Actualizați dimensiunea atribuită a secțiunii de memorie numită res_sh_mem la 0x200000 prin redefinirea acesteia în app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 și setarea corespunzătoare în Proiect > Proprietăți > Construire C/C++ > Setări MCU.
  4. Adăugați dimensiunea pictogramei la dimensiunea totală a resursei încărcate din Flash în SDRAM în funcția APP_LoadResource() din principal file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Observa: Pentru a finaliza caracteristica de recunoaștere a feței, este necesar suportul pentru aplicația LVGL GUI. Funcțiile de apel invers UI din UI HAL de ieșire sunt apelate de aplicația LVGL GUI pentru gestionarea evenimentelor din ecranul UI. Pe de altă parte, UI de ieșire HAL apelează API-urile din aplicația LVGL GUI pentru a actualiza UI pentru a afișa rezultatul și starea. Dezvoltarea aplicației GUI LVGL este relativ independentă și a fost introdusă în Secțiunea 4.3.

4.1.5 Porniți dispozitivele și managerii HAL pentru recunoașterea feței
Algo-ul de viziune activat HAL și UI de ieșire HAL și managerii lor sunt porniți în principal file
lvgl_gui_face_rec_cm7.cpp în urma conversiilor de dezvoltare pe cadru, după cum urmează:

  1. Includeți antetul file legate de cei doi manageri HAL prin adăugarea liniei de cod:
    • #include ” fwk_output_manager.h ”
    • #include „fwk_vision_algo_manager.h”
  2. Declarați dispozitivele HAL:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Înregistrați dispozitivele HAL:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Inițializați managerii:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Începeți managerii:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Definiți prioritatea sarcinilor managerului:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Adăugați suport pentru baze de date faciale pe cadru
Datele înregistrate ale caracteristicilor feței sunt accesate în baza de date a feței stocată pe Flash printr-un pic file sistem. Pașii pentru adăugarea suportului pentru baza de date faciale sunt descriși mai jos.

Adăugați drivere pentru stocarea Flash
Copiați driverul FlexSPI pentru interfața Flash files fsl_flexspi.c și fsl_flexspi.h și driverul de criptare a datelor files fsl_caam.c și fsl_caam.h din calea SDK_2_13_0_MIMXRT1170-EVK\devices\MIMRX1176\drivers\ în folderul de drivere al example SW.

Adăugați suport la nivel de placă

  1. Adăugați definițiile FlexSPI utilizate pentru dispozitivul Flash de la bord în board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Copiați operatorii și configurațiile files ale dispozitivului Flash flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h și sln_flash_ops.h sub calea smart HMI\cafea folderul thesource\coffee_tof_machine\cm7\fig_machine\ex_config.ample SW.
    • Debifați „Excludeți resursa din build” în C/C++ Build> Setări după ce faceți clic dreapta pe filenumele s și deschiderea Proprietăților pentru a le permite să fie integrate în proiect.
  3. Schimbați antetul inclus filenumele sln_flash_config.h la sln_flash_config_w25q256jvs.h în sln_flash_config.c și flexspi_nor_flash_ops.h.
  4. Setați sursa de ceas FlexSPI1 în file clock_config.c referitor la aplicația aparat de cafea.

Adăugați adaptor și suport de nivel mediu

  1. Copiați filesln_flash.c, sln_flash.h, sln_encrypt.c și sln_encrypt.h ca drivere adaptoare pentru file sistem și aplicație de la calea smart HMI\coffee_machine\cm7\source\ la folderul sursa example. Actualizați noul files:
    • Debifați „Excludeți resursa din build” de pe ele pentru a construi.
    • Schimbați toate anteturile incluse file denumește sln_flash_config.h la sln_flash_config_w25q256jvs.h.
  2. Copiați folderul filesistem care conține API-urile pentru cei mici filesistem și driverul HAL de la smart HMI \coffee_machine\cm7\source\ la example SW. Și actualizați pentru noul folder:
    • Debifați „Excludeți resursa din build” pentru construirea acesteia.
    • Adăugați calea de includere pentru aceasta în setările proiectului: „${workspace_loc:/${ProjName}/filesistem}"
    • Schimbați antetul inclus file numele sln_flash_config.h la sln_flash_config_w25q256jvs.h și fica_definition.h la app_config.h în file sln_flash_littlefs.h.
  3. Copiați folderul littlefs care conține articolele de mijloc – little filesistem de la calea SDK_2_13_0_ MIMXRT1170-EVK\middleware\ la example SW. Și actualizați noul folder:
    • Debifați „Excludeți resursa din build” pentru construirea acesteia.
    • Adăugați calea de includere pentru aceasta în setările proiectului: „${workspace_loc:/${ProjName}/littlefs}”

Adăugați drivere HAL 

  • Există două dispozitive HAL - file sistemul și baza de date a feței HAL sunt acceptate pentru caracteristica de acces la baza de date și sunt deja implementate în cadru fără nicio modificare. Activați-le adăugând definițiile de mai jos în board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

Și schimbați numele bazei de date a feței pentru example: #define OASIS_FACE_DB_DIR „oasis_gui_face_rec”

Adăugați suport la nivel de aplicație

  1. Actualizați principalul file lvgl_gui_face_rec_cm7.cpp:
    • Includeți antetul file legate de Flash file manager HAL de sistem prin adăugarea liniei de cod: #include „fwk_flash.h”
    • Declarați și înregistrați file dispozitiv HAL de sistem:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Nota: The file Dispozitivul HAL de sistem trebuie să fie înregistrat înainte ca toți managerii de dispozitive să fie inițializați în funcția APP_InitFramework().
    • Apelați funcția BOARD_ConfigMPU() din APP_BoardInit() pentru a configura MPU.
  2. Setați file alocarea sistemului pe Flash în file app_config.h prin definirea definițiilor macro utilizate în file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define FICA_FILE_SYS_SIZE (0x280000)

Configurații
Unele coduri legate de Flash sunt executate în zona SRAM ITC pentru o performanță suficientă. Copiați link-script-urile folderului care conțin configurațiile linker-ului din calea smart HMI\coffee_machine\cm7\ în example SW.

Implementați o aplicație GUI LVGL
Dezvoltarea unei aplicații GUI LVGL bazată pe framework apelează API-urile de la UI HAL de ieșire și furnizează API-urile pentru a ieși UI HAL (Consultați Secțiunea 4.1.3 pentru implementarea UI HAL de ieșire).

Cu toate acestea, implementarea detaliată a unei aplicații GUI LVGL depinde de cerințele și designul aplicației. Aplicația GUI din acest example este conceput așa cum este descris la începutul secțiunii Secțiunea 4.

Mai jos sunt introducerile de implementare:

  1. Codurile personalizate sunt implementate în custom.c și custom.h date de GUI Guider ca interfață între proiectul GUI Guider și proiectul de sistem încorporat.
    •  Adăugați noile funcții numite gui_xxx() în custom.c pentru a realiza următoarele funcții:
      • Pentru ieșire UI HAL și aplicația GUI pentru a actualiza UI.
      • Pentru ca aplicația GUI să declanșeze evenimente prin apelarea funcțiilor de apel invers UI din UI HAL de ieșire.
        De example, noua funcție gui_event_face_rec_action() apelează funcții de apel invers UI pentru a gestiona unul dintre evenimentele de înregistrare a feței, recunoașterea feței și ștergerea utilizatorului declanșate din aplicația GUI atunci când se face clic pe butonul aferent.
        Notă: Funcția gui_set_virtual_face() a apelat în ieșirea UI HAL pentru preview modul trebuie implementat în custom.c:
    •  Clonează funcția gui_set_virtual_face() de la smart HMI\coffee_machine\cm4\custom\custom.c.
    •  Schimbați numele widget-ului home_img_cameraPreview la screen_img_camera_preview in functie.
    •  Implementați funcțiile de apel invers UI cu același prototip pentru toate cele din UI de ieșire HAL sub controlul definiției macro #ifndef RT_PLATFORM în custom.c pentru a fi compatibile cu proiectul GUI Guider deoarece aceste funcții din UI HAL de ieșire sunt dependente de platformă încorporată. În custom.c, acestea depind de simulatorul de pe ghidul GUI și sunt independente de platforma încorporată. De example, apelul de înregistrare a feței este implementat ca mai jos pentru simulatorul GUI Guider care rulează: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = fals; reveni; }
      Nota: Consultați același prototip al funcției introdus în pasul 6 din Secțiunea 4.1.3
      Definiția macro RT_PLATFORM este setată în setările de proiect ale MCUXpresso, așa cum se arată în Figura 7:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (14)
    • Declarați toate funcțiile denumite UI_xxx_Callback() și gui_xxx() în custom.h și adăugați custom.h inclus în smart_tlhmi_event_descriptor.h pentru a partaja API-urile GUI la ieșirea UI HAL.
  2. Dezvoltați GUI pe GUI Guider:
    • Clonează camera folderului preview care conține software-ul de proiect GUI Guider în folderul gui_guider din pachetul software de bază lvgl_gui_camera_preview_cm7. Schimbați numele asociat camera_preview a face_rec pentru noul example.
    • Copiați custom.c și custom actualizat de mai sus. h la noul software de proiect GUI Guider.
    •  Deschideți noul proiect face_rec pe GUI Guider. Actualizați după cum urmează:
      • Adăugați noul buton etichetat Ștergeți utilizatorul. Adăugați steagul Ascuns la acesta, astfel încât butonul să fie ascuns atunci când pornește aplicația GUI.
      • Adăugați linia de cod pentru apelarea API gui_event_face_rec_action() cu parametrul ID de eveniment diferit pe declanșatorul „Eliberat” în Setarea evenimentului tuturor butoanelor Înregistrare, Recunoaștere și Ștergere utilizator pentru declanșarea evenimentelor de înregistrare a feței, recunoaștere facială și ștergere utilizator. Figura 8 arată codul pentru evenimentul butonului Înregistrare:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (15)
  3. Actualizați codul generat din GUI Guider la proiectul MCUXpresso.
    • Înlocuiți conținutul cu excepția imaginilor folderului din folderul generat de proiectul MCUXpresso SW cu cele corespunzătoare din folderul generat de proiectul GUI Guider SW.

Nota: Pentru mai multe detalii despre modificarile introduse mai sus, verifica example software la https://mcuxpresso.nxp.com/appcodehub.

Verificări cu example proiect

Pentru a obține fostulampPachetul software care conține resursele și instrumentele pentru această notă de aplicație, vizitați: https://mcuxpresso.nxp.com/appcodehub. Deschide exampproiectul pe MCUXpresso IDE. Construiți și programați fișierul .axf file la adresa 0x30000000 și programați coșul de resurse file camera_preview_resource.bin la adresa 0x30800000.

Recunoașterea feței LVGL GUI example funcționează normal ca mai jos:

  • Preview: La pornire, fluxurile video captate de cameră apar în zona specifică a camerei preview pe ecranul GUI. Eticheta de stare afișează „Preview…”. Pentru detalii, vezi Figura 3. Butonul Șterge utilizator este ascuns. Când faceți clic pe zona din afara butoanelor și imaginilor, se afișează preview declarați ca mai sus după încheierea acțiunii de înregistrare sau recunoaștere a feței.
  • Înregistrare:
    • tartup: Când se face clic pe butonul Înregistrare, începe înregistrarea feței. Eticheta de stare se schimbă pentru a afișa „Înregistrare…”, dreptunghiul de ghidare a feței este albastru, iar bara de progres începe să arate progresul. Asigurați-vă că fața utilizatorului apare în dreptunghiul albastru de ghidare a feței pentru înregistrare.
    • succes: Eticheta de stare afișează „Înregistrare... OK” și numărul ID utilizator înregistrat, dreptunghiul de ghidare a feței devine roșu dacă înregistrarea feței are succes înainte ca progresul să fie afișat complet pe bară.
    • Eșec -> Timp expirat: eticheta de stare arată „Înregistrare... Timp expirat” dacă înregistrarea feței este încă eșuată când progresul este afișat complet pe bară.
    • Eșec -> Duplicare: Eticheta de stare arată „Înregistrare…Eșuată”, dreptunghiul de ghidare a feței devine verde dacă fața înregistrată este recunoscută înainte ca progresul să fie afișat complet pe bară.
  • ecognition:
    • Pornire: Când se face clic pe butonul Recunoaștere, pornește recunoașterea feței. Eticheta de stare se schimbă pentru a afișa „Recunoaștere…”, dreptunghiul de ghidare a feței este albastru, iar bara de progres începe să arate progresul. Asigurați-vă că fața utilizatorului este afișată în dreptunghiul albastru de ghidare a feței pentru înregistrare.
    • succes: Eticheta de stare afișează „Recunoaștere... OK” și numărul de identificare al utilizatorului recunoscut, dreptunghiul de ghidare a feței devine verde dacă recunoașterea feței are succes înainte ca progresul să fie afișat complet pe bară. În acel moment, apare butonul Șterge utilizator. Înseamnă că utilizatorului i se permite să fie șters doar atunci când este recunoscut.
    • ailure: Eticheta de stare afișează „Recunoaștere… Timp expirat” dacă recunoașterea feței este încă eșuată când progresul este afișat complet pe bară.
  • Ștergeți utilizatorul: Când se face clic pe butonul „Șterge utilizator”, după ce recunoașterea feței este reușită, eticheta de stare se schimbă pentru a afișa „Șterge utilizator... OK”, dreptunghiul de ghidare al feței devine albastru și progresul fiind afișat complet pe bară. Butonul Șterge utilizator este din nou ascuns. Fața/utilizatorul recunoscut este șters din baza de date. Înseamnă că această față/utilizator nu poate fi recunoscut până când nu este înregistrat din nou.

Notă despre codul sursă din document
ExampCodul de fișier afișat în acest document are următoarele drepturi de autor și licență BSD-3-Clause:

Copyright 2024 NXP Redistribuirea și utilizarea în forme sursă și binare, cu sau fără modificare, sunt permise cu condiția îndeplinirii următoarelor condiții:

  1. Redistribuirea codului sursă trebuie să păstreze notificarea de mai sus privind drepturile de autor, această listă de condiții și următoarea declinare a răspunderii.
  2. Redistribuirile în formă binară trebuie să reproducă notificarea privind drepturile de autor de mai sus, această listă de condiții și următoarea declinare a răspunderii din documentație și/sau alte materiale trebuie furnizate împreună cu distribuția.
  3. Nici numele deținătorului drepturilor de autor, nici numele contribuitorilor săi nu pot fi folosite pentru a susține sau promova produse derivate din acest software fără permisiunea scrisă prealabilă specifică.

ACEST SOFTWARE ESTE OFERIT DE DEȚINĂTORII DE DREPTURI DE AUTOR ȘI DE CONTRIBUITORI „CA AȘA ESTE” ȘI ORICE GARANȚII EXPRESE SAU IMPLICITE, INCLUSIV, DAR FĂRĂ A SE LIMITA LA, GARANȚII IMPLICITE DE VANTABILITATE ȘI ADECVARE PENTRU UN ANUMIT SCOP, SUNT RENUNCIATE. ÎN NICIO CAZ DEȚINĂTORUL DREPTURILOR DE AUTOR SAU CONTRIBUITORII NU VA FI RESPONSABILĂ PENTRU ORICE DAUNE DIRECTE, INDIRECTE, INCIDENTALE, SPECIALE, EXEMPLARE SAU CONSECUȚIONALE (INCLUSIV, DAR FĂRĂ A SE LIMITA LA, ACHIZIȚIA DE BUNURI SAU SERVICII DE SUBSTITUȚIE, PIERDERI DE PROFIT, DE UTILIZARE DE DATE; SAU ÎNTRERUPEREA AFACERII) Oricum ar fi cauzat și cu privire la ORICE TEORIE A RĂSPUNDERII, FIEA ÎN CONTRACT, RESPONSABILITATE STRICTĂ SAU DELICIT (INCLUSIVELE NEGLIGENȚEI SAU ALTE ALTE) RESULTATE ÎN ORICE MOD DIN UTILIZAREA ACESTUI SOFTWARE, CHIAR DACĂ VA AVISAT DE POSIBILITATEA ACESTEI.

Istoricul reviziilor

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

Informații juridice

Definiții
Ciornă — O stare de ciornă pe un document indică faptul că conținutul este încă în stare internăview și sub rezerva aprobării oficiale, care poate duce la modificări sau completări. NXP Semiconductors nu oferă nicio declarație sau garanție cu privire la acuratețea sau caracterul complet al informațiilor incluse într-o versiune preliminară a unui document și nu își asumă răspunderea pentru consecințele utilizării acestor informații.

Disclaimer

  • Garanție limitată și răspundere — Informațiile din acest document sunt considerate a fi exacte și de încredere. Cu toate acestea, NXP Semiconductors nu oferă nicio declarație sau garanție, expresă sau implicită, cu privire la acuratețea sau caracterul complet al acestor informații și nu va avea nicio răspundere pentru consecințele utilizării acestor informații. NXP Semiconductors nu își asumă responsabilitatea pentru conținutul acestui document dacă este furnizat de o sursă de informații din afara NXP Semiconductors.
    În niciun caz, NXP Semiconductors nu va fi răspunzătoare pentru orice daune indirecte, incidentale, punitive, speciale sau consecutive (inclusiv – fără a se limita – profituri pierdute, economii pierdute, întrerupere a activității, costuri legate de îndepărtarea sau înlocuirea oricăror produse sau taxe de reluare), indiferent dacă sau nu, astfel de daune se bazează pe delict (inclusiv neglijență), garanție, încălcare a contractului sau orice altă teorie legală.
    În ciuda oricăror daune pe care clientul le-ar putea suferi din orice motiv, răspunderea totală și cumulativă a NXP Semiconductors față de client pentru produsele descrise aici va fi limitată în conformitate cu Termenii și condițiile de vânzare comercială a NXP Semiconductors.
  • Dreptul de a face modificări — NXP Semiconductors își rezervă dreptul de a aduce modificări informațiilor publicate în acest document, inclusiv, fără limitare, specificațiile și descrierile produselor, în orice moment și fără notificare. Acest document înlocuiește și înlocuiește toate informațiile furnizate înainte de publicarea acestuia.
  • Adecvare pentru utilizare — Produsele NXP Semiconductors nu sunt proiectate, autorizate sau garantate pentru a fi adecvate pentru utilizarea în sisteme sau echipamente critice pentru viață sau pentru siguranță, nici în aplicații în care defecțiunea sau funcționarea defectuoasă a unui produs NXP Semiconductors poate avea ca rezultat în mod rezonabil vătămare corporală, deces sau daune grave asupra proprietății sau mediului. NXP Semiconductors și furnizorii săi nu își asumă nicio responsabilitate pentru includerea și/sau utilizarea produselor NXP Semiconductors în astfel de echipamente sau aplicații și, prin urmare, această includere și/sau utilizare este pe riscul propriu al clientului.
  • Aplicații — Aplicațiile descrise aici pentru oricare dintre aceste produse au doar scop ilustrativ. NXP Semiconductors nu oferă nicio declarație sau garanție că astfel de aplicații vor fi potrivite pentru utilizarea specificată fără teste sau modificări suplimentare.
    Clienții sunt responsabili pentru proiectarea și funcționarea aplicațiilor și produselor lor folosind produsele NXP Semiconductors, iar NXP Semiconductors nu își asumă nicio responsabilitate pentru orice asistență cu aplicațiile sau proiectarea produsului clientului. Este responsabilitatea exclusivă a clientului să determine dacă produsul NXP Semiconductors este potrivit și potrivit pentru aplicațiile și produsele planificate ale clientului, precum și pentru aplicarea și utilizarea planificate a clienților terți ai clientului. Clienții ar trebui să ofere garanții de proiectare și operare adecvate pentru a minimiza riscurile asociate cu aplicațiile și produsele lor. NXP Semiconductors nu acceptă nicio răspundere legată de orice neîndeplinire, daune, costuri sau problemă care se bazează pe orice slăbiciune sau nerespectare a aplicațiilor sau produselor clientului sau a aplicației sau utilizării de către clienții terți ai clientului. Clientul este responsabil pentru efectuarea tuturor testelor necesare pentru aplicațiile și produsele clientului care utilizează produsele NXP Semiconductors pentru a evita o implicită a aplicațiilor și a produselor sau a aplicației sau a utilizării de către clienții terți ai clientului. NXP nu își asumă nicio răspundere în acest sens.
  • Termeni si conditii de vanzare comerciala — Produsele NXP Semiconductors sunt vândute în conformitate cu termenii și condițiile generale de vânzare comercială, așa cum sunt publicate la https://www.nxp.com/profile/termeni, cu excepția cazului în care sa convenit altfel într-un acord individual scris valabil. În cazul în care se încheie un acord individual, se vor aplica numai termenii și condițiile acordului respectiv. NXP Semiconductors se opune în mod expres aplicării termenilor și condițiilor generale ale clientului cu privire la achiziționarea produselor NXP Semiconductors de către client.
  • Controlul exportului — Acest document, precum și articolele descrise aici pot face obiectul reglementărilor privind controlul exporturilor. Exportul poate necesita o autorizație prealabilă din partea autorităților competente.
  • Adecvarea pentru utilizare în produse care nu sunt calificate pentru automobile — Cu excepția cazului în care acest document precizează în mod expres că acest produs specific NXP Semiconductors este calificat pentru automobile, produsul nu este potrivit pentru utilizare în automobile. Nu este nici calificat, nici testat în conformitate cu cerințele de testare sau aplicație auto. NXP Semiconductors nu își asumă nicio responsabilitate pentru includerea și/sau utilizarea produselor care nu sunt calificate pentru automobile în echipamente sau aplicații auto.
    În cazul în care clientul utilizează produsul pentru proiectare și utilizare în aplicații auto în conformitate cu specificațiile și standardele auto, clientul (a) va folosi produsul fără garanția NXP Semiconductors a produsului pentru astfel de aplicații, utilizare și specificații auto și ( b) ori de câte ori clientul folosește produsul pentru aplicații auto dincolo de specificațiile NXP Semiconductors, această utilizare va fi exclusiv pe propriul risc și (c) clientul despăgubește pe deplin NXP Semiconductors pentru orice răspundere, daune sau pretenții de produs eșuate care rezultă din proiectarea și utilizarea clientului. produsul pentru aplicații auto dincolo de garanția standard a NXP Semiconductors și de specificațiile produsului NXP Semiconductors.
  • Traduceri — O versiune non-engleză (tradusă) a unui document, inclusiv informațiile juridice din acel document, este doar pentru referință. Versiunea în limba engleză va prevala în cazul oricărei discrepanțe între versiunile traduse și cele în limba engleză.
  • Securitate — Clientul înțelege că toate produsele NXP pot fi supuse unor vulnerabilități neidentificate sau pot suporta standarde sau specificații de securitate stabilite cu limitări cunoscute. Clientul este responsabil pentru proiectarea și funcționarea aplicațiilor și produselor sale pe parcursul întregului ciclu de viață pentru a reduce efectul acestor vulnerabilități asupra aplicațiilor și produselor clientului. Responsabilitatea Clientului se extinde și la alte tehnologii deschise și/sau proprietare acceptate de produsele NXP pentru utilizare în aplicațiile clientului. NXP nu își asumă răspunderea pentru nicio vulnerabilitate. Clientul ar trebui să verifice în mod regulat actualizările de securitate de la NXP și să urmărească în mod corespunzător. Clientul trebuie să selecteze produse cu caracteristici de securitate care îndeplinesc cel mai bine regulile, reglementările și standardele aplicației vizate și va lua deciziile finale de proiectare cu privire la produsele sale și este singurul responsabil pentru conformitatea cu toate cerințele legale, de reglementare și de securitate referitoare la produsele sale, indiferent de a oricărei informații sau asistență care poate fi furnizată de NXP.

NXP are o echipă de răspuns la incidente de securitate a produselor (PSIRT) (accesabilă la PSIRT@nxp.com) care gestionează investigarea, raportarea și lansarea soluției pentru vulnerabilitățile de securitate ale produselor NXP.
NXP BV — NXP BV nu este o companie care operează și nu distribuie sau vinde produse.

Mărci comerciale
Observa: Toate mărcile la care se face referire, denumirile de produse, denumirile de servicii și mărcile comerciale sunt proprietatea proprietarilor respectivi.

NXP — cuvântul și sigla sunt mărci comerciale ale 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 — sunt mărci comerciale și/sau mărci comerciale înregistrate ale Arm Limited (sau ale filialelor sau afiliaților acesteia) în SUA și/sau în altă parte. Tehnologia aferentă poate fi protejată de oricare sau de toate brevetele, drepturile de autor, modelele și secretele comerciale. Toate drepturile rezervate.

  • i.MX — este o marcă comercială a NXP BV
  • J-Link — este o marcă comercială a SEGGER Microcontroller GmbH.

Microsoft, Azure și ThreadX — sunt mărci comerciale ale grupului de companii Microsoft.

Vă rugăm să fiți conștienți de faptul că în secțiunea „Informații legale” au fost incluse notificări importante referitoare la acest document și la produsul (produsele) descrise aici.

© 2024 NXP BV
Pentru mai multe informații, vă rugăm să vizitați: https://www.nxp.com

  • Data eliberarii: 19 aprilie 2024
  • Identificatorul documentului: AN14263

FAQ

Î: Care este scopul principal al acestui produs?
R: Scopul principal este de a activa funcția de recunoaștere a feței folosind un model de algoritm de viziune AI&ML cu o simplă GUI LVGL examppe placa SLN-TLHMI-IOT.

Î: Cum pot dezvolta dezvoltatorii să beneficieze de această notă de aplicație?
R: Dezvoltatorii pot învăța cum să implementeze recunoașterea feței pe cadru pas cu pas, folosind exemplul furnizatampÎnțelegeți și înțelegeți managerii de dispozitive, dispozitivele HAL și mecanismele de evenimente implicate.

Documente/Resurse

NXP AN14263 Implementați recunoașterea feței LVGL GUI pe Framewor [pdfGhid de utilizare
AN14263 Implementați Recunoașterea feței LVGL GUI pe cadru, AN14263, Implementați Recunoașterea feței LVGL GUI pe cadru, Recunoașterea feței LVGL GUI pe cadru, Recunoașterea feței pe cadru, Recunoașterea pe cadru, Framewor

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *