nxp-лагатып

NXP AN14263 Рэалізаваць LVGL GUI Face Recognition на Framewor

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

Інфармацыя аб прадукце

Тэхнічныя характарыстыкі

  • Назва прадукту: Графічнае распазнаванне твараў LVGL на Framework
  • Рэдакцыя дакумента: 1 – 19 красавіка 2024 г
  • Ключавыя словы: Распазнаванне асоб, LVGL GUI, Framework

Інструкцыя па ўжыванні прадукту

  1. Скончанаview
    Гэты прадукт уключае мадэль алгарытму бачання AI&ML для распазнавання твараў на фрэймворку для рэалізацыі функцыі распазнавання твараў з дапамогай простага графічнага інтэрфейсу LVGL, напрыкладample на плаце SLN-TLHMI-IOT.
  2. Framework скончаныview
    Праграмнае забеспячэнне рашэння распрацавана вакол архітэктуры фрэймворка, якая ўключае дыспетчары прылад, адказныя за кіраванне прыладамі, прылады HAL для абстрагавання асноўных дэталяў і падзеі для сувязі паміж рознымі прыладамі.
  3. Асаблівасці
    Прадукт дазваляе рэалізаваць функцыю распазнання твару з дапамогай камеры preview на экране графічнага інтэрфейсу з дапамогай кнопак для запуску рэгістрацыі твару, распазнання і выдалення. Даныя аб зарэгістраваных тварах захоўваюцца на Flash праз a file сістэма.
  4. Змест нататкі аб дадатку
    Заўвага аб дадатку прадстаўляе экран графічнага інтэрфейсу LVGL з папярэдняй камерайview і кнопкі для дзеянняў, звязаных з тварам. Гэта дапамагае распрацоўшчыкам зразумець структуру і тое, як рэалізаваць распазнаванне твараў з дапамогай прадстаўленага exampле.

Скончанаview

NXP запусціла набор для распрацоўкі рашэння пад назвай SLN-TLHMI-IOT, які арыентаваны на разумныя прыкладанні HMI. Ён забяспечвае інтэлектуальны HMI са зрокам ML, галасавым і графічным інтэрфейсам, рэалізаваным на адным MCU NXP i.MX RT117H. Праграмнае забеспячэнне рашэння, заснаванае на SDK, пабудавана на канструкцыі, званай фрэймворкам, якая падтрымлівае гнуткі дызайн і наладжванне глядзельных і галасавых функцый. Каб дапамагчы карыстальнікам лепш выкарыстоўваць праграмную платформу, прадастаўляюцца некаторыя асноўныя дакументы, напрыкладample, кіраўніцтва карыстальніка па распрацоўцы праграмнага забеспячэння. Кіраўніцтва знаёміць з базавым дызайнам праграмнага забеспячэння і архітэктурай прыкладанняў, якія ахопліваюць усе кампаненты рашэння, уключаючы структуру, каб дапамагчы распрацоўшчыкам больш лёгка і эфектыўна ўкараняць свае прыкладанні з дапамогай SLN-TLHMI-IOT.
Для атрымання больш падрабязнай інфармацыі аб рашэнні і адпаведных дакументах наведайце web старонка рашэння NXP EdgeReady Smart HMI на аснове i.MX RT117H з ML Vision, Voice і Graphic UI. Аднак распрацоўшчыкам усё яшчэ не так лёгка рэалізаваць свае разумныя прыкладанні HMI, спасылаючыся на гэтыя асноўныя кіраўніцтва. Плануецца серыя нататак па прылажэнні, каб дапамагчы крок за крокам вывучыць распрацоўку фрэймворка. Гэта заўвага аб дадатку заснавана на Implement LVGL GUI Camera Preview на Framework (дакумент AN14147). У гэтай нататцы па дадатку апісваецца, як уключыць мадэль алгарытму бачання AI&ML для распазнавання твараў на фрэймворку, каб рэалізаваць функцыю распазнавання твараў праз камеру папярэднеview на экране GUI з дапамогай простага графічнага інтэрфейсу LVGL example на плаце SLN-TLHMI-IOT. У запісцы заявы выхample прадстаўляе экран графічнага інтэрфейсу LVGL з папярэдняй камерайview і некаторыя кнопкі для запуску рэгістрацыі, распазнавання і выдалення твараў. Даныя аб зарэгістраваным твары захоўваюцца на Flash праз трохі file сістэма.

На высокім узроўні нататка да заяўкі змяшчае наступнае змесціва:

  • Уключыце функцыю распазнання твараў на фрэймворку.
  • Дадайце падтрымку базы дадзеных твараў у рамках file сістэма на флэш.
  • Укараніць прыкладанне LVGL GUI. З дапамогай прыведзеных вышэй уводзін гэты дакумент дапамагае распрацоўшчыкам:
  • Глыбей зразумейце структуру і праграмнае забеспячэнне разумнага HMI.
  • Распрацуйце іх функцыю распазнавання твараў AI&ML на фрэймворку з дадаткам LVGL GUI.

Рамка скончанаview
Праграмнае забеспячэнне рашэння ў першую чаргу распрацавана з выкарыстаннем архітэктуры структуры, якая складаецца з некалькіх розных частак:

  • Дыспетчары прылад - асноўная частка
  • Прылады апаратнага ўзроўню абстракцыі (HAL).
  • Паведамленні/Падзеі

Як паказана на малюнку 1, надview механізму каркаса з'яўляецца:

Дыспетчары прылад адказваюць за кіраванне прыладамі, якія выкарыстоўваюцца сістэмай. Кожны тып прылады (уваход, выхад і г.д.) мае свой уласны менеджэр прылад для канкрэтнага тыпу. Калі дыспетчар прылад запускаецца пасля рэгістрацыі ў ім прылад, ён чакае і правярае паведамленне аб перадачы даных на прылады і іншыя менеджэры пасля ініцыялізацыі і запуску зарэгістраваных прылад. Прылады HAL напісаны паверх кода драйвера ніжняга ўзроўню, што дапамагае павялічыць зразумеласць кода шляхам абстрагавання многіх асноўных дэталяў.

Падзеі - гэта сродак перадачы інфармацыі паміж рознымі прыладамі праз іх менеджэры. Калі спрацоўвае падзея, прылада, якая першай атрымала падзею, перадае гэтую падзею свайму кіраўніку, а затым, у сваю чаргу, апавяшчае іншых менеджэраў, прызначаных для атрымання падзеі.

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

Архітэктурны дызайн каркаса быў засяроджаны на трох асноўных мэтах:

  1. Прастата выкарыстання
  2. Гнуткасць/партатыўнасць
  3. Прадукцыйнасць

Структура распрацавана з мэтай паскорыць час выхаду на рынак праграм для зроку і іншых праграм машыннага навучання. Каб забяспечыць хуткі выхад на рынак, вельмі важна, каб само праграмнае забеспячэнне было простым для разумення і мадыфікацыі. Улічваючы гэтую мэту, архітэктуру фрэймворка лёгка мадыфікаваць без абмежаванняў і без шкоды для прадукцыйнасці.
Больш падрабязную інфармацыю пра структуру глядзіце ў Кіраўніцтве карыстальніка па распрацоўцы праграмнага забеспячэння Smart HMI (дакумент MCU-SMHMI-SDUG).

Лёгкая і ўніверсальная графічная бібліятэка (LVGL)
LVGL (Light and Versatile Graphics Library) - гэта бясплатная графічная бібліятэка з адкрытым зыходным кодам, якая забяспечвае ўсё неабходнае для стварэння ўбудаванага графічнага інтэрфейсу з простымі ў выкарыстанні графічнымі элементамі, прыгожымі візуальнымі эфектамі і невялікім аб'ёмам памяці.

