Mida sündmustepõhine nägemistarkvara töötleb?
Sündmuste kaamera teavitab heleduse muutustest, mitte ei esita iga intervalliga tavapärast videokaadrit. Dekodeeritud sündmus identifitseerib tavaliselt piksli, polaarsuse ja ajatempli. Teie rakendus peab säilitama nende väljade tähenduse hankimise, filtreerimise, salvestamise ja järelduste kaudu. The sündmusepõhine ja kaadripõhine võrdlus selgitab, millal see andmemudel on kasulik.
Eristage disainis kolme vormingut: anduri või transpordi kodeering, tarkvara poolt kasutatav dekodeeritud sündmuse esitus ja algoritmile edastatud esitus. Andurite töötlemata pakette, dekodeeritud sündmuste massiivi ja akumuleeritud pilti sisaldav fail teenib erinevaid eesmärke. Nende vahel teisendamine võib muuta mälukasutust, töötlemiskulusid ja allavoolu saadaolevat ajastusteavet.
| Esindus | Kasulik jaoks | Integratsiooni küsimus |
|---|---|---|
| Toores paketid või müüja salvestus | Omandamise ja dekodeerimise käitumise reprodutseerimine | Kas juurutatud dekooder saab täpselt seda seadme ja vormingu versiooni lugeda? |
| Dekodeeritud sündmused | Filtreerimine, ajastuse analüüs ja sündmuste algoritmid | Mis on ajatempli ühik, kella domeen ja koordinaatide kokkulepe? |
| Ajapinnad ehk vokslilaadsed tensorid | Algoritmid, mis vajavad struktureeritud ajalist esitust | Milliseid ajaloo-, binni- ja normaliseerimisseadeid tuleb reprodutseerida? |
| Kogunenud sündmuste pildid | Visualiseerimine või ühilduv pildipõhine töötlemise etapp | Kui palju viivitust ja infokadu akumulatsiooniaken toob? |
Kuidas hinnata sündmuse kaamerat SDK
Alustage täpse anduri, kaamera püsivara ja hostiplatvormiga. Töölauaesitlus ei toeta manustatud Linux kujutist, ARM-protsessorit ega teie tootmislitsentsi. Küsige tarnijalt toetatud operatsioonisüsteeme, protsessori arhitektuuri, ümberjaotamistingimusi ja kaamera liidese nõudeid. Kontrollige rakendust ettenähtud platvormil enne kandja trükkplaadi kinnitamist arvutusmooduli jaoks.
- Omandamine: seadme avastamine, konfigureerimine, dekodeerimine ja veateade.
- Ajastus: ajatempli päritolu, ümbermineku käitlemine, välised päästikud ja mitme seadme joondamine.
- Reprodutseeritavus: salvestised, konfiguratsiooni eksport ja tuvastatud tarkvaraversioon.
- Kasutuselevõtt: peata toimimine, toetatud binaarfailid, taaskäivituskäitumine ja litsentsitingimused.
- Vaadeldavus: sündmuste loendused, järjekorra sügavus, andmete väljalangemine ja hosti ressursi kasutamine.
Ehitage selgete ajastuspiiridega torujuhe
Hoidke hankimine eraldi kallist visualiseerimisest, ketta kirjutamisest ja mudeli järeldustest. Vastasel juhul võib aeglane tarbija uusi andmeid edasi lükata enne, kui algoritm isegi käivitub. Määratlege piiratud järjekord ja selge ülekoormuse poliitika. Vanima akna väljalangemisel, huvipakkuva piirkonna vähendamisel ja veaga peatumisel on erinevad tagajärjed; valige rakendusele sobiv käitumine ja registreerige, millal see juhtub.
Kasutage andurite ajatempleid, et kirjeldada, millal vaatlused toimusid, ja monotoonset hosti kella töötlemise kestuse mõõtmiseks. Ajatemplite lahutamine mitteseotud kelladest ei anna kehtivat otsast lõpuni latentsust. Kui kaamerat tuleb kombineerida IMU või tavalise kaameraga, määrake kellasuhe ja kalibreerimisprotsess, mida on kirjeldatud meie artiklis. sensori-fusiooni sünkroonimise juhend.
Väike salvestuse-ülevaatuse näide
Järgmine Pythoni näide loendab toetatud salvestise dekodeeritud sündmused ja teatab nende ajatemplite ulatuse. See kasutab dokumenteeritud Metavisioni voogesitust API ning nõuab ühilduvat SDK installimist ja salvestamist. See on ülevaatuse näide, mitte ALVEXIS kaamera etalon või 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})
Ajatempel hõlmab esimesest kuni viimase vaadeldud sündmuseni; see ei mõõda faili kestust, hankimise viivitust ega töötlemise läbilaskevõimet. Tühjad perioodid ja kella nullimised vajavad tootmises eraldi käsitlemist. Hoidke seadme konfiguratsiooni ja salvestamise metaandmeid faili kõrval, et teine insener saaks tõlgenduse reprodutseerida.
Kinnitage vaiksed stseenid, hõivatud stseenid ja ebaõnnestumiste taastamine
Testige statsionaarset stseeni, esinduslikku liikumist ja tahtlikult nõudlikku stseeni. Virvendus, kaamera vibratsioon ja tekstureeritud liikumine võivad tekitada väga erinevaid sündmuste kiirusi. Pange kirja nii tüüpiline käitumine kui ka halvim juhtum, mida täheldasite. Korrake seda, kui salvestus ja side on aktiivsed, sest need töökoormused võistlevad mälu ja protsessori aja pärast.
| Test | Salvestus | Otsus, mida see toetab |
|---|---|---|
| Esitage sama salvestist uuesti | Konfiguratsioon, väljundi erinevused ja töötlemise kestus | Kas tarkvaramuudatust saab hinnata reprodutseeritavalt? |
| Suurendage stseeni aktiivsust | Järjekorra sügavus, sündmuste kadu ja väljundi vanus | Kas süsteem jääb tippkoormuse korral kasutatav? |
| Muutke töötlemisakent | Rakenduse täpsus ja anduri ja väljundi viivitus | Milline ajastus/detailide kompromiss vastab nõudele? |
| Ühendage seade lahti ja ühendage see uuesti | Taasteaeg, kella lähtestamine ja salvestamise järjepidevus | Kas juurutatud teenus saab prognoositavalt taastuda? |
Kui algoritm kasutab närvivõrku, kontrollige enne kiirendi valimist saadud tensorit ja toetatud operaatoreid. Sündmuste kaamera ei nõua automaatselt NPU ja NPU ei aktsepteeri automaatselt sündmuste voogu. Meie FPGA, NPU ja MPU arhitektuurijuhend eraldab hankimis-, eeltöötlus-, järeldus- ja rakendusteenused.
Küsimused enne tarkvarapaki valimist
Kas ma saan kasutada tavalist arvutinägemise mudelit?
Alles pärast ühilduva sisendi esituse määratlemist ja selle käitumise kinnitamist. Sündmuste kuhjumine piltidena võib lubada pilditöötlusetapi taaskasutamist, kuid muudab andmete jaotust ja lisab ajastusakna. Hinnake täielikku taotlust representatiivsete andmete põhjal.
Kas töötav sülearvuti demo tõestab manustatud ühilduvust?
Ei. Kinnitage tegeliku sihtplatvormi protsessori arhitektuur, operatsioonisüsteem, anduri liides, draiver, SDK litsents ja ressursside pidev kasutus.
Mida ma peaksin integratsioonivestlusele saatma?
Saatke kaamera või anduri viide, näidissalvestus, kavandatud väljund, vastuvõetav viivitus, hostplatvorm, liides ja juurutuskeskkond. Need sisendid muudavad arutelu piisavalt konkreetseks, et tuvastada esimesed integratsiooniriskid.
Neuromorfne nägemine arvutinägemise torujuhtmes
Sündmuskaameraid käsitletakse sageli neuromorfse nägemise all, kuna nende väljund salvestab muutusi üksikute pikslite, mitte terviklike kujutiste fikseeritud jada järgi. See andmete esitus ei anna automaatselt objekti tuvastamist ega närvivõrgu tulemust. Tarkvara vajab endiselt määratletud ülesannet, ühilduvat algoritmi ja mõõdetavaid aktsepteerimiskriteeriume.
Kaadrile orienteeritud arvutinägemise tööriistadega integreerimisel võib sündmuste voo teisendada ajaakna kujutiseks või muuks esituseks. Kui ülesanne sõltub täpsest ajalisest teabest, säilitage algsed ajatemplid. Hinnake kogu konversiooni- ja töötlemiskonveieri; atraktiivne rekonstrueeritud pilt üksi ei määra lõpliku rakenduse täpsust ega latentsust.
Planeerige ajastus enne anduriandmete liitmist
Tehnilised viited
- Prophesee: Pythoni voogesituse alustamine API
- Prophesee: sündmuste lugemine kaameratest ja failidest
- Gallego jt: Sündmuspõhine visioon — uuring
Tarnija näited kirjeldavad nende enda toetatud ökosüsteemi. Kinnitage valitud seadme ja juurutuse ühilduvus ja litsentsimine.
