Что обрабатывает программное обеспечение для машинного зрения на основе событий?
Камера событий сообщает об изменениях яркости, а не передает обычный видеокадр через каждый интервал. Декодированное событие обычно идентифицирует пиксель, полярность и временную метку. Ваше приложение должно сохранять значение этих полей посредством сбора, фильтрации, записи и вывода. сравнение на основе событий и на основе кадров объясняет, когда эта модель данных полезна.
Различают три формата проектирования: сенсорное или транспортное кодирование, декодированное представление события, используемое программным обеспечением, и представление, передаваемое алгоритму. Файл, содержащий необработанные пакеты датчиков, массив декодированных событий и накопленное изображение, служит разным целям. Преобразование между ними может изменить использование памяти, стоимость обработки и информацию о времени, доступную в дальнейшем.
| Представительство | Полезно для | Вопрос интеграции |
|---|---|---|
| Необработанные пакеты или записи поставщика | Воспроизведение поведения сбора и декодирования | Может ли развернутый декодер прочитать именно эту версию устройства и формата? |
| Раскодированные события | Фильтрация, временной анализ и алгоритмы, учитывающие события | Каковы единицы измерения временной метки, часовой диапазон и соглашение о координатах? |
| Временные поверхности или воксельные тензоры | Алгоритмы, которым необходимо структурированное временное представление | Какие настройки истории, группирования и нормализации необходимо воспроизвести? |
| Накопленные изображения событий | Визуализация или совместимый этап обработки изображений | Какую задержку и потерю информации вносит окно накопления? |
Как оценить event-камеру SDK
Начните с выбора точного датчика, прошивки камеры и хост-платформы. Демонстрация рабочего стола не обеспечивает поддержку встроенного образа Linux, процессора ARM или вашей производственной лицензии. Узнайте у поставщика поддерживаемые операционные системы, архитектуры ЦП, условия распространения и требования к интерфейсу камеры. Проверьте приложение на предполагаемой платформе, прежде чем использовать основную плату для вычислительного модуля.
- Приобретение: обнаружение устройств, настройка, декодирование и отчеты об ошибках.
- Время: происхождение временной метки, обработка опрокидывания, внешние триггеры и выравнивание нескольких устройств.
- Воспроизводимость: записи, экспорт конфигурации и идентифицированную версию программного обеспечения.
- Развертывание: автономная работа, поддерживаемые двоичные файлы, поведение при перезапуске и условия лицензии.
- Наблюдаемость: количество событий, глубина очереди, отброшенные данные и использование ресурсов хоста.
Создайте конвейер с явными временными границами.
Отделяйте сбор данных от дорогостоящей визуализации, записи на диск и вывода моделей. В противном случае медленный потребитель может задержать новые данные еще до того, как алгоритм запустится. Определите ограниченную очередь и явную политику перегрузки. Удаление самого старого окна, уменьшение области интереса и остановка с ошибкой имеют разные последствия; выберите поведение, соответствующее приложению, и запишите, когда оно произойдет.
Используйте временные метки датчиков, чтобы описать, когда происходили наблюдения, и монотонные часы хоста для измерения продолжительности обработки. Вычитание временных меток из несвязанных часов не дает допустимой сквозной задержки. Если камеру необходимо комбинировать с IMU или обычной камерой, установите соотношение часов и процесс калибровки, описанный в нашем руководстве. руководство по синхронизации Sensor-Fusion.
Небольшой пример записи-проверки
Следующий пример 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: чтение событий с камер и файлов
- Гальего и др.: Видение, основанное на событиях — опрос
Примеры поставщиков описывают их собственную поддерживаемую экосистему. Подтвердите совместимость и лицензирование выбранного устройства и развертывания.