Кіраўніцтва графічнага інтэрфейсу
GUI Guider - гэта зручны інструмент распрацоўкі графічнага карыстальніцкага інтэрфейсу ад NXP, які дазваляе хутка распрацоўваць высакаякасныя дысплеі з дапамогай графічнай бібліятэкі LVGL з адкрытым зыходным кодам. Рэдактар ​​перацягвання GUI Guider дазваляе лёгка выкарыстоўваць многія функцыі LVGL, такія як віджэты, анімацыі і стылі, для стварэння графічнага інтэрфейсу з мінімальным кадзіраваннем або зусім без яго.

Адным націскам кнопкі вы можаце запусціць сваё прыкладанне ў змадэляваным асяроддзі або экспартаваць яго ў мэтавы праект. Згенераваны код з GUI Guider можа быць лёгка дададзены ў ваш праект, паскараючы працэс распрацоўкі і дазваляючы бесперашкодна дадаваць убудаваны карыстацкі інтэрфейс у ваша прыкладанне. GUI Guider можна бясплатна выкарыстоўваць з MCU агульнага прызначэння і кросоверамі NXP і ўключае ў сябе ўбудаваныя шаблоны праектаў для некалькіх падтрымоўваных платформаў. Каб даведацца больш аб распрацоўцы LVGL і GUI на GUI Guider, праверце Light and Versatile Graphics Library і GUI Guider.

Асяроддзе распрацоўкі

Спачатку падрыхтуйце і наладзьце апаратнае і праграмнае асяроддзе для рэалізацыі эксampле на рамках.

Апаратнае асяроддзе
Апаратнае асяроддзе створана для праверкі эксampль:

  • Камплект распрацоўніка разумнага HMI на базе NXP i.MX RT117H (камплект SLN_TLHMI_IOT)
  • SEGGER J-Link з 9-кантактным адаптарам Cortex-M і V7.84a або больш новай версіяй драйвера

праграмнае асяроддзе
Праграмнае асяроддзе створана для распрацоўкі эксampль:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – прample код другога прыкладання адзначаюць у якасці асновы праграмнага забеспячэння распрацоўкі. Падрабязней гл https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – як рэсурс кода для распрацоўкі.
  • Праграмнае забеспячэнне SLN-TLHMI-IOT V1.1.2 – зыходны код разумнага HMI, выпушчаны ў рэпазітары NXP GitHub у якасці рэсурсу кода для распрацоўкі. Для атрымання падрабязнай інфармацыі глядзіце: GitHub – NXP/mcu-smhmi ў v1.1.2

Для атрымання падрабязнай інфармацыі аб набыцці і наладжванні праграмнага асяроддзя глядзіце: Пачатак працы з SLN-TLHMI-IOT.

Архітэктура Vision на фрэймворку

Архітэктура бачання на фрэймворку паказана на малюнку 2. Альга бачання HAL (OASIS_HAL) мае наступныя працэсы:

  • Выконвайце рэгістрацыю і распазнаванне твараў праз мадэль алгарытму бачання AI&ML пасля атрымання адпаведных падзей з HAL выхаднога інтэрфейсу. Паведаміць аб выніках вываду з мадэлі алгарытму ў HAL выхаднога інтэрфейсу.
  • Атрымоўвае доступ (дадае, выдаляе…) да базы дадзеных аб тварах на аснове невялікай колькасці file сістэме шляхам выкліку API FaceDB HAL пасля атрымання адпаведных падзей з выхаднога інтэрфейсу HAL.
  • Запыт відэакадра з камеры HAL пры выкананні рэгістрацыі і распазнання твараў.

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

Рэалізаваць распазнаванне твараў на фрэймворку

Распазнаванне твараў графічнага інтэрфейсу LVGL, напрampле (прымample прадастаўляецца пазней) на фрэймворку рэалізавана на аснове example коды Укараніць LVGL GUI Camera Preview на Framework (дакумент AN14147).

За дэманстрацыю распазнання твараў у выклample, асноўная функцыя праграмы GUI (гл. галоўны экран на малюнку 3) распрацавана, як апісана ніжэй:

  • Прыкладанне з графічным інтэрфейсам запускае падзею рэгістрацыі або распазнання твару ў HAL выхаднога інтэрфейсу пры націску кнопкі «Рэгістрацыя або распазнаванне». А выходны інтэрфейс HAL паведамляе пра падзею дадання карыстальніка ў алгаграфічны HAL пасля паспяховай рэгістрацыі твару.
  • Прыкладанне з графічным інтэрфейсам запускае падзею выдалення карыстальніка ў HAL выхаднога інтэрфейсу пры націску кнопкі «Выдаліць карыстальніка» пасля распазнання твару карыстальніка.
  • Прыкладанне з графічным інтэрфейсам запускае падзею спынення запуску алгапраграмы oasis для выхаднога інтэрфейсу HAL пры націсканні экрана па-за межамі кнопак і малюнкаў.

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

Падрыхтуйце праграмны комплекс для выканання эксampле.

  • Клануйце базавую праграму lvgl_gui_camera_preview_см7. Зменіце назву праекта і асноўную fileімя ў lvgl_gui_face_rec_cm7.
  • Фрэймворк неабходна абнавіць у праграмным забеспячэнні, паколькі зыходныя коды для ядра фрэймворка сталі агульнадаступнымі на GitHub з версіі 1.1.2.
  • Замяніце папку framework копіяй V1.1.2 з GitHub, за выключэннем files fwk_log.h і fwk_common.h у inc\, паколькі яны былі зменены для серыі нататак аб прымяненні. Аперацыі паказаны на малюнку 4:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (11)
  • Выдаліце ​​тэчку framework_cm7 у групе libs і выдаліце ​​бібліятэку framework_cm7 і яе шлях пошуку, наладжаны ў Праект > Уласцівасці > Зборка C/C++ > Налады > Налады інструмента > MCU C++ Linker > Бібліятэкі, паколькі прадастаўляецца зыходны код ядра.

Уключыць функцыю распазнання твараў на фрэймворку
Функцыя распазнавання твараў пабудавана на мадэлі алгарытму ML vision, прадстаўленай у выглядзе статычнай бібліятэкі - бібліятэкі Oasis Lite ад NXP. Бібліятэка - гэта малюсенькая, высокаэфектыўная, адаптаваная і аптымізаваная бібліятэка штучнага інтэлекту. Мадэль уключае ў сябе выяўленне твараў, распазнаванне твараў, выяўленне шкла і выяўленне жывасці. Ён у асноўным забяспечвае API OASISLT_run_extended() для запуску канвеера распазнавання твараў пры абнаўленні вынікаў абаненту праз зваротныя выклікі падзей, а таксама для дадання/абнаўлення/выдалення твараў у базе дадзеных праз зваротныя выклікі базы дадзеных твараў пасля ўказання інфармацыі аб зыходным кадры, зваротных выклікаў і памяці пул, які выкарыстоўваецца бібліятэкай, выклікаючы іншы API OASISLT_init() пры ініцыялізацыі. Выклік API і функцый зваротнага выкліку рэалізаваны ў бачанні алга HAL структуры.

Дадаць бібліятэку мадэляў vision algo

  1. Скапіруйце папку aasis, якая змяшчае бібліятэку і адпаведны загаловак file са смарт-HMI\coffee_machine\cm7\libs\ у тэчку libs exampле Пд.
  2. Дадайце шлях пошуку загалоўка file у Праект > Уласцівасці > Зборка C/C++ > Налады > Налады інструмента > Кампілятар MCU C > Уключае і кампілятар MCU C++ > Уключае: “${workspace_loc:/${ProjName}/libs/oasis/include}”
  3. Дадайце бібліятэку і яе шлях пошуку ў Праект > Уласцівасці > Зборка C/C++ > Налады > MCU C+ + Linker > Бібліятэкі: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” і вызначэнне макраса ў уключыце функцыю ў Праект > Уласцівасці > Зборка C/C++ > Налады > Налады інструмента > Кампілятар C MCU > Прэпрацэсар і кампілятар C++ MCU > Прэпрацэсар: SMART_TLHMI_2D

