Wir haben einen Artikel auf arXiv veröffentlicht.
Hirokatsu Kataoka, Tenga Wakamiya, Kensho Hara und Yutaka Satoh,
„Würden Datensätze im Mega-Maßstab raumzeitliche 3D-CNNs weiter verbessern“,
arXiv-Vorabdruck, arXiv:2004.04968, 2020.
Wir haben die in diesem Dokument beschriebenen vorab trainierten Modelle hochgeladen, einschließlich ResNet-50, das auf dem kombinierten Datensatz mit Kinetics-700 und Moments in Time vorab trainiert wurde.
Wir haben unsere Skripte erheblich aktualisiert. Wenn Sie ältere Versionen zur Reproduktion unseres CVPR2018-Papiers verwenden möchten, sollten Sie die Skripte im CVPR2018-Zweig verwenden.
Dieses Update beinhaltet Folgendes:
Dies ist der PyTorch-Code für die folgenden Artikel:
Hirokatsu Kataoka, Tenga Wakamiya, Kensho Hara und Yutaka Satoh,
„Würden Datensätze im Mega-Maßstab raumzeitliche 3D-CNNs weiter verbessern“,
arXiv-Vorabdruck, arXiv:2004.04968, 2020.
Kensho Hara, Hirokatsu Kataoka und Yutaka Satoh,
„Auf dem Weg zu bewährten Verfahren zur Aktionserkennung mit raumzeitlichen 3D-Faltungen“,
Proceedings of the International Conference on Pattern Recognition, S. 2516-2521, 2018.
Kensho Hara, Hirokatsu Kataoka und Yutaka Satoh,
„Können raumzeitliche 3D-CNNs die Geschichte von 2D-CNNs und ImageNet nachvollziehen?“,
Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, S. 6546-6555, 2018.
Kensho Hara, Hirokatsu Kataoka und Yutaka Satoh,
„Lernen von räumlich-zeitlichen Merkmalen mit 3D-Restnetzwerken zur Aktionserkennung“,
Vorträge des ICCV-Workshops zu Aktions-, Gesten- und Emotionserkennung, 2017.
Dieser Code umfasst Schulungen, Feinabstimmungen und Tests zu Kinetik, Momenten in der Zeit, ActivityNet, UCF-101 und HMDB-51.
Wenn Sie diesen Code oder vorab trainierte Modelle verwenden, geben Sie bitte Folgendes an:
@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 } ,
}
Vorgefertigte Modelle sind hier verfügbar.
Alle Modelle werden auf Kinetics-700 ( K ), Moments in Time ( M ), STAIR-Actions ( S ) oder zusammengeführten Datensätzen davon ( KM , KS , MS , KMS ) trainiert.
Wenn Sie die Modelle in Ihrem Datensatz verfeinern möchten, sollten Sie die folgenden Optionen angeben.
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
Hier sind noch alte vortrainierte Modelle verfügbar.
Allerdings sind einige Modifikationen erforderlich, um die alten vorab trainierten Modelle in den aktuellen Skripten verwenden zu können.
conda install pytorch torchvision cudatoolkit=10.1 -c soumith
FFmpeg, FFprobe
Python 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
hinzu 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
eine Anmerkungsdatei im JSON-Format ähnlich wie bei ActivityNetpython -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
eine Anmerkungsdatei im JSON-Format ähnlich wie bei ActivityNetannotation_dir_path
enthält 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
eine Anmerkungsdatei im JSON-Format ähnlich wie bei ActivityNetannotation_dir_path
enthält brush_hair_test_split1.txt, ... python -m util_scripts.hmdb51_json annotation_dir_path jpg_video_dir_path dst_json_path
Gehen Sie davon aus, dass die Struktur der Datenverzeichnisse wie folgt ist:
~/
data/
kinetics_videos/
jpg/
.../ (directories of class names)
.../ (directories of video names)
... (jpg files)
results/
save_100.pth
kinetics.json
Bestätigen Sie alle Optionen.
python main.py -h
Trainieren Sie ResNets-50 auf dem Kinetics-700-Datensatz (700 Klassen) mit 4 CPU-Threads (zum Laden von Daten).
Die Chargengröße beträgt 128.
Speichern Sie Modelle alle 5 Epochen. Für das Training werden alle GPUs verwendet. Wenn Sie einen Teil der GPUs wünschen, verwenden Sie 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
Setzen Sie das Training ab Epoche 101 fort. (~/data/results/save_100.pth ist geladen.)
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
Berechnen Sie die Top-5-Klassenwahrscheinlichkeiten jedes Videos mithilfe eines trainierten Modells (~/data/results/save_200.pth.)
Beachten Sie, dass inference_batch_size
klein sein sollte, da die tatsächliche Batchgröße durch inference_batch_size * (n_video_frames / inference_stride)
berechnet wird.
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
Bewerten Sie die Top-1-Videogenauigkeit eines Erkennungsergebnisses (~/data/results/val.json).
python -m util_scripts.eval_accuracy ~ /data/kinetics.json ~ /data/results/val.json --subset val -k 1 --ignore
Feinabstimmung der fc-Schichten eines vorab trainierten Modells (~/data/models/resnet-50-kinetics.pth) auf 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