Kaj obdeluje programska oprema za vid na podlagi dogodkov?
Kamera za dogodke poroča o spremembah svetlosti namesto običajnega video okvirja v vsakem intervalu. Dekodirani dogodek običajno identificira slikovno piko, polarnost in časovni žig. Vaša aplikacija mora ohraniti pomen teh polj s pridobivanjem, filtriranjem, snemanjem in sklepanjem. The primerjava na podlagi dogodkov v primerjavi z okvirjem pojasnjuje, kdaj je ta podatkovni model uporaben.
Pri načrtovanju ločite tri formate: senzorsko ali transportno kodiranje, predstavitev dekodiranih dogodkov, ki jo uporablja programska oprema, in predstavitev, posredovana algoritmu. Datoteka, ki vsebuje neobdelane senzorske pakete, niz dekodiranih dogodkov in zbrano sliko, služi različnim namenom. Pretvarjanje med njimi lahko spremeni uporabo pomnilnika, stroške obdelave in informacije o času, ki so na voljo v smeri toka.
| Zastopanje | Uporabno za | Integracijsko vprašanje |
|---|---|---|
| Neobdelani paketi ali posnetek prodajalca | Reproduciranje vedenja pridobivanja in dekodiranja | Ali lahko nameščeni dekoder prebere natančno to revizijo naprave in formata? |
| Dekodirani dogodki | Filtriranje, časovna analiza in izvorni algoritmi dogodkov | Kaj so enota časovnega žiga, domena ure in koordinatna konvencija? |
| Časovne površine ali vokselom podobni tenzorji | Algoritmi, ki potrebujejo strukturirano časovno predstavitev | Katere nastavitve zgodovine, združevanja in normalizacije je treba reproducirati? |
| Zbrane slike dogodkov | Vizualizacija ali združljiva stopnja obdelave na podlagi slike | Koliko zakasnitve in izgube informacij prinaša okno kopičenja? |
Kako oceniti kamero za dogodke SDK
Začnite z natančnim senzorjem, vdelano programsko opremo kamere in gostiteljsko platformo. Predstavitev namizja ne zagotavlja podpore za vdelano sliko Linux, procesor ARM ali vašo proizvodno licenco. Vprašajte dobavitelja za podprte operacijske sisteme, arhitekture CPE, pogoje redistribucije in zahteve za vmesnik kamere. Preverite aplikacijo na predvideni platformi, preden potrdite nosilna plošča.
- Pridobitev: odkrivanje naprav, konfiguracija, dekodiranje in poročanje o napakah.
- Čas: izvor časovnega žiga, obravnavanje prevračanja, zunanji sprožilci in poravnava več naprav.
- Ponovljivost: posnetke, izvoz konfiguracije in identificirano različico programske opreme.
- Razporeditev: brezglavo delovanje, podprte binarne datoteke, vedenje pri ponovnem zagonu in licenčni pogoji.
- Opazljivost: število dogodkov, globina čakalne vrste, izpuščeni podatki in uporaba virov gostitelja.
Zgradite cevovod z izrecnimi časovnimi mejami
Pridobivanje naj bo ločeno od drage vizualizacije, pisanja na disk in sklepanja o modelu. V nasprotnem primeru lahko počasen uporabnik odloži nove podatke, preden se algoritem sploh zažene. Definirajte omejeno čakalno vrsto in izrecno politiko preobremenitve. Izpuščanje najstarejšega okna, zmanjšanje območja zanimanja in zaustavitev z napako imajo različne posledice; izberite vedenje, ki ustreza aplikaciji, in zabeležite, ko se zgodi.
Uporabite časovne žige senzorjev, da opišete, kdaj je prišlo do opazovanj, in monotono gostiteljsko uro za merjenje trajanja obdelave. Odštevanje časovnih žigov od nepovezanih ur ne povzroči veljavne zakasnitve od konca do konca. Če je treba kamero kombinirati z IMU ali običajno kamero, vzpostavite razmerje med uro in postopek umerjanja, opisan v našem vodnik za sinhronizacijo senzorske fuzije.
Majhen primer snemanja-pregleda
Naslednji primer Pythona šteje dekodirane dogodke v podprtem posnetku in poroča o razponu njihovih časovnih žigov. Uporablja dokumentirano pretakanje Metavision API in zahteva združljivo namestitev in snemanje SDK. To je primer inšpekcijskega pregleda, ne merilo uspešnosti kamere ALVEXIS ali detektor.
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})
Razpon časovnega žiga zajema od prvega do zadnjega opazovanega dogodka; ne meri trajanja datoteke, zakasnitve pri pridobivanju ali prepustnosti obdelave. Prazna obdobja in ponastavitve ure zahtevajo ločeno ravnanje v proizvodnji. Konfiguracijo naprave in metapodatke o snemanju hranite poleg datoteke, da lahko drugi inženir reproducira interpretacijo.
Potrdite tihe prizore, zasedene prizore in obnovitev napake
Preizkusite stacionarno sceno, reprezentativno gibanje in namerno zahtevno sceno. Utripanje, tresenje kamere in teksturirano gibanje lahko povzročijo zelo različne stopnje dogodkov. Zabeležite tipično vedenje in najslabši primer, ki ste ga opazili. Ponovite z aktivnim shranjevanjem in komunikacijami, ker te delovne obremenitve tekmujejo za pomnilnik in čas procesorja.
| Test | Zapis | Odločitev, ki jo podpira |
|---|---|---|
| Ponovno predvajajte isti posnetek | Konfiguracija, izhodne razlike in trajanje obdelave | Ali je mogoče spremembo programske opreme ponovljivo ovrednotiti? |
| Povečajte scensko aktivnost | Globina čakalne vrste, izguba dogodkov in starost izpisa | Ali sistem ostane uporaben pri največjih obremenitvah? |
| Spremenite okno obdelave | Natančnost aplikacije in zakasnitev od senzorja do izhoda | Kateri kompromis glede časa/podrobnosti ustreza zahtevi? |
| Odklopite in znova priklopite napravo | Čas obnovitve, ponastavitev ure in kontinuiteta snemanja | Ali se lahko uvedena storitev predvidljivo obnovi? |
Če algoritem uporablja nevronsko mrežo, preverite nastali tenzor in podprte operatorje, preden izberete pospeševalnik. Kamera za dogodke ne zahteva samodejno NPU, NPU pa ne sprejme samodejno toka dogodkov. Naš Vodnik po arhitekturi FPGA, NPU in MPU ločuje storitve pridobivanja, predprocesiranja, sklepanja in uporabe.
Vprašanja pred izbiro sklada programske opreme
Ali lahko uporabljam običajni model računalniškega vida?
Šele po definiranju združljive predstavitve vnosa in potrditvi njegovega vedenja. Kopičenje dogodkov v slike lahko omogoči ponovno uporabo stopnje obdelave slike, vendar spremeni porazdelitev podatkov in doda časovno okno. Ocenite celotno aplikacijo na reprezentativnih podatkih.
Ali predstavitev delujočega prenosnega računalnika dokazuje vgrajeno združljivost?
Ne. Potrdite arhitekturo CPE, operacijski sistem, senzorski vmesnik, gonilnik, licenco SDK in trajno uporabo virov dejanske ciljne platforme.
Kaj naj pošljem za razpravo o integraciji?
Pošljite referenco kamere ali senzorja, vzorčni posnetek, predvideni izhod, sprejemljivo zakasnitev, gostiteljsko platformo, vmesnik in okolje za uvajanje. Zaradi teh vložkov je razprava dovolj konkretna za opredelitev prvih integracijskih tveganj.
Nevromorfni vid v cevovodu računalniškega vida
O kamerah za dogodke se pogosto razpravlja pod nevromorfnim vidom, ker njihov izhod beleži spremembe posameznih slikovnih pik in ne fiksnega zaporedja popolnih slik. Ta predstavitev podatkov ne zagotavlja samodejno zaznavanja predmetov ali rezultatov nevronske mreže. Programska oprema še vedno potrebuje definirano nalogo, združljiv algoritem in merljiva merila sprejemljivosti.
Pri integraciji z okvirno orientiranimi orodji računalniškega vida se lahko tok dogodkov pretvori v sliko časovnega okna ali drugo predstavitev. Ohranite izvirne časovne žige, če je naloga odvisna od natančnih časovnih informacij. Ocenite celoten cevovod za pretvorbo in obdelavo; privlačna rekonstruirana slika sama po sebi ne določa točnosti ali zakasnitve končne aplikacije.
Načrtujte čas pred fuzija senzorskih podatkov
Tehnične reference
- Prophesee: začeti s pretakanjem Python API
- Prophesee: branje dogodkov iz kamer in datotek
- Gallego et al.: Vizija na podlagi dogodkov – Anketa
Primeri prodajalcev opisujejo njihov lasten podprt ekosistem. Potrdite združljivost in licenciranje za izbrano napravo in uvedbo.
