nxp-logo

NXP AN14263 Ipatupad ang LVGL GUI Face Recognition sa Framewor

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

Impormasyon ng Produkto

Mga pagtutukoy

  • Pangalan ng Produkto: LVGL GUI Face Recognition sa Framework
  • Pagbabago ng Dokumento: 1 – 19 Abril 2024
  • Mga keyword: Pagkilala sa mukha, LVGL GUI, Framework

Mga Tagubilin sa Paggamit ng Produkto

  1. Tapos naview
    Ang produktong ito ay nagbibigay-daan sa AI&ML vision algorithm model para sa pagkilala ng mukha sa isang framework upang ipatupad ang function ng pagkilala sa mukha gamit ang isang simpleng LVGL GUI example sa SLN-TLHMI-IOT board.
  2. Tapos na ang Frameworkview
    Ang software ng solusyon ay idinisenyo sa paligid ng arkitektura ng framework na kinabibilangan ng mga tagapamahala ng device na responsable para sa pamamahala ng mga device, mga HAL device sa abstract na pinagbabatayan ng mga detalye, at mga kaganapan para sa komunikasyon sa pagitan ng iba't ibang device.
  3. Mga tampok
    Ang produkto ay nagbibigay-daan para sa pagpapatupad ng pag-andar ng pagkilala sa mukha sa pamamagitan ng camera preview sa screen ng GUI na may mga pindutan upang ma-trigger ang pagpaparehistro, pagkilala, at pag-alis ng mukha. Ang nakarehistrong data ng mukha ay iniimbak sa Flash sa pamamagitan ng a file sistema.
  4. Nilalaman ng Tala ng Application
    Ang application note ay nagpapakita ng LVGL GUI screen na may camera preview at mga button para sa mga pagkilos na nauugnay sa mukha. Nakakatulong ito sa mga developer na maunawaan ang framework at kung paano ipatupad ang pagkilala sa mukha gamit ang ibinigay na example.

Tapos naview

Ang NXP ay naglunsad ng isang solution development kit na pinangalanang SLN-TLHMI-IOT na nakatutok sa mga matalinong aplikasyon ng HMI. Nagbibigay-daan ito sa smart HMI na may ML vision, voice, at graphics UI na ipinatupad sa isang NXP i.MX RT117H MCU. Batay sa SDK, ang software ng solusyon ay binuo sa isang disenyo na tinatawag na framework na sumusuporta sa mga flexible na disenyo at pag-customize ng vision at voice functions. Upang matulungan ang mga user na gamitin ang software platform nang mas mahusay, ang ilang mga pangunahing dokumento ay ibinigay, halimbawaample, ang gabay sa paggamit ng software development. Ipinakilala ng gabay ang pangunahing disenyo ng software at arkitektura ng mga application na sumasaklaw sa lahat ng bahagi ng solusyon kabilang ang balangkas upang matulungan ang mga developer nang mas madali at mahusay na ipatupad ang kanilang mga aplikasyon gamit ang SLN-TLHMI-IOT.
Para sa higit pang mga detalye tungkol sa solusyon at mga nauugnay na dokumento, bisitahin ang web page ng NXP EdgeReady Smart HMI Solution Batay sa i.MX RT117H na may ML Vision, Voice, at Graphical UI. Gayunpaman, hindi pa rin ganoon kadali para sa mga developer na ipatupad ang kanilang matalinong mga aplikasyon ng HMI na tumutukoy sa mga pangunahing gabay na ito. Ang isang serye ng mga tala ng aplikasyon ay binalak upang makatulong na pag-aralan ang pagbuo sa balangkas nang sunud-sunod. Ang application note na ito ay batay sa Implement LVGL GUI Camera Preview sa Framework (dokumento AN14147). Ang application note na ito ay naglalarawan kung paano i-enable ang AI&ML vision algorithm model para sa pagkilala ng mukha sa framework upang ipatupad ang function ng pagkilala sa mukha sa pamamagitan ng camera preview sa GUI screen na may simpleng LVGL GUI example sa SLN-TLHMI-IOT board. Sa application note, ang exampNagpapakita si le ng LVGL GUI screen na may camera preview at ilang button para ma-trigger ang pagpaparehistro, pagkilala, at pag-alis ng mukha. Ang nakarehistrong data ng mukha ay iniimbak sa Flash sa pamamagitan ng kaunti file sistema.

Sa isang mataas na antas, ang application note ay naglalaman ng mga nilalaman sa ibaba:

  • Paganahin ang tampok na pagkilala sa mukha sa framework.
  • Magdagdag ng suporta sa database ng mukha sa framework sa pamamagitan ng file system sa Flash.
  • Ipatupad ang LVGL GUI app. Sa pamamagitan ng mga pagpapakilala sa itaas, tinutulungan ng dokumentong ito ang mga developer na:
  • Unawain ang balangkas at ang matalinong software ng solusyon sa HMI nang mas malalim.
  • Buuin ang kanilang AI&ML face recognition sa framework gamit ang LVGL GUI app.

Tapos na ang frameworkview
Ang software ng solusyon ay pangunahing idinisenyo sa paligid ng paggamit ng arkitektura ng balangkas na binubuo ng ilang magkakaibang bahagi:

  • Mga tagapamahala ng device – ang pangunahing bahagi
  • Mga Device ng Hardware Abstraction Layer (HAL).
  • Mga Mensahe/Kaganapan

Gaya ng ipinapakita sa Figure 1, ang overview ng mekanismo ng balangkas ay:

Ang mga tagapamahala ng device ay may pananagutan sa pamamahala ng mga device na ginagamit ng system. Ang bawat uri ng device (input, output, at iba pa) ay may sariling device manager na partikular sa uri. Sa pagsisimula ng isang device manager pagkatapos mairehistro ang mga device dito, ito ay naghihintay at nagsusuri ng isang mensahe upang maglipat ng data sa mga device at iba pang mga manager pagkatapos simulan at simulan ang mga nakarehistrong device. Ang mga HAL device ay nakasulat sa itaas ng lower-level na driver code, na tumutulong sa pagpapataas ng code understandability sa pamamagitan ng pag-abstract ng marami sa mga pinagbabatayan na detalye.

Ang mga kaganapan ay isang paraan kung saan ang impormasyon ay ipinapaalam sa pagitan ng iba't ibang device sa pamamagitan ng kanilang mga tagapamahala. Kapag na-trigger ang isang kaganapan, ipinapaalam ng device na unang nakatanggap ng kaganapan ang kaganapang iyon sa manager nito, pagkatapos ay aabisuhan nito ang iba pang mga manager na itinalagang tumanggap ng kaganapan.

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

Ang disenyo ng arkitektura ng balangkas ay nakasentro sa tatlong pangunahing layunin:

  1. Dali-ng-gamitin
  2. Flexibility/Portability
  3. Pagganap

Dinisenyo ang balangkas na may layuning pabilisin ang oras sa merkado para sa paningin at iba pang mga application sa machine-learning. Upang matiyak ang isang mabilis na oras sa merkado, ito ay kritikal na ang software mismo ay madaling maunawaan at baguhin. Sa pag-iingat sa layuning ito, ang arkitektura ng balangkas ay madaling baguhin nang hindi mahigpit, at hindi naaabot sa halaga ng pagganap.
Para sa higit pang mga detalye tungkol sa framework, tingnan ang Gabay sa Gumagamit ng Smart HMI Software Development (dokumentong MCU-SMHMI-SDUG).

Light and Versatile Graphics Library (LVGL)
Ang LVGL (Light and Versatile Graphics Library) ay isang libre at open-source na graphics library na nagbibigay ng lahat ng kailangan mo upang lumikha ng isang naka-embed na GUI na may madaling gamitin na mga graphical na elemento, magagandang visual effect at mababang memory footprint.

