nxp-logo

NXP AN14263 Efektivigu LVGL GUI Vizaĝrekonon sur Framewor

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

Produktaj Informoj

Specifoj

  • Produkta Nomo: LVGL GUI Vizaĝa Rekono sur Kadro
  • Dokumenta Revizio: 1 – 19 aprilo 2024
  • Ŝlosilvortoj: Vizaĝrekono, LVGL GUI, Kadro

Produktaj Uzado-Instrukcioj

  1. Finiteview
    Ĉi tiu produkto ebligas AI&ML-vidan algoritmon-modelon por vizaĝrekono en kadro por efektivigi vizaĝrekonan funkcion per simpla LVGL GUI eksample sur la SLN-TLHMI-IOT-tabulo.
  2. Kadro Superview
    La solvprogramaro estas desegnita ĉirkaŭ la kadra arkitekturo, kiu inkluzivas aparatajn administrantojn respondecajn pri administrado de aparatoj, HAL-aparatoj por abstrakti subestajn detalojn, kaj eventojn por komunikado inter malsamaj aparatoj.
  3. Karakterizaĵoj
    La produkto ebligas la efektivigon de vizaĝrekona funkcio per fotilo preview sur la GUI-ekrano kun butonoj por ekigi vizaĝregistradon, rekonon kaj forigon. Registritaj vizaĝdatenoj estas stokitaj sur Flash per a file sistemo.
  4. Apliko Noto Enhavo
    La aplika noto prezentas ekranon de LVGL GUI kun fotilo antaŭview kaj butonoj por vizaĝ-rilataj agoj. Ĝi helpas programistojn kompreni la kadron kaj kiel efektivigi vizaĝrekonon uzante la provizitan eksample.

Finiteview

NXP lanĉis solvo-disvolvan kompleton nomitan SLN-TLHMI-IOT, kiu fokusiĝas al inteligentaj HMI-aplikoj. Ĝi ebligas inteligentan HMI kun ML-vizio, voĉo kaj grafika UI efektivigita sur unu NXP i.MX RT117H MCU. Surbaze de la SDK, la solvprogramaro estas konstruita sur dezajno nomita kadro kiu subtenas flekseblajn dezajnojn kaj personigon de vidaj kaj voĉaj funkcioj. Por helpi uzantojn pli bone uzi la programaron, iuj bazaj dokumentoj estas provizitaj, ekzample, la uzant-gvidilo pri programaro. La gvidilo prezentas la bazan programaran dezajnon kaj arkitekturon de la aplikoj kovrantaj ĉiujn komponantojn de la solvo inkluzive de la kadro por helpi la programistojn pli facile kaj efike efektivigi siajn aplikojn uzante la SLN-TLHMI-IOT.
Por pliaj detaloj pri la solvo kaj koncernaj dokumentoj, vizitu la web paĝo de la NXP EdgeReady Smart HMI Solution Bazita sur i.MX RT117H kun ML Vision, Voĉo kaj Grafika UI. Tamen, ankoraŭ ne estas tiel facile por la programistoj efektivigi siajn inteligentajn HMI-aplikaĵojn referencante al ĉi tiuj bazaj gvidiloj. Serio da aplikaĵnotoj estas planitaj por helpi studi la evoluon sur la kadro paŝon post paŝo. Ĉi tiu aplika noto baziĝas sur Implement LVGL GUI Camera Preview pri Kadro (dokumento AN14147). Ĉi tiu aplikaĵa noto priskribas kiel ebligi la modelon de AI&ML-vizio-algoritmo por vizaĝrekono sur la kadro por efektivigi la vizaĝrekonan funkcion per fotilo antaŭview sur la GUI-ekrano kun simpla LVGL GUI ekzample sur la SLN-TLHMI-IOT-tabulo. En la aplika noto, la ekzample prezentas LVGL GUI-ekranon kun fotilo antaŭview kaj iuj butonoj por ekigi vizaĝregistradon, rekonon kaj forigon. La registritaj vizaĝdatenoj estas stokitaj sur Flash per iomete file sistemo.

Al alta nivelo, la aplikaĵa noto enhavas la subajn enhavojn:

  • Ebligu la vizaĝrekonan funkcion sur la kadro.
  • Aldonu vizaĝdatumbazan subtenon sur la kadro per file sistemo sur Flash.
  • Efektivigu la apon LVGL GUI. Per la supraj enkondukoj, ĉi tiu dokumento helpas la programistojn:
  • Komprenu la kadron kaj la inteligentan HMI-solvoprogramon pli profunde.
  • Disvolvu ilian vizaĝrekonon de AI&ML en kadro per la LVGL GUI-aplikaĵo.

Kadro finitaview
La solvprogramaro estas ĉefe dizajnita ĉirkaŭ la uzo de la kadra arkitekturo kiu estas kunmetita de pluraj malsamaj partoj:

  • Aparataj administrantoj - la kerna parto
  • Aparatoj de Abstraktado-Tavolo (HAL).
  • Mesaĝoj/Okazaĵoj

Kiel montrite en Figuro 1, la superview de la mekanismo de la kadro estas:

Aparataj administrantoj respondecas pri administrado de aparatoj uzataj de la sistemo. Ĉiu aparato-tipo (enigo, eligo, ktp) havas sian propran tip-specifan aparatadministrilon. Kun aparato-administranto komenciĝanta post kiam la aparatoj estas registritaj al ĝi, ĝi atendas kaj kontrolas mesaĝon por transdoni datumojn al la aparatoj kaj aliaj administrantoj post pravalorigo kaj ekfunkciigo de la registritaj aparatoj. La HAL-aparatoj estas skribitaj aldone al la malsupra-nivela ŝoforkodo, helpante pliigi kodkompreneblecon abstraktante multajn el la subestaj detaloj.

Eventoj estas rimedo per kiu informoj estas komunikitaj inter malsamaj aparatoj per siaj administrantoj. Kiam okazaĵo estas ekigita, la aparato kiu unue ricevis la okazaĵon komunikas tiun okazaĵon al sia manaĝero, tiam en victurno ĝi sciigas aliajn manaĝerojn nomumitajn por ricevi la okazaĵon.

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

La arkitektura dezajno de la kadro estis centrita sur tri primaraj celoj:

  1. Facileco de uzado
  2. Fleksebleco/Portebleco
  3. Agado

La kadro estas desegnita kun la celo akceli la tempon por surmerkatigi vizion kaj aliajn maŝinlernajn aplikojn. Por certigi rapidan tempon por surmerkatigi, estas kritike, ke la programaro mem estas facile komprenebla kaj modifita. Tenante ĉi tiun celon en menso, la arkitekturo de la kadro estas facile modifi sen esti limiga, kaj sen koste de rendimento.
Por pliaj detaloj pri la kadro, vidu Smart HMI Software Development User Guide (dokumento MCU-SMHMI-SDUG).

Malpeza kaj Multflanka Grafika Biblioteko (LVGL)
LVGL (Malpeza kaj Versatila Grafika Biblioteko) estas senpaga kaj malfermfonta grafika biblioteko provizanta ĉion, kion vi bezonas por krei enigitan GUI kun facile uzeblaj grafikaj elementoj, belaj vidaj efikoj kaj malalta memorspuro.

