Mit dolgoz fel az eseményalapú látásszoftver?

Az eseménykamera a fényerő változásait jelzi, nem pedig minden időközönként hagyományos videokockát jelenít meg. A dekódolt esemény általában egy pixelt, egy polaritást és egy időbélyeget azonosít. Az alkalmazásnak meg kell őriznie ezeknek a mezőknek a jelentését az adatgyűjtés, szűrés, rögzítés és következtetés révén. A esemény alapú versus keret alapú összehasonlítás elmagyarázza, mikor hasznos az adatmodell.

Három formátumot különböztet meg a tervezésben: az érzékelő vagy szállítási kódolást, a szoftver által használt dekódolt eseményábrázolást és az algoritmusnak átadott ábrázolást. A nyers érzékelőcsomagokat, dekódolt események tömbjét és felhalmozott képet tartalmazó fájl különböző célokat szolgál. A köztük lévő átalakítás megváltoztathatja a memóriahasználatot, a feldolgozási költségeket és a lejjebb elérhető időzítési információkat.

KépviseletHasznos aIntegrációs kérdés
Nyers csomagok vagy szállítói felvételBeszerzési és dekódolási viselkedés reprodukálásaA telepített dekóder pontosan ezt az eszköz- és formátumváltozatot tudja olvasni?
Dekódolt eseményekSzűrés, időzítés elemzés és esemény-natív algoritmusokMi az időbélyeg egység, az óratartomány és a koordináta-egyezmény?
Időfelületek vagy voxelszerű tenzorokStrukturált időbeli reprezentációt igénylő algoritmusokMely előzmények, binning és normalizálási beállításokat kell reprodukálni?
Felhalmozott események képeiVizualizáció vagy kompatibilis képalapú feldolgozási szakaszMekkora késleltetést és információvesztést okoz a felhalmozási ablak?

Hogyan értékeljük a SDK eseménykamerát

Kezdje a pontos érzékelővel, a kamera firmware-ével és a gazdagép platformmal. Az asztali bemutató nem támogatja a beágyazott Linux képfájlt, az ARM processzort vagy az Ön gyártási licencét. Kérdezze meg a szállítót a támogatott operációs rendszerekről, a CPU architektúrákról, az újraelosztás feltételeiről és a kamera interfész követelményeiről. Ellenőrizze az alkalmazást a tervezett platformon, mielőtt lekötné az alaplapot egy számítási modulhoz.

  • Beszerzés: eszközfelderítés, konfigurálás, dekódolás és hibajelentés.
  • Időzítés: időbélyegző eredete, átfordítás kezelése, külső triggerek és több eszköz összehangolása.
  • Reprodukálhatóság: felvételek, konfiguráció exportálás és azonosított szoftververzió.
  • Telepítés: fej nélküli működés, támogatott binárisok, újraindítási viselkedés és licencfeltételek.
  • Megfigyelhetőség: eseményszámok, sormélység, kiesett adatok és gazdagép-erőforrás-használat.

Építsen fel egy folyamatot explicit időzítési határokkal

MegszerezniDekódolja és őrizze meg az érzékelő idejét
Készülj felAz ablakok szűrése, szinkronizálása és formázása
Döntse elKövesse nyomon vagy következtessen, majd időbélyegezze a kimenetet

Tartsa külön az adatgyűjtést a drága vizualizációtól, a lemezírástól és a modellkövetkeztetéstől. Ellenkező esetben a lassú fogyasztó késleltetheti az új adatokat, mielőtt az algoritmus elindulna. Határozzon meg egy korlátozott sort és egy kifejezett túlterhelési szabályzatot. A legrégebbi ablak eldobása, az érdeklődési terület csökkentése és a hibával való leállás eltérő következményekkel jár; válassza ki az alkalmazásnak megfelelő viselkedést, és rögzítse, amikor ez megtörténik.

Használja az érzékelő időbélyegeit a megfigyelések leírásához, a monoton állomásórát pedig a feldolgozás időtartamának mérésére. Az időbélyegek levonása a nem kapcsolódó órákból nem eredményez érvényes végpontok közötti késést. Ha a kamerát IMU-val vagy hagyományos kamerával kell kombinálni, állítsa be az órakapcsolatot és a kalibrálási folyamatot szenzor-fúziós szinkronizálási útmutató.

