Этот репозиторий содержит обученные модели, зарегистрированные в статье «Quo Vadis, распознавание действий? Новая модель и набор данных кинетики» Хоао Каррейры и Эндрю Зиссермана. Документ был опубликован на ARXIV в мае 2017 года и будет опубликована как конференция CVPR 2017.
«Quo vadis» представил новую архитектуру для видео -классификации, надутых 3D Convnet или i3d. Здесь мы выпускаем модели «Начало v1 I3D», обученные для обучения набора данных кинетики.
В нашей статье мы сообщили о самых современных результатах на наборах данных UCF101 и HMDB51 из точной настройки этих моделей. Модели I3D, предварительно обученные кинетике, также заняли первое место в Charades Challenge CVPR 2017.
Репозиторий также теперь включает в себя предварительно обученную контрольную точку с использованием входов RGB и обученного с нуля на кинетике-600.
Новое : предварительная обработка видео, которую мы использовали, теперь открыта Google. Чтобы настроить его, проверьте эти инструкции в Google MediaPipe Repo.
Отказ от ответственности: это не официальный продукт Google.
Сначала следуйте инструкциям по установке сонета.
Затем клонируйте этот репозиторий, используя
$ git clone https://github.com/deepmind/kinetics-i3d
Запустите пример кода, используя
$ python evaluate_sample.py
С флагами по умолчанию это создает модель с двумя потоками I3D, загружает предварительно обученные контрольные точки I3D в сеанс TensorFlow, а затем проходит пример видео через модель. Пример видео было предварительно обработано, с предоставленными массивами RGB и Flow Numpy (см. Подробнее ниже).
Сценарий выводит норму тензора Logits, а также ведущие 20 классов кинетики, предсказанные моделью с их вероятностью и значениями логита. Используя флаги по умолчанию, выход должен напоминать следующие различия в численной точности:
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
Тестовый файл можно запустить с помощью
$ python i3d_test.py
Это проверяет, что модель может быть построена правильно и создает правильные формы.
Модель по умолчанию была предварительно обучена на ImageNet, а затем в кинетике; Другие флаги позволяют загружать модель, предварительно обученную только на кинетике, и для выбора только RGB или потока потока. Script multi_evaluate.sh
показывает, как запустить все эти комбинации, генерируя выборочный выход в каталоге out/
.
data/checkpoints
содержит четыре контрольно -пропускных пункта, которые были обучены. Те, которые только что обучаются кинетике, инициализируются с использованием инициализаторов сонета / tensorflow по умолчанию, в то время как те, которые предварительно обучены на ImageNet, инициализируются путем начальной загрузки фильтров из модели 2D-vection-V1 в 3D, как описано в статье. Важно отметить, что потоки RGB и потока обучаются отдельно, каждый с потерей классификации Softmax. Во время тестирования мы объединяем два потока, добавляя логиты с одинаковым весом, как показано в коде evalute_sample.py
.
Мы тренируемся с использованием синхронного SGD с использованием tf.train.SyncReplicasOptimizer
. Для каждого из потоков RGB и потоков мы объединяем 64 реплики с 4 резервными репликами. Во время тренировки мы используем 0,5 выброса и применяем паттерный шкаф с размером мини-министра 6. Используемый оптимизатор-это SGD со значением импульса 0,9, и мы используем распад веса 1E-7. Модели RGB и потока обучаются для шагов 115K и 155K соответственно, со следующими графиками обучения.
RGB:
Поток:
Это связано с тем, что модели потока были определены для того, чтобы потребовать большего обучения после начального прогона 115 тыс. Шагов.
Модели обучаются с использованием тренировочного разделения кинетики. На тестовом наборе кинетики мы получаем следующую точность TOP-1 / TOP-5:
Модель | ImageNet + Кинетика | Кинетика |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
Поток-i3d | 63,4 / 84,9 | 61,5 / 83,4 |
Два потока i3d | 74.2 / 91.3 | 71.6 / 90.0 |
Выпуск набора данных кинетики DeepMind включал только идентификаторы YouTube и время начала и окончания клипов. Для образца данных здесь мы используем видео из набора данных UCF101, для которого все видео представлены в полном объеме. Используемое видео - v_CricketShot_g04_c01.mp4
, который можно загрузить с веб -сайта UCF101.
Наша предварительная обработка использует внутренние библиотеки, которые теперь были с открытым исходным кодом. Он выполняет следующее: для обоих потоков мы выбираем кадры со скоростью 25 кадров в секунду. Для кинетики мы дополнительно обрезаем видео в начало и окончание.
Для RGB видео изменяемое соотношение консервирования сохранения размером, так что наименьшее измерение составляет 256 пикселей, с билинейной интерполяцией. Затем значения пикселей пересекаются между -1 и 1. Во время тренировки мы случайным образом выбираем культуру изображения 224x224, в то время как во время теста мы выбираем культуру в центре 224x224 из видео. Таким образом, предоставленный файл .npy
имеет форму (1, num_frames, 224, 224, 3)
для RGB, соответствующий размеру партии 1.
Для потока потока, после выборки видео со скоростью 25 кадров в секунду, мы конвертируем видео в Greyscale. Мы применяем алгоритм оптического потока TV-L1, аналогичный этому коду от OpenCV. Значения пикселя усекаются до диапазона [-20, 20], затем пересекаются между -1 и 1. Мы используем только первые два выходных размера и применяем то же самое, что и для RGB. Таким образом, предоставленный файл .npy
имеет форму (1, num_frames, 224, 224, 2)
для потока, соответствующий размеру партии 1.
Вот GIF -файлы, показывающие предоставленные файлы .npy
. Из данных RGB мы добавили 1, а затем разделены на 2, чтобы спасти между 0 и 1. Для данных потока мы добавили третий канал всех 0, а затем добавили 0,5 ко всему массиву, так что результаты также находятся между 0 и 1
Для получения дополнительной информации о предварительной обработке, проверьте это, обратитесь к нашей статье или свяжитесь с авторами.
Брайан Чжан, Жоао Каррейра, Виорика Патрауэйн, Диего де Лас Касас, Хлоя Хиллиер и Эндрю Зиссерман помогли подготовить этот первоначальный релиз. Мы также хотели бы поблагодарить команды, стоящие за набором данных кинетики и оригинальную статью, на которой основана эта архитектура и код.
Чтобы внести свой вклад в этот репозиторий, вам сначала необходимо подписать лицензионное соглашение о лицензии Google (CLA), предусмотренное в файле Anforming.md. Затем мы сможем принять любые запросы на привлечение, хотя в настоящее время не стремимся расширяться на другие обученные модели.
По любым вопросам вы можете связаться с авторами бумаги "quo vadis", электронные письма которых указаны в газете.