README.md 5.2 KB
Newer Older
D
dengkaipeng 已提交
1
# 数据使用说明
S
SunGaofeng 已提交
2 3 4

- [Youtube-8M](#Youtube-8M数据集)
- [Kinetics](#Kinetics数据集)
S
SunGaofeng 已提交
5
- [Non-local](#Non-local)
S
SunGaofeng 已提交
6
- [C-TCN](#C-TCN)
D
dengkaipeng 已提交
7 8

## Youtube-8M数据集
S
SunGaofeng 已提交
9
这里用到的是YouTube-8M 2018年更新之后的数据集。使用官方数据集,并将TFRecord文件转化为pickle文件以便PaddlePaddle使用。Youtube-8M数据集官方提供了frame-level和video-level的特征,这里只需使用到frame-level的特征。
D
dengkaipeng 已提交
10 11

### 数据下载
S
SunGaofeng 已提交
12 13
请使用Youtube-8M官方链接分别下载[训练集](http://us.data.yt8m.org/2/frame/train/index.html)[验证集](http://us.data.yt8m.org/2/frame/validate/index.html)。每个链接里各提供了3844个文件的下载地址,用户也可以使用官方提供的[下载脚本](https://research.google.com/youtube8m/download.html)下载数据。数据下载完成后,将会得到3844个训练数据文件和3844个验证数据文件(TFRecord格式)。
假设存放视频模型代码库的主目录为: Code\_Root,进入dataset/youtube8m目录
D
dengkaipeng 已提交
14

S
SunGaofeng 已提交
15
    cd dataset/youtube8m
D
dengkaipeng 已提交
16 17 18

在youtube8m下新建目录tf/train和tf/val

S
SunGaofeng 已提交
19
    mkdir tf && cd tf
D
dengkaipeng 已提交
20

S
SunGaofeng 已提交
21
    mkdir train && mkdir val
D
dengkaipeng 已提交
22 23 24 25

并分别将下载的train和validate数据存放在其中。

### 数据格式转化
S
SunGaofeng 已提交
26

S
SunGaofeng 已提交
27
为了适用于PaddlePaddle训练,需要离线将下载好的TFRecord文件格式转成了pickle格式,转换脚本请使用[dataset/youtube8m/tf2pkl.py](./youtube8m/tf2pkl.py)
S
SunGaofeng 已提交
28

D
dengkaipeng 已提交
29 30
在dataset/youtube8m 目录下新建目录pkl/train和pkl/val

S
SunGaofeng 已提交
31
    cd dataset/youtube8m
D
dengkaipeng 已提交
32

S
SunGaofeng 已提交
33
    mkdir pkl && cd pkl
D
dengkaipeng 已提交
34

S
SunGaofeng 已提交
35
    mkdir train && mkdir val
D
dengkaipeng 已提交
36 37


S
SunGaofeng 已提交
38
转化文件格式(TFRecord -> pkl),进入dataset/youtube8m目录,运行脚本
D
dengkaipeng 已提交
39

S
SunGaofeng 已提交
40
    python tf2pkl.py ./tf/train ./pkl/train
D
dengkaipeng 已提交
41 42 43



S
SunGaofeng 已提交
44
    python tf2pkl.py ./tf/val ./pkl/val
D
dengkaipeng 已提交
45 46

分别将train和validate数据集转化为pkl文件。tf2pkl.py文件运行时需要两个参数,分别是数据源tf文件存放路径和转化后的pkl文件存放路径。
S
SunGaofeng 已提交
47

S
SunGaofeng 已提交
48
备注:由于TFRecord文件的读取需要用到Tensorflow,用户要先安装Tensorflow,或者在安装有Tensorflow的环境中转化完数据,再拷贝到dataset/youtube8m/pkl目录下。为了避免和PaddlePaddle环境冲突,建议先在其他地方转化完成再将数据拷贝过来。
D
dengkaipeng 已提交
49 50

### 生成文件列表
S
SunGaofeng 已提交
51

D
dengkaipeng 已提交
52 53
进入dataset/youtube8m目录

S
SunGaofeng 已提交
54
    ls $Code_Root/dataset/youtube8m/pkl/train/* > train.list
D
dengkaipeng 已提交
55

S
SunGaofeng 已提交
56
    ls $Code_Root/dataset/youtube8m/pkl/val/* > val.list
D
dengkaipeng 已提交
57 58 59 60

在dataset/youtube8m目录下将生成两个文件,train.list和val.list,每一行分别保存了一个pkl文件的绝对路径。

## Kinetics数据集
S
SunGaofeng 已提交
61

S
SunGaofeng 已提交
62
Kinetics数据集是DeepMind公开的大规模视频动作识别数据集,有Kinetics400与Kinetics600两个版本。这里使用Kinetics400数据集,具体的数据预处理过程如下。
D
dengkaipeng 已提交
63 64

### mp4视频下载
S
SunGaofeng 已提交
65
在Code\_Root目录下创建文件夹
D
dengkaipeng 已提交
66

S
SunGaofeng 已提交
67
    cd $Code_Root/dataset && mkdir kinetics
D
dengkaipeng 已提交
68

S
SunGaofeng 已提交
69
    cd kinetics && mkdir data_k400 && cd data_k400
D
dengkaipeng 已提交
70

S
SunGaofeng 已提交
71
    mkdir train_mp4 && mkdir val_mp4
D
dengkaipeng 已提交
72

S
SunGaofeng 已提交
73
ActivityNet官方提供了Kinetics的下载工具,具体参考其[官方repo ](https://github.com/activitynet/ActivityNet/tree/master/Crawler/Kinetics)即可下载Kinetics400的mp4视频集合。将kinetics400的训练与验证集合分别下载到dataset/kinetics/data\_k400/train\_mp4与dataset/kinetics/data\_k400/val\_mp4。
D
dengkaipeng 已提交
74 75

### mp4文件预处理
S
SunGaofeng 已提交
76

S
SunGaofeng 已提交
77
为提高数据读取速度,提前将mp4文件解帧并打pickle包,dataloader从视频的pkl文件中读取数据(该方法耗费更多存储空间)。pkl文件里打包的内容为(video-id,[frame1, frame2,...,frameN],label)。
D
dengkaipeng 已提交
78

S
SunGaofeng 已提交
79 80
在 dataset/kinetics/data\_k400目录下创建目录train\_pkl和val\_pkl

S
SunGaofeng 已提交
81
    cd $Code_Root/dataset/kinetics/data_k400
S
SunGaofeng 已提交
82

S
SunGaofeng 已提交
83
    mkdir train_pkl && mkdir val_pkl
D
dengkaipeng 已提交
84

S
SunGaofeng 已提交
85
进入$Code\_Root/dataset/kinetics目录,使用video2pkl.py脚本进行数据转化。首先需要下载[train](https://github.com/activitynet/ActivityNet/tree/master/Crawler/Kinetics/data/kinetics-400_train.csv)[validation](https://github.com/activitynet/ActivityNet/tree/master/Crawler/Kinetics/data/kinetics-400_val.csv)数据集的文件列表。
D
dengkaipeng 已提交
86

S
SunGaofeng 已提交
87
首先生成预处理需要的数据集标签文件
D
dengkaipeng 已提交
88

S
SunGaofeng 已提交
89
    python generate_label.py kinetics-400_train.csv kinetics400_label.txt
D
dengkaipeng 已提交
90

S
SunGaofeng 已提交
91 92
然后执行如下程序:

S
SunGaofeng 已提交
93
    python video2pkl.py kinetics-400_train.csv $Source_dir $Target_dir  8 #以8个进程为例
D
dengkaipeng 已提交
94

D
dengkaipeng 已提交
95 96
- 该脚本依赖`ffmpeg`库,请预先安装`ffmpeg`

D
dengkaipeng 已提交
97 98
对于train数据,

S
SunGaofeng 已提交
99
    Source_dir = $Code_Root/dataset/kinetics/data_k400/train_mp4
D
dengkaipeng 已提交
100

S
SunGaofeng 已提交
101
    Target_dir = $Code_Root/dataset/kinetics/data_k400/train_pkl
D
dengkaipeng 已提交
102 103 104

对于val数据,

S
SunGaofeng 已提交
105
    Source_dir = $Code_Root/dataset/kinetics/data_k400/val_mp4
D
dengkaipeng 已提交
106

S
SunGaofeng 已提交
107
    Target_dir = $Code_Root/dataset/kinetics/data_k400/val_pkl
D
dengkaipeng 已提交
108 109 110

这样即可将mp4文件解码并保存为pkl文件。

S
SunGaofeng 已提交
111 112
### 生成训练和验证集list

S
SunGaofeng 已提交
113
    cd $Code_Root/dataset/kinetics
S
SunGaofeng 已提交
114

S
SunGaofeng 已提交
115
    ls $Code_Root/dataset/kinetics/data_k400/train_pkl /* > train.list
S
SunGaofeng 已提交
116

S
SunGaofeng 已提交
117
    ls $Code_Root/dataset/kinetics/data_k400/val_pkl /* > val.list
S
SunGaofeng 已提交
118

S
SunGaofeng 已提交
119

D
dengkaipeng 已提交
120 121
即可生成相应的文件列表,train.list和val.list的每一行表示一个pkl文件的绝对路径。

S
SunGaofeng 已提交
122 123 124
## Non-local

Non-local模型也使用kinetics数据集,不过其数据处理方式和其他模型不一样,详细内容见[Non-local数据说明](./nonlocal/README.md)
S
SunGaofeng 已提交
125 126 127 128

## C-TCN

C-TCN模型使用ActivityNet 1.3数据集,具体使用方法见[C-TCN数据说明](./ctcn/README.md)