Уключыць бачанне algo HAL
Vision algo HAL кіруе мадэллю vision algo на працу і рэагуе на вынікі HAL вываду карыстальніцкага інтэрфейсу пасля атрымання ад яго падзей.

Каб уключыць яго, клануйце існуючы падобны драйвер HAL file дзе рэалізаваны наступныя функцыі:

  • Рэалізаваць зваротныя выклікі аперацый базы дадзеных твараў і апрацоўкі падзей.
  • Запусціце vision algo, выклікаўшы API бібліятэкі oasis.
  • Атрымлівайце доступ да базы дадзеных твараў карыстальнікаў і базы дадзеных прыкладанняў (яна не патрэбна ў напрampле).
  • Атрымліваць падзеі з і адпраўляць вынікі для вываду UI HAL.

Асноўныя работы па ўкараненні HAL для выклampле з'яўляюцца:

  • Кланаваць існуючы падобны драйвер HAL file і змяніць звязаныя імёны.
  • Выдаліце ​​​​коды, звязаныя з аперацыямі з дадзенымі праграмы.
  • Абнавіце азначэнні і функцыі для апрацоўкі падзей з HAL выхаднога карыстальніцкага інтэрфейсу ў адпаведнасці з прampдызайн.
  • Дадайце канфігурацыі, неабходныя для ініцыялізацыі oasis.

