Введение

Проблема классификации видео заключается в определении категории видео данного видео. Классификация видео — одна из сложных задач компьютерного зрения. Проблема классификации видео может рассматриваться как мультимодальная проблема, в которой для решения проблемы используются как изображения, так и звук. В прошлом было проделано много работы, связанной с классификацией видео, и обзор последних методов классификации видео можно увидеть в этой бумаге. В этом блоге я объясню подход, который мы использовали для решения проблемы классификации видео. В этой работе мы хотим построить модель классификации видео, которая может классифицировать любое видео по 5 различным категориям. Мы используем как аудио, так и кадры изображения в качестве признаков для классификации видео, что делает его мультимодальным подходом. Сначала мы извлекаем изображения со скоростью 1 кадр/сек. Мы используем CNN, обученный на ImageNet, для извлечения функции высокого уровня для изображений, и мы используем сеть VGG, обученную на данных аудионабора, для получения аудиофункций для каждой 1 секунды звука. Мы объединяем эти функции, используя раннее объединение на уровне кадров, и строим CNN для 200-секундных видеоданных для классификации видео.

Подход

Цель этого проекта — классифицировать видеосцену как один из 5 жанров. Эта проблема представляет собой проблему мультимодального анализа, когда нам нужен управляющий сигнал как от аудио, так и от изображения, чтобы принять решение о том, к какой категории относится это видео. Сбор данных для этой задачи требует аннотирования видеоданных как одного из классов. Также нам нужно огромное количество данных, чтобы зафиксировать изменчивость видео во время классификации. В нашем случае мы используем набор данных, предоставленный Google (набор данных Youtube 8M). Набор данных YouTube-8M содержит 7 миллионов видео и около 3 50 000 часов контента. Для загрузки всего набора данных требуется 100 терабайт хранилища. Мы используем только небольшое подмножество видео во всем наборе данных. Мы собираем 1000 видео для каждого класса для обучения и собираем 200 видео для тестирования. После загрузки видео мы извлекаем кадры с интервалом в 1 секунду, а также извлекаем аудиоконтент из видео с помощью инструментария ffmpeg. Максимальная продолжительность видео составляет 6 минут. что может соответствовать 200 кадрам. Мы извлекаем функции fc7 для всех видеокадров, используя обученный набор данных ImageNet сеть VGG-19. мы также извлекаем характеристики звука каждую 1 секунду, используя сеть типа VGG, обученную для задачи классификации звука. Сеть классификации звука обучается на наборе данных audioset. Мы объединяем аудиовизуальные функции, используя технику раннего слияния, чтобы изучить мультимодальное представление видео. Наконец, мы обучаем CNN, используя эти объединенные мультимодальные функции, и обучаем ее, используя категориальную функцию перекрестной энтропии. Мы следуем той же процедуре, что и в Документе youtube 8M, за исключением того, что в этом документе используется сеть Inception, а мы используем сеть VGG. Процесс описан, как показано на рисунке ниже

Набор данных

Набор данных, необходимый для нашего метода, собран из набора данных Youtube-8M. Несмотря на то, что набор данных Youtube-8M дает нам как изображения, так и аудио, нам все равно нужно извлечь эти функции на этапе тестирования. Таким образом, вместо того, чтобы загружать функции изображения и аудио, мы напрямую загружаем видео по ссылкам, указанным на веб-сайте Youtube-8M. Мы скачиваем 1200 видео для каждого класса, а всего мы скачиваем 6000 видео. Мы храним 5000 видео для обучения и 200 видео для тестирования.

Извлечение признаков

Мы извлекаем все изображения со скоростью 1 кадр/сек. Объем места, необходимый для хранения всего извлеченного изображения, превысит 1 ТБ, и вы должны быть очень осторожны при работе с такими большими наборами данных. Модуль извлечения признаков состоит из 2 частей. один из них — извлечение признаков звука, а другой — извлечение признаков изображения. В нашем случае общее количество кадров, которое у нас было, составляет около 1,5 миллиона. Извлечение признаков высокого уровня для каждого кадра изображения займет очень много времени, если мы не распараллелим процесс извлечения признаков. Мы используем многопоточную библиотеку извлечения функций VGG на основе графического процессора для наших изображений, как указано в этом репозитории. Благодаря этому мы можем извлечь все функции изображения менее чем за день, используя графический процессор Telsa k40. Размер объекта из сети VGG-19 составляет 4096. Это большой размер для обработки, поэтому мы уменьшили размер до 512 с помощью отбеливания PCA. Затем мы используем модель, предоставленную Google, для извлечения аудиофункций за каждую 1 секунду. Модель была обучена на огромном количестве набора данных классификации аудио, как описано в этой статье. Затем мы объединяем признаки для каждой 1 секунды путем простой конкатенации и получаем 640-мерный вектор признаков. Мы объединяем 200 таких функций, которые преобразуют почти 3,5-минутные видеоданные и создают матрицу функций размером 640x200.

Обучение и оценка моделей

Мы можем рассматривать эти матрицы признаков как изображения и обучить CNN классифицировать каждую матрицу признаков в один из 5 классов. Мы используем стандартную архитектуру, используемую в LeNet, за исключением того, что мы используем активацию relu вместо сигмоидальной, а также мы вводим отсев 0,5 после каждого слоя. В качестве оптимизатора мы используем оптимизатор Adadelta. Мы обучаем модель для 10 эпох с размером партии 16. Модель дает хорошую сходимость после 5 эпох, и я думаю, что это связано с характером дискриминации признаков. Мы оцениваем модель на 1000 протянутых видео и добиваемся точности 94%. Это очень многообещающий результат.

Заключение и дальнейшая работа

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

Обо мне

В настоящее время я работаю в компании по искусственному интеллекту, базирующейся в Бангалоре, под названием Cogknit Semantics. Мы работаем над проблемами речи, компьютерного зрения и НЛП. Мы создали очень хорошие решения для любых проблем с речью, изображением или НЛП. Мы опубликовали множество статей как на национальных, так и на международных конференциях. Наша команда по озвучиванию заняла второе место в создании системы распознавания речи для 3 индийских языков, проводимой Microsoft. Не стесняйтесь общаться с нами. Посетите сайт нашей компании здесь.