Što softver za viziju temeljen na događajima obrađuje?

Kamera za događaje prijavljuje promjene u svjetlini umjesto da isporučuje uobičajeni video okvir u svakom intervalu. Dekodirani događaj obično identificira piksel, polaritet i vremensku oznaku. Vaša aplikacija mora sačuvati značenje tih polja kroz prikupljanje, filtriranje, snimanje i zaključivanje. The usporedba temeljena na događajima naspram okvira objašnjava kada je taj model podataka koristan.

Razlikujte tri formata u dizajnu: senzorsko ili transportno kodiranje, dekodirani prikaz događaja koji koristi softver i prikaz proslijeđen algoritmu. Datoteka koja sadrži neobrađene pakete senzora, niz dekodiranih događaja i akumuliranu sliku služe različitim svrhama. Pretvorba između njih može promijeniti korištenje memorije, troškove obrade i vremenske informacije dostupne nizvodno.

ReprezentacijaKorisno zaPitanje integracije
Neobrađeni paketi ili snimka dobavljačaReproduciranje ponašanja akvizicije i dekodiranjaMože li postavljeni dekoder pročitati točan uređaj i reviziju formata?
Dekodirani događajiFiltriranje, vremenska analiza i izvorni algoritmi događajaŠto su jedinica vremenske oznake, domena sata i konvencija koordinata?
Vremenske površine ili tenzori slični voxeluAlgoritmi koji trebaju strukturiran vremenski prikazKoje se postavke povijesti, grupiranja i normalizacije moraju reproducirati?
Prikupljene slike događajaVizualizacija ili kompatibilna faza obrade temeljena na sliciKoliko kašnjenja i gubitka informacija donosi prozor akumulacije?

Kako ocijeniti kameru za događaje SDK

Počnite s točnim senzorom, firmverom kamere i platformom hosta. Demonstracija radne površine ne uspostavlja podršku za ugrađenu Linux sliku, ARM procesor ili vašu proizvodnu licencu. Pitajte dobavljača za podržane operativne sustave, CPU arhitekture, uvjete redistribucije i zahtjeve za sučelje kamere. Provjerite aplikaciju na predviđenoj platformi prije predaje noseća pločica.

  • Stjecanje: otkrivanje uređaja, konfiguracija, dekodiranje i izvješćivanje o pogreškama.
  • Vrijeme: podrijetlo vremenske oznake, upravljanje prebacivanjem, vanjski okidači i usklađivanje s više uređaja.
  • Ponovljivost: snimke, izvoz konfiguracije i identificiranu verziju softvera.
  • Implementacija: rad bez glave, podržane binarne datoteke, ponašanje pri ponovnom pokretanju i licencni uvjeti.
  • Uočljivost: broj događaja, dubina reda čekanja, ispušteni podaci i korištenje resursa hosta.

Izgradite cjevovod s eksplicitnim vremenskim granicama

stećiDekodirajte i sačuvajte vrijeme senzora
pripremiti seFiltrirajte, sinkronizirajte i oblikujte prozore
odlučitiPratite ili zaključite, a zatim stavite vremensku oznaku na izlaz

Odvojite akviziciju od skupe vizualizacije, pisanja na disk i zaključivanja modela. Inače spor potrošač može odgoditi nove podatke prije nego što se algoritam uopće pokrene. Definirajte ograničeni red i eksplicitnu politiku preopterećenja. Ispuštanje najstarijeg prozora, smanjivanje područja interesa i zaustavljanje s pogreškom imaju različite posljedice; odaberite ponašanje koje odgovara aplikaciji i zabilježite kada se to dogodi.

Upotrijebite vremenske oznake senzora da opišete kada su se opažanja dogodila i monotoni sat glavnog računala za mjerenje trajanja obrade. Oduzimanje vremenskih oznaka od nepovezanih satova ne proizvodi valjanu latenciju s kraja na kraj. Ako se kamera mora kombinirati s IMU ili konvencionalnom kamerom, uspostavite odnos sata i postupak kalibracije opisan u našem vodič za sinkronizaciju fuzije senzora.

Mali primjer snimanja-pregleda

Sljedeći primjer Pythona broji dekodirane događaje u podržanoj snimci i izvješćuje o rasponu njihovih vremenskih oznaka. Koristi dokumentirani Metavision streaming API i zahtijeva kompatibilnu instalaciju i snimanje SDK. To je primjer inspekcije, a ne mjerilo ALVEXIS kamere ili 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})

