Препроцессор видео и расширение для задач глубокого обучения

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

1. Предварительная обработка видеоданных

Для предварительной обработки видеоданных мы собираемся использовать библиотеки Python, такие как

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

Как вы, возможно, знаете, видео — это не что иное, как сложенные изображения в виде кадров, поэтому видео состоит из нескольких кадров, объединенных в видео.

Я буду использовать набор видеоданных Weizmann для обработки.

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

Как вы можете видеть в приведенной выше структуре, я переименовал все подкаталоги набора данных Weizmann в соответствии с меткой класса для упрощения выборки в будущем.

Из приведенного выше фрагмента кода вы можете видеть, что я использую os и glob для вывода списка и извлечения всех файлов соответственно, у меня также есть X и метки в виде пустого списка и, наконец, добавление в них соответствующих данных, я возвращаю оба списка как Массивы NumPy. После этого X будет иметь все видеофайлы в виде массива кадров, ниже я поделился фрагментом кода load_video для лучшего понимания потока.

Как мы видим, я использую OpenCV для чтения всех кадров из определенного видео, добавляя их в массив кадров, изменяя их размер и возвращая их в виде массива NumPy со значениями пикселей, нормализованными от 0 до 1.

Чтобы понять поток, я также прикрепляю код crop_center_square(frame) ниже:

Теперь, если вы вызовете функцию loaddata («путь к каталогу видео», количество классов), вы получите видео, обработанные как массив NumPy, и пометьте все видео.

Xin, Yin = loaddata(“path to the video directory”, number of classes)

если вы проверите форму Xin[index], где индекс — это любой допустимый индекс, имеющий видео в виде массива кадров, вы получите вывод как (x, 224, 224,3), где x — количество кадров в этом видео, а 224 — ширина и высота кадров и 3 размер канала красный, зеленый и синий.

Теперь, чтобы визуализировать любое видео из обработанного массива NumPy, мы можем использовать функцию to_gif, упомянутую ниже.

мы можем видеть, что мы конвертируем нормализованные значения пикселей обратно в форматы диапазона 255 для правильной визуализации.

если мы вызовем to_gif(sample_video), мы получим вывод, например:

2. Расширение видеоданных

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

В основном я использовал vidaug для задач, связанных с расширением видео.

Увеличение видео с вероятностью увеличения или отсутствия увеличения для конкретного видео исследуется в библиотеке vidaug. Я прилагаю фрагмент кода для увеличения и того, как сделать наши данные поезда больше, чем раньше, для лучших результатов и уменьшить эти нездоровые переобучения. в задачах глубокого обучения.

Расширение данных включает в себя такие способы, как:

  • RandomCrop
  • СлучайныйПоворот
  • ГоризонтальныйФлип
  • Вертикальный переворот
  • Размытие по Гауссу
  • и Т. Д.

Ниже приведен код того, как использовать vidaug для увеличения видео:

Функция, которая создает массив NumPy расширенных видеоданных, приведена ниже:

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

Ниже приведен пример расширенных данных:

Как мы видим, видео выше дополнено с помощью RandomRotate и Vertical Flip.

Спасибо, это все, ребята, я буду приходить с другими статьями о классификации и распознавании видео.

пожалуйста, свяжитесь со мной по адресу:



пожалуйста, проверьте :



Дополнительные запросы.