GUI-Gvidisto
GUI Guider estas uzant-amika grafika uzantinterfaca evoluilo de NXP, kiu ebligas rapidan disvolviĝon de altkvalitaj ekranoj kun la malfermfonta LVGL-grafika biblioteko. La drag-and-drop-redaktilo de GUI Guider faciligas uzi multajn funkciojn de LVGL kiel fenestraĵojn, kuraĝigojn kaj stilojn por krei GUI kun minimuma aŭ neniu kodado.

Per la klako de butono, vi povas ruli vian aplikaĵon en ŝajniga medio aŭ eksporti ĝin al celprojekto. Generita kodo de GUI Guider povas facile esti aldonita al via projekto, akcelante la disvolvan procezon kaj permesante al vi perfekte aldoni enigitan uzantinterfacon al via aplikaĵo. GUI Guider estas libere uzebla kun la ĝeneralaj celoj kaj interkruciĝaj MCU-oj de NXP kaj inkluzivas enkonstruitajn projektoŝablonojn por pluraj subtenataj platformoj. Por lerni pli pri LVGL kaj GUI-disvolviĝo sur GUI Guider, kontrolu Luma kaj Versatile Graphics Library kaj GUI Guider.

Disvolva medio

Unue, preparu kaj agordu la aparataron kaj programaron por efektivigi la eksample sur la kadro.

Aparataro medio
La aparatara medio estas starigita por kontroli la eksample:

  • La inteligenta HMI-disvolva ilaro bazita sur NXP i.MX RT117H (la SLN_TLHMI_IOT-aro)
  • SEGGER J-Link kun 9-stifta Cortex-M-adaptilo kaj V7.84a aŭ pli nova versio de la ŝoforo

Softvara medio
La softvarmedio estas starigita por disvolvi la eksample:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – ekzampla kodo de la dua aplikaĵo noto kiel la baza programaro de la evoluo. Por detaloj, vidu https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 - kiel la koda rimedo por la evoluo.
  • SLN-TLHMI-IOT-programaro V1.1.2 - inteligenta HMI-fontokodo publikigita sur la NXP GitHub-deponejo kiel la koda rimedo por la evoluo. Por detaloj, vidu: GitHub - NXP/mcu-smhmi ĉe v1.1.2

Por detaloj pri la akiro kaj agordo de la programaro, vidu: Komenci kun la SLN-TLHMI-IOT.

Vida arkitekturo sur kadro

La vizio-arkitekturo sur la kadro estas montrita en Figuro 2. La vizio-algo HAL (OASIS_HAL) havas la subajn procezojn:

  • Faru vizaĝon registradon kaj rekonon per la AI&ML-vida algoritmo-modelo post ricevi la rilatajn eventojn de la eligo UI HAL. Sciigu la konkludrezultojn de la algoritmomodelo al la eligo UI HAL.
  • Aliras (aldoni, forigi...) la datumbazon de vizaĝtrajtoj bazitaj sur la eta file sistemo vokante la APIojn de FaceDB HAL post ricevi la rilatajn eventojn de la eligo UI HAL.
  • Petu la fotilan videokadron de la fotilo HAL kiam vi faras vizaĝregistradon kaj rekonon.

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

Efektivigu vizaĝrekonon sur la kadro

La LVGL GUI vizaĝrekono ekzample (la ekzample estas provizita poste) sur la kadro estas efektivigita surbaze de la ekzample kodoj de Implement LVGL GUI Camera Preview pri Kadro (dokumento AN14147).

Por pruvi la vizaĝrekonon en la eksample, la baza funkcio de la GUI-apliko (vidu la ĉefan ekranon en Figuro 3) estas desegnita kiel priskribite sube:

  • La GUI-aplikaĵo ekigas la vizaĝregistradon aŭ rekonan eventon al la eligo UI HAL alklakante la butonon Registrado aŭ Rekono. Kaj la eligo UI HAL sciigas la eventon de aldono de uzanto al la vizio algo HAL post kiam la vizaĝregistrado estas sukcesa.
  • La GUI-aplikaĵo ekigas la eventon de forigo de uzanto al la eligo UI HAL alklakante la butonon Forigi Uzanton post kiam la vizaĝo de la uzanto estas rekonita.
  • La GUI-aplikaĵo ekigas la eventon ĉesigi la oazan algon kuri al la eligo UI HAL kiam vi alklakas la ekranon ekster la butonoj kaj bildoj.

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

Preparu la programaron por la efektivigo de la eksample.

  • Klonu la bazan programaron lvgl_gui_camera_preview_cm7. Ŝanĝu la projektonomon kaj la ĉefan filenomo al lvgl_gui_face_rec_cm7.
  • La kadro bezonas esti ĝisdatigita en la programaro ĉar la fontkodoj por la kadrokerno komencis esti publikaj en GitHub ekde la versio 1.1.2.
  • Anstataŭigi la kadran dosierujon per la kopio de V1.1.2 de GitHub krom la files fwk_log.h kaj fwk_common.h sub inc\ ĉar ili estis modifitaj por la serio de aplikaĵa noto. La operacioj estas montritaj en Figuro 4:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (11)
  • Forigu la dosierujon framework_cm7 sub la grupo libs kaj forigu la bibliotekon framework_cm7 kaj ĝian serĉvojon agordita en Projekto> Propraĵoj> C/C++ Konstruo> agordoj> Ilaj Agordoj> MCU C++ Linker> Bibliotekoj ĉar la fontkodo de la kerno estas provizita.

Ebligu vizaĝrekonan funkcion sur kadro
La vizaĝrekono-trajto estas konstruita sur la ML-vizia algoritmo-modelo provizita kiel senmova biblioteko - oazo lite rultempa biblioteko de NXP. La biblioteko estas eta, tre efika, personecigita kaj optimumigita AI-biblioteko. La modelo inkluzivas vizaĝ-detekton, vizaĝrekonon, vitro-detekton kaj vivecon. Ĝi ĉefe provizas la API OASISLT_run_extended () por ruli la vizaĝrekonan dukton dum ĝi ĝisdatigas rezultojn al la alvokanto per evento-revokoj, kaj aldoni/ĝisdatigi/forigi vizaĝojn en la datumbazo per la vizaĝdatumbazo-revokoj post specifado de la fontokadra informo, revokoj kaj memoro. naĝejo uzata de la biblioteko per vokado de alia API OASISLT_init() ĉe inicialigo. La voko de la APIoj kaj la revokfunkcioj estas efektivigitaj en la vizio algo HAL de la kadro.

Aldonu vision algo modelo biblioteko

  1. Kopiu dosierujon oazon enhavantan la bibliotekon kaj la rilatan kaplinion file el smart HMI\coffee_machine\cm7\libs\ en la dosierujojn libs de la ekzample SW.
  2. Aldonu la serĉvojon de la kaplinio file en Projekto > Propraĵoj > C/C++ Konstruo > agordoj > Ilaj Agordoj > MCU C-kompililo > Inkluzivas kaj MCU C++-kompililo > Inkludas: "${workspace_loc:/${ProjName}/libs/oasis/include}"
  3. Aldonu la lib kaj ĝian serĉvojon sur Projekto > Propraĵoj > C/C++ Konstruo > agordoj > MCU C+ + Linker > Bibliotekoj: liboasis_lite2D_DEFAULT_117f_ae.a "${workspace_loc:/${ProjName}/libs/oasis}" kaj la makro-difino al ebligu la funkcion en Projekto > Propraĵoj > C/C++ Konstruo > agordoj > Ilaj Agordoj > MCU C-kompililo > Antaŭprocesoro kaj MCU C++-kompililo > Antaŭprocesoro: SMART_TLHMI_2D

