Що обробляє програмне забезпечення бачення на основі подій?
Камера подій повідомляє про зміни яскравості, а не передає звичайний відеокадр з кожним інтервалом. Декодована подія зазвичай ідентифікує піксель, полярність і мітку часу. Ваша програма має зберігати значення цих полів шляхом отримання, фільтрації, запису та висновку. 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 і постійне використання ресурсів фактичної цільової платформи.
Що мені надіслати для обговорення інтеграції?
Надішліть еталон камери або датчика, зразок запису, передбачуваний вихід, прийнятну затримку, хост-платформу, інтерфейс і середовище розгортання. Ці дані роблять обговорення достатньо конкретним, щоб визначити перші ризики інтеграції.
Нейроморфний зір у конвеєрі комп’ютерного зору
Подієві камери часто обговорюються під нейроморфним зором, оскільки їхній вихід записує зміни в окремих пікселях, а не фіксовану послідовність повних зображень. Це представлення даних не забезпечує автоматичного виявлення об’єктів або результату нейронної мережі. Програмне забезпечення все ще потребує визначеного завдання, сумісного алгоритму та вимірних критеріїв прийнятності.
При інтеграції з інструментами комп’ютерного бачення, орієнтованими на кадри, потік подій може бути перетворений у зображення часового вікна або інше представлення. Зберігайте оригінальні позначки часу, якщо завдання залежить від тонкої тимчасової інформації. Оцініть повний конвеєр перетворення та обробки; лише привабливе реконструйоване зображення не встановлює точність або затримку остаточного застосування.
Заплануйте час до об’єднання даних сенсорів
Технічні довідки
- Prophesee: початок роботи з потоковою трансляцією Python API
- Prophesee: читає події з камер і файлів
- Галлего та ін.: Бачення на основі подій — опитування
Приклади постачальників описують їх власну підтримувану екосистему. Підтвердьте сумісність і ліцензію для вибраного пристрою та розгортання.
