Шта обрађује софтвер за визију заснован на догађајима?

Камера за догађаје пријављује промене у осветљености уместо да испоручује конвенционални видео оквир у сваком интервалу. Декодирани догађај обично идентификује пиксел, поларитет и временску ознаку. Ваша апликација мора да сачува значење тих поља путем аквизиције, филтрирања, снимања и закључивања. Тхе поређење засновано на догађају наспрам оквира објашњава када је тај модел података користан.

Разликујте три формата у дизајну: сензорско или транспортно кодирање, декодирани приказ догађаја који користи софтвер и репрезентација прослеђена алгоритму. Датотека која садржи необрађене пакете сензора, низ декодираних догађаја и акумулирану слику служи различитим сврхама. Претварање између њих може променити употребу меморије, трошкове обраде и информације о времену које су доступне низводно.

РепрезентацијаКорисно заПитање интеграције
Сирови пакети или снимак продавцаРепродукција понашања аквизиције и декодирањаМоже ли примењени декодер да прочита овај тачан уређај и ревизију формата?
Дешифровани догађајиФилтрирање, анализа времена и изворни алгоритми за догађајеШта су јединица временске ознаке, домен сата и конвенција о координатама?
Временске површине или тензори слични вокселуАлгоритми којима је потребна структурирана временска репрезентацијаКоје поставке историје, биннинга и нормализације морају да се репродукују?
Акумулиране слике догађајаВизуелизација или компатибилна фаза обраде сликаКолико кашњења и губитка информација доноси прозор акумулације?

Како проценити камеру за догађаје SDK

Почните са тачним сензором, фирмвером камере и хост платформом. Демонстрација на радној површини не успоставља подршку за уграђену Linux слику, АРМ процесор или вашу лиценцу за производњу. Питајте добављача за подржане оперативне системе, ЦПУ архитектуре, услове редистрибуције и захтеве интерфејса камере. Проверите апликацију на предвиђеној платформи пре него што укључите носећу плочу за рачунарски модул.

  • Набавка: откривање уређаја, конфигурисање, декодирање и извештавање о грешкама.
  • Тајминг: порекло временске ознаке, руковање окретањем, спољни окидачи и поравнање на више уређаја.
  • Поновљивост: снимке, извоз конфигурације и идентификовану верзију софтвера.
  • Примена: рад без главе, подржане бинарне датотеке, понашање поновног покретања и услови лиценце.
  • Уочљивост: број догађаја, дубина реда, испуштени подаци и коришћење ресурса домаћина.

Изградите цевовод са експлицитним временским границама

СтећиДекодирајте и сачувајте време сензора
Припремите сеФилтрирајте, синхронизујте и формирајте прозоре
Одлучите сеПратите или закључите, а затим означите временску ознаку излаза

Држите аквизицију одвојено од скупе визуелизације, писања на диск и закључивања модела. Иначе спори потрошач може да одложи нове податке пре него што алгоритам уопште почне. Дефинишите ограничени ред и експлицитну политику преоптерећења. Испуштање најстаријег прозора, смањење области интересовања и заустављање са грешком имају различите последице; изаберите понашање које одговара апликацији и забележите када се то догоди.

Користите временске ознаке сензора да опишете када је дошло до запажања и монотони сат домаћина за мерење трајања обраде. Одузимање временских ознака од неповезаних часовника не производи валидну латенцију од краја до краја. Ако камера мора да се комбинује са IMU или конвенционалном камером, успоставите однос сата и процес калибрације описан у нашем водич за синхронизацију сензора и фузије.

Мали пример снимања-инспекције

Следећи Питхон пример броји декодиране догађаје у подржаном снимку и извештава о распону њихових временских ознака. Користи документовани Метависион стримовање API и захтева компатибилну SDK инсталацију и снимање. То је пример инспекције, а не ALVEXIS бенцхмарк камере или детектор.

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})

Распон временске ознаке покрива од првог до последњег посматраног догађаја; не мери трајање датотеке, кашњење у аквизицији или пропусност обраде. Празни периоди и ресетовања сата захтевају одвојено руковање у производњи. Задржите конфигурацију уређаја и метаподатке за снимање поред датотеке тако да други инжењер може да репродукује интерпретацију.

Потврдите мирне сцене, заузете сцене и опоравак од грешке

Тестирајте стационарну сцену, репрезентативно кретање и намерно захтевну сцену. Треперење, вибрације камере и текстурирани покрети могу створити веома различите стопе догађаја. Забележите и типично понашање и најгори случај који сте приметили. Поновите са активним складиштењем и комуникацијом, јер се та оптерећења такмиче за меморију и ЦПУ време.

ТестРецордОдлука коју подржава
Поновите исти снимакКонфигурација, излазне разлике и трајање обрадеДа ли се промена софтвера може репродуцирати?
Повећајте активност сценеДубина реда, губитак догађаја и старост излазаДа ли систем остаје употребљив под вршним оптерећењем?
Промените прозор за обрадуТачност апликације и кашњење између сензора и излазаКоји компромис о времену/детаљности одговара захтеву?
Искључите и поново повежите уређајВреме опоравка, ресетовање сата и континуитет снимањаМоже ли се распоређена услуга опоравити предвидљиво?

Када алгоритам користи неуронску мрежу, проверите резултујући тензор и подржане операторе пре него што изаберете акцелератор. Камера за догађаје не захтева аутоматски NPU, а NPU не прихвата аутоматски стрим догађаја. Наше FPGA, NPU и MPU водич за архитектуру раздваја услуге аквизиције, претпроцесирања, закључивања и апликације.

Питања пре избора софтверског пакета

Могу ли да користим нормалан модел компјутерског вида?

Тек након дефинисања компатибилног улазног представљања и валидације његовог понашања. Акумулирање догађаја у слике може омогућити поновно коришћење фазе обраде слике, али мења дистрибуцију података и додаје временски прозор. Оцените комплетну апликацију на репрезентативним подацима.

Да ли радна демонстрација лаптопа доказује уграђену компатибилност?

Не. Потврдите архитектуру процесора, оперативни систем, интерфејс сензора, драјвер, SDK лиценцу и одрживо коришћење ресурса стварне циљне платформе.

Шта да пошаљем на дискусију о интеграцији?

Пошаљите референцу камере или сензора, снимак узорка, предвиђени излаз, прихватљиво кашњење, хост платформу, интерфејс и окружење за примену. Ови инпути чине дискусију довољно конкретном да се идентификују први ризици интеграције.

Неуроморфни вид у цевоводу компјутерског вида

О камерама за догађаје се често говори под неуроморфном визијом јер њихов излаз бележи промене у појединачним пикселима, а не фиксни низ комплетних слика. Тај приказ података не обезбеђује аутоматски детекцију објеката или резултат неуронске мреже. Софтверу је и даље потребан дефинисан задатак, компатибилан алгоритам и мерљиви критеријуми прихватања.

Када се интегрише са алатима за компјутерски вид оријентисаним на оквир, ток догађаја може бити конвертован у слику временског прозора или другу репрезентацију. Задржите оригиналне временске ознаке ако задатак зависи од финих временских информација. Процена комплетног процеса конверзије и обраде; атрактивна реконструисана слика сама по себи не утврђује тачност или кашњење коначне апликације.

Планирајте тајминг пре спајања података сензора

Техничке референце

Примери добављача описују сопствени подржани екосистем. Потврдите компатибилност и лиценцирање за изабрани уређај и примену.

Планирајте своју интеграцију камере за догађаје.