Kami menerbitkan makalah tentang arXiv.
Hirokatsu Kataoka, Tenga Wakamiya, Kensho Hara, dan Yutaka Satoh,
"Akankah Kumpulan Data Skala Besar Lebih Meningkatkan CNN 3D Spatiotemporal",
pracetak arXiv, arXiv:2004.04968, 2020.
Kami mengunggah model terlatih yang dijelaskan dalam makalah ini termasuk ResNet-50 yang dilatih sebelumnya pada kumpulan data gabungan dengan Kinetics-700 dan Moments in Time.
Kami memperbarui skrip kami secara signifikan. Jika Anda ingin menggunakan versi lama untuk mereproduksi makalah CVPR2018 kami, sebaiknya gunakan skrip di cabang CVPR2018.
Pembaruan ini mencakup hal-hal berikut:
Ini adalah kode PyTorch untuk makalah berikut:
Hirokatsu Kataoka, Tenga Wakamiya, Kensho Hara, dan Yutaka Satoh,
"Akankah Kumpulan Data Skala Besar Lebih Meningkatkan CNN 3D Spatiotemporal",
pracetak arXiv, arXiv:2004.04968, 2020.
Kensho Hara, Hirokatsu Kataoka, dan Yutaka Satoh,
"Menuju Praktik yang Baik untuk Pengenalan Tindakan dengan Konvolusi 3D Spatiotemporal",
Prosiding Konferensi Internasional tentang Pengenalan Pola, hal. 2516-2521, 2018.
Kensho Hara, Hirokatsu Kataoka, dan Yutaka Satoh,
"Dapatkah CNN 3D Spatiotemporal Menelusuri Sejarah CNN 2D dan ImageNet?",
Prosiding Konferensi IEEE tentang Visi Komputer dan Pengenalan Pola, hal. 6546-6555, 2018.
Kensho Hara, Hirokatsu Kataoka, dan Yutaka Satoh,
"Mempelajari Fitur Spatio-Temporal dengan Jaringan Residual 3D untuk Pengenalan Tindakan",
Prosiding Lokakarya ICCV tentang Aksi, Gestur, dan Pengenalan Emosi, 2017.
Kode ini mencakup pelatihan, penyesuaian, dan pengujian pada Kinetics, Moments in Time, ActivityNet, UCF-101, dan HMDB-51.
Jika Anda menggunakan kode ini atau model terlatih, harap kutip yang berikut:
@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 } ,
}
Model terlatih tersedia di sini.
Semua model dilatih pada Kinetics-700 ( K ), Moments in Time ( M ), STAIR-Actions ( S ), atau kumpulan data gabungannya ( KM , KS , MS , KMS ).
Jika Anda ingin menyempurnakan model pada kumpulan data Anda, Anda harus menentukan opsi berikut.
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
Model lama yang sudah dilatih sebelumnya masih tersedia di sini.
Namun, beberapa modifikasi diperlukan untuk menggunakan model lama yang telah dilatih sebelumnya dalam skrip saat ini.
conda install pytorch torchvision cudatoolkit=10.1 -c soumith
FFmpeg, penyelidikan FF
ular piton 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
mencakup 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
termasuk brush_hair_test_split1.txt, ... python -m util_scripts.hmdb51_json annotation_dir_path jpg_video_dir_path dst_json_path
Asumsikan struktur direktori data adalah sebagai berikut:
~/
data/
kinetics_videos/
jpg/
.../ (directories of class names)
.../ (directories of video names)
... (jpg files)
results/
save_100.pth
kinetics.json
Konfirmasikan semua opsi.
python main.py -h
Latih ResNets-50 pada kumpulan data Kinetics-700 (700 kelas) dengan 4 thread CPU (untuk memuat data).
Ukuran kumpulan adalah 128.
Simpan model setiap 5 periode. Semua GPU digunakan untuk pelatihan. Jika Anda ingin bagian dari GPU, gunakan 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
Lanjutkan Pelatihan dari epoch 101. (~/data/results/save_100.pth dimuat.)
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
Hitung probabilitas 5 kelas teratas dari setiap video menggunakan model terlatih (~/data/results/save_200.pth.)
Perhatikan bahwa inference_batch_size
harus kecil karena ukuran batch sebenarnya dihitung dengan 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
Evaluasi keakuratan video 1 teratas dari hasil pengenalan (~/data/results/val.json).
python -m util_scripts.eval_accuracy ~ /data/kinetics.json ~ /data/results/val.json --subset val -k 1 --ignore
Menyempurnakan lapisan fc dari model yang telah dilatih sebelumnya (~/data/models/resnet-50-kinetics.pth) di 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