Що обробляє програмне забезпечення бачення на основі подій?

Камера подій повідомляє про зміни яскравості, а не передає звичайний відеокадр з кожним інтервалом. Декодована подія зазвичай ідентифікує піксель, полярність і мітку часу. Ваша програма має зберігати значення цих полів шляхом отримання, фільтрації, запису та висновку. The порівняння на основі подій і кадрів пояснює, коли ця модель даних корисна.

Розрізняють три формати в дизайні: сенсорне або транспортне кодування, декодоване представлення події, яке використовується програмним забезпеченням, і представлення, передане в алгоритм. Файл, що містить необроблені пакети датчиків, масив декодованих подій і накопичене зображення, служить різним цілям. Перетворення між ними може змінити використання пам’яті, вартість обробки та інформацію про час, доступну в нижній частині.

ПредставництвоКорисно дляПитання інтеграції
Необроблені пакети або запис постачальникаВідтворення поведінки захоплення та декодуванняЧи може розгорнутий декодер читати саме цей пристрій і версію формату?
Розшифровані подіїФільтрування, аналіз часу та власні алгоритми подійЩо таке одиниця позначки часу, домен годинника та домовленість про координати?
Часові поверхні або воксельноподібні тензориАлгоритми, які потребують структурованого часового представленняЯкі налаштування історії, групування та нормалізації потрібно відтворити?
Накопичені зображення подійВізуалізація або сумісний етап обробки на основі зображеньЯку затримку та втрату інформації створює вікно накопичення?

Як оцінити івент-камеру SDK

Почніть із точного датчика, мікропрограми камери та хост-платформи. Демонстрація робочого столу не забезпечує підтримку вбудованого образу Linux, процесора ARM або вашої ліцензії на виробництво. Уточніть у постачальника підтримувані операційні системи, архітектури ЦП, умови перерозподілу та вимоги до інтерфейсу камери. Перевірте програму на призначеній платформі, перш ніж зафіксувати плата-носій.

  • Придбання: виявлення пристроїв, налаштування, декодування та повідомлення про помилки.
  • Час: Початок мітки часу, обробка перекидання, зовнішні тригери та вирівнювання кількох пристроїв.
  • Відтворюваність: записи, експорт конфігурації та ідентифікована версія програмного забезпечення.
  • Розгортання: операція без голови, підтримувані двійкові файли, поведінка перезапуску та умови ліцензії.
  • Спостережливість: кількість подій, глибина черги, видалені дані та використання ресурсів хосту.

Побудуйте конвеєр із явними часовими межами

придбатиДекодування та збереження часу датчика
ПриготуйтеФільтрувати, синхронізувати та формувати вікна
ВирішуйтеВідстежуйте або робіть висновок, а потім поставте позначку часу

Зберігайте дані окремо від дорогої візуалізації, запису на диск і моделювання. Інакше повільний споживач може затримати нові дані ще до запуску алгоритму. Визначте обмежену чергу та явну політику перевантаження. Видалення найстарішого вікна, зменшення області інтересу та зупинка з помилкою мають різні наслідки; виберіть поведінку, яка відповідає програмі, і зафіксуйте, коли це станеться.

Використовуйте мітки часу датчика, щоб описати, коли відбувалися спостереження, і монотонний годинник хоста, щоб вимірювати тривалість обробки. Віднімання позначок часу з непов’язаних годинників не створює дійсної наскрізної затримки. Якщо камеру необхідно поєднати з IMU або звичайною камерою, установіть взаємозв’язок годинника та процес калібрування, описаний у нашому посібник із синхронізації датчиків.

Невеликий приклад запису-перевірки

У наведеному нижче прикладі Python підраховуються декодовані події в підтримуваному записі та повідомляє проміжок їхніх позначок часу. Він використовує задокументовану потокову передачу Metavision 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 і постійне використання ресурсів фактичної цільової платформи.

Що мені надіслати для обговорення інтеграції?

Надішліть еталон камери або датчика, зразок запису, передбачуваний вихід, прийнятну затримку, хост-платформу, інтерфейс і середовище розгортання. Ці дані роблять обговорення достатньо конкретним, щоб визначити перші ризики інтеграції.

Нейроморфний зір у конвеєрі комп’ютерного зору

Подієві камери часто обговорюються під нейроморфним зором, оскільки їхній вихід записує зміни в окремих пікселях, а не фіксовану послідовність повних зображень. Це представлення даних не забезпечує автоматичного виявлення об’єктів або результату нейронної мережі. Програмне забезпечення все ще потребує визначеного завдання, сумісного алгоритму та вимірних критеріїв прийнятності.

При інтеграції з інструментами комп’ютерного бачення, орієнтованими на кадри, потік подій може бути перетворений у зображення часового вікна або інше представлення. Зберігайте оригінальні позначки часу, якщо завдання залежить від тонкої тимчасової інформації. Оцініть повний конвеєр перетворення та обробки; лише привабливе реконструйоване зображення не встановлює точність або затримку остаточного застосування.

Заплануйте час до об’єднання даних сенсорів

Технічні довідки

Приклади постачальників описують їх власну підтримувану екосистему. Підтвердьте сумісність і ліцензію для вибраного пристрою та розгортання.

Сплануйте інтеграцію камери подій.