C3D行为识别:UCF101视频数据集预处理

Posted too.ink

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C3D行为识别:UCF101视频数据集预处理相关的知识,希望对你有一定的参考价值。

行为识别(一):UCF101视频数据集预处理

文章目录

1 数据集介绍

基于视频的行为识别常见的数据库有UCF101、HMDB-51、Something-Something V2、AVA v2.2、Kinetic-700等。其中UCF101的标记方式是针对一段视频做一个类别的标记,AVA v2.2的标记共包含五个部分,video_id(视频名称)、middle_Frame_timestam(关键帧位置)、person_box(视频中人物的边界框)、action_id(动作类别)、person_id(bbox中人物编号)。UCF101是分类的任务,而AVA v2.2针对的是检测的任务,更多对AVA v2.2数据集的详细解析可以点击这里

1.1 UCF101

本文选用的行为识别数据集为UFC101。

UCF数据集包含两个压缩文件,UCF101.rar和UCF101TrainTestSplits-RecognitionTask.zip,前者将不同类别的视频存放于不同的文件夹下,后者存放UCF101数据集的3种训练集与测试集划分方式以及标签文件。其中testlist01.txt和trainlist01.txt对应第一种划分方式。

`-- ucfTrainTestlist
    |-- classInd.txt
    |-- testlist01.txt
    |-- testlist02.txt
    |-- testlist03.txt
    |-- trainlist01.txt
    |-- trainlist02.txt
    `-- trainlist03.txt

1 directory, 7 files
  • 内含13320 个短视频
  • 视频来源:YouTube
  • 视频类别:101 种
  • 主要包括这5大类动作 :人和物体交互,只有肢体动作,人与人交互,玩音乐器材,各类运动
  • 分辨率:320*240

2 UCF101预处理

2.1 划分train_set和test_set

目的:将UCF101划分为以下存储结构方式(使用trainlist01.txt和testlist01.txt进行划分)

.
`-- dataset
    |-- test
    |   |-- class1
    |   |   |-- 01.mp4
    |   |   |-- 02.mp4
    |   |   |-- 03.mp4
    |   |   `-- 04.mp4
    |   |-- class2
    |   |   |-- 01.mp4
    |   |   |-- 02.mp4
    |   |   |-- 03.mp4
    |   |   `-- 04.mp4
    |   |-- class3
    |   |   |-- 01.mp4
    |   |   |-- 02.mp4
    |   |   |-- 03.mp4
    |   |   `-- 04.mp4
    |   `-- class4
    |       |-- 01.mp4
    |       |-- 02.mp4
    |       |-- 03.mp4
    |       `-- 04.mp4
    `-- train
        |-- class1
        |   |-- 01.mp4
        |   |-- 02.mp4
        |   |-- 03.mp4
        |   `-- 04.mp4
        |-- class2
        |   |-- 01.mp4
        |   |-- 02.mp4
        |   |-- 03.mp4
        |   `-- 04.mp4
        |-- class3
        |   |-- 01.mp4
        |   |-- 02.mp4
        |   |-- 03.mp4
        |   `-- 04.mp4
        `-- class4
            |-- 01.mp4
            |-- 02.mp4
            |-- 03.mp4
            `-- 04.mp4

使用到的工具为shutil,环境为python,工具pip安装命令为

pip install pytest-shutil

python程序如下,程序的设计思想是先将testlist01中的文件移到“dataset/test/”路径下,再将剩下的文件夹重命名为“train”后移到dataset目录下

import shutil
import os

test_src_path = "T:/Dataset/UCF101/UCF-101/"
test_dest_path = "T:/Dataset/UCF101/dataset/test/"
train_src_path = "T:Dataset/UCF101/UCF-101/"
train_src_path_rename = "T:/Dataset/UCF101/train"
train_dest_path = "T:/Dataset/UCF101/dataset/"
# move testlist
with open("./UCF101TrainTestSplits/testlist01.txt", encoding='utf-8') as f:
    test_video_paths = f.readlines()
test_video_paths = [c.strip() for c in test_video_paths]  # 去掉换行符

for test_video_path in test_video_paths:
    if not os.path.exists(os.path.join(test_dest_path, test_video_path[:-4])):
        os.makedirs(os.path.join(test_dest_path, test_video_path[:-4]))
        os.rmdir(os.path.join(test_dest_path, test_video_path[:-4]))
    shutil.move(os.path.join(test_src_path, test_video_path), os.path.join(test_dest_path, test_video_path))

# move trainlist
os.rename(train_src_path, train_src_path_rename)
shutil.move(train_src_path_rename, train_dest_path)

2.2 将视频提取为图像

工具:ffmpeg
ffmpeg下载地址:https://ffmpeg.org/download.html

压缩ffmpeg-release-essentials.zip到指定目录,进入bin目录,里面有三个文件

ffmpeg.exe
ffplay.exe
ffprobe.exe

将这三个文件的路径放到conda创建的python环境中,和pythonw.exe在同一个路径,然后打开控制台激活这个python环境,输入ffmpeg -h命令查看帮助

脚本(extract_frames.sh):

IN_DATA_DIR="./dataset"
OUT_DATA_DIR="./UCF101_frames"

if [[ ! -d "$OUT_DATA_DIR" ]]; then
  echo "$OUT_DATA_DIR doesn't exist. Creating it.";
  mkdir -p $OUT_DATA_DIR
fi

for dir1 in $(ls -A1 -U $IN_DATA_DIR)
do
	for dir2 in $(ls -A1 -U $IN_DATA_DIR/$dir1)
	do
		for video in $(ls -A1 -U $IN_DATA_DIR/$dir1/$dir2)
		do
			video_name=$video##*/
			if [[ $video_name = *".webm" ]]; then
    			video_name=$video_name::-5
  			else
    			video_name=$video_name::-4
  			fi
  			out_video_dir=$OUT_DATA_DIR/$dir1/$dir2/$video_name/
  			mkdir -p "$out_video_dir"

  			out_name="$out_video_dir/$video_name_%06d.jpg"

  			ffmpeg -i "$IN_DATA_DIR/$dir1/$dir2/$video"  "$out_name"
		done
	done
done

将脚本放在dataset同一级目录下,然后在安装有ffmpeg的conda环境下bash执行

./extract_frames.sh

基于视频理解TSM和数据集Kinetics-400的视频行为识别

基于视频理解TSM和数据集Kinetics-400的视频行为识别

 花了好久整理了 Kinetics数据集,

百度网盘下载地址:下载地址

论文下载:TSM: Temporal Shift Module for Efficient Video Understanding

# TSM: Temporal Shift Module for Efficient Video Understanding [[Website]](https://hanlab.mit.edu/projects/tsm/) [[arXiv]](https://arxiv.org/abs/1811.08383)[[Demo]](https://www.youtube.com/watch?v=0T6u7S_gq-4)
TSM,修改后代码下载下载链接

这个数据集包括了四百种的人体动作类别,每一种类别都至少有400个视频片段,每个片段都取自不同的Youtube视频,持续大概

以上是关于C3D行为识别:UCF101视频数据集预处理的主要内容,如果未能解决你的问题,请参考以下文章

02C3D 行为识别复现 训练过程

200G时序行为检测经典数据集THUMOS 2014,文末附下载方式

C3D 行为识别总目录 实战 复现+代码解析+自定义数据集

如何可视化大数据集?比如ucf101、hmdb51?

视频识别,小,小,小综述~

18组-Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset