Мы опубликовали статью об arXiv.
Хирокацу Катаока, Тенга Вакамия, Кеншо Хара и Ютака Сато,
«Будут ли мегамасштабные наборы данных способствовать дальнейшему улучшению пространственно-временных 3D CNN»,
Препринт arXiv, arXiv:2004.04968, 2020.
Мы загрузили предварительно обученные модели, описанные в этой статье, включая ResNet-50, предварительно обученную на объединенном наборе данных с Kinetics-700 и Moments in Time.
Мы существенно обновили наши скрипты. Если вы хотите использовать более старые версии для воспроизведения нашей статьи CVPR2018, вам следует использовать сценарии из ветки CVPR2018.
Это обновление включает в себя следующее:
Это код PyTorch для следующих статей:
Хирокацу Катаока, Тенга Вакамия, Кеншо Хара и Ютака Сато,
«Будут ли мегамасштабные наборы данных способствовать дальнейшему улучшению пространственно-временных 3D CNN»,
Препринт arXiv, arXiv:2004.04968, 2020.
Кеншо Хара, Хирокацу Катаока и Ютака Сато,
«На пути к передовой практике распознавания действий с помощью пространственно-временных 3D-сверток»,
Материалы Международной конференции по распознаванию образов, стр. 2516-2521, 2018.
Кеншо Хара, Хирокацу Катаока и Ютака Сато,
«Могут ли пространственно-временные 3D CNN проследить историю 2D CNN и ImageNet?»,
Материалы конференции IEEE по компьютерному зрению и распознаванию образов, стр. 6546-6555, 2018 г.
Кеншо Хара, Хирокацу Катаока и Ютака Сато,
«Изучение пространственно-временных особенностей с помощью остаточных трехмерных сетей для распознавания действий»,
Материалы семинара ICCV по распознаванию действий, жестов и эмоций, 2017 г.
Этот код включает в себя обучение, тонкую настройку и тестирование Kinetics, Moments in Time, ActivityNet, UCF-101 и HMDB-51.
Если вы используете этот код или предварительно обученные модели, укажите следующее:
@inproceedings { hara3dcnns ,
author = { Kensho Hara and Hirokatsu Kataoka and Yutaka Satoh } ,
title = { Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet? } ,
booktitle = { Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) } ,
pages = { 6546--6555 } ,
year = { 2018 } ,
}
Предварительно обученные модели доступны здесь.
Все модели обучены на Kinetics-700 ( K ), Moments in Time ( M ), STAIR-Actions ( S ) или их объединенных наборах данных ( KM , KS , MS , KMS ).
Если вы хотите точно настроить модели в своем наборе данных, вам следует указать следующие параметры.
r3d18_K_200ep.pth: --model resnet --model_depth 18 --n_pretrain_classes 700
r3d18_KM_200ep.pth: --model resnet --model_depth 18 --n_pretrain_classes 1039
r3d34_K_200ep.pth: --model resnet --model_depth 34 --n_pretrain_classes 700
r3d34_KM_200ep.pth: --model resnet --model_depth 34 --n_pretrain_classes 1039
r3d50_K_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 700
r3d50_KM_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 1039
r3d50_KMS_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 1139
r3d50_KS_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 800
r3d50_M_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 339
r3d50_MS_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 439
r3d50_S_200ep.pth: --model resnet --model_depth 50 --n_pretrain_classes 100
r3d101_K_200ep.pth: --model resnet --model_depth 101 --n_pretrain_classes 700
r3d101_KM_200ep.pth: --model resnet --model_depth 101 --n_pretrain_classes 1039
r3d152_K_200ep.pth: --model resnet --model_depth 152 --n_pretrain_classes 700
r3d152_KM_200ep.pth: --model resnet --model_depth 152 --n_pretrain_classes 1039
r3d200_K_200ep.pth: --model resnet --model_depth 200 --n_pretrain_classes 700
r3d200_KM_200ep.pth: --model resnet --model_depth 200 --n_pretrain_classes 1039
Здесь все еще доступны старые предварительно обученные модели.
Однако для использования старых предварительно обученных моделей в текущих сценариях необходимы некоторые изменения.
conda install pytorch torchvision cudatoolkit=10.1 -c soumith
ФФмпег, ФФпробе
Питон 3
util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs mp4_video_dir_path jpg_video_dir_path activitynet
util_scripts/add_fps_into_activitynet_json.py
python -m util_scripts.add_fps_into_activitynet_json mp4_video_dir_path json_file_path
video_directory/test
.util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs mp4_video_dir_path jpg_video_dir_path kinetics
util_scripts/kinetics_json.py
python -m util_scripts.kinetics_json csv_dir_path 700 jpg_video_dir_path jpg dst_json_path
util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs avi_video_dir_path jpg_video_dir_path ucf101
util_scripts/ucf101_json.py
annotation_dir_path
включает classInd.txt, trainlist0{1, 2, 3}.txt, testlist0{1, 2, 3}.txt python -m util_scripts.ucf101_json annotation_dir_path jpg_video_dir_path dst_json_path
util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs avi_video_dir_path jpg_video_dir_path hmdb51
util_scripts/hmdb51_json.py
annotation_dir_path
включает в себя Brush_hair_test_split1.txt, ... python -m util_scripts.hmdb51_json annotation_dir_path jpg_video_dir_path dst_json_path
Предположим, что структура каталогов данных следующая:
~/
data/
kinetics_videos/
jpg/
.../ (directories of class names)
.../ (directories of video names)
... (jpg files)
results/
save_100.pth
kinetics.json
Подтвердите все варианты.
python main.py -h
Обучите ResNets-50 на наборе данных Kinetics-700 (700 классов) с 4 потоками ЦП (для загрузки данных).
Размер пакета 128.
Сохраняйте модели каждые 5 эпох. Для обучения используются все графические процессоры. Если вам нужна часть графических процессоров, используйте CUDA_VISIBLE_DEVICES=...
.
python main.py --root_path ~ /data --video_path kinetics_videos/jpg --annotation_path kinetics.json
--result_path results --dataset kinetics --model resnet
--model_depth 50 --n_classes 700 --batch_size 128 --n_threads 4 --checkpoint 5
Продолжить обучение, начиная с эпохи 101. (~/data/results/save_100.pth загружен.)
python main.py --root_path ~ /data --video_path kinetics_videos/jpg --annotation_path kinetics.json
--result_path results --dataset kinetics --resume_path results/save_100.pth
--model_depth 50 --n_classes 700 --batch_size 128 --n_threads 4 --checkpoint 5
Рассчитайте вероятности топ-5 классов для каждого видео, используя обученную модель (~/data/results/save_200.pth.)
Обратите внимание, что inference_batch_size
должен быть небольшим, поскольку фактический размер пакета рассчитывается по формуле inference_batch_size * (n_video_frames / inference_stride)
.
python main.py --root_path ~ /data --video_path kinetics_videos/jpg --annotation_path kinetics.json
--result_path results --dataset kinetics --resume_path results/save_200.pth
--model_depth 50 --n_classes 700 --n_threads 4 --no_train --no_val --inference --output_topk 5 --inference_batch_size 1
Оцените топ-1 видео точности результата распознавания (~/data/results/val.json).
python -m util_scripts.eval_accuracy ~ /data/kinetics.json ~ /data/results/val.json --subset val -k 1 --ignore
Точная настройка слоев fc предварительно обученной модели (~/data/models/resnet-50-kinetics.pth) на UCF-101.
python main.py --root_path ~ /data --video_path ucf101_videos/jpg --annotation_path ucf101_01.json
--result_path results --dataset ucf101 --n_classes 101 --n_pretrain_classes 700
--pretrain_path models/resnet-50-kinetics.pth --ft_begin_module fc
--model resnet --model_depth 50 --batch_size 128 --n_threads 4 --checkpoint 5