Gabay sa GUI
Ang GUI Guider ay isang user-friendly na graphical user interface development tool mula sa NXP na nagbibigay-daan sa mabilis na pagbuo ng mga de-kalidad na display gamit ang open-source na LVGL graphics library. Pinapadali ng drag-and-drop na editor ng GUI Guider ang paggamit ng maraming feature ng LVGL gaya ng mga widget, animation, at estilo upang lumikha ng GUI na may kaunti o walang coding.

Sa pag-click ng isang button, maaari mong patakbuhin ang iyong application sa isang simulate na kapaligiran o i-export ito sa isang target na proyekto. Ang nabuong code mula sa GUI Guider ay madaling maidagdag sa iyong proyekto, na nagpapabilis sa proseso ng pagbuo at nagbibigay-daan sa iyong walang putol na magdagdag ng naka-embed na user interface sa iyong application. Ang GUI Guider ay malayang gamitin sa pangkalahatang layunin ng NXP at mga crossover na MCU at may kasamang mga built-in na template ng proyekto para sa ilang sinusuportahang platform. Para matuto pa tungkol sa LVGL at GUI development sa GUI Guider, tingnan ang Light and Versatile Graphics Library at GUI Guider.

Kapaligiran sa pag-unlad

Una, ihanda at i-set up ang kapaligiran ng hardware at software para sa pagpapatupad ng example sa balangkas.

Kapaligiran ng hardware
Naka-set up ang hardware environment para sa pag-verify ng example:

  • Ang smart HMI development kit batay sa NXP i.MX RT117H (ang SLN_TLHMI_IOT kit)
  • SEGGER J-Link na may 9-pin Cortex-M adapter at V7.84a o mas bagong bersyon ng driver

Software na kapaligiran
Ang kapaligiran ng software ay naka-set up para sa pagbuo ng example:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – halample code ng pangalawang application note bilang batayan ng software ng pag-unlad. Para sa mga detalye, tingnan https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – bilang mapagkukunan ng code para sa pagbuo.
  • SLN-TLHMI-IOT software V1.1.2 – matalinong HMI source code na inilabas sa NXP GitHub repository bilang mapagkukunan ng code para sa pagbuo. Para sa mga detalye, tingnan ang: GitHub – NXP/mcu-smhmi sa v1.1.2

Para sa mga detalye tungkol sa pagkuha at pag-setup ng software environment, tingnan ang: Pagsisimula sa SLN-TLHMI-IOT.

Arkitektura ng paningin sa balangkas

Ang vision architecture sa framework ay ipinapakita sa Figure 2. Ang vision algo HAL (OASIS_HAL) ay may mga proseso sa ibaba:

  • Harapin ang pagpaparehistro at pagkilala sa pamamagitan ng AI&ML vision algorithm model pagkatapos matanggap ang mga nauugnay na kaganapan mula sa output UI HAL. Ipaalam ang mga resulta ng hinuha mula sa modelo ng algorithm sa output UI HAL.
  • Ina-access (idagdag, tanggalin...) ang database ng tampok na mukha batay sa maliit file system sa pamamagitan ng pagtawag sa mga API ng FaceDB HAL pagkatapos matanggap ang mga nauugnay na kaganapan mula sa output UI HAL.
  • Hilingin ang frame ng video ng camera mula sa camera HAL kapag gumagawa ng pagpaparehistro at pagkilala ng mukha.

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

Ipatupad ang pagkilala sa mukha sa framework

Ang LVGL GUI face recognition example (ang example ay ibinigay sa ibang pagkakataon) sa balangkas ay ipinatupad batay sa exampAng mga code ng Implement LVGL GUI Camera Preview sa Framework (dokumento AN14147).

Para sa pagpapakita ng pagkilala sa mukha sa example, ang pangunahing function ng GUI app (tingnan ang pangunahing screen sa Figure 3) ay idinisenyo tulad ng inilarawan sa ibaba:

  • Nati-trigger ng GUI app ang pagpaparehistro ng mukha o kaganapan sa pagkilala sa output UI HAL kapag nagki-click sa button na Rehistrasyon o Pagkilala. At ang output na UI HAL ay nag-aabiso sa kaganapan ng pagdaragdag ng isang user sa vision algo HAL pagkatapos matagumpay ang pagpaparehistro ng mukha.
  • Nati-trigger ng GUI app ang kaganapan ng pagtanggal ng user sa output UI HAL kapag nag-click sa button na Tanggalin ang User pagkatapos makilala ang mukha ng user.
  • Ang GUI app ay nagti-trigger ng kaganapan ng paghinto ng oasis algo na tumatakbo sa output UI HAL kapag nag-click sa screen sa labas ng mga pindutan at mga imahe.

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

Ihanda ang software package para sa pagpapatupad ng example.

  • I-clone ang base software na lvgl_gui_camera_preview_cm7. Baguhin ang pangalan ng proyekto at ang pangunahing filepangalan sa lvgl_gui_face_rec_cm7.
  • Kailangang ma-update ang framework sa software dahil nagsimula nang maging pampubliko ang mga source code para sa framework core sa GitHub mula sa bersyon 1.1.2.
  • Palitan ang framework folder ng kopya ng V1.1.2 mula sa GitHub maliban sa files fwk_log.h at fwk_common.h sa ilalim ng inc\ dahil binago ang mga ito para sa serye ng application note. Ang mga operasyon ay ipinapakita sa Figure 4:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (11)
  • Tanggalin ang folder na framework_cm7 sa ilalim ng pangkat ng libs at alisin ang library framework_cm7 at ang path ng paghahanap nito na na-configure sa Project > Properties > C/C++ Build > settings > Tool Settings > MCU C++ Linker > Libraries dahil ibinigay ang source code ng core.

Paganahin ang tampok na pagkilala sa mukha sa framework
Ang tampok na pagkilala sa mukha ay binuo sa modelo ng ML vision algorithm na ibinigay bilang isang static na library - isang oasis lite runtime library ng NXP. Ang library ay isang maliit, napakahusay, na-customize, at na-optimize na library ng AI. Kasama sa modelo ang face detection, face recognition, glass detection, at liveness detection. Pangunahing nagbibigay ito ng API OASISLT_run_extended() upang patakbuhin ang pipeline ng pagkilala sa mukha habang ina-update ang mga resulta sa tumatawag sa pamamagitan ng mga callback ng kaganapan, at magdagdag/mag-update/magtanggal ng mga mukha sa database sa pamamagitan ng mga callback ng face database pagkatapos tukuyin ang source frame information, callback, at memorya. pool na ginagamit ng library sa pamamagitan ng pagtawag sa isa pang API OASISLT_init() sa pagsisimula. Ang pagtawag sa mga API at ang callback function ay ipinatupad sa vision algo HAL ng framework.

Magdagdag ng vision algo model library

  1. Kopyahin ang folder oasis na naglalaman ng library at ang nauugnay na header file mula sa smart HMI\coffee_machine\cm7\libs\ papunta sa folder libs ng exampsa SW.
  2. Idagdag ang path ng paghahanap ng header file sa Project > Properties > C/C++ Build > settings > Tool Settings > MCU C compiler > Includes at MCU C++ compiler > Kasama ang: “${workspace_loc:/${ProjName}/libs/oasis/include}”
  3. Idagdag ang lib at ang path ng paghahanap nito sa Project > Properties > C/C++ Build > settings > MCU C++ Linker > Libraries: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” at ang macro definition sa paganahin ang feature sa Project > Properties > C/C++ Build > settings > Tool Settings > MCU C compiler > Preprocessor at MCU C++ compiler > Preprocessor: SMART_TLHMI_2D

