新手上路,记录一下自己的学习过程,希望也能对你有所帮助。
1.数据集准备
参考官网给出的数据集准备教程
https://github.com/open-mmlab/mmaction2/blob/master/docs/data_preparation.md
参考ucf101准备数据集
mmaction2/toos/data/ucf101
1.1 准备视频数据
cd mmaction2/data
mkdir sketch(自己数据集的名称,我的是sketch)
cd sketch
视频数据目录结构:
data/
--sketch/
----videos/
------class1/
--------class1_1.mp4
--------class1_2.mp4
--------class1_3.mp4
....................
1.2 准备 annotations文件
(1)classInd.txt
改为自己的动作类别
1 backward
2 circle
3 draw
4 jump
5 rectangle
6 run
7 triangle
8 turnleft
9 turnright
(2)trainlist.txt和testlist.txt
自己编写代码划分训练集数据集
文件内容格式如下:类别名文件夹/视频
backward/backward_1.mp4
backward/backward_2.mp4
backward/backward_3.mp4
backward/backward_4.mp4
backward/backward_5.mp4
backward/backward_6.mp4
backward/backward_7.mp4
backward/backward_8.mp4
backward/backward_9.mp4
backward/backward_10.mp4
…………………………………………………………
我的数据集划分比较简单(难的也不会写),1-105是训练集,106-150是测试集
file = open('trainlist.txt', mode='w')
for i in range(1,106):
x = str(i)
file.write('backward/backward_' + x + '.mp4\n')
1.3 提取视频帧
cd mmaction2/tools/data/ucf101
选用opencv裁剪视频帧
复制extract_rgb_frames_opencv.sh文件,粘贴改名为自己的myextract_rgb_frames_opencv.sh(随意,直接在原文件里修改也可以)
再修改其中的相关路径
因为opencv是按视频原尺寸裁剪,训练测试需要统一尺寸,所以添加参数--new-width 320 --new-height 240,否则后续训练测试可能会出现尺寸问题。我使用ucf101数据集训练就遇到这个问题。
python build_rawframes.py ../../data/sketch/videos/ ../../data/sketch/rawframes/ --task rgb --level 2 --ext mp4 --new-width 320 --new-height 240 --use-opencv
执行文件bash myextract_rgb_frames_opencv.sh
1.4 生成list文件
同上,复制generate_rawframes_filelist.sh文件,改名mygenerate_rawframes_filelist.sh,修改路径。
1.4.1 修改build_file_list.py文件
tools/data/build_file_list.py,这里有些需要修改的地方。
(1)添加自己数据集的内容parse_sketch_splits,
from tools.data.parse_file_list import (parse_directory, parse_diving48_splits,parse_sketch_splits,
parse_hmdb51_split,
parse_jester_splits,
parse_kinetics_splits,
parse_mit_splits, parse_mmit_splits,
parse_sthv1_splits, parse_sthv2_splits,
parse_ucf101_splits)
(2)choices添加数据集名sketch