Ką apdoroja įvykiais pagrįsta regėjimo programinė įranga?
Įvykių kamera praneša apie ryškumo pokyčius, o ne pateikia įprastą vaizdo kadrą kiekvienu intervalu. Iššifruotas įvykis paprastai identifikuoja pikselį, poliškumą ir laiko žymą. Jūsų programa turi išsaugoti tų laukų reikšmę gaudama, filtruodama, įrašydama ir darydama išvadas. The įvykiais pagrįstas ir kadru pagrįstas palyginimas paaiškina, kada tas duomenų modelis yra naudingas.
Išskirkite tris dizaino formatus: jutiklio arba transportavimo kodavimą, programinės įrangos naudojamą dekoduotą įvykio atvaizdavimą ir algoritmui perduodamą vaizdavimą. Failas, kuriame yra neapdorotų jutiklių paketų, iššifruotų įvykių masyvas ir sukauptas vaizdas, naudojamas įvairiems tikslams. Konvertavimas tarp jų gali pakeisti atminties naudojimą, apdorojimo išlaidas ir pasroviui prieinamą laiko informaciją.
| Atstovavimas | Naudinga už | Integracijos klausimas |
|---|---|---|
| Neapdoroti paketai arba pardavėjo įrašas | Atkuriamas gavimo ir dekodavimo elgesys | Ar įdiegtas dekoderis gali nuskaityti būtent šį įrenginį ir formato versiją? |
| Iššifruoti įvykiai | Filtravimas, laiko analizė ir įvykiams būdingi algoritmai | Kas yra laiko žymos vienetas, laikrodžio domenas ir koordinačių susitarimas? |
| Laiko paviršiai arba į vokselį panašūs tenzoriai | Algoritmai, kuriems reikia struktūrizuoto laiko vaizdavimo | Kokie istorijos, sujungimo ir normalizavimo nustatymai turi būti atkurti? |
| Sukaupti įvykių vaizdai | Vizualizacija arba suderinamas vaizdo apdorojimo etapas | Kiek vėlavimo ir informacijos praradimo sukelia kaupimo langas? |
Kaip įvertinti įvykio kamerą SDK
Pradėkite nuo tikslaus jutiklio, fotoaparato programinės įrangos ir pagrindinio kompiuterio platformos. Stalinio kompiuterio demonstracijoje nepalaikomas įdėtasis Linux vaizdas, ARM procesorius arba jūsų gamybos licencija. Palaikomų operacinių sistemų, procesoriaus architektūrų, perskirstymo sąlygų ir kameros sąsajos reikalavimų teiraukitės tiekėjo. Prieš įvesdami nešiklio plokštę skaičiavimo moduliui, patikrinkite taikomąją programą numatytoje platformoje.
- Įsigijimas: įrenginio aptikimas, konfigūravimas, dekodavimas ir klaidų ataskaitų teikimas.
- Laikas: laiko žymos kilmė, apvertimo tvarkymas, išoriniai paleidikliai ir kelių įrenginių derinimas.
- Atkuriamumas: įrašai, konfigūracijos eksportas ir nustatyta programinės įrangos versija.
- Diegimas: operacija be galvos, palaikomi dvejetainiai failai, iš naujo paleisties elgsena ir licencijos sąlygos.
- Stebimumas: įvykių skaičius, eilės gylis, iškritę duomenys ir pagrindinio kompiuterio išteklių naudojimas.
Sukurkite dujotiekį su aiškiomis laiko ribomis
Laikykite gavimą atskirai nuo brangios vizualizacijos, įrašymo į diską ir modelio išvadų. Priešingu atveju lėtas vartotojas gali atidėti naujus duomenis dar net neprasidėjus algoritmui. Apibrėžkite apribotą eilę ir aiškią perkrovos politiką. Seniausio lango išmetimas, dominančios srities sumažinimas ir sustojimas su klaida turi skirtingas pasekmes; pasirinkite elgseną, kuri tinka programai, ir užrašykite, kada tai įvyksta.
Naudokite jutiklio laiko žymes, kad apibūdintumėte, kada įvyko stebėjimai, ir monotoninį pagrindinio kompiuterio laikrodį, kad išmatuotų apdorojimo trukmę. Laiko žymes atėmus iš nesusijusių laikrodžių, nesukuriama galiojanti delsa. Jei fotoaparatą reikia derinti su IMU arba įprasta kamera, nustatykite laikrodžio ryšį ir kalibravimo procesą, aprašytą mūsų jutiklio sintezės sinchronizavimo vadovas.
Nedidelis įrašymo-apžiūros pavyzdys
Šis „Python“ pavyzdys skaičiuoja iššifruotus įvykius palaikomame įraše ir praneša apie jų laiko žymų trukmę. Jis naudoja dokumentuotą „Metavision“ srautinį perdavimą API ir reikalauja suderinamo SDK diegimo ir įrašymo. Tai patikrinimo pavyzdys, o ne ALVEXIS kameros etalonas ar detektorius.
import argparse
from metavision_sdk_stream import Camera, CameraStreamSlicer
parser = argparse.ArgumentParser()
parser.add_argument("recording")
args = parser.parse_args()
source = Camera.from_file(args.recording)
count, first_us, last_us = 0, None, None
for batch in CameraStreamSlicer(source.move()):
events = batch.events
if events.size:
start = int(events["t"][0])
end = int(events["t"][-1])
first_us = start if first_us is None else min(first_us, start)
last_us = end if last_us is None else max(last_us, end)
count += int(events.size)
span_s = 0.0 if first_us is None else (last_us - first_us) / 1_000_000
print({"events": count, "event_timestamp_span_s": span_s})
Laiko žyma apima nuo pirmo iki paskutinio stebėto įvykio; ji nematuoja failo trukmės, gavimo delsos ar apdorojimo pralaidumo. Gamyboje reikia atskirai tvarkyti tuščius laikotarpius ir laikrodžio nustatymą iš naujo. Laikykite įrenginio konfigūraciją ir įrašymo metaduomenis kartu su failu, kad antrasis inžinierius galėtų atkurti interpretaciją.
Patvirtinkite tylias scenas, užimtas scenas ir nesėkmes
Išbandykite stacionarią sceną, reprezentacinį judesį ir sąmoningai reikalaujančią sceną. Mirgėjimas, fotoaparato vibracija ir tekstūruotas judesys gali sukurti labai skirtingą įvykių dažnį. Užrašykite ir tipišką elgesį, ir blogiausią pastebėtą atvejį. Pakartokite, kai saugykla ir ryšiai aktyvūs, nes šie darbo krūviai konkuruoja dėl atminties ir procesoriaus laiko.
| Testas | Įrašas | Sprendimas, kurį jis palaiko |
|---|---|---|
| Pakartokite tą patį įrašą | Konfigūracija, išvesties skirtumai ir apdorojimo trukmė | Ar programinės įrangos pakeitimą galima įvertinti atkuriamai? |
| Padidinkite scenos aktyvumą | Eilės gylis, įvykių praradimas ir išvesties amžius | Ar sistema išlieka tinkama naudoti esant didžiausiai apkrovai? |
| Pakeiskite apdorojimo langą | Taikymo tikslumas ir jutiklio išvesties delsa | Kuris laiko ir (arba) detalių kompromisas atitinka reikalavimą? |
| Atjunkite ir vėl prijunkite įrenginį | Atkūrimo laikas, laikrodžio nustatymas iš naujo ir įrašymo tęstinumas | Ar įdiegta paslauga gali atsigauti nuspėjamai? |
Kai algoritmas naudoja neuroninį tinklą, prieš pasirinkdami greitintuvą patikrinkite gautą tenzorių ir palaikomus operatorius. Įvykio kamerai automatiškai nereikia NPU, o NPU automatiškai nepriima įvykio srauto. Mūsų FPGA, NPU ir MPU architektūros vadovas atskiria gavimo, išankstinio apdorojimo, išvadų ir taikymo paslaugas.
Klausimai prieš pasirenkant programinės įrangos paketą
Ar galiu naudoti įprastą kompiuterinio matymo modelį?
Tik apibrėžus suderinamą įvesties vaizdą ir patvirtinus jo elgesį. Sukaupus įvykius į vaizdus, galima pakartotinai naudoti vaizdo apdorojimo etapą, tačiau pakeičiamas duomenų paskirstymas ir pridedamas laiko langas. Įvertinkite visą paraišką pagal reprezentatyvius duomenis.
Ar veikianti nešiojamojo kompiuterio demonstracinė versija įrodo integruotą suderinamumą?
Ne. Patvirtinkite procesoriaus architektūrą, operacinę sistemą, jutiklio sąsają, tvarkyklę, SDK licenciją ir nuolatinį tikrosios tikslinės platformos išteklių naudojimą.
Ką turėčiau siųsti į integracijos diskusiją?
Siųsti kameros arba jutiklio nuorodą, mėginio įrašymą, numatomą išvestį, priimtiną delsą, pagrindinio kompiuterio platformą, sąsają ir diegimo aplinką. Dėl šių indėlių diskusija tampa pakankamai konkreti, kad būtų galima nustatyti pirmąsias integracijos rizikas.
Neuromorfinis regėjimas kompiuterinio matymo vamzdyne
Įvykių kameros dažnai aptariamos naudojant neuromorfinį regėjimą, nes jų išvestis keičiasi atskirais pikseliais, o ne fiksuota pilnų vaizdų seka. Toks duomenų pateikimas automatiškai nesuteikia objekto aptikimo ar neuroninio tinklo rezultato. Programinei įrangai vis tiek reikia apibrėžtos užduoties, suderinamo algoritmo ir išmatuojamų priėmimo kriterijų.
Integruojant į kadrą orientuoto kompiuterinio matymo įrankius, įvykių srautas gali būti konvertuojamas į laiko lango vaizdą arba kitą atvaizdą. Išsaugokite originalias laiko žymas, jei užduotis priklauso nuo tikslios laiko informacijos. Įvertinkite visą konversijos ir apdorojimo vamzdyną; vien patrauklus rekonstruotas vaizdas nenustato galutinio pritaikymo tikslumo ar delsos.
Suplanuokite laiką prieš jutiklių duomenų suliejimą
Techninės nuorodos
- „Prophesee“: „Python“ srautinio perdavimo pradžia API
- Prophesee: įvykių skaitymas iš kamerų ir failų
- Gallego ir kt.: Įvykiu pagrįsta vizija – apklausa
Pardavėjo pavyzdžiai apibūdina jų pačių palaikomą ekosistemą. Patvirtinkite pasirinkto įrenginio ir diegimo suderinamumą ir licencijavimą.
