Что обрабатывает программное обеспечение для машинного зрения на основе событий?

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

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

ПредставительствоПолезно дляВопрос интеграции
Необработанные пакеты или записи поставщикаВоспроизведение поведения сбора и декодированияМожет ли развернутый декодер прочитать именно эту версию устройства и формата?
Раскодированные событияФильтрация, временной анализ и алгоритмы, учитывающие событияКаковы единицы измерения временной метки, часовой диапазон и соглашение о координатах?
Временные поверхности или воксельные тензорыАлгоритмы, которым необходимо структурированное временное представлениеКакие настройки истории, группирования и нормализации необходимо воспроизвести?
Накопленные изображения событийВизуализация или совместимый этап обработки изображенийКакую задержку и потерю информации вносит окно накопления?

Как оценить 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 и устойчивое использование ресурсов фактической целевой платформы.

Что мне отправить на обсуждение интеграции?

Отправьте ссылку на камеру или датчик, образец записи, предполагаемый результат, допустимую задержку, хост-платформу, интерфейс и среду развертывания. Эти материалы делают дискуссию достаточно конкретной, чтобы выявить первые интеграционные риски.

Технические ссылки

Примеры поставщиков описывают их собственную поддерживаемую экосистему. Подтвердите совместимость и лицензирование выбранного устройства и развертывания.

Запланируйте интеграцию камеры событий.