Ebligu vidon algo HAL
La vizio-algo HAL kondukas la vizio-algomodelon por funkcii kaj respondas la rezultojn al la UI-produktaĵo HAL post ricevado de la okazaĵoj de ĝi.

Por ebligi ĝin, klonu la ekzistantan similan HAL-ŝoforon file kie la malsupraj funkcioj estas efektivigitaj:

  • Efektivigu la revokojn de vizaĝdatumbaza operacioj kaj evento-traktado.
  • Vetu la vidan algon por funkcii per la API-oj de la oazo-biblioteko.
  • Aliri uzantvizaĝan datumbazon kaj aplikan datumbazon (ĝi ne estas bezonata en la eksample).
  • Ricevu eventojn de kaj sendu rezultojn por eligi UI HAL.

La ĉefaj laboroj por efektivigi la HAL por la eksampili estas:

  • Klonu la ekzistantan similan HAL-ŝoforon file kaj ŝanĝu la rilatajn nomojn.
  • Forigu la kodojn rilatajn al la aplikaj datumoj-operacioj.
  • Ĝisdatigu la difinojn kaj funkciojn por trakti la eventojn de la eligo UI HAL laŭ la eksampdezajno.
  • Aldonu la agordojn postulatajn en oazo-inicialigo.

La detalaj paŝoj estas kiel sube:

  1. Klonu hal_vision_algo_oasis_coffeemachine.c. Ŝanĝu la filenomo al hal_vision_algo_oasis_guifacerec.c. Kaj anstataŭigu ĉiujn kordojn CoffeeMachine per GUIFaceRec en la file.
  2. Forigu la kodojn enhavantajn la ĉenon coffeedb (ne distinga majuskloj) rilataj al la aplika datumbazo, ekz.ample, #include hal_sln_coffeedb.h.
  3. Modifi la funkcion HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() por pritrakti la eventojn de la eligo UI HAL.
    • Ŝanĝu la eventodifinon kEventFaceRecId_RegisterCoffeeSelection al kEventFaceRecId_RegisterUserFace kaj la strukturoĉeno regCoffeeSelection al regGUIFaceRec por la aranĝo de evento por aldoni novajn vizaĝtrajtodatumojn al la datumbazo.
    • Montri la norman procezon de la vizaĝrekonaj agoj en la eksample, modifi la uzadon en la kazo de kEventFaceRecID_OasisSetState kun la difinoj de la statoj:
      • koASISLiteState
      • Registrado koASISLiteState
      • Rekono koASISLiteState
      • Haltis
  4. Aldonu kaj modifu la difinojn de la eventoj menciitaj en la supra paŝo.
    • Kopiu la kaplinion file smart_tlhmi_event_descriptor.h el smart HMI\coffee_machine \cm7\source\event_handlers\ en la dosierujon de la eksample SW. Ĝisdatigu la file kiel sube:
    • Ŝanĝu la eventodifinon kEventFaceRecId_RegisterCoffeeSelection al kEventFaceRecId_RegisterUserFace en la enumtipo _event_smart_tlhmi_id kaj la strukturoĉeno regCoffeeSelection al regGUIFaceRec en la struct _event_smart_tlhmi. Do, ŝanĝu la struct register_coffee_selection_event_t por regCoffeeSelection al register_gui_facerec_event_t.
    • Forigu la aliajn enhavojn uzatajn por la kafmaŝino-apo, ekzample, la kodlinio pri voĉo: #inkluzivi “hal_event_descriptor_voice.h”.
    • Aldonu la tipojn kOASISLiteState_Stopped kaj kOASISLiteState_Running al la enum-tipo oasis_lite_state_t en hal_vision_algo.h sub framework>hal>vision en la projekto kiel sube:
      typedef enum _oazo_lite_state {
      • koASISLiteState
      • Kurante, koASISLiteState
      • Haltis, koASISLiteState
      • Rekono,
      • koASISLiteState
      • Registrado, koASISLiteState
      • DeRegistration, koASISLiteState
      • RemoteRegistration, kOASISLiteState
      • grafo
    • Uzu la supre ĝisdatigitan struct oasis_lite_state_t por rafini la struct oasis_state_event_t en hal_event_descriptor_face_rec.h sub framework>hal>vision en la projekto kiel sube: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oazo_ŝtato_okazaĵo_t;
  5. Ŝanĝu ĉiujn kEventInfo_Remote al kEventInfo_Local por sendado de eventoj de la vizio. algo HAL al aliaj HAL-oj, kiuj funkcias sur la sama kerno, kiel ununura kerno anstataŭ du-kerno estas uzata en la eksample.
  6. Aldonu kaj modifu la subajn agordojn por oazo-inicialigo en OASISLT_init():
    • Aldonu la makrodifinojn kaj memorsekciojn por la videokadro en board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
      • #difini 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, aligbajtoj) \
      • __atributo__((sekcio(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
      • __atributo__((vicigitaj (vicigitaj bajtoj)))
    • Agordu la memorasignon al la supra memorsekcio fb_sh_mem sur Projekto> Propraĵoj> C/C++ Konstruo> MCU-Agordoj montritaj en Figuro 5:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (12)
    • Deklaru la tutmondan variablon g_DTCOPBuf en lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Daŭre aldonu la difinojn uzatajn en la ĉi-supra variablo:
    • Difinu la supran sekcion en board_define.h:
      • #difini AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, aligbajtoj) \
      • atributo__((sekcio(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • atributo__((vicigitaj (vicigitaj bajtoj)))
    • Inkluzivi la kaplinion file hal_vision_algo.h enhavanta la makrodifinon DTC_OPTIMIZE_BUFFER_SIZE en app_config.h inkluzivita en lvgl_gui_face_rec_cm7.cpp.
  7. Agordu la variablon s_debugOption al vera por montri la progresan staton pri vizaĝrekono.
  8. Aldonu la serĉvojon de la kaplinio files de la vizio HAL sur Projekto > Propraĵoj > C/C++ Konstruo > agordoj > Ilaj Agordoj > MCU C-kompililo > Inkluzivas kaj MCU C++-kompililo > Inkludas: "${workspace_loc:/${ProjName}/framework/hal/vision}"
  9. Aldonu la suban difinon por ebligi vizion algo HAL en board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Ebligu eliron UI HAL
La eligo UI HAL sciigas la eventojn al la vizio-algo HAL kaj respondas al la konkludaj rezultoj de la vizio-algo HAL. Kun la GUI-apliko, la eventoj estas ĝenerale deĉenigitaj de la programo kaj la rezultoj estas montritaj en la programo.

Por ebligi ĝin, klonu la ekzistantan similan HAL-ŝoforon file kie ĝenerale la malsupraj funkcioj estas efektivigitaj:

  • Sciigu la eventojn pri vizaĝrekono kaj datumbaza aliro.
  • Efektivigu la revokojn por la GUI-aplikaĵo por ekigi la eventojn.
  • Pritraktu la konkludrezultojn de la vizio-algomodulo.
  • Montru la procezon kaj rezultojn de la traktado de eventoj sur la UI per la progresa stango kontrolita per la tempigiloj kaj vizaĝgvida rektangulo.

La ĉefaj laboroj por efektivigi la HAL por la eksampLe uzataj en ĉi tiu dokumento estas:

  • Klonu la ekzistantan similan HAL-ŝoforon file kaj ŝanĝu la rilatajn nomojn.
  • Forigu la kodojn rilatajn al la app.
  • Ĝisdatigu la funkciojn por la evento-sciigo kaj rezulto-respondo laŭ la eksampdezajno.
  • Aldonu la revokojn por la GUI-aplikaĵo por ekigi la eventojn.

La detalaj paŝoj estas kiel sube:

  1. Klonu hal_output_ui_coffee_machine.c. Ŝanĝu la filenomo al hal_ output_ui_guifacerec.c.
  2. Anstataŭigu ĉiujn kordojn CoffeeMachine per GUIFaceRec en la file.
  3. Forigu la kodojn rilatajn al la app - kafmaŝino.
    • Forigu la funkciojn WakeUp() kaj _StandBy() kaj la rilatajn kodojn (povas serĉi la ĉenon wake_up kaj standby por ili).
    • Forigi preview reĝimaj eventoj pritraktantaj rilatajn kodojn en HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Forigu la funkciojn UI_xxx_Callback() kaj la kodojn enhavantajn la ĉenon gui_ kaj ekranon rilatajn al la GUI de la kafmaŝino krom gui_set_virtual_face() por la preview reĝima trajto.
    • Forigu ĉiujn kodojn implikitajn kun la variabloj s_IsWaitingAnotherSelection kaj s_IsWaitingRegisterSelection rilataj al la kafmaŝino-aplikaĵo.
    • Forigu la kodojn rilatajn al voĉo, aŭdio kaj lingvo. Por ekzample:
      • #include "hal_voice_algo_asr_local.h",
      • #inkluzivi "hal_event_descriptor_voice.h"
  4. Por la diversaj evento-sciigo, efektivigu la novajn funkciojn _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec(), kaj DeregisterGUIFaceRec() rilatante al la funkcioj _StopFaceRec(), _RegisterCoffeeSelection(), kaj DeregisterCoffeeSelection() antaŭ ol deeSelection() .
    • La _OutputManagerNotify() efektivigas la bazan eventan eligfunkcion por sendi eventon al la vizio-algo HAL. La subaj funkcioj nomas ĝin por sendi siajn proprajn eventojn.
    • La _SetFaceRec() sendas la eventon kEventFaceRecID_OasisSetState por ekigi la vizian algon por vizaĝregistrado, rekono, kaj ĉesigi la algon.
    • La _RegisterGUIFaceRec() sendas la eventon kEventFaceRecId_RegisterGUIFaceRec kiu estas difinita en smart_tlhmi_event_descriptor.h por aldoni vizaĝtrajton-datumojn al la datumbazo kiam registrado estas bone.
    • La DeregisterGUIFaceRec() sendas la eventon kEventFaceRecID_DelUser por forigi la vizaĝtrajton-datumojn el la datumbazo kiam vi pasas la vizaĝrekonon.
  5. Ĝisdatigu la kodojn por fari la respondajn agojn inkluzive de refreŝigi la GUI vokante la APIojn de la LVGL GUI-aplikaĵo por la konkludaj rezultoj de vizaĝregistrado kaj rekono en la funkcio _InferComplete_Vision() laŭ la eksa.ampla dezajno de le. Por ekzample, kiam vizaĝregistrado estas sukcesa,
    • Ĉesu montri la progreson vokante _FaceRecProcess_Stop();
    • Ĉesigu la vizaĝregistradon vokante _SetFaceRec(kOASISLiteState_Stopped);
    • Montru la sukcesan rezulton sur la GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Registri la vizaĝajn datumojn al la datumbazo: _RegisterUserFace(s_UserId);
  6. Aldonu UI-revokfunkciojn por trakti la eventojn: preview, vizaĝregistrado, rekono kaj forigo de uzanto ekigita de la GUI. Por ekzample, la vizaĝregistra revoko: void UI_Registration_Callback (){ _SetFaceRec (kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • Kaj aldonu la funkciojn _FaceRecProcess_Start() kaj _FaceRecProcess_Stop() por montri la progreson kaj staton en la malsamaj eventoj kaj rezultoj.
    • Ĝisdatigu la tempigilon ISR-revokan funkcion _SessionTimer_Callback () por trakti la kazon de tempo-eksplodo per vokado: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Aldonu la subajn difinojn por ebligi UI-eligon HAL en board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Noto:
Por pli bone prezenti la vizaĝrekonan funkcion, konservu la funkcion por montri la procezon kaj rezultojn de vizaĝrekono en la eligo UI HAL. La funkcio estas priskribita kiel sube

  • La vizaĝgvida rektangulo montras bluan, kaj la progresbreto montras la progreson kiam oni komencas la vizaĝregistradon aŭ rekonon.
  • La vizaĝgvida rektangulo montras ruĝan kiam vizaĝregistrado sukcesas.
  • La vizaĝgvida rektangulo montras verdan kiam vizaĝrekono sukcesas.
  • La vizaĝgvidrektangulo restas blua, kaj la progresbreto montras plenan progreson kiam la ago malsukcesas post la eksvalidiĝo de la tempigilo. Ĉe tiu punkto, ĉesu la vizaĝregistradon aŭ rekonon.

La progresdrinkejo kaj vizaĝgvida rektangulo estas prezentitaj kiel la ikonoj kiuj estas konstruitaj en la rimeda duuma file por esti programita en Flash. La montriloj al la piktogramdatenoj sur SDRAM estas starigitaj en la funkcio LoadIcons(APP_ICONS_BASE) vokita sur la eligo UI HAL-apara inicialigo en la eligo UI HAL. Ĝi devas efektivigi la ikonojn-subtenon por la funkcio.

Efektivigu la subtenon de ikonoj

  1. Konstruu la rimedon kombinante la ikonojn kun la bildoj uzataj en la LVGL GUI-apliko:
    • Klonu la kvar ikonan kaplinion files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h, kaj virtual_face_red_420x426.h de inteligenta HMI
      \kafmaŝino\rimedo\ikonoj\ al la novaj dosierujoj sub la rimeda dosierujo de la eksample SW.
    • Aldonu la serĉvojon por la kvar ikono files en la fotilo_preview_rimedo.txt file en la rimeda dosierujo, ekzample: ikono ../resource/icons/process_bar_240x14.h
    • Execute camera_preview_resource_build.bat por konstrui la bildojn kaj ikonajn rimedojn por generi la rubujon file fotilo_preview_resource.bin kaj la informoj file resource_information_table.txt (Vidu Figuro 6).NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (13)
  2. Difinu la komencan adreson sur SDRAM kaj la grandecon de la ikonoj en app_config.h. La adreso komenciĝas apud la bildoj de la GUI-aplikaĵo. La grandeco estas generita en la informoj file. #difini APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #difini APP_ICONS_SIZE 0x107c40
  3. Ĝisdatigu la asignitan grandecon de la memorsekcio nomita res_sh_mem al 0x200000 redifinante ĝin en app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 kaj la responda agordo en Projekto > Propraĵoj > C/C++ Konstruo > MCU-agordoj.
  4. Aldonu la ikongrandon al la totala grandeco de la rimedo ŝarĝita de Flash al SDRAM en la funkcio APP_LoadResource() en la ĉefa file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Rimarku: Por kompletigi la vizaĝrekonan funkcion, necesas la subteno de la aplikaĵo LVGL GUI. La UI-revokfunkcioj en la eligo UI HAL estas vokitaj de la LVGL GUI-aplikaĵo por pritrakti la eventojn de la UI-ekrano. Aliflanke, la eligo UI HAL vokas la APIojn de la LVGL GUI-aplikaĵo por ĝisdatigi la UI por montri la rezulton kaj staton. La evoluo de la LVGL GUI-aplikaĵo estas relative sendependa kaj enkondukita en Sekcio 4.3.

4.1.5 Komencu HAL-aparatojn kaj administrantojn por vizaĝrekono
La ebligita vizio algo HAL kaj UI eligo HAL kaj iliaj administrantoj estas komencitaj en la ĉefa file
lvgl_gui_face_rec_cm7.cpp sekvante la konvertiĝojn de evoluo sur la kadro kiel sube:

  1. Inkluzivi la kaplinion file rilata al la du HAL-manaĝeroj aldonante la kodlinion:
    • #include " fwk_output_manager.h "
    • #include "fwk_vision_algo_manager.h"
  2. Deklaru la HAL-aparatojn:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Registri la HAL-aparatojn:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER (UiGUIFaceRec, ret);
  4. Komencu la administrantojn:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(EligManaĝero, ret);
  5. Komencu la administrantojn:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Difinu la prioritaton de la administraj taskoj:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Aldonu vizaĝdatumbazan subtenon sur kadro
La registritaj vizaĝtrajtodatenoj estas aliritaj en la vizaĝdatumbazo stokita sur Flash per iomete file sistemo. La paŝoj por aldoni la vizaĝdatumbazan subtenon estas priskribitaj sube.

Aldonu ŝoforojn por Flash-stokado
Kopiu la Flash-interfacon FlexSPI-ŝoforon files fsl_flexspi.c kaj fsl_flexspi.h, kaj la datuman ĉifradan pelilon files fsl_caam.c kaj fsl_caam.h de la vojo SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ al la dosierujo de ŝoforoj de la eksample SW.

Aldonu tabulnivelan subtenon

  1. Aldonu la difinojn de FlexSPI uzataj por la Flash-aparato surŝipe en board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopiu la operatorojn kaj agordojn files de la Flash-aparato flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, kaj sln_flash_ops.h sub la vojo smart HMI\coffee\la dosierujo de la fonto\coffee\coffee\machine\cm7config. ekzample SW.
    • Malmarku "Ekskludi rimedon de konstruo" en C/C++ Konstruo> Agordoj post dekstra klako sur la files' nomo kaj malfermo de la Propraĵoj por ebligi ilin esti konstruitaj en la projekto.
  3. Ŝanĝu la inkluzivitan kaplinion filenomu sln_flash_config.h al sln_flash_config_w25q256jvs.h en sln_flash_config.c kaj flexspi_nor_flash_ops.h.
  4. Agordu la horloĝfonton FlexSPI1 en la file clock_config.c rilatante al la kafmaŝino-aplikaĵo.

Aldonu adaptilon kaj meznivelan subtenon

  1. Kopiu la files sln_flash.c, sln_flash.h, sln_encrypt.c, kaj sln_encrypt.h kiel adaptilojn por la file sistemo kaj aplikaĵo de la vojo de inteligenta HMI\kafmaŝino\cm7\source\ al la dosierujo fonto de la eksample. Ĝisdatigu la novan files:
    • Malmarku "Ekskludi rimedon de konstruado" sur ili por konstruado.
    • Ŝanĝu la tutan inkluzivitan kaplinion file nomu sln_flash_config.h al sln_flash_config_w25q256jvs.h.
  2. Kopiu la dosierujon filesistemo enhavanta la APIojn por la etuloj filesistemo kaj HAL-ŝoforo de inteligenta HMI \coffee_machine\cm7\source\ al la ekzample SW. Kaj ĝisdatigo por la nova dosierujo:
    • Malmarku "Ekskludi rimedon de konstruado" sur ĝi por konstruado.
    • Aldonu la inkluzivan vojon por ĝi en projektaj agordoj: "${workspace_loc:/${ProjName}/filesistemo}"
    • Ŝanĝu la inkluzivitan kaplinion file nomu sln_flash_config.h al sln_flash_config_w25q256jvs.h kaj fica_definition.h al app_config.h en la file sln_flash_littlefs.h.
  3. Kopiu la dosierujon littlefs enhavantan la mezan ware - little filesistemo de la vojo SDK_2_13_0_ MIMXRT1170-EVK\middleware\ al la eksample SW. Kaj ĝisdatigu la novan dosierujon:
    • Malmarku "Ekskludi rimedon de konstruado" sur ĝi por konstruado.
    • Aldonu la inkluzivan vojon por ĝi en projektaj agordoj: "${workspace_loc:/${ProjName}/littlefs}"

Aldonu HAL-ŝoforojn 

  • Estas du HAL-aparatoj - file sistemo kaj vizaĝdatumbazo HAL subtenataj por la datumbaza aliro trajto kaj ili jam estas efektivigitaj en la kadro sen ajna ŝanĝo. Ebligu ilin aldonante la subajn difinojn en board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

Kaj ŝanĝu la vizaĝdatumbazan nomon por la eksample: #difini OASIS_FACE_DB_DIR “oasis_gui_face_rec”

Aldonu app-nivelan subtenon

  1. Ĝisdatigu la ĉefan file lvgl_gui_face_rec_cm7.cpp:
    • Inkluzivi la kaplinion file rilata al la Flash file sistemo HAL-administranto aldonante la kodlinion: #include “fwk_flash.h”
    • Deklaru kaj registriĝu file sistemo HAL-aparato:
      • HAL_FLASH_DEV_DECLARE (Etuloj);
      • HAL_FLASH_DEV_REGISTER (Etuloj, ret);
        Notu: La file sistemo HAL-aparato devas esti registrita antaŭ ol ĉiuj aparataj administrantoj estas pravaligitaj en la funkcio APP_InitFramework().
    • Voku la funkcion BOARD_ConfigMPU() en APP_BoardInit() por agordi MPU.
  2. Agordu la file sistema tasko sur Flash en la file app_config.h difinante la makrodifinojn uzatajn en la file sln_flash_littlefs.h:
    • #difini FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #difini FICA_FILE_SYS_SIZE (0x280000)

Agordoj
Kelkaj Flash-rilataj kodoj estas efektivigitaj en la SRAM ITC-areo por sufiĉe da efikeco. Kopiu la dosierujojn ligskriptojn enhavantajn la ligilajn agordojn de la vojo smart HMI\coffee_machine\cm7\ al la eksample SW.

Efektivigu LVGL GUI-apon
La evoluo de LVGL GUI-apo bazita sur kadro nomas la APIojn de eligo UI HAL kaj disponigas la APIojn por eligi UI HAL (Vidu Sekcion 4.1.3 por la efektivigo de eligo UI HAL).

Tamen, la detala efektivigo de LVGL GUI-aplikaĵo dependas de la postuloj kaj dezajno de la aplikaĵo. La GUI-apo en ĉi tiu ekzample estas desegnita kiel priskribite komence de la sekcio Sekcio 4.

Malsupre estas la efektivigaj enkondukoj:

  1. La personecigitaj kodoj estas efektivigitaj en la custom.c kaj custom.h donitaj de GUI Guider kiel la interfaco inter la projekto GUI Guider kaj la enigita sistemprojekto.
    •  Aldonu la novajn funkciojn nomitajn gui_xxx() en custom.c por atingi la subajn funkciojn:
      • Por eligo UI HAL kaj GUI-apo por ĝisdatigi UI.
      • Por GUI-aplikaĵo por ekfunkciigi eventojn vokante UI-revokfunkciojn de eligo UI HAL.
        Por ekzample, la nova funkcio gui_event_face_rec_action () vokas UI-revokfunkciojn por trakti unu el la eventoj de vizaĝregistrado, vizaĝrekono kaj forigo de uzanto deĉenigita de la GUI-aplikaĵo kiam la rilata butono estas klakita.
        Noto: La funkcio gui_set_virtual_face() vokis en eligo UI HAL por preview reĝimo devas esti efektivigita en custom.c:
    •  Klonu funkcio gui_set_virtual_face() de inteligenta HMI\kafmaŝino\cm4\custom \custom.c.
    •  Ŝanĝu la nomon de la fenestraĵo home_img_cameraPreview to screen_img_camera_preview en la funkcio.
    •  Efektivigu la UI-revokfunkciojn kun la sama prototipo al ĉiuj en eligo UI HAL sub la kontrolo de la makro-difino #ifndef RT_PLATFORM en custom.c por esti kongrua kun la projekto GUI Guider ĉar ĉi tiuj funkcioj en eligo UI HAL estas dependaj de la enigita platformo. En custom.c, ili dependas de la simulilo de GUI-gvidisto kaj estas sendependaj de la enigita platformo. Por ekzample, la vizaĝregistra revoko estas efektivigita kiel sube por la simulilo GUI Guider funkcianta: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = malvera; reveni; }
      Notu: Vidu al la sama prototipo de la funkcio enkondukita en paŝo 6 de Sekcio 4.1.3
      La makrodifino RT_PLATFORM estas agordita en la projektaj agordoj de MCUXpresso kiel montrite en Figuro 7:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (14)
    • Deklaru ĉiujn funkciojn nomitajn UI_xxx_Callback() kaj gui_xxx() en custom.h kaj aldonu custom.h inkluzivitan en smart_tlhmi_event_descriptor.h por dividi la GUI-APIojn al UI-eligo HAL.
  2. Disvolvu la GUI sur GUI Guider:
    • Klonu la dosierujon fotilon antaŭview enhavanta la programon de la projekto GUI Guider en la dosierujo gui_guider en la baza programaro lvgl_gui_camera_preview_cm7. Ŝanĝu la rilatan nomon camera_preview al face_rec por la nova eksample.
    • Kopiu la supre ĝisdatigita custom.c kaj kutimo. h al la nova projekta programaro GUI Guider.
    •  Malfermu la novan face_rec-projekton sur GUI Guider. Ĝisdatigu kiel sube:
      • Aldonu la novan butonon etikeditan Forigi Uzanton. Aldonu la flagon Kaŝita al ĝi, por ke la butono estu kaŝita kiam la GUI-apliko komenciĝos.
      • Aldonu la kodlinion de vokado de la API gui_event_face_rec_action() kun malsama parametro ID de evento sur la "Eldonita" ellasilo en la Eventa Agordo de ĉiuj butonoj Registrado, Rekono kaj Forigi Uzanton por deĉenigi la eventojn de vizaĝa registrado, vizaĝa rekono kaj forigo de uzanto. Figuro 8 montras la kodon por la evento de la butono Registro:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (15)
  3. Ĝisdatigu la generitan kodon de GUI Guider al la projekto MCUXpresso.
    • Anstataŭigi la enhavojn krom la dosierujoj bildoj en la dosierujo generita de la MCUXpresso-projekto SW per la respondaj en la dosierujo generita de GUI Guider-projekto SW.

Notu: Por pliaj detaloj pri la supre enkondukitaj modifoj, kontrolu la ekzample programaro ĉe https://mcuxpresso.nxp.com/appcodehub.

Kontroloj kun la eksample projekto

Por akiri la eksampla programaro enhavanta la rimedojn kaj ilojn por ĉi tiu aplika noto, vizitu: https://mcuxpresso.nxp.com/appcodehub. Malfermu la eksample projekto pri MCUXpresso IDE. Konstruu kaj programu la .axf file al la adreso 0x30000000 kaj programu la rimedujon file fotilo_preview_resource.bin al la adreso 0x30800000.

La LVGL GUI vizaĝrekono ekzample funkcias normale kiel sube:

  • Preview: Kun potenco supren, la videofluoj kaptitaj de la fotilo montras sur la specifa areo de fotilo preview sur la GUI-ekrano. La statusa etikedo montras "Preview…”. Por detaloj, vidu Figuro 3. La butono Forigi Uzanton estas kaŝita. Alklakante la areon ekster la butonoj kaj bildoj, ĝi montras la preview stato kiel la supre post kiam la vizaĝregistrado aŭ rekona ago finiĝas.
  • Registrado:
    • tartupo: Kiam la butono Registrado estas klakita, la vizaĝa registrado komenciĝas. La statusa etikedo ŝanĝas por montri "Registrado...", la vizaĝgvida rektangulo montras bluan, kaj la progresbreto komencas montri la progreson. Certigu, ke la vizaĝo de la uzanto montriĝas en la blua vizaĝo gvida rektangulo por registriĝo.
    • sukceson: La statusa etikedo montras "Registrado...Bone" kaj la registritan uzantan ID-numeron, la vizaĝgvida rektangulo fariĝas ruĝa se la vizaĝregistrado sukcesas antaŭ ol la progreso montras plenan sur la stango.
    • Malsukceso -> Tempo ekstere: La statusa etikedo montras "Registrado... Tempo ekstere" se la vizaĝa registrado ankoraŭ malsukcesas kiam la progreso montras plenan sur la stango.
    • Fiasko -> Duobligo: La statusa etikedo montras "Registrado... Malsukcesis", la vizaĝgvida rektangulo fariĝas verda se la registrita vizaĝo estas rekonita antaŭ ol la progreso montras plenan sur la stango.
  • ekkono:
    • Ekfunkciigo: Kiam la Rekono butono estas klakita, la vizaĝa rekono komenciĝas. La stato-etikedo ŝanĝiĝas por montri "Rekonon...", la vizaĝgvida rektangulo montras bluan, kaj la progresbreto komencas montri la progreson. Certigu, ke la vizaĝo de la uzanto estas montrita en la bluan vizaĝgvidilan rektangulon por registriĝo.
    • sukceson: La statusa etikedo montras "Rekonon...Bone" kaj la rekonitan uzantan ID-numeron, la vizaĝgvida rektangulo fariĝas verda se la vizaĝrekono sukcesas antaŭ ol la progreso montras plenan sur la stango. Ĉe la punkto, la butono Forigi Uzanton aperas. Ĝi signifas, ke la uzanto rajtas esti forigita nur kiam ĝi estas rekonita.
    • ailure: La statusa etikedo montras "Rekono... Tempo elĉerpita" se la vizaĝrekono ankoraŭ malsukcesas kiam la progreso montras plenan sur la stango.
  • Forigi Uzanton: Kiam la butono "Forigi Uzanton" estas klakita, post kiam la vizaĝrekono sukcesas, la statusa etikedo ŝanĝas por montri "Forigi Uzanton...Bone" kun la vizaĝgvida rektangulo blua kaj la progreso montrita plena sur la stango. La butono Forigi Uzanton denove estas kaŝita. La rekonita vizaĝo/uzanto estas forigita de la datumbazo. Ĝi signifas, ke ĉi tiu vizaĝo/uzanto ne povas esti rekonita ĝis estas denove registrita.

Notu pri la fontkodo en la dokumento
ExampLa kodo montrita en ĉi tiu dokumento havas la jenan kopirajton kaj permesilon BSD-3-Clause:

Kopirajto 2024 NXP Redistribuo kaj uzo en fonto kaj binaraj formoj, kun aŭ sen modifo, estas permesitaj kondiĉe ke la sekvaj kondiĉoj estas plenumitaj:

  1. Redistribuoj de fontkodo devas konservi la ĉi-supran kopirajt-avizon, ĉi tiun liston de kondiĉoj kaj la sekvan malgarantion.
  2. Redistribuoj en binara formo devas reprodukti la ĉi-supran kopirajtan avizon, ĉi tiu listo de kondiĉoj kaj la sekva malgarantio en la dokumentado kaj/aŭ aliaj materialoj devas esti provizitaj kun la distribuo.
  3. Nek la nomo de la posedanto de la kopirajto nek la nomoj de ĝiaj kontribuantoj povas esti uzataj por apogi aŭ reklami produktojn derivitajn de ĉi tiu programaro sen specifa antaŭa skriba permeso.

ĈI TIU PROGRAMARO ESTAS PROVIZITA DE LA KOPIRATAJTOJN KAJ KONTRIBUTOJ "KIAL ESTAS" KAJ ĈIUJ ESPRESA AŬ IMPLITA GARANTIOJ, INKLUDE, SED NE LIMIGISTE AL, LA IMPLITAJ GARANTIOJ PRI KOMERKABLECO KAJ TAŬGECO POR APARTA CELO ESTAS RENKLAITA. EN NENIAJ OKAZOJ LA KOPRAJTOJTANTO AŬ KONTRIBUANTOJ RESPONDOS PRI IUJ REKTA, NEREKTA, EKZENDA, SPECIALA, EKZEMPLA AŬ KONSEKVAJ damaĝoj (INkluzive, SED NE LIMIGITA AL, AKIRADO DE ANstataŭaj VAROJ AŬ SERVOJ, PERDO DE SERVOJ; AŬ KOMERCISTO) TAMEN KAUZITA KAJ PRI IUJ TEORIO DE RESPONVO, ĈU KONTRALE, STRICTA RESPONVO, AŬ kulpigo (INkluzive de NELEGEMO AŬ ALIE) EVENTANTA IUJMANERO EL LA UZO DE ĈI TIU PROGRAMARO, Eĉ SE KONSISTE PRI TIA POSBLECO.

Historio de revizioj

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

Juraj informoj

Difinoj
Malneto — Malneto-statuso sur dokumento indikas, ke la enhavo ankoraŭ estas sub interna review kaj kondiĉigita de formala aprobo, kiu povas rezultigi modifojn aŭ aldonojn. NXP Semiconductors ne donas ajnajn reprezentojn aŭ garantiojn pri la precizeco aŭ kompleteco de informoj inkluzivita en skiza versio de dokumento kaj devas havi neniun respondecon pri la sekvoj de uzo de tiaj informoj.

Malgarantio

  • Limigita garantio kaj respondeco — Informoj en ĉi tiu dokumento supozeble estas precizaj kaj fidindaj. Tamen, NXP Semiconductors ne donas ajnajn reprezentojn aŭ garantiojn, esprimitajn aŭ implicitajn, pri la ĝusteco aŭ kompleteco de tiaj informoj kaj ne havas respondecon pri la sekvoj de uzo de tiaj informoj. NXP Semiconductors ne prenas respondecon pri la enhavo en ĉi tiu dokumento se provizite de informfonto ekster NXP Semiconductors.
    En neniu okazo NXP Semiconductors respondecos pri ajnaj nerektaj, hazardaj, punaj, specialaj aŭ konsekvencaj damaĝoj (inkluzive - sen limigo - perditaj profitoj, perditaj ŝparaĵoj, komerca interrompo, kostoj rilataj al la forigo aŭ anstataŭigo de iuj produktoj aŭ relaboraj kostoj) ĉu aŭ ne tiaj damaĝoj estas bazitaj sur delikto (inkluzive de neglektemo), garantio, rompo de kontrakto aŭ ajna alia laŭleĝa teorio.
    Malgraŭ ajnaj damaĝoj, kiujn kliento povus kaŭzi ial ajn, la entuta kaj akumula respondeco de NXP Semiconductors al kliento por la produktoj ĉi tie priskribitaj estos limigita laŭ la Kondiĉoj kaj kondiĉoj de komerca vendo de NXP Semiconductors.
  • Rajto fari ŝanĝojn — NXP Semiconductors rezervas la rajton fari ŝanĝojn al informoj publikigitaj en ĉi tiu dokumento, inkluzive sen limigo de specifoj kaj produktaj priskriboj, iam ajn kaj sen avizo. Ĉi tiu dokumento anstataŭas kaj anstataŭigas ĉiujn informojn provizitajn antaŭ la ĉi-publikigo.
  • Taŭgeco por uzo — NXP Semiconductors-produktoj ne estas dizajnitaj, rajtigitaj aŭ garantiitaj por esti taŭgaj por uzo en vivsubteno, vivkritikaj aŭ sekureckritikaj sistemoj aŭ ekipaĵoj, nek en aplikoj kie fiasko aŭ misfunkciado de NXP Semiconductors-produkto povas racie atendi. persona vundo, morto aŭ severa posedaĵo aŭ media damaĝo. NXP Semiconductors kaj ĝiaj provizantoj akceptas neniun respondecon por inkludo kaj/aŭ uzo de NXP Semiconductors-produktoj en tiaj ekipaĵoj aŭ aplikoj kaj tial tia inkludo kaj/aŭ uzo estas je la propra risko de la kliento.
  • Aplikoj — Aplikoj kiuj estas priskribitaj ĉi tie por iu el ĉi tiuj produktoj estas nur por ilustraj celoj. NXP Semiconductors faras neniun reprezenton aŭ garantion ke tiaj aplikoj estos taŭgaj por la specifita uzo sen plia testado aŭ modifo.
    Klientoj respondecas pri la dezajno kaj funkciado de siaj aplikoj kaj produktoj uzante produktojn de NXP Semiconductors, kaj NXP Semiconductors akceptas neniun respondecon pri ajna helpo kun aplikoj aŭ klienta produktodezajno. Estas la sola respondeco de kliento determini ĉu la produkto de NXP Semiconductors taŭgas kaj taŭgas por la aplikoj kaj produktoj de la kliento planitaj, same kiel por la planita apliko kaj uzo de la triaparta(j) kliento(j) de la kliento. Klientoj devas provizi taŭgajn dezajnojn kaj operaciajn sekurigilojn por minimumigi la riskojn asociitajn kun siaj aplikoj kaj produktoj. NXP Semiconductors ne akceptas ajnan respondecon rilate al iu ajn defaŭlto, damaĝo, kosto aŭ problemo, kiu estas bazita sur iu malforto aŭ defaŭlto en la aplikoj aŭ produktoj de la kliento, aŭ la apliko aŭ uzo de la triaparta(j) kliento(j) de la kliento. Kliento respondecas pri fari ĉiujn necesajn provojn por la aplikoj kaj produktoj de la kliento uzante produktojn de NXP Semiconductors por eviti defaŭlton de la aplikoj kaj la produktoj aŭ de la aplikaĵo aŭ uzo de la triaparta(j) kliento(j) de la kliento. NXP ne akceptas ajnan respondecon ĉi-rilate.
  • Kondiĉoj kaj kondiĉoj de komerca vendo — La produktoj de NXP Semiconductors estas venditaj sub la ĝeneralaj kondiĉoj de komerca vendo, kiel publikigite ĉe https://www.nxp.com/profile/kondiĉoj, krom se alie konsentite en valida skriba individua interkonsento. En la okazo ke individua interkonsento estas finita nur la terminoj kaj kondiĉoj de la respektiva interkonsento validas. NXP Semiconductors eksplicite kontraŭas apliki la ĝeneralajn kondiĉojn de la kliento koncerne la aĉeton de produktoj de NXP Semiconductors fare de kliento.
  • Eksportkontrolo — Ĉi tiu dokumento same kiel la objekto(j) priskribitaj ĉi tie povas esti submetitaj al reguloj pri eksportkontrolo. Eksporto povus postuli antaŭan rajtigon de kompetentaj aŭtoritatoj.
  • Taŭgeco por uzo en ne-aŭtaj kvalifikitaj produktoj — Krom se ĉi tiu dokumento eksplicite deklaras, ke ĉi tiu specifa NXP Semiconductors-produkto estas aŭtomobila kvalifikita, la produkto ne taŭgas por aŭtomobila uzo. Ĝi estas nek kvalifikita nek provita laŭ aŭtomobilaj provoj aŭ aplikaj postuloj. NXP Semiconductors akceptas neniun respondecon por inkludo kaj/aŭ uzo de ne-aŭtaj kvalifikitaj produktoj en aŭtaj ekipaĵoj aŭ aplikoj.
    En la okazo, ke kliento uzas la produkton por dezajno kaj uzo en aŭtaj aplikoj laŭ aŭtaj specifoj kaj normoj, kliento (a) devas uzi la produkton sen la garantio de NXP Semiconductors pri la produkto por tiaj aŭtaj aplikoj, uzo kaj specifoj, kaj ( b) kiam ajn kliento uzas la produkton por aŭtomobilaj aplikoj preter la specifoj de NXP Semiconductors tia uzo devas esti nur je la propra risko de kliento, kaj (c) kliento plene kompensas NXP Semiconductors por ajna kompensdevo, damaĝoj aŭ malsukcesaj produktaj reklamoj rezultantaj de klienta dezajno kaj uzo de la produkto por aŭtaj aplikoj preter la norma garantio de NXP Semiconductors kaj la produktospecifoj de NXP Semiconductors.
  • Tradukoj — Ne-angla (tradukita) versio de dokumento, inkluzive de la juraj informoj en tiu dokumento, estas nur por referenco. La angla versio regos en kazo de iu diferenco inter la tradukita kaj angla versioj.
  • Sekureco — Kliento komprenas, ke ĉiuj NXP-produktoj povas esti submetitaj al neidentigitaj vundeblecoj aŭ povas subteni establitajn sekurecajn normojn aŭ specifojn kun konataj limigoj. Kliento respondecas pri la dezajno kaj operacio de ĝiaj aplikoj kaj produktoj dum iliaj vivocikloj por redukti la efikon de ĉi tiuj vundeblecoj sur la aplikoj kaj produktoj de kliento. La respondeco de kliento ankaŭ etendiĝas al aliaj malfermaj kaj/aŭ proprietaj teknologioj subtenataj de NXP-produktoj por uzo en la aplikoj de kliento. NXP ne akceptas respondecon por ajna vundebleco. Kliento devas regule kontroli sekurecajn ĝisdatigojn de NXP kaj sekvi taŭge. Kliento elektos produktojn kun sekurecaj funkcioj, kiuj plej bone plenumas regulojn, regularojn kaj normojn de la celita aplikaĵo kaj faras la finajn dezajn decidojn pri ĝiaj produktoj kaj respondecas nur pri plenumado de ĉiuj laŭleĝaj, reguligaj kaj sekurecaj postuloj pri ĝiaj produktoj, sendepende de ajna informo aŭ subteno kiu povas esti provizita de NXP.

NXP havas Produktan Sekurecan Incident Response Team (PSIRT) (atingeblan ĉe PSIRT@nxp.com) kiu administras la enketon, raportadon kaj solvo-liberigon al sekurecaj vundeblecoj de NXP-produktoj.
NXP B.V. - NXP B.V. ne estas operaciumo kaj ĝi ne distribuas aŭ vendas produktojn.

Varmarkoj
Rimarku: Ĉiuj referencitaj markoj, produktnomoj, servnomoj kaj varmarkoj estas la posedaĵo de siaj respektivaj posedantoj.

NXP — vortmarko kaj emblemo estas varmarkoj de 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 — estas varmarkoj kaj/aŭ registritaj varmarkoj de Arm Limited (aŭ ĝiaj filioj aŭ filioj) en Usono kaj/aŭ aliloke. La rilata teknologio povas esti protektita per iuj aŭ ĉiuj patentoj, kopirajtoj, dezajnoj kaj komercaj sekretoj. Ĉiuj rajtoj rezervitaj.

  • i.MX — estas varmarko de NXP BV
  • J-Link — estas varmarko de SEGGER Microcontroller GmbH.

Microsoft, Azure kaj ThreadX — estas varmarkoj de la Microsoft-grupo de kompanioj.

Bonvolu konscii, ke gravaj avizoj pri ĉi tiu dokumento kaj la produkto(j) ĉi tie priskribitaj, estis inkluzivitaj en la sekcio 'Leĝaj informoj'.

© 2024 NXP BV
Por pliaj informoj, bonvolu viziti: https://www.nxp.com

  • Dato de liberigo: 19 aprilo 2024
  • Dokumentidentigilo: AN14263

Oftaj Demandoj

Q: Kio estas la ĉefa celo de ĉi tiu produkto?
R: La ĉefa celo estas ebligi vizaĝ-rekonan funkcion uzante AI&ML-vidan algoritmomodelon kun simpla LVGL GUI eksample sur la SLN-TLHMI-IOT-tabulo.

Q: Kiel programistoj povas profiti el ĉi tiu aplika noto?
R: Programistoj povas lerni kiel efektivigi vizaĝrekonon sur la kadro paŝon post paŝo uzante la provizitan ekzample kaj komprenu la aparato-manaĝeroj, HAL-aparatoj, kaj okazaĵmekanismoj implikitaj.

Dokumentoj/Rimedoj

NXP AN14263 Efektivigu LVGL GUI Vizaĝrekonon sur Framewor [pdf] Uzantogvidilo
AN14263 Efektivigu LVGL GUI Vizaĝrekonon sur Framewor, AN14263, Implementu LVGL GUI Vizaĝrekonon sur Framewor, LVGL GUI Vizaĝrekonon sur Framewor, Vizaĝrekonon sur Framewor, Rekonon sur Framewor, Framewor

Referencoj

Lasu komenton

Via retadreso ne estos publikigita. Bezonataj kampoj estas markitaj *