NXP AN14263 Įdiekite LVGL GUI veido atpažinimą rėmelyje
Informacija apie produktą
Specifikacijos
- Produkto pavadinimas: LVGL GUI veido atpažinimas sistemoje
- Dokumento peržiūra: 1 m. balandžio 19 – 2024 d
- Raktiniai žodžiai: Veido atpažinimas, LVGL GUI, Framework
Produkto naudojimo instrukcijos
- Baigėsiview
Šis produktas įgalina AI&ML regėjimo algoritmo modelį veido atpažinimui sistemoje, kad būtų galima įgyvendinti veido atpažinimo funkciją naudojant paprastą LVGL GUI, pvz.ample SLN-TLHMI-IOT plokštėje. - Framework Overview
Sprendimo programinė įranga sukurta atsižvelgiant į pagrindinę architektūrą, kurią sudaro įrenginių tvarkytojai, atsakingi už įrenginių valdymą, HAL įrenginiai, skirti abstrahuoti pagrindinę informaciją, ir įvykiai, skirti komunikacijai tarp skirtingų įrenginių. - Savybės
Produktas leidžia įgyvendinti veido atpažinimo funkciją per kameros išankstinįview GUI ekrane su mygtukais, kurie suaktyvina veido registraciją, atpažinimą ir pašalinimą. Registruoti veido duomenys saugomi „Flash“ per a file sistema. - Programos pastabos turinys
Programos pastaboje pateikiamas LVGL GUI ekranas su išankstiniu fotoaparatuview ir su veidu susijusių veiksmų mygtukai. Tai padeda kūrėjams suprasti sistemą ir kaip įdiegti veido atpažinimą naudojant pateiktą example.
Baigėsiview
NXP pristatė sprendimų kūrimo rinkinį, pavadintą SLN-TLHMI-IOT, kuriame pagrindinis dėmesys skiriamas išmaniosioms HMI programoms. Tai įgalina išmanųjį HMI su ML vaizdo, balso ir grafikos vartotojo sąsaja, įdiegta viename NXP i.MX RT117H MCU. Remiantis SDK, sprendimo programinė įranga sukurta remiantis dizainu, vadinamu karkasu, kuris palaiko lanksčius dizainus ir vizijos bei balso funkcijų pritaikymą. Kad vartotojai galėtų geriau naudotis programinės įrangos platforma, pateikiami kai kurie pagrindiniai dokumentai, pvzample, programinės įrangos kūrimo vartotojo vadovas. Vadove pristatomas pagrindinis programinės įrangos dizainas ir programų architektūra, apimanti visus sprendimo komponentus, įskaitant sistemą, kuri padeda kūrėjams lengviau ir efektyviau įdiegti programas naudojant SLN-TLHMI-IOT.
Norėdami gauti daugiau informacijos apie sprendimą ir atitinkamus dokumentus, apsilankykite web NXP EdgeReady Smart HMI sprendimo puslapis, pagrįstas i.MX RT117H su ML Vision, Voice ir grafine vartotojo sąsaja. Tačiau kūrėjams vis dar nėra taip lengva įdiegti savo išmaniąsias HMI programas, remiantis šiais pagrindiniais vadovais. Numatyta keletas taikymo pastabų, kurios padės žingsnis po žingsnio ištirti sistemos kūrimą. Ši programos pastaba yra pagrįsta Implement LVGL GUI Camera Preview dėl pagrindų (dokumentas AN14147). Šioje programos pastaboje aprašoma, kaip įgalinti AI&ML regėjimo algoritmo modelį veido atpažinimui sistemoje, kad būtų galima įgyvendinti veido atpažinimo funkciją naudojant fotoaparato išankstinį nustatymą.view GUI ekrane naudojant paprastą LVGL GUI pvzample SLN-TLHMI-IOT plokštėje. Prašyme nurodytas buvample pristato LVGL GUI ekraną su išankstiniu fotoaparatuview ir kai kurie mygtukai veido registracijai, atpažinimui ir pašalinimui suaktyvinti. Užregistruoti veido duomenys šiek tiek saugomi „Flash“. file sistema.
Aukšto lygio paraiškos pastaboje yra toks turinys:
- Įgalinkite veido atpažinimo funkciją sistemoje.
- Pridėkite veidų duomenų bazės palaikymą sistemoje per file sistema „Flash“.
- Įdiekite LVGL GUI programą. Per pirmiau pateiktas įžangas šis dokumentas padeda kūrėjams:
- Supraskite sistemą ir išmaniojo HMI sprendimo programinę įrangą giliau.
- Sukurkite jų AI&ML veido atpažinimo sistemą naudodami LVGL GUI programą.
Karkasas baigtasview
Sprendimo programinė įranga pirmiausia sukurta naudojant pagrindo architektūrą, kurią sudaro kelios skirtingos dalys:
- Įrenginių tvarkyklės – pagrindinė dalis
- Aparatinės įrangos abstrakcijos sluoksnio (HAL) įrenginiai
- Žinutės/įvykiai
Kaip parodyta 1 paveiksle, perview rėmo mechanizmas yra toks:
Įrenginių valdytojai yra atsakingi už sistemos naudojamų įrenginių tvarkymą. Kiekvienas įrenginio tipas (įvestis, išvestis ir pan.) turi savo tipui būdingą įrenginių tvarkytuvę. Kai įrenginių tvarkytuvė paleidžiama po to, kai įrenginiai yra joje užregistruojami, ji laukia ir patikrina pranešimą, kad perduotų duomenis į įrenginius ir kitus valdytojus, kai inicijuojami ir paleidžiami registruoti įrenginiai. HAL įrenginiai yra parašyti ant žemesnio lygio tvarkyklės kodo, o tai padeda pagerinti kodo suprantamumą abstrahuojant daugelį pagrindinių detalių.
Įvykiai yra priemonė, kuria informacija perduodama tarp skirtingų įrenginių per jų valdytojus. Kai įvykis suaktyvinamas, įrenginys, kuris pirmą kartą gavo įvykį, perduoda tą įvykį savo valdytojui, o tada savo ruožtu praneša kitiems valdytojams, paskirtiems gauti įvykį.
Karkaso architektūrinis projektas buvo sutelktas į tris pagrindinius tikslus:
- Naudojimo paprastumas
- Lankstumas / perkeliamumas
- Spektaklis
Sistema sukurta siekiant paspartinti vizijos ir kitų mašininio mokymosi programų pateikimą į rinką. Siekiant užtikrinti greitą pateikimą į rinką, labai svarbu, kad pati programinė įranga būtų lengvai suprantama ir modifikuojama. Turint omenyje šį tikslą, sistemos architektūrą lengva modifikuoti be apribojimų ir nereikalaujant našumo.
Daugiau informacijos apie sistemą rasite Smart HMI programinės įrangos kūrimo vartotojo vadove (dokumentas MCU-SMHMI-SDUG).
Lengvos ir universalios grafikos biblioteka (LVGL)
LVGL (Light and Versatile Graphics Library) yra nemokama atvirojo kodo grafikos biblioteka, teikianti viską, ko reikia norint sukurti įterptąją GUI su paprastais naudoti grafiniais elementais, gražiais vaizdo efektais ir mažai atminties.
GUI vadovas
GUI Guider yra patogus NXP grafinės vartotojo sąsajos kūrimo įrankis, leidžiantis greitai kurti aukštos kokybės ekranus naudojant atvirojo kodo LVGL grafikos biblioteką. GUI Guider nuvilkimo redaktorius leidžia lengvai naudoti daugelį LVGL funkcijų, pvz., valdiklius, animacijas ir stilius, kad būtų galima sukurti GUI su minimaliu kodavimu arba jo visai be kodavimo.
Vienu mygtuko paspaudimu galite paleisti programą imituotoje aplinkoje arba eksportuoti ją į tikslinį projektą. Sugeneruotas kodas iš GUI Guider gali būti lengvai įtrauktas į jūsų projektą, pagreitinant kūrimo procesą ir leidžiant sklandžiai pridėti įterptąją vartotojo sąsają prie programos. GUI Guider galima nemokamai naudoti su NXP bendrosios paskirties ir kryžminiais MCU ir apima integruotus projektų šablonus kelioms palaikomoms platformoms. Norėdami sužinoti daugiau apie LVGL ir GUI kūrimą naudojant GUI Guide, pažymėkite Light and Versatile Graphics Library ir GUI Guide.
Plėtros aplinka
Pirmiausia paruoškite ir nustatykite aparatinės ir programinės įrangos aplinką, skirtą example ant karkaso.
Aparatinė aplinka
Aparatinės įrangos aplinka yra nustatyta patikrinti exampLe:
- Išmanusis HMI kūrimo rinkinys, pagrįstas NXP i.MX RT117H (SLN_TLHMI_IOT rinkinys)
- SEGGER J-Link su 9 kontaktų Cortex-M adapteriu ir V7.84a arba naujesne tvarkyklės versija
Programinės įrangos aplinka
Programinės įrangos aplinka sukurta exampLe:
- MCUXpresso IDE V11.7.0
- GUI vadovas V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – pvzampantrosios programos pastabos kodą kaip pagrindinę kūrimo programinę įrangą. Daugiau informacijos žr https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – kaip kūrimo kodo šaltinis.
- SLN-TLHMI-IOT programinė įranga V1.1.2 – išmanusis HMI šaltinio kodas, išleistas NXP GitHub saugykloje kaip kūrimo kodo šaltinis. Norėdami gauti daugiau informacijos, žr.: GitHub – NXP/mcu-smhmi 1.1.2 versijoje
Norėdami gauti daugiau informacijos apie programinės įrangos aplinkos įsigijimą ir sąranką, žr.: SLN-TLHMI-IOT darbo pradžia.
Vizijos architektūra ant karkaso
Sistemos vizijos architektūra parodyta 2 paveiksle. Vizijos algoritmas HAL (OASIS_HAL) turi šiuos procesus:
- Atlikite veidų registraciją ir atpažinimą naudodami AI&ML regėjimo algoritmo modelį, gavę susijusius įvykius iš išvesties UI HAL. Praneškite apie išvados rezultatus iš algoritmo modelio į išvesties UI HAL.
- Prieina (pridėti, ištrinti…) veido funkcijų duomenų bazę, remdamasi mažais file sistema, iškviesdama FaceDB HAL API, gavusi susijusius įvykius iš išvesties UI HAL.
- Registruodami ir atpažindami veidą, paprašykite kameros vaizdo kadro iš fotoaparato HAL.
Įdiekite veido atpažinimą sistemoje
LVGL GUI veido atpažinimas, pvzample (buvample pateikiama vėliau) sistema įgyvendinama remiantis buvampĮdiekite LVGL GUI kameros kodusview dėl pagrindų (dokumentas AN14147).
Už veido atpažinimo demonstravimą buvusiojeample, pagrindinė GUI programos funkcija (žr. pagrindinį ekraną 3 paveiksle) sukurta taip, kaip aprašyta toliau:
- GUI programa suaktyvina veido registraciją arba atpažinimo įvykį išvesties UI HAL spustelėjus mygtuką Registracija arba atpažinimas. O išvesties vartotojo sąsaja HAL praneša apie vartotojo įtraukimą į regėjimo algo HAL po sėkmingo veido registravimo.
- GUI programa suaktyvina vartotojo ištrynimo įvykį išvesties UI HAL spustelėjus mygtuką Ištrinti naudotoją po to, kai atpažįstamas vartotojo veidas.
- GUI programa suaktyvina įvykį, kai sustabdomas oazės algoritmas, veikiantis į išvesties UI HAL, spustelėjus ekraną už mygtukų ir vaizdų.
Paruoškite programinės įrangos paketą example.
- Klonuokite bazinę programinę įrangą lvgl_gui_camera_preview_cm7. Pakeiskite projekto pavadinimą ir pagrindinį filepavadinimas lvgl_gui_face_rec_cm7.
- Struktūra turi būti atnaujinta programinėje įrangoje, nes sistemos branduolio šaltinio kodai buvo vieši GitHub nuo 1.1.2 versijos.
- Pakeiskite sistemos aplanką V1.1.2 kopija iš GitHub, išskyrus files fwk_log.h ir fwk_common.h skiltyje inc\, nes jie buvo modifikuoti taikomųjų pastabų serijai. Operacijos parodytos 4 paveiksle:
- Ištrinkite aplanką framework_cm7 iš libs grupės ir pašalinkite biblioteką framework_cm7 ir jos paieškos kelią, sukonfigūruotą skiltyje Project > Properties > C/C++ Build > Settings > Tool Settings > MCU C++ Linker > Libraries, nes pateikiamas pagrindinio šaltinio kodas.
Įgalinti veido atpažinimo funkciją sistemoje
Veido atpažinimo funkcija sukurta remiantis ML regėjimo algoritmo modeliu, pateiktu kaip statinė biblioteka – NXP „Oasis Lite“ vykdymo biblioteka. Biblioteka yra maža, labai efektyvi, pritaikyta ir optimizuota AI biblioteka. Modelis apima veido aptikimą, veido atpažinimą, stiklo aptikimą ir gyvumo aptikimą. Ji daugiausia teikia API OASISLT_run_extended(), kad paleistų veido atpažinimo dujotiekį, tuo pačiu atnaujinant rezultatus skambintojui per įvykių atgalinius iškvietimus ir įtraukiant/atnaujinant/ištrinant veidus duomenų bazėje per veidų duomenų bazės atgalinius skambučius, nurodęs šaltinio kadro informaciją, atgalinius skambučius ir atmintį. baseinas, kurį naudoja biblioteka, inicijuojant iškviesdamas kitą API OASISLT_init(). API iškvietimas ir atgalinio ryšio funkcijos yra įdiegtos sistemos vizijos algoritme HAL.
Pridėti vizijos algo modelių biblioteką
- Nukopijuokite aplanko oazę, kurioje yra biblioteka ir susijusi antraštė file iš smart HMI\coffee_machine\cm7\libs\ į aplanką libs example SW.
- Pridėkite antraštės paieškos kelią file skiltyje Projektas > Ypatybės > C/C++ kūrimas > nustatymai > Įrankio nustatymai > MCU C kompiliatorius > Įeina ir MCU C++ kompiliatorius > Įtraukiama: „${workspace_loc:/${ProjName}/libs/oasis/include}“
- Pridėkite lib ir jo paieškos kelią prie Project > Properties > C/C++ Build > Settings > MCU C+ + Linker > Libraries: liboasis_lite2D_DEFAULT_117f_ae.a „${workspace_loc:/${ProjName}/libs/oasis}“ ir makrokomandos apibrėžimą įgalinkite funkciją Projektas > Ypatybės > C/C++ kūrimas > nustatymai > Įrankio nustatymai > MCU C kompiliatorius > Pirminis procesorius ir MCU C++ kompiliatorius > Pirminis procesorius: SMART_TLHMI_2D
Įgalinti vision algo HAL
Vizijos algo HAL skatina regėjimo algo modelį veikti ir, gavęs iš jo įvykius, reaguoja į vartotojo sąsajos išvestį HAL.
Norėdami tai įjungti, klonuokite esamą panašią HAL tvarkyklę file kur įgyvendinamos toliau nurodytos funkcijos:
- Įdiekite veidų duomenų bazės operacijų ir įvykių tvarkymo atgalinius iškvietimus.
- Iškvieskite oazės bibliotekos API, kad vizijos algoritmas veiktų.
- Pasiekite naudotojų veidų duomenų bazę ir programų duomenų bazę (jos nereikia, pvzample).
- Gaukite įvykius iš ir siųskite rezultatus į išvestį UI HAL.
Pagrindiniai darbai įgyvendinant HAL buvusiemsampyra:
- Klonuokite esamą panašią HAL tvarkyklę file ir pakeiskite susijusius pavadinimus.
- Pašalinkite kodus, susijusius su programos duomenų operacijomis.
- Atnaujinkite apibrėžimus ir funkcijas, skirtas tvarkyti įvykius iš išvesties vartotojo sąsajos HAL pagal exampdizainas.
- Pridėkite oazės inicijavimui reikalingas konfigūracijas.
Išsamūs žingsniai yra tokie:
- Klonuoti hal_vision_algo_oasis_coffeemachine.c. Pakeisti filepavadinimas hal_vision_algo_oasis_guifacerec.c. Ir pakeiskite visas CoffeeMachine eilutes į GUIFaceRec file.
- Pašalinkite kodus, kuriuose yra eilutė coffeedb (neskiriama didžiųjų ir mažųjų raidžių), susijusią su programų duomenų baze, pvz.,ample, #include hal_sln_coffeedb.h.
- Pakeiskite funkciją HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify(), kad tvarkytumėte įvykius iš išvesties vartotojo sąsajos HAL.
- Pakeiskite įvykio apibrėžimą kEventFaceRecId_RegisterCoffeeSelection į kEventFaceRecId_RegisterUserFace, o struktūros eilutę regCoffeeSelection į regGUIFaceRec, skirtą įvykių apdorojimui, kad į duomenų bazę įtrauktumėte naujų veido savybių duomenų.
- Parodyti standartinį veido atpažinimo veiksmų procesą example, pakeiskite tvarkymą kEventFaceRecID_OasisSetState atveju su būsenų apibrėžimais:
- kOASISLiteState
- Registracija kOASISLiteState
- Pripažinimas kOASISLiteState
- Sustojo
- Pridėkite ir pakeiskite įvykių, paminėtų aukščiau esančiame žingsnyje, apibrėžimus.
- Nukopijuokite antraštę file smart_tlhmi_event_descriptor.h iš smart HMI\coffee_machine \cm7\source\event_handlers\ į ex aplanko šaltinįample SW. Atnaujinkite file kaip nurodyta toliau:
- Pakeiskite įvykio apibrėžimą kEventFaceRecId_RegisterCoffeeSelection į kEventFaceRecId_RegisterUserFace enum tipo _event_smart_tlhmi_id ir struktūros eilutę regCoffeeSelection į regGUIFaceRec struktūroje _event_smart_t. Taigi, pakeiskite regCoffeeSelection struktūrą register_coffee_selection_event_t į register_gui_facerec_event_t.
- Ištrinkite kitą kavos aparato programėlės turinį, pvz.,ample, kodo eilutė apie balsą: #include „hal_event_descriptor_voice.h“.
- Pridėkite tipus kOASISLiteState_Stopped ir kOASISLiteState_Running prie enum tipo oasis_lite_state_t, esančio hal_vision_algo.h, projekto skiltyje framework>hal>vision, kaip nurodyta toliau:
typedef enum _oasis_lite_state {- kOASISLiteState
- Bėga, kOASISLiteState
- Sustabdyta, kOASISLiteState
- pripažinimas,
- kOASISLiteState
- Registracija, kOASISLiteState
- Išregistravimas, kOASISLiteState
- Nuotolinė registracija, kOASISLiteState
- Suskaičiuoti
- Naudokite aukščiau pateiktą atnaujintą struct oasis_lite_state_t, kad patobulintumėte struct oasis_state_event_t, esančią hal_event_descriptor_face_rec.h pagal framework>hal>vision projekte, kaip nurodyta toliau: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Pakeiskite visus kEventInfo_Remote į kEventInfo_Local, kad įvykiai būtų siunčiami iš vizijos algo HAL į kitus HAL, veikiančius tame pačiame branduolyje, nes vienas branduolys, o ne dviejų branduolių naudojamas ex.ample.
- Pridėkite ir pakeiskite toliau pateiktas oazės inicijavimo konfigūracijas OASISLT_init():
- Pridėkite vaizdo įrašo kadro makrokomandų apibrėžimus ir atminties skyrius į 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, alignbaitai) \
- __attribute__((section(.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __attribute__((sulygiuotas(lygiuoti baitai)))
- Konfigūruokite atminties priskyrimą aukščiau esančiai atminties skilčiai fb_sh_mem, esančiame Project > Properties > C/C++ Build > MCU Settings, parodyta 5 paveiksle:
- Paskelbkite visuotinį kintamąjį g_DTCOPBuf lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Toliau pridėkite apibrėžimus, naudojamus aukščiau pateiktame kintamajame:
- Apibrėžkite aukščiau pateiktą skyrių board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- atributas__((section(.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- atributas__((sulygiuotas(lygiuoti baitai)))
- Įtraukite antraštę file hal_vision_algo.h, kuriame yra makrokomandos apibrėžimas DTC_OPTIMIZE_BUFFER_SIZE, esantis app_config.h, įtrauktas į lvgl_gui_face_rec_cm7.cpp.
- Pridėkite vaizdo įrašo kadro makrokomandų apibrėžimus ir atminties skyrius į board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Nustatykite kintamąjį s_debugOption į true, kad parodytumėte veido atpažinimo eigos būseną.
- Pridėkite antraštės paieškos kelią fileHAL vizijos s projekte > Ypatybės > C/C++ kūrimas > nustatymai > Įrankio nustatymai > MCU C kompiliatorius > Apima ir MCU C++ kompiliatorius > Apima: „${workspace_loc:/${ProjName}/framework/hal/vision}“
- Pridėkite toliau pateiktą apibrėžimą, kad įgalintumėte „vision algo HAL“ svetainėje board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Įgalinti išvesties UI HAL
Išvesties vartotojo sąsaja HAL praneša apie įvykius regėjimo algoritmui HAL ir reaguoja į išvados rezultatus iš regėjimo algo HAL. Naudojant GUI programą, įvykius paprastai suaktyvina programa, o rezultatai rodomi programoje.
Norėdami tai įjungti, klonuokite esamą panašią HAL tvarkyklę file kur paprastai įgyvendinamos toliau nurodytos funkcijos:
- Praneškite apie veido atpažinimo ir prieigos prie duomenų bazės įvykius.
- Įdiekite GUI programos atgalinius skambučius, kad suaktyvintumėte įvykius.
- Tvarkykite išvadų rezultatus iš regėjimo algo modulio.
- Rodykite įvykių apdorojimo NS procesą ir rezultatus eigos juosta, valdoma laikmačiais ir veido kreiptuvo stačiakampiu.
Pagrindiniai darbai įgyvendinant HAL buvusiemsampŠiame dokumente naudojami šie:
- Klonuokite esamą panašią HAL tvarkyklę file ir pakeiskite susijusius pavadinimus.
- Pašalinkite su programa susijusius kodus.
- Atnaujinkite pranešimų apie įvykius ir atsakymo į rezultatus funkcijas pagal pvzampdizainas.
- Pridėkite GUI programos atgalinius skambučius, kad suaktyvintumėte įvykius.
Išsamūs žingsniai yra tokie:
- Klonuoti hal_output_ui_coffee_machine.c. Pakeisti filepavadinimas hal_ output_ui_guifacerec.c.
- Pakeiskite visas CoffeeMachine eilutes į GUIFaceRec file.
- Pašalinkite kodus, susijusius su programėle – kavos aparatu.
- Pašalinkite funkcijas WakeUp() ir _StandBy() bei susijusius kodus (jų gali ieškoti eilutėje wake_up ir budėjimo režimas).
- Pašalinti išankstinįview režimo įvykiai, tvarkantys susijusius kodus HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Pašalinkite funkcijas UI_xxx_Callback() ir kodus, kuriuose yra eilutė gui_ ir ekranas, susijęs su kavos aparato GUI, išskyrus gui_set_virtual_face()view režimo funkcija.
- Pašalinkite visus kodus, susijusius su kintamaisiais s_IsWaitingAnotherSelection ir s_IsWaitingRegisterSelection, susijusius su kavos aparato programa.
- Pašalinkite kodus, susijusius su balsu, garsu ir kalba. Pavyzdžiui,ampLe:
- #include „hal_voice_algo_asr_local.h“,
- #include „hal_event_descriptor_voice.h“
- Įvairių įvykių pranešimams įdiekite naujas funkcijas _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() ir DeregisterGUIFaceRec() su funkcijomis _StopFaceRec(), _RegisterCoffeeSelection() ir DeregisterCoffeeSdeleting them before.
- _OutputManagerNotify() įgyvendina pagrindinę įvykių išvesties funkciją, kad išsiųstų įvykį į vizijos algo HAL. Žemiau pateiktos funkcijos jį vadina savo įvykių siuntimu.
- _SetFaceRec() siunčia įvykį kEventFaceRecID_OasisSetState, kad suaktyvintų veido registravimo, atpažinimo ir sustabdymo regėjimo algoritmą.
- _RegisterGUIFaceRec() siunčia įvykį kEventFaceRecId_RegisterGUIFaceRec, kuris yra apibrėžtas smart_tlhmi_event_descriptor.h, kad į duomenų bazę įtrauktų veido savybių duomenis, kai registracija gerai.
- DeregisterGUIFaceRec() siunčia įvykį kEventFaceRecID_DelUser, kad ištrintų veido savybių duomenis iš duomenų bazės, kai perduodamas veido atpažinimas.
- Atnaujinkite kodus, kad atliktumėte atitinkamus veiksmus, įskaitant GUI atnaujinimą, iškviečiant API iš LVGL GUI programos, kad gautumėte išvadinius veido registravimo ir atpažinimo rezultatus naudojant funkciją _InferComplete_Vision() pagal ex.ample's dizainas. Pavyzdžiui,ampkai sėkminga veido registracija,
- Nustokite rodyti progresą iškviesdami _FaceRecProcess_Stop();
- Sustabdykite veido registraciją paskambinę _SetFaceRec(kOASISLiteState_Stopped);
- Rodyti sėkmingą rezultatą GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Užregistruokite veido duomenis duomenų bazėje: _RegisterUserFace(s_UserId);
- Pridėkite UI atgalinio skambinimo funkcijas, kad galėtumėte tvarkyti įvykius: iš ankstoview, veido registracija, atpažinimas ir vartotojo ištrynimas, suaktyvintas iš GUI. Pavyzdžiui,ample, veido registracijos atgalinis skambutis: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Ir pridėkite funkcijas _FaceRecProcess_Start() ir _FaceRecProcess_Stop(), kad parodytumėte įvairių įvykių ir rezultatų eigą ir būseną.
- Atnaujinkite laikmačio ISR iškvietimo funkciją _SessionTimer_Callback(), kad tvarkytumėte skirtojo laiko atvejį, skambinant: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Pridėkite toliau pateiktus apibrėžimus, kad įjungtumėte vartotojo sąsajos išvestį HAL adresu board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Pastaba:
Norėdami geriau pristatyti veido atpažinimo funkciją, išvesties vartotojo sąsajoje HAL palikite funkciją rodyti veido atpažinimo procesą ir rezultatus. Funkcija aprašyta toliau
- Veido kreiptuvo stačiakampis rodomas mėlynai, o eigos juosta rodo eigą pradedant veido registraciją arba atpažinimą.
- Veido kreiptuvo stačiakampis rodomas raudonai, kai veido registracija sėkminga.
- Veido kreiptuvo stačiakampis rodomas žaliai, kai veido atpažinimas sėkmingas.
- Veido kreiptuvo stačiakampis išlieka mėlynas, o eigos juosta rodo visą eigą, kai veiksmas nesėkmingas pasibaigus laikmačio galiojimo laikui. Tuo metu sustabdykite veido registraciją arba atpažinimą.
Eigos juosta ir veido kreiptuvo stačiakampis pateikiami kaip piktogramos, įmontuotos į dvejetainį išteklių file turi būti užprogramuotas į „Flash“. Rodyklės į piktogramų duomenis SDRAM yra nustatytos funkcijoje LoadIcons(APP_ICONS_BASE), kuri iškviečiama išvesties UI HAL įrenginio inicijavimui išvesties UI HAL. Ji turi įdiegti piktogramų palaikymą šiai funkcijai.
Įdiekite piktogramų palaikymą
- Sukurkite išteklius, sujungdami piktogramas su LVGL GUI programoje naudojamais vaizdais:
- Klonuokite keturių piktogramų antraštę files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h ir virtual_face_red_420x426.h iš išmaniojo HMI
\kavos aparatas\resursas\piktogramos\ prie naujų aplankų piktogramų, esančių po buvusio asmens išteklių aplankuample SW. - Pridėkite keturių piktogramų paieškos kelią files kameroje_preview_resource.txt file išteklių aplanke, pvzample: icon ../resource/icons/process_bar_240x14.h
- Vykdykite camera_preview_resource_build.bat, kad sukurtumėte vaizdų ir piktogramų išteklius, kad būtų sukurta šiukšliadėžė file camera_preview_resource.bin ir informaciją file resource_information_table.txt (žr. 6 pav.).
- Klonuokite keturių piktogramų antraštę files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h ir virtual_face_red_420x426.h iš išmaniojo HMI
- Apibrėžkite SDRAM pradžios adresą ir app_config.h piktogramų dydį. Adresas prasideda šalia GUI programos vaizdų. Dydis sugeneruotas info file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
- Atnaujinkite priskirtą atminties sekcijos, pavadintos res_sh_mem, dydį į 0x200000, iš naujo apibrėždami jį programoje app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 ir atitinkamą nustatymą skiltyje Project > Properties > C/C++ Build > MCU settings.
- Pridėkite piktogramos dydį prie bendro šaltinio, įkelto iš „Flash“ į SDRAM, dydžio naudodami funkciją APP_LoadResource() pagrindinėje dalyje file lvgl_gui_face_rec_cm7.cpp: memcpy((negalioja *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Pastaba: norint užbaigti veido atpažinimo funkciją, reikalingas LVGL GUI programos palaikymas. UI atgalinio skambinimo funkcijas išvesties UI HAL iškviečia LVGL GUI programa, skirta įvykiams tvarkyti vartotojo sąsajos ekrane. Kita vertus, išvesties vartotojo sąsaja HAL iškviečia API iš LVGL GUI programos, kad atnaujintų vartotojo sąsają, kad būtų rodomas rezultatas ir būsena. LVGL GUI programėlės kūrimas yra gana nepriklausomas ir pristatomas 4.3 skyriuje.
4.1.5 Paleiskite HAL įrenginius ir tvarkykles veido atpažinimui
Įjungtas vizijos algo HAL ir UI išvestis HAL ir jų tvarkytojai paleidžiami pagrindiniame file
lvgl_gui_face_rec_cm7.cpp po kūrimo konversijų sistemoje, kaip nurodyta toliau:
- Įtraukite antraštę file susiję su dviem HAL valdytojais, pridedant kodo eilutę:
- #include ” fwk_output_manager.h “
- #include „fwk_vision_algo_manager.h“
- Deklaruokite HAL įrenginius:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Užregistruokite HAL įrenginius:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- Inicijuokite valdytojus:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- Pradėkite vadybininkus:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
- Apibrėžkite vadovo užduočių prioritetą:
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #define OUTPUT_MANAGER_TASK_PRIORITY 1
Pridėkite veidų duomenų bazės palaikymą sistemoje
Registruotų veido savybių duomenys pasiekiami „Flash“ saugomoje veidų duomenų bazėje per šiek tiek file sistema. Veidų duomenų bazės palaikymo pridėjimo veiksmai aprašyti toliau.
Pridėkite „Flash“ saugyklos tvarkykles
Nukopijuokite „Flash“ sąsajos „FlexSPI“ tvarkyklę files fsl_flexspi.c ir fsl_flexspi.h bei duomenų šifravimo tvarkyklė files fsl_caam.c ir fsl_caam.h iš kelio SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ į ex tvarkyklių aplankąample SW.
Pridėkite plokštės lygio palaikymą
- Pridėkite FlexSPI apibrėžimus, naudojamus „Flash“ įrenginiui į board.h:
- #define BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Nukopijuokite operatorius ir konfigūracijas file„Flash“ įrenginio s flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, andsln_flash_ops.h, esančiame aplanke „smart HMI\coffelash“ample SW.
- Dešiniuoju pelės mygtuku spustelėję files pavadinimą ir atidarykite ypatybes, kad jas būtų galima įtraukti į projektą.
- Pakeiskite įtrauktą antraštę filepavadinkite sln_flash_config.h į sln_flash_config_w25q256jvs.h sln_flash_config.c ir flexspi_nor_flash_ops.h.
- Nustatykite FlexSPI1 laikrodžio šaltinį file clock_config.c, nurodant kavos aparato programą.
Pridėkite adapterį ir vidutinio lygio palaikymą
- Nukopijuokite files sln_flash.c, sln_flash.h, sln_encrypt.c ir sln_encrypt.h kaip adapterio tvarkykles file sistema ir programa iš išmaniojo HMI\coffee_machine\cm7\source\ iki buvusio aplanko šaltinioample. Atnaujinkite naują files:
- Norėdami sukurti, panaikinkite jų žymėjimą „Išskirti išteklius iš kūrimo“.
- Pakeiskite visą įtrauktą antraštę file pavadinimas sln_flash_config.h į sln_flash_config_w25q256jvs.h.
- Nukopijuokite aplanką filesistema, kurioje yra API mažiesiems filesistema ir HAL tvarkyklė iš išmaniojo HMI \coffee_machine\cm7\source\ į example SW. Ir atnaujinkite naują aplanką:
- Norėdami sukurti, panaikinkite žymėjimą nuo „Išskirti išteklius iš kūrimo“.
- Pridėkite įtraukimo kelią projekto nustatymuose: „${workspace_loc:/${ProjName}/filesistema}“
- Pakeiskite įtrauktą antraštę file pavadinkite sln_flash_config.h į sln_flash_config_w25q256jvs.h ir fica_definition.h į app_config.h file sln_flash_littlefs.h.
- Nukopijuokite aplanką littlefs, kuriame yra vidurinė įranga – little filesistema nuo kelio SDK_2_13_0_ MIMXRT1170-EVK\vidurinė programinė įranga\ iki example SW. Ir atnaujinkite naują aplanką:
- Norėdami sukurti, panaikinkite žymėjimą nuo „Išskirti išteklius iš kūrimo“.
- Pridėkite įtraukimo kelią projekto nustatymuose: „${workspace_loc:/${ProjName}/littlefs}“
Pridėti HAL tvarkykles
- Yra du HAL įrenginiai – file sistemos ir veido duomenų bazės HAL palaiko duomenų bazės prieigos funkciją ir jos jau yra įdiegtos sistemoje be jokių pakeitimų. Įjunkite juos įtraukdami toliau pateiktus apibrėžimus į board_define.h:
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
Ir pakeiskite buvusio veidų duomenų bazės pavadinimąample: #define OASIS_FACE_DB_DIR „oasis_gui_face_rec“
Pridėkite programos lygio palaikymą
- Atnaujinkite pagrindinį file lvgl_gui_face_rec_cm7.cpp:
- Įtraukite antraštę file susiję su Flash file sistemos HAL tvarkyklė, pridedant kodo eilutę: #include „fwk_flash.h“
- Deklaruoti ir užsiregistruoti file sistemos HAL įrenginys:
- HAL_FLASH_DEV_DECLARE(Mažieji);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
Pastaba: file sistemos HAL įrenginys turi būti užregistruotas prieš inicijuojant visus įrenginių tvarkykles naudojant funkciją APP_InitFramework().
- Norėdami sukonfigūruoti MPU, iškvieskite funkciją BOARD_ConfigMPU() programoje APP_BoardInit().
- Nustatykite file sistemos priskyrimas „Flash“ programoje file app_config.h apibrėždami makrokomandų apibrėžimus, naudojamus file sln_flash_littlefs.h:
- #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #define FICA_FILE_SYS_SIZE (0x280000)
Konfigūracijos
Kai kurie su „Flash“ susiję kodai vykdomi SRAM ITC srityje, kad būtų užtikrintas pakankamas našumas. Nukopijuokite aplanko nuorodų scenarijus su linkerio konfigūracija iš kelio smart HMI\coffee_machine\cm7\ į example SW.
Įdiekite LVGL GUI programą
LVGL GUI programos kūrimas, pagrįstas sistema, iškviečia API iš išvesties UI HAL ir suteikia API, kad išvestų UI HAL (žr. 4.1.3 skyrių, kaip įdiegti išvesties UI HAL).
Tačiau išsamus LVGL GUI programos įgyvendinimas priklauso nuo programos reikalavimų ir dizaino. GUI programa šioje example sukurta taip, kaip aprašyta 4 skyriaus pradžioje.
Žemiau pateikiamos diegimo įvadai:
- Tinkinti kodai yra įdiegti custom.c ir custom.h, kuriuos GUI Guider suteikia kaip sąsają tarp GUI Guider projekto ir įterptosios sistemos projekto.
- Pridėkite naujas funkcijas pavadinimu gui_xxx() į custom.c, kad pasiektumėte toliau nurodytas funkcijas:
- Išvesties UI HAL ir GUI programai atnaujinti UI.
- Kad GUI programa suaktyvintų įvykius, iškviesdama UI atgalinio skambinimo funkcijas iš išvesties UI HAL.
Pavyzdžiui,ample, naujoji funkcija gui_event_face_rec_action() iškviečia vartotojo sąsajos atgalinio skambučio funkcijas, kad būtų galima apdoroti vieną iš veido registravimo, veido atpažinimo ir vartotojo ištrynimo įvykių, suaktyvintų iš GUI programėlės, kai spustelėjamas susijęs mygtukas.
Pastaba: funkcija gui_set_virtual_face() iškviečiama išvestyje UI HAL, skirta preview režimas turi būti įdiegtas custom.c:
- Klonuoti funkciją gui_set_virtual_face() iš smart HMI\coffee_machine\cm4\custom \custom.c.
- Pakeiskite valdiklio pavadinimą home_img_cameraPreview į screen_img_camera_preview funkcijoje.
- Įdiekite vartotojo sąsajos atgalinio ryšio funkcijas su tuo pačiu prototipu visoms išvesties UI HAL funkcijoms, valdomoms pagal makrokomandos apibrėžimą #ifndef RT_PLATFORM, esantį custom.c, kad būtų suderinamos su GUI Guider projektu, nes šios išvesties UI HAL funkcijos priklauso nuo įterpta platforma. Custom.c jie priklauso nuo treniruoklio GUI vadove ir nepriklauso nuo įterptosios platformos. Pavyzdžiui,ample, veido registravimo atgalinis iškvietimas įgyvendinamas taip, kaip nurodyta toliau veikiančiam GUI Guider simuliatoriui: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = klaidinga; grąžinti; }
Pastaba: žr. tą patį funkcijos prototipą, pristatytą 6 skirsnio 4.1.3 veiksme
Makrokomandos apibrėžimas RT_PLATFORM nustatytas MCUXpresso projekto nustatymuose, kaip parodyta 7 paveiksle: - Paskelbkite visas funkcijas, pavadintas UI_xxx_Callback() ir gui_xxx() faile custom.h ir pridėkite custom.h, įtrauktą į smart_tlhmi_event_descriptor.h, kad galėtumėte bendrinti GUI API su vartotojo sąsajos išvestimi HAL.
- Pridėkite naujas funkcijas pavadinimu gui_xxx() į custom.c, kad pasiektumėte toliau nurodytas funkcijas:
- Sukurkite GUI GUI Guide:
- Klonuoti aplanką fotoaparatas iš ankstoview su GUI Guider projekto programine įranga, esančiame aplanke gui_guider baziniame programinės įrangos pakete lvgl_gui_camera_preview_cm7. Pakeiskite susijusį pavadinimą camera_preview į face_rec naujam buvusiamample.
- Nukopijuokite aukščiau atnaujintą custom.c ir custom. h į naują GUI Guider projekto programinę įrangą.
- Atidarykite naują face_rec projektą GUI Guide. Atnaujinkite, kaip nurodyta toliau:
- Pridėkite naują mygtuką, pažymėtą Ištrinti vartotoją. Prie jo pridėkite vėliavėlę Hidden, kad mygtukas būtų paslėptas, kai paleidžiama GUI programa.
- Pridėkite API gui_event_face_rec_action() iškvietimo kodo eilutę su skirtingu įvykio ID parametru prie visų mygtukų Registracija, Atpažinimas ir Ištrinti vartotoją įvykių nustatymų aktyviklio „Išleista“, kad suaktyvintumėte veido registravimo, veido atpažinimo ir vartotojo ištrynimo įvykius. 8 paveiksle parodytas mygtuko Registracija įvykio kodas:
- Atnaujinkite sugeneruotą kodą iš GUI Guide į MCUXpresso projektą.
- Pakeiskite turinį, išskyrus aplanko vaizdus aplanke, sugeneruotame iš MCUXpresso projekto SW, į atitinkamus aplankus, sugeneruotus GUI Guider projekto SW.
Pastaba: Norėdami gauti daugiau informacijos apie anksčiau pateiktas modifikacijas, žrampprograminę įrangą adresu https://mcuxpresso.nxp.com/appcodehub.
Patikrinimai su buvample projektas
Norėdami gauti buvampprograminės įrangos paketą, kuriame yra šios programos pastabos ištekliai ir įrankiai, apsilankykite: https://mcuxpresso.nxp.com/appcodehub. Atidarykite buvample projektas MCUXpresso IDE. Sukurkite ir programuokite .axf file adresu 0x30000000 ir užprogramuokite išteklių dėžę file camera_preview_resource.bin į adresą 0x30800000.
LVGL GUI veido atpažinimas, pvzample veikia normaliai, kaip nurodyta toliau:
- Preview: Įjungus maitinimą, vaizdo įrašų srautai, užfiksuoti fotoaparatu, rodomi konkrečioje kameros pradžiojeview GUI ekrane. Būsenos etiketėje rodoma „Preview…“. Išsamesnės informacijos žr. 3 pav. Mygtukas Ištrinti vartotoją yra paslėptas. Spustelėjus sritį už mygtukų ir vaizdų, parodomas išankstinisview pasibaigus veido registravimo ar atpažinimo veiksmui.
- Registracija:
- tartup: paspaudus mygtuką Registracija, pradedama veido registracija. Būsenos etiketė pasikeičia į „Registracija…“, veido kreiptuvo stačiakampis rodomas mėlynai, o eigos juosta pradeda rodyti eigą. Registruodami įsitikinkite, kad naudotojo veidas rodomas mėlyname veido kreipiklio stačiakampyje.
- sėkmės: Būsenos etiketėje rodoma „Registracija…Gerai“ ir registruoto vartotojo ID numeris. Veido kreiptuvo stačiakampis tampa raudonas, jei veido registracija buvo sėkminga, kol juostoje neparodoma visa eiga.
- Failure -> Time out: Būsenos etiketėje rodoma „Registracija…Time out“, jei veido registracija vis tiek nepavyksta, kai juostoje rodoma visa eiga.
- Nepavyko -> Dubliavimas: būsenos etiketėje rodoma „Registracija…nepavyko“, veido kreiptuvo stačiakampis tampa žalias, jei registruotas veidas atpažįstamas prieš juostoje rodomą pažangą.
- atpažinimas:
- Paleidimas: spustelėjus atpažinimo mygtuką, pradedamas veido atpažinimas. Būsenos etiketė pasikeičia į „Atpažinimas…“, veido kreiptuvo stačiakampis rodomas mėlynai, o eigos juosta pradeda rodyti eigą. Registruodami įsitikinkite, kad naudotojo veidas rodomas mėlyname veido kreipiklio stačiakampyje.
- sėkmės: Būsenos etiketėje rodoma „Atpažinimas…Gerai“ ir atpažinto vartotojo ID numeris, veido kreiptuvo stačiakampis tampa žalias, jei veido atpažinimas buvo sėkmingas, kol juostoje neparodoma visa eiga. Tuo metu pasirodo mygtukas Ištrinti vartotoją. Tai reiškia, kad vartotoją leidžiama ištrinti tik tada, kai jis atpažįstamas.
- negalavimas: Būsenos etiketėje rodoma „Atpažinimas...Time out“, jei veido atpažinimas vis tiek nepavyksta, kai juostoje rodoma visa eiga.
- Ištrinti vartotoją: Spustelėjus mygtuką „Ištrinti vartotoją“, po sėkmingo veido atpažinimo būsenos etiketė pasikeičia į „Ištrinti vartotoją… Gerai“, veido kreiptuvo stačiakampis tampa mėlynas, o eiga rodoma visa juostoje. Mygtukas Ištrinti vartotoją vėl paslėptas. Atpažintas veidas/vartotojas ištrinamas iš duomenų bazės. Tai reiškia, kad šis veidas / vartotojas negali būti atpažintas, kol nebus vėl užregistruotas.
Pastaba apie šaltinio kodą dokumente
ExampŠiame dokumente nurodytas kodas turi šias autorių teises ir BSD-3-Clause licenciją:
Autorių teisės 2024 NXP Perskirstymas ir naudojimas šaltinio ir dvejetainėmis formomis, su pakeitimais arba be jų, yra leidžiamas, jei tenkinamos šios sąlygos:
- Perskirstant šaltinio kodą turi būti išsaugotas aukščiau pateiktas įspėjimas dėl autorių teisių, šis sąlygų sąrašas ir toliau nurodytas atsakomybės atsisakymas.
- Perskirstant dvejetaine forma turi būti pateiktas aukščiau pateiktas autorių teisių pranešimas, šis sąlygų sąrašas ir toliau pateiktas atsakomybės atsisakymas dokumentuose ir (arba) kitoje medžiagoje turi būti pateiktas kartu su platinimu.
- Nei autorių teisių savininko vardai, nei jo bendradarbių vardai negali būti naudojami siekiant patvirtinti ar reklamuoti produktus, gautus iš šios programinės įrangos be specialaus išankstinio raštiško leidimo.
ŠIĄ PROGRAMINĘ ĮRANGĄ PATEIKIA AUTORIŲ TEISIŲ TURĖTOJAI IR PADĖJĖJAI „TOKIAI, KOKIA YRA“ IR JOKIOS AIŠKIOS AR NUMANOMOS GARANTIJOS, ĮSKAITANT, BET JOMIS, NUMANOMAS GARANTIJAS, DĖL TINKAMUMO PARDUOTI IR TINKAMUMO PARDUOTUVĖMS. JOKIU ATVEJU AUTORIŲ TEISIŲ TURĖTOJAS AR PADALĖJAI NEATSAKO UŽ JOKIUS TIESIOGIUS, NETIESIOGINIUS, ATSITIKTINIUS, SPECIALIUS, PAVYZDŽIUS ARBA ATLIEKUSIĄ ŽALĄ (ĮSKAITANT PASLAUGĄ, PASLAUGĄ, NAUDOJIMĄ, PREKIŲ AR PAKEITALŲ PIRKIMĄ, BET NEAPSIribojant. ARBA PELNAS, ARBA VERSLO NUTRAUKIMAS), TAČIAU PRIEŽASTAS IR DĖL BET KOKIOS ATSAKOMYBĖS TEORIJOS, ARBA SUTARTIES, GRIEŽTOS ATSAKOMYBĖS AR ATSAKOMYBĖS (ĮSKAITANT APLAIDYMĄ AR KITAIP), ATSIRAŠUSIUS JOKIU BŪDU DĖL TO NAUDOJIMO TOKIOS ŽALOS GALIMYBĖ.
Revizijų istorija
Teisinė informacija
Apibrėžimai
Juodraštis – dokumento juodraščio būsena rodo, kad turinys vis dar yra vidinisview ir turi būti oficialiai patvirtintas, dėl kurio gali būti atlikti pakeitimai ar papildymai. NXP Semiconductors nesuteikia jokių pareiškimų ar garantijų dėl informacijos, įtrauktos į dokumento versijos projektą, tikslumo ar išsamumo ir neprisiima atsakomybės už tokios informacijos naudojimo pasekmes.
Atsisakymas
- Ribota garantija ir atsakomybė — Manoma, kad šiame dokumente pateikta informacija yra tiksli ir patikima. Tačiau NXP Semiconductors nesuteikia jokių išreikštų ar numanomų pareiškimų ar garantijų dėl tokios informacijos tikslumo ar išsamumo ir neprisiima atsakomybės už tokios informacijos naudojimo pasekmes. „NXP Semiconductors“ neprisiima atsakomybės už šio dokumento turinį, jei jį pateikia ne „NXP Semiconductors“ informacijos šaltinis.
NXP Semiconductors jokiu būdu nėra atsakinga už jokią netiesioginę, atsitiktinę, baudžiamąją, specialią ar pasekminę žalą (įskaitant – bet neapsiribojant – prarastą pelną, prarastas santaupas, verslo nutraukimą, išlaidas, susijusias su bet kokių produktų pašalinimu ar pakeitimu ar perdirbimo mokesčiais). ar ne tokie nuostoliai yra pagrįsti deliktu (įskaitant aplaidumą), garantija, sutarties pažeidimu ar bet kokia kita teisine teorija.
Nepaisant bet kokios žalos, kurią klientas gali patirti dėl bet kokios priežasties, bendroji ir kumuliacinė NXP Semiconductors atsakomybė klientui už čia aprašytus gaminius yra ribojama pagal NXP Semiconductors komercinio pardavimo sąlygas. - Teisė daryti pakeitimus — „NXP Semiconductors“ pasilieka teisę bet kuriuo metu ir be įspėjimo keisti šiame dokumente paskelbtą informaciją, įskaitant, be apribojimų, specifikacijas ir gaminių aprašymus. Šis dokumentas pakeičia ir pakeičia visą informaciją, pateiktą iki jo paskelbimo.
- Tinkamumas naudoti — NXP Semiconductors produktai nėra sukurti, įgalioti arba garantuoti, kad būtų tinkami naudoti gyvybę palaikančiose, gyvybiškai svarbiose arba saugai svarbiose sistemose ar įrangoje, taip pat tais atvejais, kai galima pagrįstai tikėtis, kad NXP Semiconductors gaminio gedimas arba gedimas gali sukelti asmens sužalojimas, mirtis arba didelė žala turtui ar aplinkai. „NXP Semiconductors“ ir jos tiekėjai neprisiima atsakomybės už „NXP Semiconductors“ produktų įtraukimą ir (arba) naudojimą į tokią įrangą ar programas, todėl toks įtraukimas ir (arba) naudojimas yra kliento rizika.
- Programos — Čia aprašytos bet kurio iš šių produktų taikomosios programos yra tik iliustravimo tikslais. NXP Semiconductors negarantuoja ir negarantuoja, kad tokios programos bus tinkamos nurodytam naudojimui be tolesnių bandymų ar modifikacijų.
Klientai yra atsakingi už savo programų ir gaminių, naudojančių NXP Semiconductors produktus, projektavimą ir veikimą, o NXP Semiconductors neprisiima jokios atsakomybės už bet kokią pagalbą, susijusią su programomis ar kliento gaminio projektavimu. Vien tik klientas atsako už tai, ar NXP Semiconductors produktas yra tinkamas ir tinkamas kliento programoms ir planuojamiems produktams, taip pat planuojamam kliento trečiosios šalies kliento (-ų) pritaikymui ir naudojimui. Klientai turėtų numatyti tinkamas projektavimo ir veikimo apsaugos priemones, kad sumažintų riziką, susijusią su jų programomis ir produktais. „NXP Semiconductors“ neprisiima jokios atsakomybės, susijusios su jokiais nutylėjimais, žala, išlaidomis ar problemomis, kurios yra pagrįstos bet kokiais kliento taikomųjų programų ar produktų arba kliento trečiosios šalies kliento (-ų) taikomąja programa ar naudojimu. Klientas yra atsakingas už visų būtinų kliento taikomųjų programų ir produktų, naudojančių NXP Semiconductors produktus, testavimą, kad būtų išvengta programų ir produktų numatytųjų numatytųjų funkcijų arba taikomosios programos arba kliento trečiosios šalies kliento (-ų) naudojimo. NXP šiuo atžvilgiu neprisiima jokios atsakomybės. - Komercinio pardavimo sąlygos — NXP Semiconductors produktai parduodami laikantis bendrųjų komercinio pardavimo sąlygų, paskelbtų adresu https://www.nxp.com/profile/sąlygos, jei galiojančioje rašytinėje individualioje sutartyje nenurodyta kitaip. Jei sudaroma individuali sutartis, taikomos tik atitinkamos sutarties sąlygos. NXP Semiconductors šiuo dokumentu aiškiai prieštarauja, kad klientas pirktų NXP Semiconductors gaminius, taikytų bendrąsias kliento sąlygas.
- Eksporto kontrolė — Šiam dokumentui ir čia aprašytai prekei (-ėms) gali būti taikomos eksporto kontrolės taisyklės. Eksportui gali reikėti išankstinio kompetentingų institucijų leidimo.
- Tinkamas naudoti ne automobiliams skirtuose gaminiuose — Jei šiame dokumente nėra aiškiai nurodyta, kad šis konkretus NXP Semiconductors gaminys yra tinkamas naudoti automobiliams, gaminys nėra tinkamas naudoti automobilyje. Jis nėra nei kvalifikuotas, nei išbandytas pagal automobilių bandymų ar taikymo reikalavimus. „NXP Semiconductors“ neprisiima jokios atsakomybės už automobiliams netinkamų gaminių įtraukimą ir (arba) naudojimą automobilių įrangoje ar programose.
Tuo atveju, jei klientas naudoja gaminį projektavimui ir naudojimui automobilių reikmėms pagal automobilių specifikacijas ir standartus, klientas (a) turi naudoti gaminį be NXP Semiconductors garantijos gaminiui tokioms automobilių reikmėms, naudojimui ir specifikacijoms, ir ( b) kai klientas naudoja gaminį automobilių reikmėms, kurios neatitinka NXP Semiconductors specifikacijų, toks naudojimas yra tik kliento rizika, ir (c) klientas visiškai atlygina NXP Semiconductors bet kokią atsakomybę, žalą ar pretenzijas dėl gaminio nesėkmės, atsiradusios dėl kliento dizaino ir naudojimo gaminys, skirtas automobiliams, kuriems netaikoma standartinė NXP Semiconductors garantija ir NXP Semiconductors gaminio specifikacijos. - Vertimai — Ne anglų kalba (išversta) dokumento versija, įskaitant tame dokumente esančią teisinę informaciją, yra tik nuoroda. Esant neatitikimams tarp verstų ir anglų versijų, pirmenybė teikiama versijai anglų kalba.
- Saugumas — Klientas supranta, kad visi NXP produktai gali turėti nenustatytų pažeidžiamumų arba gali palaikyti nustatytus saugos standartus ar specifikacijas su žinomais apribojimais. Klientas yra atsakingas už savo programų ir produktų projektavimą ir veikimą per visą jų gyvavimo ciklą, kad sumažintų šių pažeidžiamumų poveikį kliento programoms ir produktams. Kliento atsakomybė taip pat apima kitas atvirąsias ir (arba) patentuotas technologijas, palaikomas NXP produktų, skirtų naudoti kliento programose. NXP neprisiima jokios atsakomybės už pažeidžiamumą. Klientas turėtų reguliariai tikrinti saugos naujinimus iš NXP ir imtis atitinkamų veiksmų. Klientas turi pasirinkti gaminius su saugos funkcijomis, kurios geriausiai atitinka numatyto naudojimo taisykles, reglamentus ir standartus, ir priima galutinius dizaino sprendimus dėl savo gaminių ir yra visiškai atsakingas už visų teisinių, reguliavimo ir saugumo reikalavimų, susijusių su jo gaminiais, laikymąsi, nepaisant bet kokios informacijos ar pagalbos, kurią gali suteikti NXP.
NXP turi gaminių saugos incidentų reagavimo komandą (PSIRT) (pasiekiama adresu PSIRT@nxp.com), kuri valdo NXP produktų saugos spragų tyrimą, ataskaitų teikimą ir sprendimų išleidimą.
NXP BV – NXP BV nėra veikianti įmonė ir neplatina bei neparduoda produktų.
Prekių ženklai
Pastaba: visi nurodyti prekių ženklai, produktų pavadinimai, paslaugų pavadinimai ir prekių ženklai yra atitinkamų savininkų nuosavybė.
NXP — žodinis ženklas ir logotipas yra NXP BV prekių ženklai
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 – yra Arm Limited (arba jos antrinių ar filialų) prekių ženklai ir (arba) registruotieji prekių ženklai JAV ir (arba) kitur. Susijusi technologija gali būti apsaugota bet kuriuo arba visais patentais, autorių teisėmis, dizainu ir komercinėmis paslaptimis. Visos teisės saugomos.
- i.MX – yra NXP BV prekės ženklas
- J-Link — yra SEGGER Microcontroller GmbH prekės ženklas.
„Microsoft“, „Azure“ ir „ThreadX“ yra „Microsoft“ įmonių grupės prekių ženklai.
Atminkite, kad svarbūs pranešimai apie šį dokumentą ir jame aprašytą (-us) gaminį (-ius) buvo įtraukti į skyrių „Teisinė informacija“.
© 2024 NXP BV
Norėdami gauti daugiau informacijos, apsilankykite: https://www.nxp.com
- Išleidimo data: 19 m. balandžio 2024 d
- Dokumento identifikatorius: AN14263
DUK
Kl .: koks yra pagrindinis šio produkto tikslas?
A: Pagrindinis tikslas yra įjungti veido atpažinimo funkciją naudojant AI&ML regėjimo algoritmo modelį su paprasta LVGL GUI ex.ample SLN-TLHMI-IOT plokštėje.
Kl.: kaip kūrėjai gali gauti naudos iš šios programos pastabos?
A: Kūrėjai gali išmokti žingsnis po žingsnio įdiegti veido atpažinimą sistemoje naudodami pateiktą pvzample ir suprasti įrenginių tvarkykles, HAL įrenginius ir įvykių mechanizmus.
Dokumentai / Ištekliai
![]() |
NXP AN14263 Įdiekite LVGL GUI veido atpažinimą rėmelyje [pdfVartotojo vadovas AN14263 Įdiekite LVGL GUI veido atpažinimą rėmelyje, AN14263, įdiekite LVGL GUI veido atpažinimą rėmelyje, LVGL GUI veido atpažinimą rėmelyje, veido atpažinimą rėmelyje, atpažinimą rėmelyje, rėmelyje |