Egy kis felvételi-ellenőrzési példa

A következő Python-példa számolja a dekódolt eseményeket egy támogatott felvételben, és jelenti az időbélyegek időtartamát. A dokumentált Metavision streaming API-t használja, és kompatibilis SDK telepítést és rögzítést igényel. Ez egy vizsgálati példa, nem egy ALVEXIS kamera benchmark vagy 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})

Az időbélyeg időtartama az elsőtől az utolsóig megfigyelt eseményig terjed; nem méri a fájl időtartamát, az adatgyűjtési késleltetést vagy a feldolgozási sebességet. Az üres időszakok és az óra nullázása külön kezelést igényel a termelésben. Tartsa az eszköz konfigurációját és a rögzítési metaadatokat a fájl mellett, hogy egy második mérnök reprodukálhassa az értelmezést.

Érvényesítse a csendes jeleneteket, a mozgalmas jeleneteket és a hibák helyreállítását

Teszteljen egy álló jelenetet, egy reprezentatív mozgást és egy szándékosan igényes jelenetet. A vibrálás, a kamera vibrációja és a texturált mozgás nagyon eltérő eseményarányt hozhat létre. Jegyezze fel a tipikus viselkedést és a megfigyelt legrosszabb esetet is. Ismételje meg ezt a műveletet aktív tárolással és kommunikációval, mert ezek a terhelések versengenek a memóriáért és a CPU-időért.

TesztFelvételA döntést támogatja
Játssza le ugyanazt a felvételtKonfiguráció, kimeneti különbségek és feldolgozási időtartamKiértékelhető-e reprodukálhatóan egy szoftverváltozás?
Növelje a jelenetaktivitástSormélység, eseményvesztés és kimenet koraHasználható marad a rendszer csúcsterhelés alatt is?
Módosítsa a feldolgozási ablakotAlkalmazási pontosság és érzékelő-kimenet késleltetésMelyik időzítés/részletek kompromisszuma felel meg a követelménynek?
Válassza le, majd csatlakoztassa újra a készüléketHelyreállítási idő, óra visszaállítása és rögzítés folytonosságaMegjósolhatóan helyreállhat a telepített szolgáltatás?

Ha az algoritmus neurális hálózatot használ, ellenőrizze a kapott tenzort és a támogatott operátorokat, mielőtt gyorsítót választana. Egy eseménykamerának nincs szüksége automatikusan a NPU-re, a NPU-re pedig nem fogad automatikusan eseményfolyamot. A miénk FPGA, NPU és MPU architektúra útmutató elkülöníti a beszerzési, előfeldolgozási, következtetési és alkalmazási szolgáltatásokat.

Kérdések a szoftververem kiválasztása előtt

Használhatok normál számítógépes látási modellt?

Csak egy kompatibilis bemeneti reprezentáció meghatározása és a viselkedésének érvényesítése után. Az események képekben való felhalmozása lehetővé teheti a képfeldolgozási szakasz újrafelhasználását, de megváltoztatja az adatok eloszlását, és hozzáad egy időzítési ablakot. Értékelje a teljes kérelmet reprezentatív adatokon.

Egy működő laptop bemutató bizonyítja a beágyazott kompatibilitást?

Nem. Ellenőrizze a CPU architektúrát, az operációs rendszert, az érzékelő interfészt, az illesztőprogramot, a SDK licencet és a tényleges célplatform tartós erőforrás-használatát.

Mit küldjek egy integrációs megbeszélésre?

Küldje el a kamera vagy az érzékelő referenciáját, a mintafelvételt, a tervezett kimenetet, az elfogadható késleltetést, a gazdagép platformot, az interfészt és a telepítési környezetet. Ezek a bemenetek kellően konkréttá teszik a vitát az első integrációs kockázatok azonosításához.

Műszaki referenciák

A szállítói példák a saját támogatott ökoszisztémájukat írják le. Erősítse meg a kiválasztott eszköz és a telepítés kompatibilitását és licencét.

Tervezze meg esemény-kamera integrációját.