Čo spracováva softvér na videnie založený na udalostiach?
Kamera udalostí hlási zmeny jasu namiesto toho, aby poskytovala konvenčné video snímky v každom intervale. Dekódovaná udalosť zvyčajne identifikuje pixel, polaritu a časovú značku. Vaša aplikácia musí zachovať význam týchto polí prostredníctvom získavania, filtrovania, zaznamenávania a odvodzovania. The porovnanie založené na udalostiach v porovnaní s rámcom vysvetľuje, kedy je tento dátový model užitočný.
V návrhu rozlišujte tri formáty: kódovanie snímača alebo transportu, dekódovanú reprezentáciu udalosti používanú softvérom a reprezentáciu odovzdanú algoritmu. Súbor obsahujúci nespracované pakety senzorov, rad dekódovaných udalostí a nahromadený obraz slúžia na rôzne účely. Konverzia medzi nimi môže zmeniť využitie pamäte, náklady na spracovanie a dostupné informácie o časovaní.
| zastupovanie | Užitočné pre | Integračná otázka |
|---|---|---|
| Nespracované pakety alebo záznam dodávateľa | Reprodukovanie správania pri získavaní a dekódovaní | Dokáže nasadený dekodér prečítať toto presné zariadenie a revíziu formátu? |
| Dekódované udalosti | Filtrovanie, analýza časovania a natívne algoritmy udalostí | Aké sú jednotky časovej pečiatky, hodinová doména a konvencia súradníc? |
| Časové plochy alebo voxelovité tenzory | Algoritmy, ktoré potrebujú štruktúrovanú časovú reprezentáciu | Ktoré nastavenia histórie, binningu a normalizácie sa musia reprodukovať? |
| Nahromadené obrázky udalostí | Vizualizácia alebo kompatibilná fáza spracovania obrazu | Aké veľké oneskorenie a stratu informácií predstavuje akumulačné okno? |
Ako hodnotiť event-kameru SDK
Začnite s presným snímačom, firmvérom fotoaparátu a hostiteľskou platformou. Ukážka pracovnej plochy nezakladá podporu pre vstavaný obraz Linux, procesor ARM alebo vašu produkčnú licenciu. Požiadajte dodávateľa o podporované operačné systémy, architektúry CPU, podmienky redistribúcie a požiadavky na rozhranie fotoaparátu. Pred vykonaním nosná doska overte aplikáciu na zamýšľanej platforme.
- akvizícia: vyhľadávanie zariadení, konfigurácia, dekódovanie a hlásenie chýb.
- Načasovanie: pôvod časovej pečiatky, manipulácia s prevrátením, externé spúšťače a zarovnanie viacerých zariadení.
- Reprodukovateľnosť: záznamy, export konfigurácie a identifikovanú verziu softvéru.
- Nasadenie: bezhlavá prevádzka, podporované binárne súbory, správanie pri reštarte a licenčné podmienky.
- Pozorovateľnosť: počet udalostí, hĺbka frontu, vynechané údaje a využitie zdrojov hostiteľa.
Vytvorte potrubie s jasnými časovými hranicami
Uchovávajte akvizíciu oddelene od nákladnej vizualizácie, zápisu na disk a odvodzovania modelu. V opačnom prípade môže pomalý spotrebiteľ oddialiť nové údaje ešte pred spustením algoritmu. Definujte ohraničený front a explicitnú politiku preťaženia. Vypustenie najstaršieho okna, zmenšenie oblasti záujmu a zastavenie s chybou majú rôzne dôsledky; vyberte správanie, ktoré vyhovuje aplikácii, a zaznamenajte, keď k nemu dôjde.
Použite časové pečiatky senzorov na popis, kedy sa vyskytli pozorovania, a monotónne hostiteľské hodiny na meranie trvania spracovania. Odčítanie časových pečiatok od nesúvisiacich hodín nevytvára platnú end-to-end latenciu. Ak musí byť kamera kombinovaná s IMU alebo konvenčnou kamerou, vytvorte vzťah medzi hodinami a proces kalibrácie popísaný v našom sprievodca synchronizáciou senzor-fúzia.
Malý príklad kontroly záznamu
Nasledujúci príklad Pythonu počíta dekódované udalosti v podporovanom zázname a uvádza rozsah ich časových pečiatok. Používa zdokumentované streamovanie Metavision API a vyžaduje kompatibilnú inštaláciu a nahrávanie SDK. Je to príklad inšpekcie, nie referenčná hodnota kamery ALVEXIS alebo 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})
Rozpätie časovej pečiatky pokrýva prvú až poslednú pozorovanú udalosť; nemeria trvanie súboru, oneskorenie akvizície ani priepustnosť spracovania. Prázdne periódy a nulovanie hodín vyžadujú samostatné spracovanie vo výrobe. Uchovávajte konfiguráciu zariadenia a metadáta záznamu spolu so súborom, aby druhý technik mohol interpretáciu reprodukovať.
Overte tiché scény, rušné scény a obnovu po zlyhaní
Otestujte si stacionárnu scénu, reprezentatívny pohyb a zámerne náročnú scénu. Blikanie, vibrácie kamery a textúrovaný pohyb môžu vytvoriť veľmi rozdielne frekvencie udalostí. Zaznamenajte si typické správanie aj najhorší prípad, ktorý ste spozorovali. Opakujte s aktívnym ukladaním a komunikáciou, pretože tieto pracovné zaťaženia súťažia o pamäť a čas CPU.
| Test | Záznam | Rozhodnutie, ktoré podporuje |
|---|---|---|
| Znova prehrajte rovnakú nahrávku | Konfigurácia, výstupné rozdiely a trvanie spracovania | Dá sa softvérová zmena vyhodnotiť reprodukovateľne? |
| Zvýšte aktivitu scény | Hĺbka frontu, strata udalosti a vek výstupu | Zostane systém použiteľný pri špičkovom zaťažení? |
| Zmeňte okno spracovania | Presnosť aplikácie a oneskorenie medzi snímačom a výstupom | Ktoré načasovanie/detailný kompromis vyhovuje požiadavke? |
| Odpojte a znova pripojte zariadenie | Čas obnovy, resetovanie hodín a kontinuita nahrávania | Môže sa nasadená služba obnoviť predvídateľne? |
Keď algoritmus používa neurónovú sieť, pred výberom urýchľovača skontrolujte výsledný tenzor a podporované operátory. Kamera udalostí automaticky nevyžaduje NPU a NPU automaticky neprijíma tok udalostí. náš Sprievodca architektúrou FPGA, NPU a MPU oddeľuje akvizičné, predspracujúce, odvodzovacie a aplikačné služby.
Otázky pred výberom balíka softvéru
Môžem použiť normálny model počítačového videnia?
Až po definovaní kompatibilnej vstupnej reprezentácie a overení jej správania. Hromadenie udalostí do obrázkov môže umožniť opätovné použitie fázy spracovania obrázkov, ale zmení sa distribúcia údajov a pridá sa časové okno. Vyhodnoťte celú žiadosť na reprezentatívnych údajoch.
Dokazuje ukážka fungujúceho notebooku vstavanú kompatibilitu?
Nie. Potvrďte architektúru CPU, operačný systém, rozhranie snímača, ovládač, licenciu SDK a trvalé využívanie zdrojov skutočnej cieľovej platformy.
Čo mám poslať na diskusiu o integrácii?
Pošlite referenciu kamery alebo senzora, záznam vzorky, plánovaný výstup, prijateľné oneskorenie, hostiteľskú platformu, rozhranie a prostredie nasadenia. Tieto vstupy robia diskusiu dostatočne konkrétnou, aby bolo možné identifikovať prvé integračné riziká.
Neuromorfné videnie v potrubí počítačového videnia
Udalostné kamery sú často diskutované pod neuromorfným videním, pretože ich výstup zaznamenáva zmeny v jednotlivých pixeloch a nie pevnú sekvenciu úplných obrázkov. Táto reprezentácia údajov neposkytuje automaticky detekciu objektov alebo výsledok neurónovej siete. Softvér stále potrebuje definovanú úlohu, kompatibilný algoritmus a merateľné akceptačné kritériá.
Pri integrácii s rámcovo orientovanými nástrojmi počítačového videnia môže byť prúd udalostí prevedený na obraz časového okna alebo inú reprezentáciu. Ponechajte pôvodné časové pečiatky, ak úloha závisí od jemných časových informácií. Vyhodnoťte kompletný konverzný a spracovateľský kanál; samotný atraktívny rekonštruovaný obraz neurčuje presnosť alebo latenciu finálnej aplikácie.
Naplánujte si načasovanie pred fúzia údajov zo snímačov
Technické referencie
- Prophesee: Začíname so streamovaním Pythonu API
- Prophesee: čítanie udalostí z kamier a súborov
- Gallego a kol.: Vízia založená na udalostiach – prieskum
Príklady dodávateľov popisujú ich vlastný podporovaný ekosystém. Potvrďte kompatibilitu a licencovanie pre zvolené zariadenie a nasadenie.
