MMaction2 使用记录3——数据准备、处理

news/2024/11/8 0:32:29/

数据集准备

MMAction2支持许多现有的数据集。在本章中,我们将引导您为 MMAction2准备数据集。

视频数据格式注释

MMAction2支持两种类型的数据格式: 原始帧和视频。前者广泛应用于以前的项目,如 TSN。当 SSD 可用但无法扩展到快速增长的数据集时,这是很快的。(例如,最新版本的动力学有650K 的视频和总帧将占用几个 TB。)后者节省了大量的空间,但在执行时需要进行计算密集型的视频解码。为了使视频解码速度更快,我们支持几个有效的视频加载库,如decord、 PyAV 等。

使用内置数据集

MMAction2已经支持许多数据集,我们在路径 $MMCTION2/tools/data/下提供用于数据准备的 shell 脚本,有关准备特定数据集的详细信息,请参阅受支持的数据集。

使用自定义数据集

最简单的方法是将数据集转换为现有的数据集格式:

用于动作识别的 RawFrameDataset 和 VideoDataset

基于骨架的动作识别的 PoseDataset

用于时空动作检测的 AVADataset

用于时态动作本地化的 ActivityNetDataset

数据预处理之后,用户需要进一步修改配置文件来使用数据集。下面是以原始格式使用自定义数据集的示例。

在 configs/task/method/my _ custom_ config. py 中:

...
# dataset settings
dataset_type = 'RawframeDataset'
data_root = 'path/to/your/root'
data_root_val = 'path/to/your/root_val'
ann_file_train = 'data/custom/custom_train_list.txt'
ann_file_val = 'data/custom/custom_val_list.txt'
ann_file_test = 'data/custom/custom_val_list.txt'
...
data = dict(videos_per_gpu=32,workers_per_gpu=2,train=dict(type=dataset_type,ann_file=ann_file_train,...),val=dict(type=dataset_type,ann_file=ann_file_val,...),test=dict(type=dataset_type,ann_file=ann_file_test,...))
...

Action Recognition动作识别数据集

用于动作识别的注释文件有两种。

用于 RawFrameDataset 的 rawframe 注释

原始帧数据集的注释是一个包含多行的文本文件,每行表示一个视频的 frame _ directory (相对路径)、一个视频的 total _ frame 和一个视频的标签,它们被一个空格分开。

这里有一个例子。文件路径 帧数量 视频标签

some/directory-1 163 1
some/directory-2 122 1
some/directory-3 258 2
some/directory-4 234 2
some/directory-5 295 3
some/directory-6 121 3

视频数据集的视频注释

视频数据集的注释是一个具有多行的文本文件,每行表示一个具有文件路径(相对路径)和标签的示例视频,这些文件路径和标签被一个空格分开。

这里有一个例子。

some/path/000.mp4 1
some/path/001.mp4 1
some/path/002.mp4 2
some/path/003.mp4 2
some/path/004.mp4 3
some/path/005.mp4 3

Skeleton-based Action Recognition

任务根据骨架序列(关键点的时间序列)识别操作类。我们提供了一些方法来构建您的自定义骨架数据集。

从 RGB 视频数据构建

您需要从视频中提取关键点数据,并将其转换为受支持的格式,我们提供了详细的说明教程。

从现有的关键点数据构建

假设您已经有 coco 格式的关键点数据,您可以将它们收集到 pickle 文件中。

每个 pickle 文件对应于一个动作识别数据集。Pickle 文件的内容是一个字典,其中包含两个字段: split和注释

Split: 分割字段的值是字典: 键是分割名称,而值是属于特定剪辑的视频标识符列表。

注释: 注释字段的值是一个框架注释列表,每个框架注释都是一个字典,包含以下字段:

  1. Frame _ dir (str) : 相应视频的标识符。
  2. Total _ frame (int) : 此视频中的帧数。
  3. Img _ form (tuple [ int ]) : 视频帧的形状,包含两个元素的元组,格式为(高度,宽度)。只需要2D 骨架。
  4. 原始形状(tuple [ int ]) : 与 img _ form 相同。
  5. Label (int) : 操作标签。