Paganahin ang vision algo HAL
Ang vision algo HAL ay nagtutulak sa vision algo model upang gumana at tumugon sa mga resulta sa UI output HAL pagkatapos matanggap ang mga kaganapan mula dito.

Upang paganahin ito, i-clone ang umiiral na katulad na driver ng HAL file kung saan ipinatupad ang mga function sa ibaba:

  • Ipatupad ang mga callback ng mga pagpapatakbo ng database ng mukha at paghawak ng mga kaganapan.
  • Isulong ang vision algo upang gumana sa pamamagitan ng pagtawag sa mga API ng library ng oasis.
  • I-access ang database ng mukha ng user at database ng app (hindi ito kailangan sa example).
  • Tumanggap ng mga kaganapan mula sa at magpadala ng mga resulta sa output UI HAL.

Ang mga pangunahing gumagana upang ipatupad ang HAL para sa exampsila ay:

  • I-clone ang umiiral na katulad na driver ng HAL file at baguhin ang mga kaugnay na pangalan.
  • Alisin ang mga code na nauugnay sa mga pagpapatakbo ng data ng app.
  • I-update ang mga kahulugan at function para sa paghawak ng mga kaganapan mula sa output UI HAL sa bawat exampang disenyo.
  • Idagdag ang mga configuration na kinakailangan sa pagsisimula ng oasis.