Падрабязныя дзеянні прыведзены ніжэй:

  1. Клон hal_vision_algo_oasis_coffeemachine.c. Змяніць fileімя ў hal_vision_algo_oasis_guifacerec.c. І заменіце ўсе радкі CoffeeMachine на GUIFaceRec у file.
  2. Выдаліце ​​коды, якія змяшчаюць радок coffeedb (не адчувальны да рэгістра), звязаныя з базай даных прыкладанняў, напрыкладample, #include hal_sln_coffeedb.h.
  3. Змяніце функцыю HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() для апрацоўкі падзей з выхаднога інтэрфейсу HAL.
    • Змяніце вызначэнне падзеі kEventFaceRecId_RegisterCoffeeSelection на kEventFaceRecId_RegisterUserFace і структурны радок regCoffeeSelection на regGUIFaceRec для апрацоўкі падзей, каб дадаць новыя даныя функцый твару ў базу дадзеных.
    • Каб паказаць стандартны працэс дзеянняў па распазнанні твараў у прыкладзеample, змяніце апрацоўку ў выпадку kEventFaceRecID_OasisSetState з вызначэннем станаў:
      • kOASISLiteState
      • Рэгістрацыя kOASISLiteState
      • Прызнанне kOASISLiteState
      • Спыніліся
  4. Дадайце і змяніце азначэнні падзей, згаданых у вышэйзгаданым кроку.
    • Скапіруйце загаловак file smart_tlhmi_event_descriptor.h з разумнага HMI\coffee_machine \cm7\source\event_handlers\ у тэчку source exampле Пд. Абнавіць file як паказана ніжэй:
    • Змяніце вызначэнне падзеі kEventFaceRecId_RegisterCoffeeSelection на kEventFaceRecId_RegisterUserFace у тыпе пералічэння _event_smart_tlhmi_id і структурны радок regCoffeeSelection на regGUIFaceRec у структуры _event_smart_tlhmi. Такім чынам, змяніце структуру register_coffee_selection_event_t для regCoffeeSelection на register_gui_facerec_event_t.
    • Выдаліце ​​змесціва else, якое выкарыстоўваецца для праграмы кавамашыны, напрыкладample, радок кода пра голас: #include “hal_event_descriptor_voice.h”.
    • Дадайце тыпы kOASISLiteState_Stopped і kOASISLiteState_Running да тыпу пералічэння oasis_lite_state_t у hal_vision_algo.h у framework>hal>vision у праекце, як паказана ніжэй:
      typedef пералік _oasis_lite_state {
      • kOASISLiteState
      • Запуск, kOASISLiteState
      • Спынена, kOASISLiteState
      • прызнанне,
      • kOASISLiteState
      • Рэгістрацыя, kOASISLiteState
      • Адмена рэгістрацыі, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • Граф
    • Выкарыстоўвайце абноўленую вышэй структуру oasis_lite_state_t, каб удакладніць структуру oasis_state_event_t у hal_event_descriptor_face_rec.h у рамках framework>hal>vision у праекце, як паказана ніжэй: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
  5. Змяніце ўсе kEventInfo_Remote на kEventInfo_Local для адпраўкі падзей з HAL vision algo на іншыя HAL, якія працуюць на тым самым ядры, таму што адно ядро ​​замест двух'ядравага выкарыстоўваецца ў exampле.
  6. Дадайце і змяніце наступныя канфігурацыі для ініцыялізацыі аазіса ў OASISLT_init():
    • Дадайце азначэнні макрасаў і раздзелы памяці для відэакадра ў 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(вар, alignbytes) \
      • __атрыбут__((раздзел(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) вар.
      • __атрыбут__((выраўнавана(выраўнавана байтаў)))
    • Наладзьце размеркаванне памяці для вышэйзгаданага раздзела памяці fb_sh_mem у Праект > Уласцівасці > Зборка C/C++ > Налады MCU, паказаныя на малюнку 5:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (12)
    • Аб'явіце глабальную зменную g_DTCOPBuf у lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Працягвайце дадаваць азначэнні, якія выкарыстоўваюцца ў прыведзенай вышэй зменнай:
    • Вызначце раздзел вышэй у board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(вар, alignbytes) \
      • attribute__((section(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) вар.
      • атрыбут__((выраўнавана(выраўнавана байтаў)))
    • Уключыце загаловак file hal_vision_algo.h, які змяшчае вызначэнне макраса DTC_OPTIMIZE_BUFFER_SIZE у app_config.h, уключаным у lvgl_gui_face_rec_cm7.cpp.
  7. Усталюйце для зменнай s_debugOption значэнне true для паказу статусу выканання распазнання твараў.
  8. Дадайце шлях пошуку загалоўка fileз бачання HAL у праекце > Уласцівасці > Зборка C/C++ > Налады > Налады інструмента > Кампілятар C MCU > Уключае і кампілятар C++ MCU > Уключае: “${workspace_loc:/${ProjName}/framework/hal/vision}”
  9. Дадайце прыведзенае ніжэй вызначэнне, каб уключыць бачанне algo HAL у board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Уключыць выхад UI HAL
Выхадны інтэрфейс HAL паведамляе аб падзеях алгавіку бачання HAL і рэагуе на вынікі вываду з алгавіку бачання HAL. У праграме з графічным інтэрфейсам падзеі звычайна запускаюцца праграмай, і вынікі паказваюцца ў праграме.

Каб уключыць яго, клануйце існуючы падобны драйвер HAL file дзе звычайна рэалізаваны наступныя функцыі:

  • Апавяшчаць падзеі для распазнання твараў і доступу да базы дадзеных.
  • Рэалізуйце зваротныя выклікі для праграмы GUI, каб выклікаць падзеі.
  • Апрацоўка вынікаў вываду з модуля vision algo.
  • Пакажыце працэс і вынікі апрацоўкі падзей у карыстальніцкім інтэрфейсе з дапамогай панэлі прагрэсу, якая кіруецца таймерамі і прамавугольнікам твару.

Асноўныя работы па ўкараненні HAL для выклampу гэтым дакуменце выкарыстоўваюцца:

  • Кланаваць існуючы падобны драйвер HAL file і змяніць звязаныя імёны.
  • Выдаліце ​​​​коды, звязаныя з праграмай.
  • Абнавіце функцыі апавяшчэнняў аб падзеях і адказу на вынікі ў адпаведнасці з прampдызайн.
  • Дадайце зваротныя выклікі для праграмы GUI, каб выклікаць падзеі.

Падрабязныя дзеянні прыведзены ніжэй:

  1. Клон hal_output_ui_coffee_machine.c. Змяніць fileімя для hal_ output_ui_guifacerec.c.
  2. Замяніце ўсе радкі CoffeeMachine на GUIFaceRec у file.
  3. Выдаліце ​​​​коды, звязаныя з праграмай - кава-машынай.
    • Выдаліце ​​функцыі WakeUp() і _StandBy() і звязаныя коды (іх можна шукаць у радку wake_up і standby).
    • Выдаліць папярэдview падзеі рэжыму апрацоўкі звязаных кодаў у HAL_OutputDev_UiGUIFaceRec_Input Notify().
    • Выдаліце ​​функцыі UI_xxx_Callback() і коды, якія змяшчаюць радок gui_ і экран, звязаныя з графічным інтэрфейсам кавамашыны, за выключэннем gui_set_virtual_face() для папярэднягаview асаблівасць рэжыму.
    • Выдаліце ​​ўсе коды, звязаныя са зменнымі s_IsWaitingAnotherSelection і s_IsWaitingRegisterSelection, якія адносяцца да праграмы кавамашыны.
    • Выдаліце ​​​​коды, звязаныя з голасам, аўдыя і мовай. Напрыкладampль:
      • #include “hal_voice_algo_asr_local.h”,
      • #include “hal_event_descriptor_voice.h”
  4. Для апавяшчэнняў аб розных падзеях укараніце новыя функцыі _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() і DeregisterGUIFaceRec() са спасылкай на функцыі _StopFaceRec(), _RegisterCoffeeSelection() і DeregisterCoffeeSelection() перад іх выдаленнем.
    • _OutputManagerNotify() рэалізуе асноўную функцыю вываду падзей для адпраўкі падзеі ў візуальны алга HAL. Прыведзеныя ніжэй функцыі выклікаюць яго для адпраўкі ўласных падзей.
    • _SetFaceRec() адпраўляе падзею kEventFaceRecID_OasisSetState, каб запусціць алгаграфій бачання для рэгістрацыі, распазнавання твару і спыніць алга.
    • _RegisterGUIFaceRec() адпраўляе падзею kEventFaceRecId_RegisterGUIFaceRec, якая вызначана ў smart_tlhmi_event_descriptor.h, каб дадаць даныя асаблівасцей твару ў базу дадзеных, калі рэгістрацыя ў парадку.
    • DeregisterGUIFaceRec() адпраўляе падзею kEventFaceRecID_DelUser для выдалення даных функцый твару з базы дадзеных пры праходжанні распазнання твараў.
  5. Абнавіце коды, каб выканаць адпаведныя дзеянні, у тым ліку абнавіць графічны інтэрфейс, выклікаўшы API з праграмы LVGL GUI для атрымання вынікаў вываду рэгістрацыі і распазнання твару ў функцыі _InferComplete_Vision() у адпаведнасці з пр.ampдызайн le. Напрыкладample, калі рэгістрацыя твару прайшла паспяхова,
    • Спыніце паказ прагрэсу, выклікаўшы _FaceRecProcess_Stop();
    • Спыніць рэгістрацыю твару, выклікаўшы _SetFaceRec(kOASISLiteState_Stopped);
    • Паказаць паспяховы вынік у графічным інтэрфейсе: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Зарэгіструйце дадзеныя твару ў базе дадзеных: _RegisterUserFace(s_UserId);
  6. Дадайце функцыі зваротнага выкліку інтэрфейсу для апрацоўкі падзей: preview, рэгістрацыя твараў, распазнаванне і выдаленне карыстальніка запускаецца з графічнага інтэрфейсу. Напрыкладample, зваротны выклік рэгістрацыі асобы: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • І дадайце функцыі _FaceRecProcess_Start() і _FaceRecProcess_Stop(), каб паказаць прагрэс і статус у розных падзеях і выніках.
    • Абнавіце функцыю зваротнага выкліку таймера ISR _SessionTimer_Callback() для апрацоўкі выпадку тайм-аўту шляхам выкліку: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
  7. Дадайце прыведзеныя ніжэй азначэнні, каб уключыць вывад карыстацкага інтэрфейсу HAL у board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Заўвага:
Каб лепш прадставіць функцыю распазнання твару, захавайце функцыю, якая паказвае працэс і вынікі распазнавання твару ў HAL выхаднога інтэрфейсу. Функцыя апісана ніжэй

  • Прастакутнік накіравання твару паказвае сіні колер, а панэль прагрэсу паказвае прагрэс пры запуску рэгістрацыі або распазнання твару.
  • Калі рэгістрацыя твару прайшла паспяхова, прамавугольнік накіроўвалай асобы становіцца чырвоным.
  • Прамавугольнік накіравання твару гарыць зялёным, калі распазнаванне твару прайшло паспяхова.
  • Прамавугольнік накіроўвалай асобы застаецца сінім, а панэль прагрэсу паказвае поўны прагрэс, калі дзеянне не ўдаецца пасля заканчэння таймера. У гэты момант спыніце рэгістрацыю або распазнаванне твару.

Індыкатар прагрэсу і прамавугольнік накіроўвалай асобы прадстаўлены ў выглядзе значкоў, убудаваных у двайковы файл рэсурсу file быць запраграмаваны ў Flash. Паказальнікі на даныя значкоў у SDRAM наладжваюцца ў функцыі LoadIcons(APP_ICONS_BASE), якая выклікаецца пры ініцыялізацыі прылады HAL выхаднога інтэрфейсу інтэрфейсу ў HAL выхаднога інтэрфейсу інтэрфейсу. Ён павінен рэалізаваць падтрымку значкоў для функцыі.

Укараніць падтрымку значкоў

  1. Стварыце рэсурс, спалучаючы значкі з выявамі, якія выкарыстоўваюцца ў праграме LVGL GUI:
    • Клануйце загаловак чатырох значкоў files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h і virtual_face_red_420x426.h ад разумнага HMI
      \coffee machine\resource\icons\ у новыя значкі папкі ў папцы рэсурсаў exampле Пд.
    • Дадайце шлях пошуку для чатырох значкоў files у camera_preview_рэсурс.txt file у тэчцы рэсурсаў, напрыкладample: значок ../resource/icons/process_bar_240x14.h
    • Выканаць camera_preview_resource_build.bat для зборкі рэсурсаў малюнкаў і значкоў для генерацыі сметніцы file camera_preview_resource.bin і інфармацыя file resource_information_table.txt (гл. малюнак 6).NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (13)
  2. Вызначце пачатковы адрас у SDRAM і памер значкоў у app_config.h. Адрас пачынаецца побач з выявамі праграмы GUI. Памер генеруецца ў інфармацыі file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Абнавіце прызначаны памер раздзела памяці пад назвай res_sh_mem да 0x200000, перавызначыўшы яго ў app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 і адпаведную наладу ў Праект > Уласцівасці > Зборка C/C++ > Налады MCU.
  4. Дадайце памер значка да агульнага памеру рэсурсу, загружанага з Flash у SDRAM, у функцыі APP_LoadResource() у галоўным file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Заўвага: Каб выканаць функцыю распазнавання твараў, патрэбна падтрымка прыкладання LVGL GUI. Функцыі зваротнага выкліку карыстацкага інтэрфейсу ў HAL выхаднога інтэрфейсу выклікаюцца праграмай LVGL GUI для апрацоўкі падзей з экрана карыстацкага інтэрфейсу. З іншага боку, выходны інтэрфейс HAL выклікае API з прыкладання LVGL GUI для абнаўлення карыстальніцкага інтэрфейсу, каб паказаць вынік і стан. Распрацоўка прыкладання LVGL GUI з'яўляецца адносна незалежнай і прадстаўлена ў раздзеле 4.3.

4.1.5 Запусціце прылады і менеджэры HAL для распазнання твараў
Уключаны бачанне algo HAL і UI выхад HAL і іх менеджэры запускаюцца ў асноўным file
lvgl_gui_face_rec_cm7.cpp пасля пераўтварэння распрацоўкі ў рамках, як паказана ніжэй:

  1. Уключыце загаловак file звязаныя з двума кіраўнікамі HAL, дадаўшы радок кода:
    • #include ” fwk_output_manager.h ”
    • #include “fwk_vision_algo_manager.h”
  2. Аб'явіце прылады HAL:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Зарэгіструйце прылады HAL:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Ініцыялізаваць менеджэры:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Запусціце менеджэры:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Вызначце прыярытэт задач кіраўніка:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Дадайце падтрымку базы дадзеных твараў у рамках
Доступ да зарэгістраваных функцый твару ў базе дадзеных твараў, якая захоўваецца на Flash, ажыццяўляецца праз некалькі file сістэма. Крокі для дадання падтрымкі базы дадзеных твараў апісаны ніжэй.

Дадаць драйвера для флэш-назапашвальніка
Скапіруйце драйвер FlexSPI інтэрфейсу Flash files fsl_flexspi.c і fsl_flexspi.h, а таксама драйвер шыфравання даных files fsl_caam.c і fsl_caam.h са шляху SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ у тэчку драйвераў exampле Пд.

Дадаць падтрымку на ўзроўні дошкі

  1. Дадайце азначэнні FlexSPI, які выкарыстоўваецца для флэш-прылады на борце ў board.h:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Скапіруйце аператары і канфігурацыі files of the Flash device flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, andsln_flash_ops.h under the path smart HMI\coffee_machine\cm7\source\flash_config\ to the folder board of the exampле Пд.
    • Зніміце сцяжок «Выключыць рэсурс са зборкі» ў C/C++ Build > Settings пасля пстрычкі правай кнопкай мышы на fileімя і адкрыццё Уласцівасцей, каб дазволіць іх убудаваць у праект.
  3. Зменіце ўключаны загаловак fileімя sln_flash_config.h у sln_flash_config_w25q256jvs.h у sln_flash_config.c і flexspi_nor_flash_ops.h.
  4. Усталюйце крыніцу тактавага сігналу FlexSPI1 у file clock_config.c са спасылкай на дадатак кавамашыны.

Дадайце адаптар і падтрымку сярэдняга ўзроўню

  1. Скапіруйце files sln_flash.c, sln_flash.h, sln_encrypt.c і sln_encrypt.h у якасці драйвераў адаптара для file сістэмы і праграмы са шляху разумнага HMI\coffee_machine\cm7\source\ у папку source exampле. Абнавіць новае files:
    • Зніміце сцяжок «Выключыць рэсурс з зборкі» на іх для зборкі.
    • Зменіце ўсе ўключаныя загалоўкі file імя sln_flash_config.h у sln_flash_config_w25q256jvs.h.
  2. Скапіруйце тэчку fileсістэма, якая змяшчае API для мала fileсістэма і драйвер HAL ад смарт-HMI \coffee_machine\cm7\source\ да exampле Пд. І абнаўленне для новай тэчкі:
    • Зніміце сцяжок «Выключыць рэсурс з зборкі» для зборкі.
    • Дадайце шлях уключэння для яго ў наладах праекта: “${workspace_loc:/${ProjName}/fileсістэма}”
    • Зменіце ўключаны загаловак file імя sln_flash_config.h у sln_flash_config_w25q256jvs.h і fica_definition.h у app_config.h у file sln_flash_littlefs.h.
  3. Скапіруйце папку littlefs, якая змяшчае сярэдні ware – little fileсістэма са шляху SDK_2_13_0_ MIMXRT1170-EVK\прамежкавае праграмнае забеспячэнне\ да экс.ampле Пд. І абнавіце новую тэчку:
    • Зніміце сцяжок «Выключыць рэсурс з зборкі» для зборкі.
    • Дадайце шлях уключэння для яго ў наладах праекта: «${workspace_loc:/${ProjName}/littlefs}»

Дадаць драйверы HAL 

  • Ёсць дзве прылады HAL - file база дадзеных сістэмы і асобы HAL падтрымліваецца для функцыі доступу да базы дадзеных, і яны ўжо рэалізаваны ў рамках без якіх-небудзь змяненняў. Уключыце іх, дадаўшы наступныя азначэнні ў board_define.h:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

І змяніць назву базы дадзеных твараў на былуюample: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”

Дадайце падтрымку на ўзроўні праграмы

  1. Абнавіць асноўнае file lvgl_gui_face_rec_cm7.cpp:
    • Уключыце загаловак file звязаныя з Flash file менеджэр сістэмы HAL, дадаўшы радок кода: #include “fwk_flash.h”
    • Заявіць і зарэгістравацца file прылада сістэмы HAL:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Заўвага: file сістэмная прылада HAL павінна быць зарэгістравана перад ініцыялізацыяй усіх дыспетчараў прылад у функцыі APP_InitFramework().
    • Выклічце функцыю BOARD_ConfigMPU() у APP_BoardInit(), каб наладзіць MPU.
  2. Усталюйце file сістэмнае прызначэнне на Flash у ст file app_config.h шляхам вызначэння азначэнняў макрасаў, якія выкарыстоўваюцца ў file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #define FICA_FILE_SYS_SIZE (0x280000)

Канфігурацыі
Некаторыя коды, звязаныя з Flash, выконваюцца ў вобласці SRAM ITC для забеспячэння дастатковай прадукцыйнасці. Скапіруйце папку linkscripts, якая змяшчае канфігурацыі кампаноўшчыка, з шляху smart HMI\coffee_machine\cm7\ у exampле Пд.

Укараніць прыкладанне з графічным інтэрфейсам LVGL
Распрацоўка прыкладання з графічным інтэрфейсам LVGL, заснаванага на фрэймворку, выклікае API з вываду UI HAL і забяспечвае API для вываду UI HAL (гл. раздзел 4.1.3 для рэалізацыі вываду UI HAL).

Аднак дэталёвая рэалізацыя прыкладання LVGL GUI залежыць ад патрабаванняў і дызайну прыкладання. Прыкладанне з графічным інтэрфейсам у гэтым эксample распрацаваны, як апісана ў пачатку раздзела Раздзел 4.

Ніжэй прыведзены ўводзіны ў рэалізацыю:

  1. Індывідуальныя коды рэалізаваны ў custom.c і custom.h, прадстаўленых GUI Guider у якасці інтэрфейсу паміж праектам GUI Guider і праектам убудаванай сістэмы.
    •  Дадайце новыя функцыі з назвай gui_xxx() у custom.c, каб атрымаць наступныя функцыі:
      • Для вываду UI HAL і GUI прыкладанне для абнаўлення UI.
      • Каб прыкладанне графічнага інтэрфейсу ініцыявала падзеі, выклікаючы функцыі зваротнага выкліку карыстальніцкага інтэрфейсу з HAL вываду карыстацкага інтэрфейсу.
        Напрыкладample, новая функцыя gui_event_face_rec_action() выклікае функцыі зваротнага выкліку карыстальніцкага інтэрфейсу для апрацоўкі адной з падзей рэгістрацыі твару, распазнавання твару і выдалення карыстальніка, якія запускаюцца з праграмы GUI пры націсканні адпаведнай кнопкі.
        Заўвага: функцыя gui_set_virtual_face() выклікаецца ў вывадзе UI HAL для preview рэжым павінен быць рэалізаваны ў custom.c:
    •  Кланаваць функцыю gui_set_virtual_face() з разумнага HMI\coffee_machine\cm4\custom \custom.c.
    •  Зменіце назву віджэта home_img_cameraPreview да screen_img_camera_preview у функцыі.
    •  Рэалізуйце функцыі зваротнага выкліку карыстальніцкага інтэрфейсу з аднолькавым прататыпам для ўсіх у HAL выхаднога інтэрфейсу пад кіраваннем вызначэння макраса #ifndef RT_PLATFORM у custom.c для сумяшчальнасці з праектам GUI Guider, таму што гэтыя функцыі ў HAL выхаднога інтэрфейсу залежаць ад убудаваная платформа. У custom.c яны залежаць ад сімулятара на GUI guider і не залежаць ад убудаванай платформы. Напрыкладample, зваротны выклік рэгістрацыі твару рэалізаваны, як паказана ніжэй, для запушчанага сімулятара GUI Guider: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = хлусня; вяртанне; }
      Заўвага: Звярніцеся да таго ж прататыпа функцыі, уведзенай на этапе 6 раздзела 4.1.3
      Вызначэнне макраса RT_PLATFORM усталёўваецца ў наладах праекта MCUXpresso, як паказана на малюнку 7:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (14)
    • Аб'явіце ўсе функцыі з імёнамі UI_xxx_Callback() і gui_xxx() у custom.h і дадайце custom.h, уключаны ў smart_tlhmi_event_descriptor.h, каб абагуліць GUI API для выхаду UI HAL.
  2. Распрацоўка GUI на GUI Guider:
    • Кланаваць тэчку camera preview які змяшчае праграмнае забеспячэнне праекта GUI Guider у тэчцы gui_guider у базавым пакеце праграмнага забеспячэння lvgl_gui_camera_preview_см7. Змяніце адпаведнае імя camera_preview у face_rec для новага эксampле.
    • Скапіруйце абноўленыя вышэй custom.c і custom. h да новага праграмнага забеспячэння праекта GUI Guider.
    •  Адкрыйце новы праект face_rec у GUI Guider. Абнавіце, як паказана ніжэй:
      • Дадайце новую кнопку з надпісам «Выдаліць карыстальніка». Дадайце да яго сцяг Hidden, каб кнопка была схаваная пры запуску праграмы GUI.
      • Дадайце радок кода выкліку API gui_event_face_rec_action() з іншым параметрам ідэнтыфікатара падзеі ў трыгер «Вызвалена» ў наладах падзеі ўсіх кнопак «Рэгістрацыя», «Распазнаванне» і «Выдаліць карыстальніка» для запуску падзей рэгістрацыі твару, распазнання твару і выдалення карыстальніка. На малюнку 8 паказаны код падзеі кнопкі Рэгістрацыя:NXP-AN14263-Implement-LVGL-GUI Face-Recognition-on-Framewor-fig- (15)
  3. Абнавіце згенераваны код з GUI Guider да праекта MCUXpresso.
    • Заменіце змесціва, за выключэннем малюнкаў папкі, у папцы, створанай ПЗ праекта MCUXpresso, адпаведным зместам у папцы, створанай ПЗ праекта GUI Guider.

Заўвага: Для атрымання больш падрабязнай інфармацыі аб мадыфікацыях, прадстаўленых вышэй, праверце прыкладampпраграмнае забеспячэнне ў https://mcuxpresso.nxp.com/appcodehub.

Праверкі з выклampпраект

To get the exampпакет праграмнага забеспячэння, які змяшчае рэсурсы і інструменты для гэтага прыкладання, звярніце ўвагу: https://mcuxpresso.nxp.com/appcodehub. Адкрыйце эксampпраект у IDE MCUXpresso. Стварыце і запраграмуйце .axf file па адрасе 0x30000000 і запраграмаваць рэсурс bin file camera_preview_resource.bin па адрасе 0x30800000.

Распазнаванне твараў графічнага інтэрфейсу LVGL, напрample працуе звычайна, як паказана ніжэй:

  • прэview: Пры ўключэнні відэапатокі, знятыя камерай, паказваюцца на пэўнай вобласці камерыview на экране GUI. Пазнака стану адлюстроўвае «Preview…”. Падрабязнасці глядзіце на малюнку 3. Кнопка «Выдаліць карыстальніка» схавана. Пры пстрычцы па-за межамі кнопак і малюнкаў паказваецца папярэдview пасля завяршэння дзеяння рэгістрацыі або распазнавання твару пакажыце, як паказана вышэй.
  • Рэгістрацыя:
    • тартуп: Калі націснуць кнопку "Рэгістрацыя", пачынаецца рэгістрацыя твару. Пазнака стану змяняецца на «Рэгістрацыя...», прамавугольнік накіроўвалай твару становіцца сінім, а індыкатар прагрэсу пачынае паказваць прагрэс. Пераканайцеся, што твар карыстальніка паказваецца ў сінім прамавугольніку накіроўвалай асобы для рэгістрацыі.
    • поспех: Пазнака стану паказвае «Рэгістрацыя…ОК» і ідэнтыфікацыйны нумар зарэгістраванага карыстальніка, прамавугольнік накіроўвалай твару становіцца чырвоным, калі рэгістрацыя твару прайшла паспяхова, перш чым прагрэс будзе паказаны цалкам на панэлі.
    • Няўдача -> Тайм-аўт: ярлык стану паказвае «Рэгістрацыя…Тайм-аўт», калі рэгістрацыя твару па-ранейшаму няўдалая, калі прагрэс паказваецца поўным на панэлі.
    • Няўдача -> Дубляванне: на цэтліку стану паказваецца «Рэгістрацыя…Збой», прамавугольнік накіроўвалай твару становіцца зялёным, калі зарэгістраваны твар распазнаецца да таго, як прагрэс паказваецца цалкам на панэлі.
  • экалагічнае пазнанне:
    • Запуск: калі націснуць кнопку «Распазнаванне», пачынаецца распазнаванне твараў. Пазнака стану змяняецца на «Распазнаванне...», прамавугольнік накіроўвалай твару становіцца сінім, а індыкатар прагрэсу пачынае паказваць прагрэс. Пераканайцеся, што твар карыстальніка паказаны ў сінім прамавугольніку накіроўвалай асобы для рэгістрацыі.
    • поспех: Пазнака стану паказвае «Распазнаванне…ОК» і ідэнтыфікацыйны нумар распазнанага карыстальніка, прамавугольнік накіроўвалай твару становіцца зялёным, калі распазнаванне твару прайшло паспяхова, перш чым прагрэс будзе паказаны цалкам на панэлі. У пункце з'яўляецца кнопка Выдаліць карыстальніка. Гэта значыць, што карыстальніка дазволена выдаляць толькі тады, калі ён будзе распазнаны.
    • хвароба: Пазнака стану паказвае «Распазнаванне… Тайм-аўт», калі распазнаванне твару па-ранейшаму не ўдаецца, калі прагрэс паказваецца поўным на панэлі.
  • Выдаліць карыстальніка: Калі націснуць кнопку «Выдаліць карыстальніка», пасля таго, як распазнаванне твару будзе паспяховым, пазнака стану зменіцца на «Выдаліць карыстальніка…ОК» з прамавугольнікам накіроўвалай твару, які стане сінім, а прагрэс будзе паказаны цалкам на панэлі. Кнопка Выдаліць карыстальніка зноў схаваная. Распазнаны твар/карыстальнік выдаляецца з базы дадзеных. Гэта азначае, што гэты твар/карыстальнік не можа быць распазнаны, пакуль не зарэгістраваны зноў.

Заўвага пра зыходны код у дакуменце
Exampкод, паказаны ў гэтым дакуменце, мае наступныя аўтарскія правы і ліцэнзію BSD-3-Clause:

Copyright 2024 NXP Дазваляецца распаўсюджванне і выкарыстанне ў зыходнай і двайковай формах са зменамі або без іх пры выкананні наступных умоў:

  1. Пераразмеркаванне зыходнага кода павінна захоўваць прыведзенае вышэй паведамленне аб аўтарскіх правах, гэты спіс умоў і наступную адмову ад адказнасці.
  2. Паўторнае распаўсюджванне ў двайковай форме павінна ўзнаўляць прыведзенае вышэй паведамленне аб аўтарскіх правах, гэты спіс умоў і наступную адмову ад адказнасці ў дакументацыі і/або іншых матэрыялах павінны быць прадстаўлены разам з распаўсюджваннем.
  3. Ні імя ўладальніка аўтарскіх правоў, ні імёны яго ўдзельнікаў не могуць выкарыстоўвацца для падтрымкі або прасоўвання прадуктаў, створаных на аснове гэтага праграмнага забеспячэння, без спецыяльнага папярэдняга пісьмовага дазволу

ГЭТАЕ ПРАГРАМНАЕ ЗАБЕСПЯЧЭННЕ ПРАДСТАЎЛЯЕЦЦА ЎЛАДАЛЬНІКАМІ АЎТАРСКІХ ПРАВАЎ І ЎЧАСТНІКАМІ «ЯК ЁСЦЬ», І ЛЮБЫЯ ЯВНЫЯ АБО РАЗУМЕВАНЫЯ ГАРАНТЫІ, УКЛЮЧАЮЧЫ, АЛЕ НЕ АБМЯЖУЮЧЫСЯ МІМ, РАЗУМЕВЫЯ ГАРАНТЫІ ГАРАНТЫЙНАСЦІ І ПРЫДАТНАСЦІ ДЛЯ ПЭЎНЫХ МЭТ АДМОВА АД АДКАЗНАСЦІ. НІ У КІМ РАБОТЫ УЛАДАЛЬНІК АЎТАРСКАГА ПРАВА АБО УЧАСТНІКІ НЕ НЯСУЦЬ АДКАЗНАСЦІ ЗА ЛЮБЫЯ ПРАМЫЯ, УСКОСНЫЯ, ВЫПАДКОВЫЯ, СПЕЦЫЯЛЬНЫЯ, УЗОРЫ АБО ЎСКОШНЫЯ ШКОДЫ (УКЛЮЧАЮЧЫ, АЛІ НЕ АБМЕЖУЮЧЫСЯ МІМ, ЗАКУПКУ ЗАМЕННЫХ ТАВАРАЎ АБО ПАСЛУГ; СТРАТА ВЫКАРЫСТАННЯ, ДАННЫХ АБО ПРЫБЫТКУ; АБО ПЕРЫВАННЕ БІЗНЭСУ) НЕЗАЛЕЖНА ПА ТЭОРЫІ АДКАЗНАСЦІ, ПА КАНТРАКЦЕ, СТРОГАЙ АДКАЗНАСЦІ АБО ПАРУШЭННЯХ (УКЛЮЧАЮЧЫ ХАЛАТНАСЦЬ ЦІ ІНШЫМ ШЛЯХАМ), ЯКІЯ Ўзніклі ЛЮБЫМ ШЛЯХАМ ВЫКАРЫСТАННЯ ГЭТАГА ПА, НАВАТ КАЛІ ПАВАНАВЕДЗЯЦЬ ПРА МАГЧЫМАСЦЬ ТАКОГА ШКОДЖАННЯ.

Гісторыя версій

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

Прававая інфармацыя

Азначэнні
Чарнавік — статус чарнавіка ў дакуменце паказвае, што змесціва ўсё яшчэ знаходзіцца на ўнутранай разглядзеview і падлягае афіцыйнаму зацвярджэнню, якое можа прывесці да змяненняў або дапаўненняў. NXP Semiconductors не дае ніякіх заяваў і не дае гарантый адносна дакладнасці або паўнаты інфармацыі, уключанай у чарнавую версію дакумента, і не нясе адказнасці за наступствы выкарыстання такой інфармацыі.

Адмова ад адказнасці

  • Абмежаваная гарантыя і адказнасць — Інфармацыя ў гэтым дакуменце лічыцца дакладнай і надзейнай. Аднак кампанія NXP Semiconductors не дае ніякіх заяў або гарантый, відавочных або пэўных, адносна дакладнасці або паўнаты такой інфармацыі і не нясе адказнасці за наступствы выкарыстання такой інфармацыі. NXP Semiconductors не нясе адказнасці за змесціва гэтага дакумента, калі яно прадастаўлена крыніцай інфармацыі па-за NXP Semiconductors.
    NXP Semiconductors ні ў якім разе не нясе адказнасці за любыя ўскосныя, выпадковыя, штрафныя, спецыяльныя або ўскосныя страты (уключаючы, без абмежавання, страту прыбытку, страту зберажэнняў, перапыненне бізнесу, выдаткі, звязаныя з выдаленнем або заменай любых прадуктаў або плату за пераробку), незалежна ад таго, ці ці не такія страты заснаваны на дэлікце (уключаючы нядбайнасць), гарантыі, парушэнні дагавора або любой іншай юрыдычнай тэорыі.
    Нягледзячы на ​​любыя страты, якія кліент можа панесці па любой прычыне, сукупная і кумулятыўная адказнасць NXP Semiconductors перад кліентам за прадукты, апісаныя тут, абмежавана ў адпаведнасці з Умовамі камерцыйнага продажу NXP Semiconductors.
  • Права ўносіць змены — NXP Semiconductors пакідае за сабой права ўносіць змены ў інфармацыю, апублікаваную ў гэтым дакуменце, уключаючы, без абмежавання, спецыфікацыі і апісанні прадуктаў, у любы час і без папярэдняга паведамлення. Гэты дакумент адмяняе і замяняе ўсю інфармацыю, прадстаўленую да яго публікацыі.
  • Прыдатнасць да выкарыстання — Прадукцыя NXP Semiconductors не прызначана, не мае дазволу і не гарантуецца як прыдатная для выкарыстання ў сістэмах або абсталяванні жыццезабеспячэння, крытычна важных для жыцця або бяспекі, а таксама ў прылажэннях, дзе збой або няспраўнасць прадукту NXP Semiconductors можа прывесці да цялесныя пашкоджанні, смерць або сур'ёзны ўрон маёмасці або навакольнаму асяроддзю. Кампанія NXP Semiconductors і яе пастаўшчыкі не нясуць ніякай адказнасці за ўключэнне і/або выкарыстанне прадуктаў NXP Semiconductors у такое абсталяванне або прыкладанні, і таму такое ўключэнне і/або выкарыстанне ажыццяўляецца на ўласную рызыку кліента.
  • Прыкладанні — Праграмы, апісаныя тут для любога з гэтых прадуктаў, прызначаны толькі для ілюстрацыі. NXP Semiconductors не робіць ніякіх заяў і не гарантуе, што такія прыкладанні будуць прыдатныя для названага выкарыстання без далейшага тэсціравання або мадыфікацыі.
    Кліенты нясуць адказнасць за распрацоўку і працу сваіх прыкладанняў і прадуктаў з выкарыстаннем прадуктаў NXP Semiconductors, і NXP Semiconductors не нясе ніякай адказнасці за дапамогу ў распрацоўцы прыкладанняў або прадукту кліента. Заказчык нясе поўную адказнасць за вызначэнне таго, ці падыходзіць прадукт NXP Semiconductors для прымянення заказчыка і запланаванай прадукцыі, а таксама для запланаванага прымянення і выкарыстання староннімі кліентамі. Кліенты павінны забяспечыць адпаведныя меры бяспекі пры распрацоўцы і эксплуатацыі, каб звесці да мінімуму рызыкі, звязаныя з іх праграмамі і прадуктамі. NXP Semiconductors не нясе ніякай адказнасці, звязанай з любымі дэфолтамі, пашкоджаннямі, выдаткамі або праблемамі, заснаванымі на якіх-небудзь недахопах або дэфолтах у праграмах або прадуктах заказчыка, або прымяненні або выкарыстанні староннімі кліентамі кліента. Кліент нясе адказнасць за правядзенне ўсіх неабходных тэсціраванняў прыкладанняў і прадуктаў кліента з выкарыстаннем прадуктаў NXP Semiconductors, каб пазбегнуць дэфолту прыкладанняў і прадуктаў або прыкладання або выкарыстання староннімі кліентамі кліента. NXP не нясе ніякай адказнасці ў гэтым плане.
  • Умовы камерцыйнай продажу — Прадукцыя NXP Semiconductors прадаецца ў адпаведнасці з агульнымі ўмовамі камерцыйнага продажу, апублікаванымі на https://www.nxp.com/profile/умовы, калі іншае не ўзгоднена ў сапраўдным пісьмовым індывідуальным пагадненні. У выпадку заключэння індывідуальнага дагавора прымяняюцца толькі ўмовы адпаведнага дагавора. Сапраўдным NXP Semiconductors выразна пярэчыць супраць прымянення агульных палажэнняў і ўмоў кліента ў дачыненні да набыцця кліентам прадуктаў NXP Semiconductors.
  • Экспартны кантроль — Гэты дакумент, а таксама тавар(ы), апісаны ў ім, могуць быць прадметам правілаў экспартнага кантролю. Для экспарту можа спатрэбіцца папярэдні дазвол ад кампетэнтных органаў.
  • Прыдатнасць для выкарыстання ў неаўтамабільнай прадукцыі — Калі ў гэтым дакуменце прама не пазначана, што гэты канкрэтны прадукт NXP Semiconductors прызначаны для аўтамабільнай прамысловасці, гэты прадукт не падыходзіць для выкарыстання ў аўтамабілі. Ён не кваліфікаваны і не пратэставаны ў адпаведнасці з аўтамабільнымі выпрабаваннямі або патрабаваннямі прымянення. NXP Semiconductors не нясе адказнасці за ўключэнне і/або выкарыстанне неаўтамабільнай прадукцыі ў аўтамабільным абсталяванні або праграмах.
    У выпадку, калі кліент выкарыстоўвае прадукт для распрацоўкі і выкарыстання ў аўтамабільных прылажэннях у адпаведнасці з аўтамабільнымі спецыфікацыямі і стандартамі, кліент (a) павінен выкарыстоўваць прадукт без гарантыі NXP Semiconductors на прадукт для такіх аўтамабільных прымянення, выкарыстання і спецыфікацый, і ( b) кожны раз, калі кліент выкарыстоўвае прадукт для аўтамабільных прымянення па-за спецыфікацыямі NXP Semiconductors, такое выкарыстанне ажыццяўляецца выключна на ўласную рызыку кліента, і (c) кліент цалкам кампенсуе NXP Semiconductors любую адказнасць, пашкоджанні або няўдалыя прэтэнзіі да прадукту, якія вынікаюць з распрацоўкі і выкарыстання кліентам прадукт для аўтамабільнага прымянення за межамі стандартнай гарантыі NXP Semiconductors і спецыфікацый прадукту NXP Semiconductors.
  • Пераклады — Неанглійская (перакладзеная) версія дакумента, уключаючы юрыдычную інфармацыю ў гэтым дакуменце, прызначана толькі для даведкі. Англійская версія мае перавагу ў выпадку любых разыходжанняў паміж перакладзенай і англійскай версіямі.
  • Бяспека — Кліент разумее, што ўсе прадукты NXP могуць мець неўстаноўленыя ўразлівасці або падтрымліваць устаноўленыя стандарты бяспекі або спецыфікацыі з вядомымі абмежаваннямі. Кліент нясе адказнасць за распрацоўку і працу сваіх прыкладанняў і прадуктаў на працягу ўсяго іх жыццёвага цыкла, каб паменшыць уплыў гэтых уразлівасцяў на прыкладанні і прадукты кліента. Адказнасць кліента таксама распаўсюджваецца на іншыя адкрытыя і/або ўласныя тэхналогіі, якія падтрымліваюцца прадуктамі NXP для выкарыстання ў праграмах заказчыка. NXP не нясе адказнасці за любую ўразлівасць. Кліент павінен рэгулярна правяраць абнаўленні сістэмы бяспекі ад NXP і прымаць адпаведныя меры. Кліент павінен выбіраць прадукты з функцыямі бяспекі, якія найлепшым чынам адпавядаюць правілам, нормам і стандартам меркаванага прымянення, і прымаць канчатковыя праектныя рашэнні ў дачыненні да сваіх прадуктаў і нясе поўную адказнасць за адпаведнасць усім юрыдычным, нарматыўным патрабаванням і патрабаванням бяспекі, якія тычацца яго прадуктаў, незалежна ад любой інфармацыі або падтрымкі, якія могуць быць прадастаўлены NXP.

У NXP ёсць група рэагавання на інцыдэнты з бяспекай прадукту (PSIRT) (даступная па адрасе PSIRT@nxp.com), якая кіруе расследаваннем, справаздачнасцю і выпускам рашэнняў для ўразлівасцяў бяспекі прадуктаў NXP.
NXP B.V. — NXP B.V. не з'яўляецца аперацыйнай кампаніяй і не распаўсюджвае і не прадае прадукцыю.

Таварныя знакі
Заўвага: Усе згаданыя брэнды, назвы прадуктаў, назвы паслуг і гандлёвыя маркі з'яўляюцца ўласнасцю іх адпаведных уладальнікаў.

NXP — знак і лагатып з'яўляюцца гандлёвымі маркамі 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 — з'яўляюцца гандлёвымі маркамі і/або зарэгістраванымі гандлёвымі маркамі Arm Limited (або яе даччыных кампаній або філіялаў) у ЗША і/або у іншым месцы. Звязаная тэхналогія можа быць абаронена адным ці ўсімі патэнтамі, аўтарскімі правамі, дызайнам і камерцыйнымі сакрэтамі. Усе правы ахоўваюцца.

  • i.MX — з'яўляецца гандлёвай маркай NXP BV
  • J-Link — з'яўляецца гандлёвай маркай SEGGER Microcontroller GmbH.

Microsoft, Azure і ThreadX — гандлёвыя маркі групы кампаній Microsoft.

Майце на ўвазе, што важныя заўвагі, якія тычацца гэтага дакумента і апісанага(-ых) у ім прадукта(-аў), уключаны ў раздзел «Прававая інфармацыя».

© 2024 NXP BV
Для атрымання дадатковай інфармацыі, калі ласка, наведайце: https://www.nxp.com

  • Дата выпуску: 19 красавіка 2024 г
  • Ідэнтыфікатар дакумента: AN14263

FAQ

Пытанне: Якая галоўная мэта гэтага прадукта?
A: Асноўная мэта складаецца ў тым, каб уключыць функцыю распазнавання твару з выкарыстаннем мадэлі алгарытму бачання AI&ML з простым графічным інтэрфейсам LVGL, напрыкладample на плаце SLN-TLHMI-IOT.

Пытанне: Як распрацоўшчыкі могуць атрымаць выгаду з гэтай заўвагі па дадатку?
A: Распрацоўшчыкі могуць навучыцца рэалізаваць распазнаванне твараў на фрэймворку крок за крокам, выкарыстоўваючы прапанаваны прыкладampі зразумець менеджэры прылад, прылады HAL і задзейнічаныя механізмы падзей.

Дакументы / Рэсурсы

NXP AN14263 Рэалізаваць LVGL GUI Face Recognition на Framewor [pdfКіраўніцтва карыстальніка
AN14263 Рэалізаваць распазнаванне твараў графічнага інтэрфейсу LVGL на Framewor, AN14263, Рэалізаваць распазнаванне твараў графічнага інтэрфейсу LVGL на Framewor, Распазнаванне твараў графічнага інтэрфейсу LVGL на Framewor, распазнаванне твараў на Framewor, распазнаванне на Framewor, Framewor

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *