เราเผยแพร่บทความเกี่ยวกับ arXiv
ฮิโรคัตสึ คาตะโอกะ, เทนกะ วากามิยะ, เคนโช ฮาระ และ ยูทากะ ซาโต้
"ชุดข้อมูลขนาดใหญ่จะเพิ่มประสิทธิภาพ CNN 3D Spatiotemporal ต่อไปได้หรือไม่",
พิมพ์ล่วงหน้า arXiv, arXiv:2004.04968, 2020
เราอัปโหลดโมเดลที่ได้รับการฝึกล่วงหน้าที่อธิบายไว้ในเอกสารนี้ รวมถึง ResNet-50 ที่ได้รับการฝึกล่วงหน้าบนชุดข้อมูลที่รวมกับ Kinetics-700 และ Moments in Time
เราอัปเดตสคริปต์ของเราอย่างมาก หากคุณต้องการใช้เวอร์ชันเก่าในการทำซ้ำกระดาษ CVPR2018 ของเรา คุณควรใช้สคริปต์ในสาขา CVPR2018
การอัปเดตนี้มีดังนี้:
นี่คือรหัส PyTorch สำหรับเอกสารต่อไปนี้:
ฮิโรคัตสึ คาตะโอกะ, เทนกะ วากามิยะ, เคนโช ฮาระ และ ยูทากะ ซาโต้
"ชุดข้อมูลขนาดใหญ่จะเพิ่มประสิทธิภาพ CNN 3D Spatiotemporal ต่อไปได้หรือไม่",
พิมพ์ล่วงหน้า arXiv, arXiv:2004.04968, 2020
เคนโช ฮาระ, ฮิโรคัตสึ คาตาโอกะ และ ยูทากะ ซาโต
"สู่แนวทางปฏิบัติที่ดีในการรับรู้การกระทำด้วย Convolutions Spatiotemporal 3D",
การดำเนินการของการประชุมนานาชาติว่าด้วยการจดจำรูปแบบ หน้า 2516-2521 2018
เคนโช ฮาระ, ฮิโรคัตสึ คาตาโอกะ และ ยูทากะ ซาโต
"Spatiotemporal 3D CNN สามารถย้อนรอยประวัติของ 2D CNN และ ImageNet ได้หรือไม่",
การดำเนินการของการประชุม IEEE ว่าด้วยการมองเห็นคอมพิวเตอร์และการจดจำรูปแบบ, หน้า 6546-6555, 2018
เคนโช ฮาระ, ฮิโรคัตสึ คาตาโอกะ และ ยูทากะ ซาโต
"การเรียนรู้คุณลักษณะ Spatio-Temporal ด้วยเครือข่าย 3D Residual สำหรับการจดจำการกระทำ",
การดำเนินการของการประชุมเชิงปฏิบัติการ 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
FFmpeg, FFprobe
หลาม 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 คลาส) ด้วยเธรด CPU 4 ตัว (สำหรับการโหลดข้อมูล)
ขนาดชุดคือ 128
บันทึกโมเดลทุกๆ 5 ยุค GPU ทั้งหมดใช้สำหรับการฝึกอบรม หากคุณต้องการส่วนหนึ่งของ GPU ให้ใช้ 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