Raspon vremenske oznake pokriva prvi do zadnjeg promatranog događaja; ne mjeri trajanje datoteke, odgodu akvizicije ili propusnost obrade. Prazna razdoblja i poništavanje sata zahtijevaju zasebno rukovanje u proizvodnji. Čuvajte konfiguraciju uređaja i metapodatke o snimanju uz datoteku kako bi drugi inženjer mogao reproducirati tumačenje.

Provjera mirnih scena, zauzetih scena i oporavak od kvara

Testirajte stacionarnu scenu, reprezentativno kretanje i namjerno zahtjevnu scenu. Treperenje, vibracija kamere i teksturirano kretanje mogu stvoriti vrlo različite stope događaja. Zabilježite tipično ponašanje i najgori slučaj koji ste primijetili. Ponovite s aktivnom pohranom i komunikacijom jer se ta radna opterećenja natječu za memoriju i CPU vrijeme.

testZapisOdluka koju podržava
Ponovno pustite istu snimkuKonfiguracija, izlazne razlike i trajanje obradeMože li se promjena softvera procijeniti ponovljivo?
Povećajte aktivnost sceneDubina čekanja, gubitak događaja i starost izlazaOstaje li sustav upotrebljiv pod vršnim opterećenjem?
Promijenite prozor obradeTočnost primjene i kašnjenje od senzora do izlazaKoji kompromis vremena/pojedinosti odgovara zahtjevu?
Odspojite i ponovno spojite uređajVrijeme oporavka, resetiranje sata i kontinuitet snimanjaMože li se implementirana usluga oporaviti na predvidljiv način?

Kada algoritam koristi neuronsku mrežu, prije odabira akceleratora provjerite dobiveni tenzor i podržane operatore. Kamera za događaje ne zahtijeva automatski NPU, a NPU ne prihvaća automatski prijenos događaja. Naš Vodič za arhitekturu FPGA, NPU i MPU odvaja usluge akvizicije, pretprocesiranja, zaključivanja i primjene.

Pitanja prije odabira softverskog paketa

Mogu li koristiti normalni model računalnog vida?

Tek nakon definiranja kompatibilnog prikaza ulaza i provjere njegovog ponašanja. Akumulacija događaja u slike može omogućiti ponovnu upotrebu faze obrade slike, ali mijenja distribuciju podataka i dodaje vremenski okvir. Ocijenite kompletnu prijavu na reprezentativnim podacima.

Dokazuje li demonstracija prijenosnog računala koja radi ugrađenu kompatibilnost?

Ne. Potvrdite CPU arhitekturu, operativni sustav, sučelje senzora, upravljački program, SDK licencu i održivo korištenje resursa stvarne ciljne platforme.

Što trebam poslati za raspravu o integraciji?

Pošaljite referencu kamere ili senzora, snimku uzorka, planirani izlaz, prihvatljivo kašnjenje, host platformu, sučelje i okruženje za implementaciju. Ovi inputi čine raspravu dovoljno konkretnom da identificira prve rizike integracije.

Neuromorfni vid u cjevovodu računalnog vida

O kamerama za događaje često se raspravlja pod neuromorfnim vidom jer njihov izlaz bilježi promjene u pojedinačnim pikselima, a ne fiksni niz kompletnih slika. Taj prikaz podataka ne osigurava automatski detekciju objekta ili rezultat neuronske mreže. Softver još uvijek treba definirani zadatak, kompatibilan algoritam i mjerljive kriterije prihvaćanja.

Prilikom integracije s okvirno orijentiranim alatima za računalni vid, tok događaja može se pretvoriti u sliku vremenskog prozora ili neki drugi prikaz. Zadrži izvorne vremenske oznake ako zadatak ovisi o finim vremenskim informacijama. Ocijenite kompletan cjevovod pretvorbe i obrade; atraktivna rekonstruirana slika sama po sebi ne utvrđuje točnost ili kašnjenje konačne aplikacije.

Planirajte vrijeme prije fuzija senzorskih podataka

Tehničke reference

Primjeri dobavljača opisuju njihov vlastiti podržani ekosustav. Potvrdite kompatibilnost i licenciranje za odabrani uređaj i implementaciju.

Planirajte svoju integraciju kamere za događaje.