Это введение в「RAFT」, модель машинного обучения, которую можно использовать с ailia SDK. Вы можете легко использовать эту модель для создания приложений ИИ с помощью ailia SDK, а также многих других готовых к использованию AIlia MODELS.

Обзор

RAFT (Recurrent All-pairs Field Transforms) — это новейшая технология оценки оптического потока, представленная PRINCETON VISION & LEARNING LAB, лабораторией престижного Принстонского университета. На момент публикации бумага достигла передового уровня производительности в известных наборах данных, таких как KITTI и Sintel, и была выбрана лучшей бумагой на ECCV 2020, ведущей мировой конференции по обработке изображений. .



Оптический поток — это векторное представление, которое количественно определяет движение элемента между двумя кадрами видео. В приведенном ниже примере мы отслеживаем оптический поток красной точки на протяжении 5 кадров.

(⊿x, ⊿y) — вектор расстояния до красной точки при переходе изображения из кадра 2 в кадр 3. Другими словами, если координаты красной точки в кадре 2 равны (x, y), то координаты красной точки на кадре 3 будет (x+Δx, y+Δy), поэтому оптический поток в координатах (x, y) будет (Δx, Δy).

Для RAFT и другой оценки оптического потока с использованием глубокого обучения мы в основном вычисляем это значение для каждого пикселя изображения. Обычно это называется Оценка плотного оптического потока. Оптический поток в координатах (0, 0) — это (⊿a, ⊿b), оптический поток в координатах (0, 1) — (⊿c, ⊿d) и т.д.

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

Ниже приведено сравнение Оценка разреженного оптического потока слева и Оценка плотного оптического потока справа.

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

Оценка плотного оптического потока справа немного сбивает с толку, но оценка выполняется для всех пикселей. Цветные области — это области, в которых оценивается сильный оптический поток, а черные области — области, в которых оценивается слабый оптический поток.

Оценка плотного оптического потока также может быть выражена, как показано ниже.

Верхнее изображение — это предыдущий кадр, следующее — текущий кадр, а последнее изображение — предполагаемый оптический поток между двумя кадрами.

Схема окраски вектора оптического потока сопоставляется с цветовым кругом ниже, чтобы показать направление вектора. Например, пиксели становятся светло-голубыми, когда машина движется влево, и красными, когда машина движется вправо.

Оценка оптического потока отслеживает только относительное движение объектов от одного кадра к другому, а не фактическое движение объектов в реальном мире. Поэтому, если камера движется во время видео, оценка оптического потока также происходит на фоне.

Приведенные выше оценки плотного оптического потока были рассчитаны с использованием модели из общедоступного репозитория RAFT на github.



Архитектура

Архитектура сети представлена ​​следующим образом.

В шагах, описанных выше, Объемы корреляции 4D содержат высокие значения для пикселей, похожих по внешнему виду, и низкие значения для пикселей, которые не являются таковыми. Затем эти 4D корреляционные объемы обрабатываются путем усреднения последних двух измерений с размерами ядра 1, 2, 4 и 8.

Более подробная информация об этих шагах приведена в документе, но в основном конвейер можно рассматривать как 3 этапа:

[1] извлечение признаков
[2] вычисление визуального сходства
[3] итеративные обновления

Первый шаг, «[1] извлечение признаков», аналогичен тому, что делается в общих архитектурах глубокого обучения с использованием сверточных сетей, чтобы выделить важные признаки.

Второй этап, «[2] вычисление визуального подобия», направлен на вычисление сходства между определенной частью изображения предыдущего кадра и каждой частью изображения последующего кадра методом грубой силы.

Наконец, третий этап, «[3] Итеративное обновление», представляет собой подход, повышающий точность за счет итеративного выполнения выводов. Другими словами, если количество итераций мало, время расчета короткое, но точность относительно низкая, а если количество итераций велико, время расчета велико, но точность, как правило, относительно высока.

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

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

На графиках выше вертикальная ось представляет количество ошибок. Таким образом, чем он ниже, тем точнее модель.

Горизонтальная ось левого графика — количество параметров. Для оборудования с ограниченным объемом памяти, такого как смартфон, предпочтительно иметь небольшое количество параметров.

Горизонтальная ось среднего графика показывает время, необходимое для логического вывода.
Чем ниже значение, тем больше логического вывода можно сделать в режиме реального времени.

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

Применение

RAFT можно использовать с ailia SDK с кодом ниже.



Выполните следующую команду, чтобы выполнить вывод на одном изображении.

$ python3 raft.py --inputs input_before.png input_after.png --savepath output.png

Ниже приведен результат, который вы можете ожидать.

Выполните следующую команду, чтобы выполнить вывод по видеофайлу.

$ python3 raft.py --video input.mp4 --savepath output.mp4

Ниже приведен результат, который вы можете ожидать.

Топор Инк. разработал ailia SDK, который обеспечивает кросс-платформенный быстрый вывод на основе графического процессора.

ax Inc. предоставляет широкий спектр услуг от консалтинга и создания моделей до разработки приложений и SDK на основе ИИ. Не стесняйтесь связаться с нами для любого запроса.