Ang mga detalyadong hakbang ay nasa ibaba:

  1. I-clone ang hal_vision_algo_oasis_coffeemachine.c. Baguhin ang filepangalan sa hal_vision_algo_oasis_guifacerec.c. At palitan ang lahat ng mga string na CoffeeMachine ng GUIFaceRec sa file.
  2. Alisin ang mga code na naglalaman ng string coffeedb (hindi case sensitive) na nauugnay sa database ng app, halample, #include hal_sln_coffeedb.h.
  3. Baguhin ang function na HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() para sa paghawak ng mga kaganapan mula sa output UI HAL.
    • Baguhin ang kahulugan ng kaganapan na kEventFaceRecId_RegisterCoffeeSelection sa kEventFaceRecId_RegisterUserFace at ang string ng structure na regCoffeeSelection sa regGUIFaceRec para sa pangangasiwa ng kaganapan upang magdagdag ng bagong data ng feature ng mukha sa database.
    • Upang ipakita ang karaniwang proseso ng mga pagkilos sa pagkilala sa mukha sa example, baguhin ang paghawak sa kaso ng kEventFaceRecID_OasisSetState na may mga kahulugan ng mga estado:
      • kOASISLiteState
      • Pagpaparehistro kOASISLiteState
      • Pagkilala kOASISLiteState
      • Huminto
  4. Idagdag at baguhin ang mga kahulugan ng mga kaganapang binanggit sa hakbang sa itaas.
    • Kopyahin ang header file smart_tlhmi_event_descriptor.h mula sa smart HMI\coffee_machine \cm7\source\event_handlers\ papunta sa folder source ng exampsa SW. I-update ang file tulad ng nasa ibaba:
    • Baguhin ang kahulugan ng kaganapan na kEventFaceRecId_RegisterCoffeeSelection sa kEventFaceRecId_RegisterUserFace sa uri ng enum na _event_smart_tlhmi_id at ang string ng istraktura regCoffeeSelection sa regGUIFaceRec sa struct _event_smart_tlhmi. Kaya, baguhin ang struct register_coffee_selection_event_t para sa regCoffeeSelection sa register_gui_facerec_event_t.
    • I-delete ang iba pang content na ginagamit para sa coffee machine app, halample, ang code line tungkol sa boses: #include “hal_event_descriptor_voice.h”.
    • Idagdag ang mga uri ng kOASISLiteState_Stopped at kOASISLiteState_Running sa uri ng enum na oasis_lite_state_t sa hal_vision_algo.h sa ilalim ng framework>hal>vision sa proyekto tulad ng nasa ibaba:
      typedef enum _oasis_lite_state {
      • kOASISLiteState
      • Tumatakbo, kOASISLiteState
      • Huminto, kOASISLiteState
      • Pagkilala,
      • kOASISLiteState
      • Pagpaparehistro, kOASISLiteState
      • DeRegistration, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • Bilangin
    • Gamitin ang na-update na struct oasis_lite_state_t sa itaas upang pinuhin ang struct oasis_state_event_t sa hal_event_descriptor_face_rec.h sa ilalim ng framework>hal>vision sa proyekto tulad ng nasa ibaba: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
  5. Baguhin ang lahat ng kEventInfo_Remote sa kEventInfo_Local para sa pagpapadala ng mga kaganapan mula sa vision algo HAL sa iba pang mga HAL na tumatakbo sa parehong core bilang single core sa halip na dual-core ang ginagamit sa example.
  6. Idagdag at baguhin ang mga configuration sa ibaba para sa pagsisimula ng oasis sa OASISLT_init():
    • Idagdag ang mga macro definition at memory section para sa video frame sa board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
      • #define OASIS_RGB_FRAME_HEIGHT 600
      • #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
      • #define OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
      • #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
      • __attribute__((section(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
      • __attribute__((nakahanay(alignbytes)))
    • I-configure ang pagtatalaga ng memorya sa seksyon ng memorya sa itaas na fb_sh_mem sa Project > Properties > C/C++ Build > Mga Setting ng MCU na ipinapakita sa Figure 5:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (12)
    • Ideklara ang global variable na g_DTCOPBuf sa lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Patuloy na idagdag ang mga kahulugang ginamit sa variable sa itaas:
    • Tukuyin ang seksyon sa itaas sa board_define.h:
      • #define AT_NONCACCHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • attribute__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • attribute__((aligned(alignbytes)))
    • Isama ang header file hal_vision_algo.h na naglalaman ng macro definition na DTC_OPTIMIZE_BUFFER_SIZE sa app_config.h na kasama sa lvgl_gui_face_rec_cm7.cpp.
  7. Itakda ang variable na s_debugOption sa true para sa pagpapakita ng progress status sa face recognition.
  8. Idagdag ang path ng paghahanap ng header files of the vision HAL on Project > Properties >C/C++ Build > settings > Tool Settings > MCU C compiler > Includes and MCU C++ compiler > Kasama ang: “${workspace_loc:/${ProjName}/framework/hal/vision}”
  9. Idagdag ang kahulugan sa ibaba upang paganahin ang vision algo HAL sa board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Paganahin ang output UI HAL
Inaabisuhan ng output UI HAL ang mga kaganapan sa vision algo HAL at tumutugon sa mga resulta ng inference mula sa vision algo HAL. Gamit ang GUI app, ang mga kaganapan ay karaniwang na-trigger ng app at ang mga resulta ay ipinapakita sa app.

Upang paganahin ito, i-clone ang umiiral na katulad na driver ng HAL file kung saan karaniwang ipinapatupad ang mga function sa ibaba:

  • Ipaalam ang mga kaganapan para sa pagkilala sa mukha at pag-access sa database.
  • Ipatupad ang mga callback para sa GUI app upang ma-trigger ang mga kaganapan.
  • Pangasiwaan ang mga resulta ng hinuha mula sa vision algo module.
  • Ipakita ang proseso at mga resulta ng pangangasiwa ng mga kaganapan sa UI ng progress bar na kinokontrol gamit ang mga timer at face guide rectangle.

Ang mga pangunahing gumagana upang ipatupad ang HAL para sa exampAng ginamit sa dokumentong ito ay:

  • I-clone ang umiiral na katulad na driver ng HAL file at baguhin ang mga kaugnay na pangalan.
  • Alisin ang mga code na nauugnay sa app.
  • I-update ang mga function para sa notification ng mga kaganapan at tugon ng mga resulta sa bawat exampang disenyo.
  • Idagdag ang mga callback para sa GUI app upang ma-trigger ang mga kaganapan.

Ang mga detalyadong hakbang ay nasa ibaba:

  1. I-clone ang hal_output_ui_coffee_machine.c. Baguhin ang filepangalan sa hal_ output_ui_guifacerec.c.
  2. Palitan ang lahat ng mga string na CoffeeMachine ng GUIFaceRec sa file.
  3. Alisin ang mga code na nauugnay sa app – coffee machine.
    • Alisin ang mga function na WakeUp() at _StandBy() at ang mga nauugnay na code (maaaring hanapin ang string wake_up at standby para sa kanila).
    • Tanggalin mo preview mga kaganapan sa mode na humahawak ng mga nauugnay na code sa HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Alisin ang mga function na UI_xxx_Callback() at ang mga code na naglalaman ng string gui_ at screen na nauugnay sa GUI ng coffee machine maliban sa gui_set_virtual_face() para sa preview tampok na mode.
    • Alisin ang lahat ng code na kasangkot sa mga variable na s_IsWaitingAnotherSelection at s_IsWaitingRegisterSelection na nauugnay sa coffee machine app.
    • Alisin ang mga code na nauugnay sa boses, audio, at wika. Para kay example:
      • #include “hal_voice_algo_asr_local.h”,
      • #include “hal_event_descriptor_voice.h”
  4. Para sa iba't ibang notification ng mga kaganapan, ipatupad ang mga bagong function na _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec(), at DeregisterGUIFaceRec() na tumutukoy sa mga function na _StopFaceRec(), _RegisterCoffeeSelection(), at Deregister()CoffeeRec() na tumutukoy sa mga function na _StopFaceRec(), _RegisterCoffeeSelection(), at Deregister()CoffeeSelection.
    • Ang _OutputManagerNotify() ay nagpapatupad ng pangunahing function ng output ng kaganapan upang magpadala ng isang kaganapan sa vision algo HAL. Tinatawag ito ng mga function sa ibaba upang magpadala ng sarili nilang mga kaganapan.
    • Ang _SetFaceRec() ay nagpapadala ng event na kEventFaceRecID_OasisSetState para i-trigger ang vision algo para sa pagpaparehistro ng mukha, pagkilala, at paghinto ng algo.
    • Ipinapadala ng _RegisterGUIFaceRec() ang event na kEventFaceRecId_RegisterGUIFaceRec na tinukoy sa smart_tlhmi_event_descriptor.h upang magdagdag ng data ng feature ng mukha sa database kapag OK ang pagpaparehistro.
    • Ipinapadala ng DeregisterGUIFaceRec() ang kaganapan na kEventFaceRecID_DelUser upang tanggalin ang data ng tampok na mukha mula sa database kapag ipinapasa ang pagkilala sa mukha.
  5. I-update ang mga code para gawin ang mga kaukulang aksyon kabilang ang pag-refresh ng GUI sa pamamagitan ng pagtawag sa mga API mula sa LVGL GUI app para sa mga resulta ng inference ng pagpaparehistro ng mukha at pagkilala sa function na _InferComplete_Vision() bawat exampdisenyo natin. Para kay example, kapag matagumpay ang pagpaparehistro ng mukha,
    • Itigil ang pagpapakita ng progreso sa pamamagitan ng pagtawag sa _FaceRecProcess_Stop();
    • Itigil ang pagpaparehistro ng mukha sa pamamagitan ng pagtawag sa _SetFaceRec(kOASISLiteState_Stopped);
    • Ipakita ang matagumpay na resulta sa GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Irehistro ang data ng mukha sa database: _RegisterUserFace(s_UserId);
  6. Magdagdag ng mga function ng callback ng UI para pangasiwaan ang mga kaganapan: preview, pagpaparehistro ng mukha, pagkilala, at pagtanggal ng user na na-trigger mula sa GUI. Para kay example, ang face registration callback: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • At idagdag ang mga function na _FaceRecProcess_Start() at _FaceRecProcess_Stop() upang ipakita ang progreso at katayuan sa iba't ibang mga kaganapan at resulta.
    • I-update ang timer ISR callback function na _SessionTimer_Callback() upang mahawakan ang kaso ng time-out sa pamamagitan ng pagtawag sa: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Idagdag ang mga kahulugan sa ibaba upang paganahin ang UI output HAL sa board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Paunawa:
Para mas maipakita ang feature sa pagkilala ng mukha, panatilihin ang function upang ipakita ang proseso at mga resulta ng pagkilala sa mukha sa output UI HAL. Ang function ay inilarawan bilang sa ibaba

  • Ang face guide rectangle ay nagpapakita ng asul, at ang progress bar ay nagpapakita ng progreso kapag sinimulan ang pagpaparehistro o pagkilala ng mukha.
  • Ang face guide rectangle ay nagpapakita ng pula kapag ang face registration ay matagumpay.
  • Ang face guide rectangle ay nagpapakita ng berde kapag matagumpay ang pagkilala sa mukha.
  • Ang face guide rectangle ay nananatiling asul, at ang progress bar ay nagpapakita ng buong pag-unlad kapag ang aksyon ay hindi matagumpay pagkatapos ng pag-expire ng timer. Sa puntong iyon, ihinto ang pagpaparehistro ng mukha o pagkilala.

Ang progress bar at face guide rectangle ay ipinakita bilang mga icon na binuo sa resource binary file upang ma-program sa Flash. Ang mga pointer sa data ng mga icon sa SDRAM ay naka-set up sa function na LoadIcons(APP_ICONS_BASE) na tinatawag sa output UI HAL device initialization sa output UI HAL. Dapat itong ipatupad ang suporta ng mga icon para sa function.

Ipatupad ang suporta ng mga icon

  1. Buuin ang mapagkukunan na pinagsasama ang mga icon sa mga larawang ginamit sa LVGL GUI app:
    • I-clone ang apat na icon na header files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h, at virtual_face_red_420x426.h mula sa smart HMI
      \coffee machine\resource\icons\ sa mga bagong icon ng folder sa ilalim ng resource folder ng exampsa SW.
    • Idagdag ang path ng paghahanap para sa apat na icon files sa camera_preview_resource.txt file sa folder ng mapagkukunan, para sa halample: icon ../resource/icons/process_bar_240x14.h
    • Ipatupad ang camera_preview_resource_build.bat upang buuin ang mga larawan at mga mapagkukunan ng icon upang makabuo ng bin file camera_preview_resource.bin at ang impormasyon file resource_information_table.txt (Tingnan ang Larawan 6).NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (13)
  2. Tukuyin ang panimulang address sa SDRAM at ang laki ng mga icon sa app_config.h. Magsisimula ang address sa tabi ng mga larawan ng GUI app. Ang laki ay nabuo sa impormasyon file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. I-update ang nakatalagang laki ng seksyon ng memorya na pinangalanang res_sh_mem sa 0x200000 sa pamamagitan ng muling pagtukoy nito sa app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 at ang kaukulang setting sa Project > Properties > C/C++ Build > MCU settings.
  4. Idagdag ang laki ng icon sa kabuuang laki ng mapagkukunang na-load mula sa Flash hanggang SDRAM sa function na APP_LoadResource() sa pangunahing file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Pansinin: Upang makumpleto ang tampok na pagkilala sa mukha, kailangan ang suporta ng LVGL GUI app. Ang UI callback function sa output UI HAL ay tinatawag ng LVGL GUI app para sa paghawak ng mga kaganapan mula sa UI screen. Sa kabilang banda, ang output UI HAL ay tumatawag sa mga API mula sa LVGL GUI app upang i-update ang UI upang ipakita ang resulta at katayuan. Ang pagbuo ng LVGL GUI app ay medyo independyente at ipinakilala sa Seksyon 4.3.

4.1.5 Magsimula ng mga HAL device at manager para sa pagkilala sa mukha
Ang pinaganang vision algo HAL at UI output HAL at ang kanilang mga tagapamahala ay nagsimula sa pangunahing file
lvgl_gui_face_rec_cm7.cpp kasunod ng mga conversion ng development sa framework tulad ng nasa ibaba:

  1. Isama ang header file nauugnay sa dalawang tagapamahala ng HAL sa pamamagitan ng pagdaragdag ng linya ng code:
    • #include ” fwk_output_manager.h “
    • #include “fwk_vision_algo_manager.h”
  2. Ipahayag ang mga HAL device:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Irehistro ang mga HAL device:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Simulan ang mga tagapamahala:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Simulan ang mga tagapamahala:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Tukuyin ang priyoridad ng mga gawain ng manager:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Magdagdag ng suporta sa database ng mukha sa framework
Ang nakarehistrong data ng tampok na mukha ay naa-access sa database ng mukha na nakaimbak sa Flash sa pamamagitan ng kaunti file sistema. Ang mga hakbang upang magdagdag ng suporta sa database ng mukha ay inilarawan sa ibaba.

Magdagdag ng mga driver para sa Flash storage
Kopyahin ang Flash interface FlexSPI driver files fsl_flexspi.c at fsl_flexspi.h, at ang driver ng pag-encrypt ng data files fsl_caam.c at fsl_caam.h mula sa landas na SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ papunta sa folder ng driver ng exampsa SW.

Magdagdag ng suporta sa antas ng board

  1. Idagdag ang mga kahulugan ng FlexSPI na ginagamit para sa Flash device na nakasakay sa board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopyahin ang mga operator at configuration files ng Flash device na flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, atsln_flash_ops.h sa ilalim ng path na smart HMI\coffee_machine\cm7\source sa\folderampsa SW.
    • Alisan ng check ang "Ibukod ang mapagkukunan mula sa build" sa C/C++ Build > Mga Setting pagkatapos mag-right click sa files' pangalan at pagbubukas ng Properties para ma-enable ang mga ito na maisama sa proyekto.
  3. Baguhin ang kasamang header filepangalanan ang sln_flash_config.h sa sln_flash_config_w25q256jvs.h sa sln_flash_config.c at flexspi_nor_flash_ops.h.
  4. Itakda ang pinagmulan ng orasan ng FlexSPI1 sa file clock_config.c na tumutukoy sa coffee machine app.

Magdagdag ng adaptor at suporta sa gitnang antas

  1. Kopyahin ang files sln_flash.c, sln_flash.h, sln_encrypt.c, at sln_encrypt.h bilang mga driver ng adaptor para sa file system at app mula sa landas ng smart HMI\coffee_machine\cm7\source\ patungo sa folder source ng example. I-update ang bago files:
    • Alisan ng check ang "Ibukod ang mapagkukunan mula sa build" sa mga ito para sa pagbuo.
    • Baguhin ang lahat ng kasamang header file pangalanan ang sln_flash_config.h hanggang sln_flash_config_w25q256jvs.h.
  2. Kopyahin ang folder filesystem na naglalaman ng mga API para sa maliit filesystem at HAL driver mula sa matalinong HMI \coffee_machine\cm7\source\ hanggang sa exampsa SW. At i-update para sa bagong folder:
    • Alisan ng check ang "Ibukod ang mapagkukunan mula sa build" dito para sa pagbuo.
    • Idagdag ang include path para dito sa mga setting ng proyekto: “${workspace_loc:/${ProjName}/filesistema}”
    • Baguhin ang kasamang header file pangalanan ang sln_flash_config.h sa sln_flash_config_w25q256jvs.h at fica_definition.h sa app_config.h sa file sln_flash_littlefs.h.
  3. Kopyahin ang folder na littlefs na naglalaman ng gitnang paninda – maliit filesystem mula sa path SDK_2_13_0_ MIMXRT1170-EVK\middleware\ sa exampsa SW. At i-update ang bagong folder:
    • Alisan ng check ang "Ibukod ang mapagkukunan mula sa build" dito para sa pagbuo.
    • Idagdag ang include path para dito sa mga setting ng proyekto: “${workspace_loc:/${ProjName}/littlefs}”

Magdagdag ng mga driver ng HAL 

  • Mayroong dalawang HAL device - file system at face database na sinusuportahan ng HAL para sa tampok na pag-access sa database at naipatupad na ang mga ito sa balangkas nang walang anumang pagbabago. Paganahin ang mga ito sa pamamagitan ng pagdaragdag ng mga kahulugan sa ibaba sa board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

At baguhin ang pangalan ng database ng mukha para sa example: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”

Magdagdag ng suporta sa antas ng app

  1. I-update ang pangunahing file lvgl_gui_face_rec_cm7.cpp:
    • Isama ang header file nauugnay sa Flash file system HAL manager sa pamamagitan ng pagdaragdag ng linya ng code: #include “fwk_flash.h”
    • Ipahayag at irehistro file system HAL device:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Tandaan: Ang file system HAL device ay dapat na nakarehistro bago ang lahat ng device manager ay masimulan sa function na APP_InitFramework().
    • Tawagan ang function na BOARD_ConfigMPU() sa APP_BoardInit() para i-configure ang MPU.
  2. Itakda ang file pagtatalaga ng system sa Flash sa file app_config.h sa pamamagitan ng pagtukoy sa mga macro definition na ginamit sa file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define FICA_FILE_SYS_SIZE (0x280000)

Mga pagsasaayos
Ang ilang mga code na nauugnay sa Flash ay isinasagawa sa lugar ng SRAM ITC para sa sapat na pagganap. Kopyahin ang mga linkscript ng folder na naglalaman ng mga configuration ng linker mula sa path na smart HMI\coffee_machine\cm7\ patungo sa exampsa SW.

Magpatupad ng LVGL GUI app
Ang pagbuo ng isang LVGL GUI app batay sa framework ay tumatawag sa mga API mula sa output UI HAL at nagbibigay ng mga API sa output UI HAL (Tingnan ang Seksyon 4.1.3 para sa pagpapatupad ng output UI HAL).

Gayunpaman, ang detalyadong pagpapatupad ng isang LVGL GUI app ay nakasalalay sa mga kinakailangan at disenyo ng application. Ang GUI app sa ex na itoampIdinisenyo ang le gaya ng inilarawan sa simula ng seksyong Seksyon 4.

Nasa ibaba ang mga pagpapakilala sa pagpapatupad:

  1. Ang mga customized na code ay ipinatupad sa custom.c at custom.h na ibinigay ng GUI Guider bilang interface sa pagitan ng proyekto ng GUI Guider at ng naka-embed na proyekto ng system.
    •  Idagdag ang mga bagong function na pinangalanang gui_xxx() sa custom.c para makamit ang mga function sa ibaba:
      • Para sa output UI HAL at GUI app na i-update ang UI.
      • Para sa GUI app na mag-trigger ng mga kaganapan sa pamamagitan ng pagtawag sa UI callback function mula sa output UI HAL.
        Para kay exampAt, ang bagong function na gui_event_face_rec_action() ay tumatawag sa mga function ng callback ng UI upang pangasiwaan ang isa sa mga kaganapan ng pagpaparehistro ng mukha, pagkilala sa mukha at pagtanggal ng user na na-trigger mula sa GUI app kapag na-click ang kaugnay na button.
        Tandaan: Ang function na gui_set_virtual_face() na tinatawag sa output UI HAL para sa preview kailangang ipatupad ang mode sa custom.c:
    •  I-clone ang function na gui_set_virtual_face() mula sa smart HMI\coffee_machine\cm4\custom \custom.c.
    •  Baguhin ang pangalan ng widget na home_img_cameraPreview sa screen_img_camera_preview sa function.
    •  Ipatupad ang mga function ng callback ng UI na may parehong prototype sa lahat ng nasa output UI HAL sa ilalim ng kontrol ng macro definition #ifndef RT_PLATFORM sa custom.c para sa pagiging compatible sa proyekto ng GUI Guider dahil ang mga function na ito sa output UI HAL ay nakasalalay sa naka-embed na platform. Sa custom.c, umaasa sila sa simulator sa GUI guider at independyente sa naka-embed na platform. Para kay example, ang face registration callback ay ipinatupad tulad ng sa ibaba para sa GUI Guider simulator na tumatakbo: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = mali; bumalik; }
      Tandaan: Sumangguni sa parehong prototype ng function na ipinakilala sa hakbang 6 ng Seksyon 4.1.3
      Ang macro definition RT_PLATFORM ay nakatakda sa mga setting ng proyekto ng MCUXpresso tulad ng ipinapakita sa Figure 7:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (14)
    • Ideklara ang lahat ng function na pinangalanang UI_xxx_Callback() at gui_xxx() sa custom.h at magdagdag ng custom.h na kasama sa smart_tlhmi_event_descriptor.h upang ibahagi ang mga GUI API sa UI output HAL.
  2. Bumuo ng GUI sa GUI Guider:
    • I-clone ang folder camera preview naglalaman ng software ng proyekto ng GUI Guider sa folder na gui_guider sa base software package na lvgl_gui_camera_preview_cm7. Baguhin ang nauugnay na pangalan na camera_preview sa face_rec para sa bagong example.
    • Kopyahin ang na-update na custom.c at custom sa itaas. h sa bagong software ng proyekto ng GUI Guider.
    •  Buksan ang bagong face_rec na proyekto sa GUI Guider. I-update tulad ng nasa ibaba:
      • Idagdag ang bagong button na may label na Tanggalin ang User. Idagdag ang flag na Nakatago dito upang maitago ang button kapag nagsimula ang GUI app.
      • Idagdag ang linya ng code ng pagtawag sa API gui_event_face_rec_action() na may iba't ibang parameter ng ID ng kaganapan sa trigger na "Inilabas" sa Setting ng Kaganapan ng lahat ng mga button na Rehistrasyon, Pagkilala at Tanggalin ang User para sa pagti-trigger ng mga kaganapan ng pagpaparehistro ng mukha, pagkilala sa mukha at pagtanggal ng user. Ipinapakita ng Figure 8 ang code para sa kaganapan ng button na Pagpaparehistro:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (15)
  3. I-update ang nabuong code mula sa GUI Guider sa proyekto ng MCUXpresso.
    • Palitan ang mga nilalaman maliban sa mga imahe ng folder sa folder na nabuo ng proyekto ng MCUXpresso SW ng mga katumbas na nasa folder na nabuo ng proyekto ng GUI Guider SW.

Tandaan: Para sa higit pang mga detalye tungkol sa mga pagbabagong ipinakilala sa itaas, tingnan ang exampang software sa https://mcuxpresso.nxp.com/appcodehub.

Mga pagpapatunay kasama ang exampang proyekto

Para makuha ang exampAng software package na naglalaman ng mga mapagkukunan at tool para sa application note na ito, bisitahin ang: https://mcuxpresso.nxp.com/appcodehub. Buksan ang exampang proyekto sa MCUXpresso IDE. Buuin at iprograma ang .axf file sa address na 0x30000000 at i-program ang resource bin file camera_preview_resource.bin sa address na 0x30800000.

Ang LVGL GUI face recognition exampgumagana nang normal tulad ng nasa ibaba:

  • Preview: Sa power up, ang mga video stream na nakunan ng camera ay nagpapakita sa partikular na lugar ng camera preview sa screen ng GUI. Ang label ng katayuan ay nagpapakita ng "Preview…”. Para sa mga detalye, tingnan ang Figure 3. Nakatago ang button na Tanggalin ang User. Kapag nag-click sa lugar sa labas ng mga pindutan at mga imahe, ipinapakita nito ang preview sabihin tulad ng nasa itaas pagkatapos ng pagpaparehistro ng mukha o pagkilos ng pagkilala.
  • Pagpaparehistro:
    • tartup: Kapag na-click ang pindutan ng Pagpaparehistro, magsisimula ang pagpaparehistro ng mukha. Ang label ng katayuan ay nagbabago upang ipakita ang "Pagpaparehistro...", ang parihaba ng gabay sa mukha ay nagpapakita ng asul, at ang progress bar ay nagsisimulang ipakita ang pag-usad. Tiyaking lalabas ang mukha ng user sa asul na face guide rectangle para sa pagpaparehistro.
    • tagumpay: Ang status label ay nagpapakita ng “Registration…OK” at ang rehistradong user ID number, ang face guide rectangle ay magiging pula kung ang face registration ay matagumpay bago ang progress ay makikitang puno sa bar.
    • Failure -> Time out: Ang status label ay nagpapakita ng “Registration…Time out” kung ang pagpaparehistro ng mukha ay nabigo pa rin kapag ang progreso ay nagpapakitang puno sa bar.
    • Failure -> Duplication: Ang status label ay nagpapakita ng “Registration…Failed”, ang face guide rectangle ay magiging berde kung ang rehistradong mukha ay nakilala bago ang pag-usad ay lumabas na puno sa bar.
  • ecognition:
    • Startup: Kapag na-click ang Recognition button, magsisimula ang face recognition. Ang label ng katayuan ay nagbabago upang ipakita ang "Pagkilala...", ang parihaba ng gabay sa mukha ay nagpapakita ng asul, at ang progress bar ay nagsisimulang ipakita ang pag-unlad. Siguraduhin na ang mukha ng user ay ipinapakita sa asul na face guide rectangle para sa pagpaparehistro.
    • tagumpay: Ang status label ay nagpapakita ng “Recognition…OK” at ang kinikilalang user ID number, ang face guide rectangle ay magiging berde kung ang face recognition ay matagumpay bago ang pag-usad ay lumabas na puno sa bar. Sa puntong ito, lilitaw ang button na Tanggalin ang User. Nangangahulugan ito na ang gumagamit ay pinapayagan na tanggalin lamang kapag nakilala ito.
    • sakit: Ang label ng katayuan ay nagpapakita ng "Pagkilala...Time out" kung nabigo pa rin ang pagkilala sa mukha kapag ang pag-usad ay nagpapakitang puno sa bar.
  • Tanggalin ang User: Kapag na-click ang button na "Delete User", pagkatapos na matagumpay ang pagkilala sa mukha, magbabago ang status label upang ipakita ang "Delete User...OK" kung saan nagiging asul ang face guide rectangle at ang pag-usad ay makikitang buo sa bar. Itinago muli ang button na Tanggalin ang User. Ang kinikilalang mukha/user ay tinanggal mula sa database. Nangangahulugan ito na ang mukha/user na ito ay hindi makikilala hanggang sa muling mairehistro.

Tandaan ang tungkol sa source code sa dokumento
ExampAng code na ipinapakita sa dokumentong ito ay may sumusunod na copyright at lisensya ng BSD-3-Clause:

Copyright 2024 NXP Redistribution at paggamit sa source at binary forms, mayroon man o walang pagbabago, ay pinahihintulutan sa kondisyon na ang mga sumusunod na kundisyon ay natutugunan:

  1. Dapat panatilihin ng mga muling pamamahagi ng source code ang abiso sa copyright sa itaas, ang listahang ito ng mga kundisyon at ang sumusunod na disclaimer.
  2. Ang mga muling pamamahagi sa binary na anyo ay dapat na kopyahin ang abiso sa copyright sa itaas, ang listahang ito ng mga kundisyon at ang sumusunod na disclaimer sa dokumentasyon at/o iba pang mga materyales ay dapat ibigay kasama ng pamamahagi.
  3. Ang pangalan ng may-ari ng copyright o ang mga pangalan ng mga nag-ambag nito ay hindi maaaring gamitin upang i-endorso o i-promote ang mga produkto na nagmula sa software na ito nang walang tiyak na nakasulat na pahintulot.

ANG SOFTWARE NA ITO AY IBINIBIGAY NG MGA NAGHAWA NG COPYRIGHT AT MGA CONTRIBUTOR "AS IS" AT ANUMANG TAHAS O IPINAHIWATIG NA WARRANTY, KASAMA, NGUNIT HINDI LIMITADO SA, ANG MGA IPINAHIWATIG NA WARRANTY NG KALIDAD AT KAANGKUPAN PARA SA ISANG PARTIKULAR NA LAYUNIN. KAHIT KAHIT KAHIT KAHIT KAHIT KAHIT KAHIT KAHIT KAHIT KAHIT ANANG MANANAGOT ANG NAGHAWAK NG COPYRIGHT O MGA CONTRIBUTOR PARA SA ANUMANG DIREKTA, DI DIREKTA, NAGSASAMA, ESPESYAL, HALIMBAWA, O KINAHIHINUNGANG MGA PINSALA (KASAMA, PERO HINDI LIMITADO SA, PAGBIBIGAY NG KAPALIT NA KALANDAAN, MGA SERBISYO; D, MGA SERBISYO; D. O BUSINESS INTERRUPTION) GAANO MAN ANG SANHI AT SA ANUMANG TEORYA NG PANANAGUTAN, KUNG SA KONTRATA MAN, MAHIGPIT NA PANANAGUTAN, O TORT (KASAMA ANG PAGPAPABAYA O IBA PA) NA NAGMULA SA ANUMANG PARAAN NG PAGGAMIT NG SOFTWARE NA ITO, KAHIT NA NABIBIGAY.

Kasaysayan ng rebisyon

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

Legal na impormasyon

Mga Kahulugan
Draft — Ang isang draft na status sa isang dokumento ay nagpapahiwatig na ang nilalaman ay nasa ilalim pa rin ng panloob na review at napapailalim sa pormal na pag-apruba, na maaaring magresulta sa mga pagbabago o pagdaragdag. Ang NXP Semiconductor ay hindi nagbibigay ng anumang mga representasyon o warranty tungkol sa katumpakan o pagkakumpleto ng impormasyong kasama sa isang draft na bersyon ng isang dokumento at walang pananagutan para sa mga kahihinatnan ng paggamit ng naturang impormasyon.

Disclaimer

  • Limitadong warranty at pananagutan — Ang impormasyon sa dokumentong ito ay pinaniniwalaang tumpak at maaasahan. Gayunpaman, ang NXP Semiconductor ay hindi nagbibigay ng anumang mga representasyon o warranty, ipinahayag o ipinahiwatig, tungkol sa katumpakan o pagkakumpleto ng naturang impormasyon at walang pananagutan para sa mga kahihinatnan ng paggamit ng naturang impormasyon. Ang NXP Semiconductor ay walang pananagutan para sa nilalaman sa dokumentong ito kung ibinigay ng isang mapagkukunan ng impormasyon sa labas ng NXP Semiconductor.
    Sa anumang pagkakataon ay mananagot ang NXP Semiconductors para sa anumang hindi direkta, incidental, punitive, espesyal o kinahinatnang pinsala (kabilang ang - nang walang limitasyon - nawalang kita, nawalang ipon, pagkagambala sa negosyo, mga gastos na nauugnay sa pagtanggal o pagpapalit ng anumang mga produkto o mga singil sa muling paggawa) kung o hindi ang mga naturang pinsala ay batay sa tort (kabilang ang kapabayaan), warranty, paglabag sa kontrata o anumang iba pang legal na teorya.
    Sa kabila ng anumang pinsala na maaaring makuha ng customer sa anumang dahilan, ang pinagsama-samang pananagutan ng NXP Semiconductor at pinagsama-samang pananagutan sa customer para sa mga produktong inilarawan dito ay dapat na limitado alinsunod sa Mga Tuntunin at kundisyon ng komersyal na pagbebenta ng NXP Semiconductors.
  • Karapatang gumawa ng mga pagbabago — Inilalaan ng NXP Semiconductors ang karapatang gumawa ng mga pagbabago sa impormasyong nai-publish sa dokumentong ito, kasama ang walang limitasyong mga detalye at paglalarawan ng produkto, anumang oras at nang walang abiso. Pinapalitan at pinapalitan ng dokumentong ito ang lahat ng impormasyong ibinigay bago ang paglalathala nito.
  • Angkop para sa paggamit — Ang mga produkto ng NXP Semiconductors ay hindi idinisenyo, awtorisado o ginagarantiyahan na angkop para sa paggamit sa suporta sa buhay, mga sistema o kagamitan na kritikal sa buhay o kritikal sa kaligtasan, o sa mga aplikasyon kung saan ang pagkabigo o malfunction ng isang produkto ng NXP Semiconductors ay maaaring makatwirang inaasahan na magreresulta sa personal na pinsala, kamatayan o matinding pag-aari o pinsala sa kapaligiran. Ang NXP Semiconductor at ang mga supplier nito ay hindi tumatanggap ng pananagutan para sa pagsasama at/o paggamit ng mga produkto ng NXP Semiconductor sa naturang kagamitan o aplikasyon at samakatuwid ang nasabing pagsasama at/o paggamit ay nasa sariling peligro ng customer.
  • Mga aplikasyon — Ang mga application na inilalarawan dito para sa alinman sa mga produktong ito ay para sa mga layuning panglarawan lamang. Ang NXP Semiconductor ay hindi gumagawa ng representasyon o warranty na ang mga naturang application ay magiging angkop para sa tinukoy na paggamit nang walang karagdagang pagsubok o pagbabago.
    Responsable ang mga customer para sa disenyo at pagpapatakbo ng kanilang mga application at produkto gamit ang mga produkto ng NXP Semiconductors, at walang pananagutan ang NXP Semiconductor para sa anumang tulong sa mga application o disenyo ng produkto ng customer. Nag-iisang responsibilidad ng customer na tukuyin kung ang produkto ng NXP Semiconductors ay angkop at akma para sa mga aplikasyon at produktong pinlano ng customer, gayundin para sa nakaplanong aplikasyon at paggamit ng (mga) customer ng third party. Dapat magbigay ang mga customer ng naaangkop na disenyo at mga pananggalang sa pagpapatakbo upang mabawasan ang mga panganib na nauugnay sa kanilang mga aplikasyon at produkto. Ang NXP Semiconductor ay hindi tumatanggap ng anumang pananagutan na may kaugnayan sa anumang default, pinsala, gastos o problema na nakabatay sa anumang kahinaan o default sa mga application o produkto ng customer, o sa aplikasyon o paggamit ng (mga) third party na customer ng customer. Responsable ang Customer sa paggawa ng lahat ng kinakailangang pagsubok para sa mga application at produkto ng customer gamit ang mga produkto ng NXP Semiconductors upang maiwasan ang default ng mga application at mga produkto o ng application o paggamit ng (mga) customer ng third party ng customer. Ang NXP ay hindi tumatanggap ng anumang pananagutan sa bagay na ito.
  • Mga tuntunin at kundisyon ng komersyal na pagbebenta — Ang mga produkto ng NXP Semiconductors ay ibinebenta alinsunod sa pangkalahatang tuntunin at kundisyon ng komersyal na pagbebenta, gaya ng inilathala sa https://www.nxp.com/profile/terms, maliban kung napagkasunduan sa isang wastong nakasulat na indibidwal na kasunduan. Kung sakaling ang isang indibidwal na kasunduan ay natapos lamang ang mga tuntunin at kundisyon ng kani-kanilang kasunduan ang dapat ilapat. Ang NXP Semiconductors ay tahasang tumututol sa paglalapat ng mga pangkalahatang tuntunin at kundisyon ng customer patungkol sa pagbili ng mga produkto ng NXP Semiconductors ng customer.
  • Kontrol sa pag-export — Ang dokumentong ito pati na rin ang (mga) item na inilarawan dito ay maaaring sumailalim sa mga regulasyon sa pagkontrol sa pag-export. Maaaring mangailangan ng paunang awtorisasyon ang pag-export mula sa mga karampatang awtoridad.
  • Angkop para sa paggamit sa mga produktong hindi kwalipikado sa automotive — Maliban kung ang dokumentong ito ay malinaw na nagsasaad na ang partikular na produktong NXP Semiconductors na ito ay automotive qualified, ang produkto ay hindi angkop para sa automotive na paggamit. Hindi ito qualified o nasubok alinsunod sa automotive testing o application requirements. Ang NXP Semiconductor ay hindi tumatanggap ng pananagutan para sa pagsasama at/o paggamit ng mga hindi automotive na kwalipikadong produkto sa automotive na kagamitan o mga application.
    Kung sakaling gamitin ng customer ang produkto para sa pagdidisenyo at paggamit sa mga automotive na application sa mga detalye at pamantayan ng sasakyan, dapat gamitin ng customer (a) ang produkto nang walang warranty ng produkto ng NXP Semiconductor para sa mga naturang automotive na aplikasyon, paggamit at mga detalye, at ( b) sa tuwing gagamitin ng customer ang produkto para sa mga automotive na application na lampas sa mga detalye ng NXP Semiconductor ang naturang paggamit ay nasa sariling peligro lamang ng customer, at (c) ganap na binabayaran ng customer ang NXP Semiconductor para sa anumang pananagutan, pinsala o nabigong mga claim sa produkto na nagreresulta mula sa disenyo at paggamit ng customer ng ang produkto para sa mga automotive application na lampas sa karaniwang warranty ng NXP Semiconductor at mga detalye ng produkto ng NXP Semiconductor.
  • Mga pagsasalin — Ang isang hindi Ingles (naisalin) na bersyon ng isang dokumento, kasama ang legal na impormasyon sa dokumentong iyon, ay para sa sanggunian lamang. Ang Ingles na bersyon ay mananaig sa kaso ng anumang pagkakaiba sa pagitan ng isinalin at Ingles na bersyon.
  • Seguridad — Nauunawaan ng customer na ang lahat ng produkto ng NXP ay maaaring sumailalim sa hindi natukoy na mga kahinaan o maaaring suportahan ang mga itinatag na pamantayan sa seguridad o mga detalye na may alam na mga limitasyon. Responsable ang Customer para sa disenyo at pagpapatakbo ng mga application at produkto nito sa kabuuan ng kanilang mga lifecycle upang mabawasan ang epekto ng mga kahinaang ito sa mga application at produkto ng customer. Ang responsibilidad ng customer ay umaabot din sa iba pang bukas at/o pagmamay-ari na teknolohiya na sinusuportahan ng mga produkto ng NXP para gamitin sa mga aplikasyon ng customer. Ang NXP ay hindi tumatanggap ng pananagutan para sa anumang kahinaan. Dapat na regular na suriin ng customer ang mga update sa seguridad mula sa NXP at mag-follow up nang naaangkop. Ang customer ay dapat pumili ng mga produkto na may mga tampok na panseguridad na pinakamahusay na nakakatugon sa mga panuntunan, regulasyon, at pamantayan ng nilalayon na aplikasyon at gagawa ng mga pinakahuling desisyon sa disenyo patungkol sa mga produkto nito at tanging responsable para sa pagsunod sa lahat ng legal, regulasyon, at mga kinakailangan na nauugnay sa seguridad tungkol sa mga produkto nito, anuman ang ng anumang impormasyon o suporta na maaaring ibigay ng NXP.

Ang NXP ay mayroong Product Security Incident Response Team (PSIRT) (maaabot sa PSIRT@nxp.com) na namamahala sa pagsisiyasat, pag-uulat, at pagpapalabas ng solusyon sa mga kahinaan sa seguridad ng mga produkto ng NXP.
NXP BV — Ang NXP BV ay hindi isang operating company at hindi ito namamahagi o nagbebenta ng mga produkto.

Mga trademark
Pansinin: Ang lahat ng na-refer na brand, pangalan ng produkto, pangalan ng serbisyo, at trademark ay pag-aari ng kani-kanilang mga may-ari.

NXP — ang wordmark at logo ay mga trademark ng 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 — ay mga trademark at/o rehistradong trademark ng Arm Limited (o mga subsidiary o affiliate nito) sa US at/o sa ibang lugar. Ang kaugnay na teknolohiya ay maaaring protektado ng anuman o lahat ng mga patent, copyright, disenyo at lihim ng kalakalan. Lahat ng karapatan ay nakalaan.

  • i.MX — ay isang trademark ng NXP BV
  • J-Link — ay isang trademark ng SEGGER Microcontroller GmbH.

Microsoft, Azure, at ThreadX — ay mga trademark ng pangkat ng mga kumpanya ng Microsoft.

Mangyaring magkaroon ng kamalayan na ang mahahalagang paunawa tungkol sa dokumentong ito at ang (mga) produkto na inilarawan dito, ay kasama sa seksyong 'Legal na impormasyon'.

© 2024 NXP BV
Para sa karagdagang impormasyon, mangyaring bisitahin ang: https://www.nxp.com

  • Petsa ng paglabas: Abril 19, 2024
  • Tagatukoy ng dokumento: AN14263

FAQ

Q: Ano ang pangunahing layunin ng produktong ito?
A: Ang pangunahing layunin ay paganahin ang function ng pagkilala sa mukha gamit ang isang AI&ML vision algorithm model na may simpleng LVGL GUI example sa SLN-TLHMI-IOT board.

T: Paano makikinabang ang mga developer mula sa application note na ito?
A: Maaaring matutunan ng mga developer kung paano ipatupad ang pagkilala sa mukha sa framework nang sunud-sunod gamit ang ibinigay na exampalamin at unawain ang mga tagapamahala ng device, HAL device, at mekanismo ng kaganapan na kasangkot.

Mga Dokumento / Mga Mapagkukunan

NXP AN14263 Ipatupad ang LVGL GUI Face Recognition sa Framewor [pdf] Gabay sa Gumagamit
AN14263 Ipatupad ang LVGL GUI Face Recognition sa Framewor, AN14263, Implement LVGL GUI Face Recognition sa Framewor, LVGL GUI Face Recognition sa Framewor, Face Recognition sa Framewor, Recognition sa Framewor, Framewor

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *