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

2023-05-16

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

文章目录

  • 行为识别(一):UCF101视频数据集预处理
    • 1 数据集介绍
      • 1.1 UCF101
    • 2 UCF101预处理
      • 2.1 划分train_set和test_set
      • 2.2 将视频提取为图像

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C3D行为识别(一):UCF101视频数据集预处理 的相关文章

随机推荐

  • 驼峰命名法

    简介 xff1a 驼峰式命名法又叫骆驼式命名法 xff0c 是编程时的一种命名规则 xff0c 指混合使用大小写字母来构成变量和函数的名字 意义 xff1a 多人做项目时 xff0c 若命名格式统一 xff0c 可以方便不同成员之间的代码交
  • 【逐函数详细讲解ORB_SLAM2算法和C++代码|System|1-24】

    包含所需库和其他类的头文件 定义命名空间ORB SLAM2 定义System类 它是整个ORB SLAM2算法的核心组件 它将各个子模块 如追踪 局部建图 回环检测等 组合在一起 并提供了处理单目 双目和RGB D图像的方法 System类
  • 【逐函数详细讲解ORB_SLAM2算法和C++代码|Tracking|1-25】

    在C 43 43 语法方面 xff0c 这段代码包括以下部分 xff1a 头文件包含 xff08 include xff09 xff1a 使用 include指令引入必要的头文件 xff0c 这些头文件提供了各种所需的类和函数定义 命名空间
  • 【逐函数详细讲解ORB_SLAM2算法和C++代码|Tracking|1-25】

    在Tracking类中 有一些成员变量和成员函数 下面是它们的简要概述 成员变量 System mpSystem 指向System类对象的指针 用于访问和操作ORB SLAM2系统 FrameDrawer mpFrameDrawer 指向F
  • 【逐函数详细讲解ORB_SLAM2算法和C++代码|Viewer|1-26】

    Viewer类的主要目的是实现ORB SLAM2算法的可视化部分 帮助用户更好地理解算法的运行过程和结果 为此 Viewer类与其他类 如System FrameDrawer MapDrawer和Tracking 协同工作 根据摄像机的帧率
  • #include<iostream>

    include lt iostream gt 是C 43 43 程序中非常常见的一条预处理指令 xff0c 它包含了iostream库 iostream库提供了C 43 43 程序中用于处理标准输入 输出流的基本功能 这个库中定义了一些重要
  • #include<algorithm>

    include lt algorithm gt 是C 43 43 中一个常用的预处理指令 xff0c 它包含了algorithm库 这个库提供了大量用于操作序列 xff08 例如数组 向量 列表等容器 xff09 的通用算法 xff0c 这
  • #include<fstream>

    include lt fstream gt 是C 43 43 程序中常用的预处理指令 xff0c 它包含了fstream库 这个库提供了用于处理文件输入 输出的类 fstream库主要包括以下几个类 xff1a std ifstream x
  • #include<chrono>

    include lt chrono gt 是C 43 43 标准库中用于处理时间和持续时间的头文件 chrono库提供了一系列用于表示时间点 时间段和时钟的类和函数 以下是chrono库中一些常用接口和用法 xff1a 持续时间 xff08
  • 【#include<opencv2/core/core.hpp>】

    include lt opencv2 core core hpp gt 是OpenCV库中的一个核心模块头文件 xff0c 它包含了许多用于处理图像和计算的基本数据结构 函数和类 以下是opencv2 core core hpp中的一些常用
  • 逐函数详细讲解ORB_SLAM2算法和C++语法|LoadImages|2-1

    完整可执行代码 https github com xiaoqiuslam orb2 视频讲解 逐函数讲解ORB SLAM2源码 xff5c 1 加载Euroc数据集图像 逐函数讲解ORB SLAM2源码 1 加载Euroc数据集图像 逐函数
  • Makefile介绍

    概述 什么是makefile xff1f 或许很多Windows的程序员都不知道这个东西 xff0c 因为那些Windows的集成开发环境 xff08 integrated development environment xff0c IDE
  • 逐函数详细讲解ORB_SLAM2算法和C++语法|System|2-2

    span class token comment Create SLAM system It initializes all system threads and gets ready to process frames span ORB
  • c_cpp_properties.json vscode ubuntu18.04

    在 Ubuntu 18 04 上使用 Visual Studio Code 时 xff0c 你可以根据以下示例配置 c cpp properties json 文件 假设你已经安装了 GCC 和 G 43 43 编译器 xff0c 这个示例
  • 激光SLAM 算法匹配原理

    文章目录 1 数据获取 xff1a 2 数据关联 xff1a 3 匹配 xff1a 4 位姿更新 xff1a 5 地图更新 xff1a 6 循环 xff1a 数据关联二维激光局部定位算法原理 激光SLAM xff08 Simultaneou
  • 【ORB_SLAM2 CMakeLists.txt 文件详解】

    文章目录 ORB SLAM2 CMakeLists txt 文件详解 set CMAKE LIBRARY OUTPUT DIRECTORY PROJECT SOURCE DIR lib add library PROJECT NAME SH
  • 数据结构知识体系框架图

  • [TM4C123单片机实践] 配置SSI并驱动DAC7811显示正弦波

    这几天做电赛学习了TM4C123 单片机 总得来说 结合官方例程与参考手册 加上一个好的示波器 效率会高很多 TI的SSI 实际上就是SPI 我门先熟悉一下SPI SPI 就是在主机与从机之间用来传输数据的 通过TX RX传输数据 通过CS
  • 压力BMP180传感器时序详解

    BMP180是一种高精度数字压力传感器 xff0c BMP180的超低功耗 xff0c 低电压电子元件经过优化 xff0c 适用于移动电话 xff0c PDA xff0c GPS导航设备和户外设备 UP 61 压力数据 xff08 16到1
  • C3D行为识别(一):UCF101视频数据集预处理

    行为识别 xff08 一 xff09 xff1a UCF101视频数据集预处理 文章目录 行为识别 xff08 一 xff09 xff1a UCF101视频数据集预处理1 数据集介绍1 1 UCF101 2 UCF101预处理2 1 划分t