UCF101数据集提取帧+TDN部署(Anaconda+Python3.7+Pytorch)

  • 前言
  • 一、安装MMAction2
    • 1.引入库
    • 2.环境搭建
    • 3.安装
    • 4.准备原始数据集
    • 5.制作视频提取帧数据集
  • 二、部署TDN
    • 1.引入库
    • 2.读入数据
    • 3.训练模型
    • 4.查看结果
  • 本人实测结果

前言

将TDN部署在个人电脑上,并使用mmaction2处理的UCF101进行训练。
本人电脑环境为win10+CUDA10.2+Cudnn7.0
CUDA和Cudnn请自行选择合适的版本安装


一、安装MMAction2

MMAction2:https://github.com/open-mmlab/mmaction2
MMAction2是一个基于PyTorch的视频理解开源工具箱。 它是OpenMMLab项目的一部分。 本文需要用到提取帧的功能,详细说明请详见:https://github.com/open-mmlab/mmaction2/blob/master/docs/data_preparation.md中的Extract frames。

1.引入库

自行下载MMaction2的代码部分。git clone(使用git bash)或者下载zip后解压。

2.环境搭建

在Anaconda中新建环境TDN,Python版本为3.7。
本人系统环境为CUDA10.2,MMaction2要求Pytorch版本大于1.3,因此打开Pytorch官网安装:

具体请根据自己电脑的系统和CUDA版本来选择。

3.安装

**如觉得本文的安装步骤不够详细,那么详细的安装步骤请参考官方安装:https://github.com/open-mmlab/mmaction2/blob/master/docs/install.md

首先在anaconda中打开TDN环境:

安装Pytorch:Pytorch安装指令参考上一小节
然后输入:

pip install git+https://github.com/open-mmlab/mim.git
mim install mmaction2 -f https://github.com/open-mmlab/mmaction2.git

此处如果出现文件权限相关问题:参见https://cloud.tencent.com/developer/article/1740284

实在解决不了可以试试方法二:
同样在anaconda中打开TDN环境
输入:

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8/index.html

注意-f后面的参数中的cu102和torch1.8要更改为自己安装的版本(本人安装的是CUDA10.2所以此处是cu102,torch同理)

pip install mmcv-full

然后打开mmaction2所在文件夹(在terminal中使用cd命令),例如:

然后运行:

pip install -r requirements/build.txt
python setup.py develop

即安装完成

4.准备原始数据集

UCF101介绍:https://www.crcv.ucf.edu/data/UCF101.php
下载UCF101数据集:https://www.crcv.ucf.edu/data/UCF101/UCF101.rar
下载好的数据集应为:

其中UCF101中是视频文件,大约6.7G
新建三个文件夹:

①将UCF101TrainTestSplits-RecognitionTask->ucfTrainTestlist中的文件:

移动到annotations文件夹中
②将UCF101中的所有文件夹(每一个文件夹中都是对应分类的视频文件):

移动到Videos文件夹中
③rawframes为空文件夹,用来存放提取的视频帧
④将这三个文件夹移动到mmaction2\tools\data\ucf101文件夹中

5.制作视频提取帧数据集

打开TDN环境并进入mmaction2文件夹(后面涉及到进入某某文件夹不再贴图提示,均为相同操作):

执行:

cd tools/data #进入mmaction2\tools\data文件夹
python build_rawframes.py ucf101/videos ucf101/rawframes --task rgb  --num-gpu 1 --level 2 --ext avi --use-opencv --new-short 0 --new-width 320 --new-height 240

等待提取完成。

完成后生成训练模型所需的list,执行:

cd ..#进入mmaction2\tools文件夹
python data/build_file_list.py ucf101 data/ucf101/rawframes/ --level 2 --format rawframes --shuffle
python data/build_file_list.py ucf101 data/ucf101/videos/ --level 2 --format videos --shuffle

得到:

即完成数据集构建

二、部署TDN

1.引入库

TDN: Temporal Difference Networks for Efficient Action Recognition (CVPR 2021)。
代码部分自行下载
打开TDN环境,安装所需库:

pip install TensorboardX
pip install tqdm
pip install scikit-learn
pip install ffmpeg
pip install decord

2.读入数据

①修改dataset_config.py中的代码

ROOT_DATASET = '自己的数据库的位置'
#例如:ROOT_DATASET = 'E:/MyGithub/mmaction2/tools/data/ucf101/'
在def return_ucf101(modality):中
filename_imglist_train = "ucfTrainTestlist/ucf101_rgb_train_split_3.txt"
filename_imglist_val = "ucfTrainTestlist/ucf101_rgb_val_split_3.txt"
修改为刚才生成的文件
filename_imglist_train = "ucf101_train_split_3_rawframes.txt"
filename_imglist_val = "ucf101_val_split_3_rawframes.txt"
#这些txt文件都在E:\MyGithub\mmaction2\tools\data\ucf101中

②修改dataset.py中的代码

在def __getitem__(self, index):中
video_path = directory+".mp4"
将此处修改为video_path ='videos文件夹所在路径'+directory+'.avi'
#例如:video_path = 'E:/MyGithub/mmaction2/tools/data/ucf101/videos/'+ directory+".avi"

3.训练模型

进入TDN文件夹,运行:

python -m torch.distributed.launch --master_port 12347 --nproc_per_node=1  main.py  ucf101  RGB --arch resnet50 --num_segments 1 --gd 20 --lr 0.01 --lr_scheduler step --lr_steps  30 45 55 --epochs 60 --batch-size 8  --wd 5e-4 --dropout 0.5 --consensus_type=avg --eval-freq=1 -j 4 --npb

