لقد نشرنا ورقة بحثية على arXiv.
هيروكاتسو كاتاوكا، وتنجا واكاميا، وكينشو هارا، ويوتاكا ساتوه،
“هل ستؤدي مجموعات البيانات الضخمة إلى تعزيز شبكات CNN ثلاثية الأبعاد الزمانية المكانية”،
نسخة أولية من arXiv، arXiv:2004.04968، 2020.
لقد قمنا بتحميل النماذج المدربة مسبقًا الموضحة في هذه الورقة بما في ذلك ResNet-50 المدربة مسبقًا على مجموعة البيانات المدمجة مع Kinetics-700 وMoments in Time.
لقد قمنا بتحديث نصوصنا بشكل ملحوظ. إذا كنت تريد استخدام الإصدارات الأقدم لإعادة إنتاج ورقة CVPR2018، فيجب عليك استخدام البرامج النصية في فرع CVPR2018.
يتضمن هذا التحديث ما يلي:
هذا هو رمز PyTorch للأوراق التالية:
هيروكاتسو كاتاوكا، وتنجا واكاميا، وكينشو هارا، ويوتاكا ساتوه،
“هل ستؤدي مجموعات البيانات الضخمة إلى تعزيز شبكات CNN ثلاثية الأبعاد الزمانية المكانية”،
نسخة أولية من arXiv، arXiv:2004.04968، 2020.
كينشو هارا، هيروكاتسو كاتاوكا، ويوتاكا ساتوه،
"نحو ممارسة جيدة للتعرف على الإجراءات باستخدام التلافيفات الزمانية المكانية ثلاثية الأبعاد"،
وقائع المؤتمر الدولي للتعرف على الأنماط، الصفحات 2516-2521، 2018.
كينشو هارا، هيروكاتسو كاتاوكا، ويوتاكا ساتوه،
"هل يمكن لشبكات CNN ثلاثية الأبعاد الزمانية المكانية تتبع تاريخ شبكات 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
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 فئة) مع 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
احسب احتمالات الفئة الخمسة الأولى لكل فيديو باستخدام نموذج مدرب (~/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
قم بتقييم دقة الفيديو الأولى لنتيجة التعرف (~/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