Шта обрађује софтвер за визију заснован на догађајима?
Камера за догађаје пријављује промене у осветљености уместо да испоручује конвенционални видео оквир у сваком интервалу. Декодирани догађај обично идентификује пиксел, поларитет и временску ознаку. Ваша апликација мора да сачува значење тих поља путем аквизиције, филтрирања, снимања и закључивања. Тхе поређење засновано на догађају наспрам оквира објашњава када је тај модел података користан.
Разликујте три формата у дизајну: сензорско или транспортно кодирање, декодирани приказ догађаја који користи софтвер и репрезентација прослеђена алгоритму. Датотека која садржи необрађене пакете сензора, низ декодираних догађаја и акумулирану слику служи различитим сврхама. Претварање између њих може променити употребу меморије, трошкове обраде и информације о времену које су доступне низводно.
| Репрезентација | Корисно за | Питање интеграције |
|---|---|---|
| Сирови пакети или снимак продавца | Репродукција понашања аквизиције и декодирања | Може ли примењени декодер да прочита овај тачан уређај и ревизију формата? |
| Дешифровани догађаји | Филтрирање, анализа времена и изворни алгоритми за догађаје | Шта су јединица временске ознаке, домен сата и конвенција о координатама? |
| Временске површине или тензори слични вокселу | Алгоритми којима је потребна структурирана временска репрезентација | Које поставке историје, биннинга и нормализације морају да се репродукују? |
| Акумулиране слике догађаја | Визуелизација или компатибилна фаза обраде слика | Колико кашњења и губитка информација доноси прозор акумулације? |
Како проценити камеру за догађаје 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 лиценцу и одрживо коришћење ресурса стварне циљне платформе.
Шта да пошаљем на дискусију о интеграцији?
Пошаљите референцу камере или сензора, снимак узорка, предвиђени излаз, прихватљиво кашњење, хост платформу, интерфејс и окружење за примену. Ови инпути чине дискусију довољно конкретном да се идентификују први ризици интеграције.
Неуроморфни вид у цевоводу компјутерског вида
О камерама за догађаје се често говори под неуроморфном визијом јер њихов излаз бележи промене у појединачним пикселима, а не фиксни низ комплетних слика. Тај приказ података не обезбеђује аутоматски детекцију објеката или резултат неуронске мреже. Софтверу је и даље потребан дефинисан задатак, компатибилан алгоритам и мерљиви критеријуми прихватања.
Када се интегрише са алатима за компјутерски вид оријентисаним на оквир, ток догађаја може бити конвертован у слику временског прозора или другу репрезентацију. Задржите оригиналне временске ознаке ако задатак зависи од финих временских информација. Процена комплетног процеса конверзије и обраде; атрактивна реконструисана слика сама по себи не утврђује тачност или кашњење коначне апликације.
Планирајте тајминг пре спајања података сензора
Техничке референце
- Пропхесее: почетак рада са Питхон стримингом API
- Пророк: читање догађаја са камера и фајлова
- Галлего ет ал.: Визија заснована на догађајима — Анкета
Примери добављача описују сопствени подржани екосистем. Потврдите компатибилност и лиценцирање за изабрани уређај и примену.
