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

Введение:

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

Для задач на основе изображений мы можем использовать любое количество методов увеличения. Библиотека Keras предоставляет функцию ImageDataGenerator, затем у Pytorch есть некоторые функции, и есть одна библиотека под названием «imgaug», которая также позволяет расширять с различными спецификациями. Для этой задачи я использовал «imgaug» для увеличения видео.

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

Процесс:

Проще говоря, мы будем извлекать каждый кадр входного видео, находить FPS, дополнять их с помощью imageio и использовать OpenCV для создания дополненного видео с исходным FPS. Весь процесс выполняется с использованием ThreadPoolExecutor для ускорения процесса за счет выполнения расширения в отдельных потоках.

Предпосылки:

Библиотеки, которые пригодятся для увеличения видео, следующие:

  1. Opencv — для получения входного видео FPS (можно установить с помощью pip install opencv-python)
  2. imgaug — для увеличения изображения (можно установить с помощью pip install imgaug)
  3. imageio — для чтения видео и записи изображений (можно установить с помощью pip install imageio)
  4. imageio-ffmpeg — для создания видео из изображений (можно установить с помощью pip install imageio-ffmpeg)

Остальные — это базовые библиотеки os, Shutil (для создания/удаления папок), random (для генерации случайных чисел) и argparse (для получения аргументов командной строки).

Ссылка на код:

Код для увеличения видео можно найти на Github по адресу:

https://github.com/shayanalibhatti/Video-Augmentation-Code

Результат:

Для увеличения видео я использовал генератор случайных чисел, чтобы повернуть выходное видео под углом, и сделал то же самое для добавления к видео аддитивного гауссовского шума. Вот результат кода, (к сожалению) повернутый и добавленный шум каждого клипа, так как видео не может быть загружено сюда. Это просто для того, чтобы показать, как работает аугментация. Не стесняйтесь попробовать свои собственные клипы, чтобы увидеть дополненные видео. Следующее видео, использованное для ввода, принадлежит Nicolas Boulard из Pixabay (https://pixabay.com/videos/countdown-10-seconds-film-2637/)

Входной видеофрагмент:

Выходной снимок видео:

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

Вывод:

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