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ą.

AtstovavimasNaudinga užIntegracijos klausimas
Neapdoroti paketai arba pardavėjo įrašasAtkuriamas gavimo ir dekodavimo elgesysAr įdiegtas dekoderis gali nuskaityti būtent šį įrenginį ir formato versiją?
Iššifruoti įvykiaiFiltravimas, laiko analizė ir įvykiams būdingi algoritmaiKas yra laiko žymos vienetas, laikrodžio domenas ir koordinačių susitarimas?
Laiko paviršiai arba į vokselį panašūs tenzoriaiAlgoritmai, kuriems reikia struktūrizuoto laiko vaizdavimoKokie istorijos, sujungimo ir normalizavimo nustatymai turi būti atkurti?
Sukaupti įvykių vaizdaiVizualizacija arba suderinamas vaizdo apdorojimo etapasKiek 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

ĮsigytiIššifruokite ir išsaugokite jutiklio laiką
PasiruoškiteFiltruokite, sinchronizuokite ir formuokite langus
NuspręskiteStebėkite arba darykite išvadą, tada pažymėkite išvestį laiko žyme

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šasSprendimas, 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žiusAr sistema išlieka tinkama naudoti esant didžiausiai apkrovai?
Pakeiskite apdorojimo langąTaikymo tikslumas ir jutiklio išvesties delsaKuris 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ęstinumasAr į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

Pardavėjo pavyzdžiai apibūdina jų pačių palaikomą ekosistemą. Patvirtinkite pasirinkto įrenginio ir diegimo suderinamumą ir licencijavimą.

Suplanuokite įvykio ir kameros integraciją.