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

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

Обычно для распознавания действий исследователи используют несколько методов. Есть отличная статья, в которой освещаются разные подходы к этой задаче: от сверточных нейронных сетей (CNN) до современных методов. Сначала мы попытались использовать OpenPose, но он не мог распознавать действия в реальном времени - важная функция для анализа эмоций. Более того, нам приходилось выявлять даже самые незначительные перемещения, а существующие сети не подходили для этой задачи: показатели точности предполагают, что они, вероятно, будут лгать. Что совершенно очевидно, поскольку они зависят от задачи.

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

Шаг 1. Сокращение времени обучения сети - предварительное обучение

Одна из проблем с обучением 3D CNN заключается в том, что они требуют достаточно большого количества размеченных примеров. По сравнению с 2D, 3D-сети имеют намного больше параметров, что приводит к переобучению небольших наборов данных. Трехмерные сети можно научить запоминать определенные примеры, но они не делают обобщения для всех наборов данных, поэтому многие действия попадают в неправильные классы.

Чтобы избежать этой проблемы, мы можем выбрать правильные параметры для стратегии инициализации и просто настроить нашу сеть на доступном помеченном наборе данных. Мы использовали метод Temporal 3D ConvNet, предложенный Али Диба и др. (2018). Мы использовали стратегию предварительной настройки, думая, что мы можем получить предварительно обученную 2D CNN и передать знания в 3D CNN. Мы предварительно обучили замороженный 2D CNN N1 и случайным образом инициализировали 3D CNN N2, используя метод, описанный в Углубляясь в выпрямители: Превосходя человеческий уровень производительности по классификации ImageNet с помощью Он и др. (2019) .

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

Затем мы создали двухпотоковую сеть с N1 и N2 как отдельными потоками, объединив последние уровни FC обеих сетей, которые, в свою очередь, подключены к два слоя FC с размерами 512 и 128 (fc1, fc2) и последний слой двоичного классификатора. Мы использовали простой двоичный (0/1) классификатор соответствия: для пары кадров X - чтобы решить, принадлежат ли пары к одному классу или нет. NB: исходный метод использует объединение слоев N1 и N2 FC, но наши эксперименты показали, что абсолютная разница работает лучше. Большим преимуществом этого метода является то, что он не требует наличия помеченных данных. В нашем эксперименте мы использовали около 300К немаркированных видео.

Шаг 2. Выбор архитектуры - 3D CNN.

На этом этапе мы решаем проблему инициализации весов, но какую модель лучше принять?

Что ж, в отличие от статьи [1] мы выбрали ResNeXt3D-101 (описанную в статье [2]) вместо модели T3D, потому что она показала лучшую производительность на трех стандартных наборах данных: UCF-101, HMDB- 51 и Кинетика .

Шаг 3. Извлечение хороших функций - L2-softmax

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

Для извлечения признаков мы выбрали метод, описанный в статье [4]. Этот метод предлагает добавить нормализацию L2 к выходному слою FC сети (рисунок 1).

Идея метода заключается в том, что L2-нормализация распределяет классы на гиперсфере размерности D так, чтобы любые два центра классов находились на расстоянии не менее 90◦. При этом выбор правильного параметра α играет решающую роль в обучении сети. При низком значении α сеть не будет сходиться: причина в том, что гиперсфера с малым радиусом (α) имеет ограниченную площадь поверхности для встраивания объектов из одного и того же класса вместе и объектов из разных классов на большом расстоянии друг от друга. При слишком высоком значении α этот метод не повлияет на характеристики из-за ослабления ограничения L2.

Здесь мы формулируем теоретическую нижнюю оценку α (см. Статью [4]). Предположим, что у нас есть C = 4 класса, распределенные на окружности радиуса α. Мы предполагаем, что веса классификатора (Wi) являются единичным вектором, указывающим в направлении их соответствующих центров классов. Средняя вероятность softmax p для правильной классификации признака определяется выражением

Игнорируя термин e- и обобщая его для классов C, средняя вероятность становится:

Рисунок 3 (ниже) отображает оценку вероятности как функцию параметра α для различного количества классов C. Мы можем сделать вывод, что для достижения заданной вероятности классификации (скажем, p = 0,9), нам нужно иметь более высокое значение α для большего C.

Учитывая количество классов C для набора данных, мы можем получить нижнюю границу α, чтобы получить оценку вероятности p, используя

Шаг 4. Выбор наборов данных для классификации движения

Как мы упоминали ранее, одной из проблем в задаче распознавания действий является существующая несогласованность в наборах данных: в разных наборах данных одни и те же классы могут быть помечены по-разному. Стандартные наборы данных (UCF-101, HMDB-51, Kinetics, AVA, ActivityNet и т. Д.) Используют видео, скопированные с видеоплатформ (Youtube, Flickr, Vine и т. Д.) Или из сцен фильмов.

Мы вручную выбрали разные классы из наборов данных STAIR [5], HACS [6] и NTU [7]. С помощью этого метода мы получили примерно 200 классов повседневных действий человека. Вы можете увидеть визуализацию наших результатов на рисунке 4. Некоторые действия совпадали. Например, «пятерка» и «рукопожатие» попали в один и тот же класс, но в целом сеть классифицировала действия довольно четко.

Авторы: Кирилл Жингалов, специалист по машинному обучению Neurodata Lab, Елизавета Зайцева, SMM-специалист Neurodata Lab.

использованная литература

  1. Temporal 3D ConvNets: новая архитектура и трансферное обучение для классификации видео (https://arxiv.org/abs/1711.08200)
  2. Углубляясь в выпрямители: превосходя человеческий уровень производительности по классификации ImageNet (https://arxiv.org/abs/1502.01852)
  3. Могут ли пространственно-временные 3D CNN повторить историю 2D CNN и ImageNet? Https://arxiv.org/abs/1711.09577
  4. L2-ограниченная потеря Softmax для дискриминационной проверки лица (https://arxiv.org/abs/1703.09507)
  5. Набор данных ЛЕСТНИЦЫ. URL: https://actions.stair.center/
  6. Набор данных HACS. URL: http://hacs.csail.mit.edu/
  7. Набор данных NTU. URL: http://rose1.ntu.edu.sg/datasets/actionrecognition.asp