文章目录
TSN实验环境
实验所需性能较高,这里选择在网络平台上进行实验。
注: 与在Linux系统不同,在此平台上运行命令需要在命令前加上!
一、准备工作
1.1 数据集准备
本次实验使用UCF101数据集
动作识别数据集,从youtube收集而得,共包含101类动作。其中每类动作由25个人做动作,每人做4-7组,共13320个视频,分辨率为320*240,共6.5G。
UCF101在动作的采集上具有非常大的多样性,包括相机运行、外观变化、姿态变化、物体比例变化、背景变化、光纤变化等。
在下面给出的下载链接中有官方对数据集更详细的介绍,这里不再赘述。
下载地址:https://www.crcv.ucf.edu/research/data-sets/ucf101/

下载完成后,UCF-101文件夹共101个子目录,其中每个子目录分别有若干相同动作的视频,ucfTrainTestlist文件夹下共有3中划分方式,在后续实验过程中自行选择。
1.2 代码准备
需要使用tsn-pytorch和mmaction的代码,这里直接从GitHub上拉取
- tsn-pytorch
!git clone --recursive https://github.com/yjxiong/tsn-pytorch - mmaction
!git clone --recursive https://github.com/open-mmlab/mmaction.git
二、处理数据
首先在mmaction/data/下创建一个UCF101文件夹,用于存放数据集相关文件,并建立如下四个目录

它们的作用为:
- annotations:ucf101之后进行分割训练集、测试集的依据文件
- rawframes:视频提帧后存放的文件目录
- videos:复制ucf101数据集中的101个文件目录(考虑平台存储空间和运行时间,这里仅拷贝3个)
2.1 提帧
进入mmaction/data_tools/目录下,查看视频提帧的代码文件

运行之前需要安装mmcv工具包,根据pytorch和cuda版本安装
!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
然后运行此命令,对videos目录下视频提帧,结果放在rawframes文件夹下
!python build_rawframes.py ../data/ucf101/videos ../data/ucf101/rawframes/ --level 2 --ext avi
这里只拷贝了UCF101中3种类型的视频,需要15分钟左右,提帧完成后在rawframes目录下会有3个对应的文件夹

这一步对每个视频进行帧率提取,将视频分割成图片,随机打开一个文件了,里面全部为视频中截取的图片

2.2 生成file_list
切换工作目录到mmaction/data_tools/ucf101/中,找到generate_filelist.sh

运行
!bash generate_filelist.sh

运行结束,会在ucf101目录下生成分割文件file_list。(这里批处理文件同时处理了videos,而我们需要的是划分rawframes,可以忽略videos)

打开其中一个文件,内容如下:

file_list中有三列,第一列代表文件的地址,第二列代表视频的帧数,第三列代表视频的类别。这里仅仅使用ucf101数据集的3个文件夹,所以类别只有0 1 2。
注意: 这一步运行可能出现缺少mmaction相关文件的错误,需要先将目录切换至mmaction下,找到setup.py文件,执行如下命令
!python setup.py install
</

最低0.47元/天 解锁文章
5133





