Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Optical Flow

Оптический поток оценивает перемещение каждого пикселя между двумя видеокадрами в виде поля векторов движения. Классические методы и методы глубокого обучения, сферы применения и примеры кода для OpenCV.

Оптический поток — это видимое перемещение яркостных структур между двумя изображениями, обычно соседними кадрами видео. Алгоритм оптического потока оценивает для каждого пикселя первого кадра двумерный вектор смещения (dx, dy), указывающий, где содержимое этого пикселя окажется во втором кадре. Результат, называемый полем потока, отражает движение движущихся объектов и самой камеры, что позволяет системам компьютерного зрения стабилизировать видео, оценивать собственное движение камеры, интерполировать кадры и распознавать действия. Поток измеряет то, что видит камера, а не истинное трехмерное движение: идеально однородная сфера, вращающаяся на месте, не создает потока, а движущаяся тень создает поток там, где ничего физически не движется.

Как оценивается оптический поток#

Большинство методов исходят из постоянства яркости — предположения, что точка сохраняет ту же интенсивность при движении. Линеаризация дает одно уравнение на пиксель: Ix·u + Iy·v + It = 0, где Ix, Iy и It — производные изображения по x, y и времени, а (u, v) — неизвестный поток. Одного уравнения недостаточно, чтобы определить две неизвестные величины: это проблема апертуры. Если смотреть на прямой край через небольшое окно, можно измерить только движение перпендикулярно краю. Классические методы добавляют второе предположение, чтобы решить эту проблему:

  • Метод Лукаса — Канаде (1981): Предполагает, что поток постоянен в небольшом окне, и решает уравнения для всех пикселей окна методом наименьших квадратов. Метод работает, если окно содержит градиенты в двух направлениях, например в углах, поэтому обычно его применяют для разреженного потока на выбранных характерных точках.
  • Метод Хорна — Шунка (1981): Предполагает, что поле потока гладкое по всему изображению, и решает задачу глобальной оптимизации, получая плотный поток для каждого пикселя.

Оба предположения нарушаются при больших перемещениях, поэтому на практике поток оценивают от грубого масштаба к точному на пирамиде изображений: перемещение на 16 пикселей при полном разрешении соответствует перемещению на 2 пикселя на три уровня ниже:

В OpenCV реализованы пирамидальный метод Лукаса — Канаде для разреженных точек и алгоритм плотного потока Гуннара Фарнебака 2003 года на основе полиномиального разложения. Этот код сдвигает случайную текстуру на известную величину и восстанавливает движение с помощью плотного потока Фарнебака:

import cv2
import numpy as np

# A smooth random texture, then the same texture moved 3 px right and 2 px down
rng = np.random.default_rng(0)
texture = cv2.GaussianBlur(rng.random((240, 320)), (0, 0), 3)
frame1 = cv2.normalize(texture, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
frame2 = np.roll(frame1, shift=(2, 3), axis=(0, 1))

# Dense Farneback optical flow: one (dx, dy) displacement vector for every pixel
flow = cv2.calcOpticalFlowFarneback(
    frame1, frame2, None, pyr_scale=0.5, levels=3, winsize=15, iterations=3, poly_n=5, poly_sigma=1.2, flags=0
)
print(f"flow field shape: {flow.shape}")
print(f"median motion: dx={np.median(flow[..., 0]):.2f}, dy={np.median(flow[..., 1]):.2f} pixels")

Он выводит flow field shape: (240, 320, 2) и median motion: dx=3.00, dy=2.00 pixels: двухкомпонентный вектор для каждого из 76 800 пикселей, восстанавливая горизонтальный сдвиг на 3 пикселя и вертикальный на 2 пикселя.

Методы глубокого обучения#

FlowNet в 2015 году показал, что сверточную нейронную сеть можно обучить оценивать поток сквозным образом на синтетических обучающих данных, поскольку для реального видео редко доступны эталонные значения потока. PWC-Net объединил идеи классических методов — пирамиду, деформацию и объем стоимости — в компактной сети. RAFT, получившая награду за лучшую статью на ECCV 2020, сопоставляет каждый пиксель первого кадра с каждым пикселем второго в объеме корреляции и многократно уточняет единое поле потока высокого разрешения с помощью рекуррентных обновлений. Обучаемые методы намного лучше классических справляются с большими смещениями, размытием движения и областями без текстуры, а torchvision поставляется с предварительно обученными моделями RAFT. Точность оценивают по средней ошибке конечной точки (EPE) — среднему расстоянию в пикселях между предсказанными и истинными векторами потока — на таких наборах тестов, как MPI Sintel и KITTI 2015.

  • Сопровождение объектов: Отслеживает целые объекты с постоянными идентификаторами на протяжении множества кадров, тогда как оптический поток описывает попиксельное движение между двумя кадрами и ничего не знает об объектах. Трекеры используют поток как дополнительный сигнал: в режиме track Ultralytics YOLO трекеры TrackTrack (по умолчанию) и BoT-SORT оценивают движение камеры с помощью разреженного потока Лукаса — Канаде (gmc_method: sparseOptFlow): отслеживают до 400 угловых точек в кадре с половинным разрешением, подбирают к ним поворот, масштаб и перенос с помощью RANSAC, а затем сдвигают все предсказанные рамки треков на эту величину движения перед сопоставлением с новыми детекциями.
  • Отслеживание точек: Отслеживает выбранные точки на протяжении длинных видео, в том числе при перекрытиях, вместо оценки движения каждого пикселя между двумя кадрами.
  • Поток сцены: Трехмерное движение точек в пространстве, оцениваемое по стереоданным или данным о глубине. Оптический поток — это его проекция на плоскость изображения.
  • Векторы движения видеокодека: Кодировщики H.264, HEVC и AV1 хранят по одному вектору движения на блок, выбирая его для минимизации количества битов, необходимых для кодирования кадра, поэтому он часто отличается от истинного движения.

Примеры применения в реальных условиях#

  • Стабилизация видео: Доминирующий поток по всему кадру выявляет дрожание камеры, которое программа компенсирует, деформируя каждый кадр в противоположном направлении.
  • Интерполяция кадров: При создании замедленного видео и преобразовании частоты кадров промежуточные кадры синтезируются перемещением пикселей на часть расстояния вдоль их векторов потока.
  • Автономные транспортные средства и дроны: Поток помогает визуальной одометрии, а скорость расширения потока объекта предупреждает о приближающемся столкновении.
  • Распознавание действий: Двухпоточная сеть 2014 года распознавала действия по пространственному потоку одиночных кадров и временному потоку, на вход которого подавалась последовательность из 10 соседних полей оптического потока.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

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

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

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

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения