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.

ZastopanjeUporabno zaIntegracijsko vprašanje
Neobdelani paketi ali posnetek prodajalcaReproduciranje vedenja pridobivanja in dekodiranjaAli lahko nameščeni dekoder prebere natančno to revizijo naprave in formata?
Dekodirani dogodkiFiltriranje, časovna analiza in izvorni algoritmi dogodkovKaj so enota časovnega žiga, domena ure in koordinatna konvencija?
Časovne površine ali vokselom podobni tenzorjiAlgoritmi, ki potrebujejo strukturirano časovno predstavitevKatere nastavitve zgodovine, združevanja in normalizacije je treba reproducirati?
Zbrane slike dogodkovVizualizacija ali združljiva stopnja obdelave na podlagi slikeKoliko 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

PridobitiDekodiraj in ohrani čas senzorja
Pripravite seFiltrirajte, sinhronizirajte in oblikujte okna
Odločite seSledite ali sklepajte, nato označite izhod s časovnim žigom

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.

TestZapisOdločitev, ki jo podpira
Ponovno predvajajte isti posnetekKonfiguracija, izhodne razlike in trajanje obdelaveAli je mogoče spremembo programske opreme ponovljivo ovrednotiti?
Povečajte scensko aktivnostGlobina čakalne vrste, izguba dogodkov in starost izpisaAli sistem ostane uporaben pri največjih obremenitvah?
Spremenite okno obdelaveNatančnost aplikacije in zakasnitev od senzorja do izhodaKateri kompromis glede časa/podrobnosti ustreza zahtevi?
Odklopite in znova priklopite napravoČas obnovitve, ponastavitev ure in kontinuiteta snemanjaAli 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

Primeri prodajalcev opisujejo njihov lasten podprt ekosistem. Potrdite združljivost in licenciranje za izbrano napravo in uvedbo.

Načrtujte integracijo kamere za dogodke.