如果遇到correct_k = correct[:k].view(-1).float().sum(0)的错误,可以将源代码修改为

correct_k = correct[:k].contiguous().view(-1).float().sum(0)

4.查看结果

1.测试模型

python test_models_center_crop.py ucf101 --archs='resnet50' --weights E:/MyGithub/TDN/checkpoint/TDN__ucf101_RGB_resnet50_avg_segment1_e60/best.pth.tar  --test_segments=1  --test_crops=1 --batch_size=16  --gpus 0 --output_dir E:/MyGithub/TDN/pkl -j 0 --clip_index=0

注意:
–weights 后面的路径请更换为训练模型生成的在ckeckpoint文件夹中的best.pth.tar的路径(/checkpoint/TDN__ucf101_RGB_resnet50_avg_segment1_e60/best.pth.tar)
–output_dir后面的路径请更换为自己创建的存放pkl的文件夹(/pkl)

2.显示总体结果

python pkl_to_results.py --num_clips 1 --test_crops 1 --output_dir E:/MyGithub/TDN/pkl

–output_dir后面的路径请更换为自己创建的存放pkl的文件夹(/pkl)


本人实测结果

1.测试模型

2.显示总体结果

UCF101数据集提取帧+TDN部署(Anaconda+Python3.7+Pytorch)相关推荐

  1. Windows10+anaconda,python3.5, 安装glove-python

    Windows10+anaconda,python3.5, 安装glove-python 安装glove 安装之前 Visual C++ 2015 Build Tools 开始安装 安装glove 最 ...

  2. Windows anaconda python3 import ssl报错的解决方案

    Windows anaconda python3 import ssl报错的解决方案_dailinqing1984的博客-CSDN博客

  3. COCO数据集提取自己需要的类,转VOC

    github:https://github.com/zcc720/COCO2VOC.git 原文地址:http://www.manongjc.com/article/28607.html 接上篇VOC ...

  4. Anaconda Python3.6 OpenCV4.1.0 Ubuntu 16.04源码编译

    Anaconda Python3.6 OpenCV4.1.0 Ubuntu 16.04源码编译 转载于:https://blog.csdn.net/phdsky/article/details/782 ...

  5. 阿里云服务器Ubuntu16.04安装Anaconda(python3.6)和本地远程连接jupyter

    一.ubuntu16.04安装Anaconda(python3.6) 1.上传Anaconda 我选择的是在本地下载了anaconda的linux版本,之后用xftp上传到服务器上 下载地址:http ...

  6. Linux 环境部署|Anaconda及Tensorflow

    Linux 环境部署|Anaconda及Tensorflow Linux系统python虚拟环境及HanLP部署(https://duanzhihua.blog.csdn.net/article/de ...

  7. python计算汽车的平均油耗_用python对汽车油耗进行数据分析(anaconda python3.6完全跑通)...

    原标题:用python对汽车油耗进行数据分析(anaconda python3.6完全跑通) 编者按:前两天我们微信发了一篇文章<用python对汽车油耗进行数据分析 >,有一网友学习后用 ...

  8. KITTI数据集提取行人label

    KITTI数据集提取行人label,同时将人的朝向转换到360范围(0,2π). def get_person(label_path, new_annotation_path, debug_show_ ...

  9. 全网最简约的Anaconda+Python3.7安装教程Win10(百分百成功)

    全网最简约的Anaconda+Python3.7安装教程Win10(百分百成功)

  10. OpenCV对图片数据集提取HOG特征并用SVM进行识别

    OpenCV对图片数据集提取HOG特征并用SVM进行识别 代码编程环境 设置图片大小源代码 提取HOG源代码 SVM识别源代码 实验结果 代码编程环境 Windows系统: OpenCV3.4.1: ...

最新文章

  1. 不使用任何框架实现CNN网络
  2. 俄罗斯网络安全治理及其启示
  3. Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示
  4. jQuery之简单的表单验证
  5. Angular全套知识讲解,错过必悔!
  6. 乐观锁与悲观锁的应用场景
  7. 【C语言】矩阵的最大值(指针专题)
  8. out memory 内存溢出总结
  9. cmd格式化(重置)磁盘/U盘的操作流程
  10. 集线器、网桥、交换机的区别(详解干货!!!)
  11. 纯前端canvas手绘海报
  12. 使用eclipse时出现cannot access compilation unit的解决方法
  13. linux部署qq机器人记录
  14. Unicode双向算法详解(bidi算法)(二)
  15. 一个屌丝程序猿的人生(五十一)
  16. Flume跨服务器采集数据
  17. Camera两种快门方式区别
  18. Redis哨兵模式(一主二从三哨兵)
  19. 华为云冰山安全,让用户安心用云
  20. DI(Dependence Injection)依赖注入

热门文章

  1. matlab画随机信号,(最新整理)随机信号处理基础matlab仿真
  2. 三维球体史密斯圆图的发展与理解,史密斯圆图的最新发展
  3. 2016年计算机考研大纲,2016考研计算机大纲解析
  4. 定时任务时间表达式的规则
  5. python调用按键精灵插件_按键精灵必须掌握的命令之插件命令
  6. 2021京东商城APP手机模板 HTML+CSS+JavaScript
  7. Python之猜数字游戏
  8. 小程序开源框架选型及原理介绍
  9. 全网最详细ENSP安装教程,零基础网工小白必看!
  10. 计算机如何共享桌面,怎么将自己的台式电脑屏幕与多人共享