Keypoint (np.ndarray,带有形状[ M x T x V x C ]) : 关键点注释。

  1. M: 人数;
  2. T: 帧数(与 total _ frame 相同) ;
  3. 关键点数量(NTURGB + D3D 骨架25个,CoCo 17个,OpenPose 18个,等等) ;
  4. C: 关键点坐标的维数(2D 关键点为 C = 2,3D 关键点为 C = 3)。

Keypoint _ score (np.ndarray,带有形状[ M x T x V ]) : 关键点的置信度得分。只需要2D 骨架。

{"split":{'xsub_train':['S001C001P001R001A001', ...],'xsub_val':['S001C001P003R001A001', ...],...}"annotations:[{{'frame_dir': 'S001C001P001R001A001','label': 0,'img_shape': (1080, 1920),'original_shape': (1080, 1920),'total_frames': 103,'keypoint': array([[[[1032. ,  334.8], ...]]])'keypoint_score': array([[[0.934 , 0.9766, ...]]])},{'frame_dir': 'S001C001P003R001A001',...},...}]
}

支持其他关键点格式需要进一步修改,请参考自定义数据集

时空动作检测

时间局部动作检测

使用混合数据集进行培训 


http://www.ppmy.cn/news/730890.html

相关文章

java创建线程池一共有七种方式

java创建线程池一共有七种方式 这 7 种实现方法分别是: Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待。 Executors.newCachedThreadPool:创建一个可缓存的线…

表分区详解

目录 一、什么是表分区? 二、表分区与分表的区别 三、表分区有什么好处? 四、分区表的限制因素 五、如何判断当前MySQL是否支持分区? 六、MySQL支持的分区类型有哪些? 1、RANGE分区 2、LIST分区 3、HASH分区 4、KEY分区 …

MBR分区表格式与GPT分区表格式简介

MBR分区表格式与GPT分区表格式简介 一、MBR分区表格式的局限性二、GPT分区表格式的优势三、MBR分区表格式与GPT分区表格式的异同(1)BIOS:基本输入输出系统(2)UEFI:统一的可扩展固件接口 未初始化的全新硬盘…

db2 分区表

创建表空间、分区表、索引;初始分区表数据 db2 connect to saldev db2 "create tablespace tbs1 managed by database using ( file/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs1.bat 200M)" db2 "create tablespace tbs2 managed by data…

微信小程序实现抖音视频效果

当我们进行开发的时候可能会遇到需要实现抖音视频效果的需求,并且网上该效果的开源代码少,找到的开源代码代码量大,很难进行二次开发 对此我将自己的代码进行简化,仅留下可动性高的代码模块 以上是实现效果与此处demo的模板 wx…

hive 分区表select全部数据_hive分区表

内部表和外部表 内部表:create table,copy数据到warehouse,删除表时数据也会删除 外部表:create external table,不copy数据到warehouse,删除表时数据不会删除 表的分区 分区的好处:如果不建立分区的话,则会全表扫描 数据通过目录划分分区,分区字段是特殊字段 目录结构:…

mysql分区表truncate分区数据_详解MySQL分区表

前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表。但是对于应用程序来讲,分区的表和没有分区的表是一样的。换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理。本篇文章给大家带来的内容是关于MySQL中分区表的介绍及使用…

android磁盘分区格式,转:磁盘分区表格式之android分区GPT

对于现在的系统来说,分区的类型千百种,但对于磁盘分区的layout来说,最常接触的只是三种而已: MBR(Master Boot Record), GPT(Globe Partition Table)和Apple Partition(Mixed分区)。 MBR分区表: 磁盘上最重要的数据结构,其中包含小段引导代码,磁盘信息,分区表等。在MBR…