开源
3D ResNets:用于动作识别的3D实现
来源:元经纪     阅读:1125
网站管理员
发布于 2023-03-16 09:14
查看主页

概述

用于动作识别的 3D ResNets (CVPR 2018)。

预训练模型

此处提供预训练模型。所有模型都在 Kinetics-700 ( K )、Moments in Time ( M )、STAIR-Actions ( S ) 或它们的合并数据集(KMKSMSKMS) 上进行训练。 如果您想微调数据集上的模型,您应该指定以下选项。

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

此处仍然提供旧的预训练模型。 但是,需要进行一些修改才能在当前脚本中使用旧的预训练模型。

要求

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

conda install pytorch torchvision cudatoolkit=10.1 -c soumith
  • FFmpeg, FF探针

  • python3

Preparation

ActivityNet

  • 使用官方爬虫下载视频。
  • 使用以下方法将 avi 文件转换为 jpg 文件util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs mp4_video_dir_path jpg_video_dir_path activitynet
  • 将 fps 信息添加到 json 文件中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
  • 使用以下方法将 avi 文件转换为 jpg 文件util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs mp4_video_dir_path jpg_video_dir_path kinetics
  • 使用类似于ActivityNet的json格式生成注释文件util_scripts/kinetics_json.py
    • CSV 文件 (kinetics_{train, val, test}.csv) 包含在爬虫中。
python -m util_scripts.kinetics_json csv_dir_path 700 jpg_video_dir_path jpg dst_json_path

UCF-101

  • 在此处下载视频和训练/测试拆分。
  • 使用以下方法将 avi 文件转换为 jpg 文件util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs avi_video_dir_path jpg_video_dir_path ucf101
  • 使用类似于ActivityNet的json格式生成注释文件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

HMDB-51

  • 在此处下载视频和训练/测试拆分。
  • 使用以下方法将 avi 文件转换为 jpg 文件util_scripts/generate_video_jpgs.py
python -m util_scripts.generate_video_jpgs avi_video_dir_path jpg_video_dir_path hmdb51
  • 使用类似于ActivityNet的json格式生成注释文件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

使用 4 个 CPU 线程(用于数据加载)在 Kinetics-700 数据集(700 个类)上训练 ResNets-50。 批量大小为 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

使用经过训练的模型 (~/data/results/save_200.pth.) 计算每个视频的前 5 类概率。 请注意,它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

评估识别结果的 top-1 视频准确度 (~/data/results/val.json)。

python -m util_scripts.eval_accuracy ~/data/kinetics.json ~/data/results/val.json --subset val -k 1 --ignore

在 UCF-101 上微调预训练模型 (~/data/models/resnet-50-kinetics.pth) 的 fc 层。

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

[/hidecontent]

 
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
发放3000万元消费券 滨江“以旧换新”送上门
SpaceX星舰第七次试飞发射!第二代星舰飞船首秀
Win10用户不升Win11后果严重:超60%的PC将存在安全隐患
eucalyptus:用于构建与 Amazon Web Services 兼容的私有云和混合云的开源软件
全国20个产业带500家工厂参展 杭州国际跨境电商交易博览会举行

首页

分类

定制方案

消息

我的