
人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载导读HMDB51 是视频动作识别领域最经典的基准数据集之一由 51 类日常人体动作组成广泛应用于 TSN、SlowFast、TSM 等识别模型的评估。本文基于 MMAction2 仓库中 tools/data/hmdb51/README.md 所描述的完整数据准备流程结合仓库内的真实脚本源码与配置逐步骤讲解如何下载标注文件与视频、使用 denseflow 或 OpenCV 抽取 RGB 帧与光流、生成训练/验证文件列表并给出目录结构校验与后续训练入口。读完本文你将能够从零开始在本地完整准备一个可直接用于 MMAction2 训练与测试的 HMDB51 数据集。1. 数据集概览与准备工作1.1 HMDB51 是什么HMDB51Human Motion DataBase由 Kuehne 等人于 2011 年提出包含51 个人体动作类别如 brush_hair、cartwheel、climb、dive、kiss、run、wave 等视频来自电影片段与 YouTube 等来源动作类别较 UCF101 更具多样性是衡量识别模型泛化能力的常用基准。仓库中 tools/data/hmdb51/label_map.txt 完整列出了这 51 个类别的名称。引用该数据集时官方建议使用以下 BibTeXarticle{Kuehne2011HMDBAL, title{HMDB: A large video database for human motion recognition}, author{Hilde Kuehne and Hueihan Jhuang and E. Garrote and T. Poggio and Thomas Serre}, journal{2011 International Conference on Computer Vision}, year{2011}, pages{2556-2563} }1.2 前置条件在执行任何脚本之前请确保当前工作目录位于仓库中的tools/data/hmdb51/目录下cd $MMACTION2/tools/data/hmdb51/此外下载的标注文件与视频均为.rar压缩格式因此需要安装unrarsudo apt-get install unrar若当前环境没有 sudo 权限可参照社区提供的免 sudo 安装脚本如 innerlee/setup 中的zzunrar.sh进行便捷安装。安装完成后可通过unrar命令验证是否可用。说明完整的准备流程共 5 步——准备标注Step 1、准备视频Step 2、抽取 RGB 帧与光流Step 3可选、生成文件列表Step 4、检查目录结构Step 5。其中 Step 3 仅在需要以 rawframes帧格式训练时执行若你直接使用视频加载器video loader可以跳过帧抽取。2. 步骤一下载并解压标注文件运行仓库提供的脚本 tools/data/hmdb51/download_annotations.shbash download_annotations.sh从脚本源码可以看到其内部执行逻辑自动创建data/hmdb51/annotations目录脚本中DATA_DIR../../../data/hmdb51/annotations即相对于tools/data/hmdb51/目录通过wget下载官方提供的test_train_splits.rar即 7030 训练/测试划分文件--no-check-certificate用于绕过证书校验使用unrar x解压随后删除压缩包并将解压出的testTrainMulti_7030_splits/*.txt全部移动到annotations目录下。解压完成后data/hmdb51/annotations/下会得到每个类别的划分文件如brush_hair_test_split1.txt等其中每行形如April_09_brush_hair_u_nm_np1_ba_goo_0 11表示属于训练集2表示属于测试集这是 HMDB51 官方的 7030 划分约 70% 训练、30% 测试。提示download_annotations.sh脚本最后执行了rm test_train_splits.rar清理压缩包这是脚本自身的清理行为请勿手动删除已经解压好的标注文件。3. 步骤二下载并解压视频运行 tools/data/hmdb51/download_videos.shbash download_videos.sh脚本的执行流程对应仓库源码创建data/hmdb51/videos目录下载官方原始视频压缩包hmdb51_org.rarunrar x ./hmdb51_org.rar解压得到按类别打包的多个子压缩包遍历解压出的所有.rar子压缩包每个类别一个逐个unrar x解压出视频清理全部.rar文件。解压完成后data/hmdb51/videos/下应包含 51 个类别子目录每个子目录内是对应类别的.avi视频例如data/hmdb51/videos/brush_hair/April_09_brush_hair_u_nm_np1_ba_goo_0.avi data/hmdb51/videos/wave/20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0.avi4. 步骤三抽取 RGB 帧与光流可选如果你希望使用 rawframes帧序列格式进行训练例如 TSN、SlowFast、TSM 等模型的常用做法则需要将视频抽帧。若只使用视频加载器可跳过本节。4.1 抽帧前置说明使用 denseflow 抽帧时需先按照 安装指南 安装 denseflow。若你拥有大容量 SSD建议把帧存放在 SSD 上以获得更好的 I/O 性能。可通过软链接将 rawframes 目录指到 SSD# 假设 SSD 挂载在 /mnt/SSD/ mkdir /mnt/SSD/hmdb51_extracted/ ln -s /mnt/SSD/hmdb51_extracted/ ../../../data/hmdb51/rawframes4.2 方案 A仅抽取 RGB 帧denseflow光流抽取比较耗时若只想用 RGB 帧训练运行bash extract_rgb_frames.sh对应脚本 tools/data/hmdb51/extract_rgb_frames.sh 的核心命令为python build_rawframes.py ../../data/hmdb51/videos/ ../../data/hmdb51/rawframes/ --task rgb --level 2 --ext avi4.3 方案 B未安装 denseflow 时用 OpenCV 抽帧若未安装 denseflow可改用 OpenCV 抽取 RGB 帧bash extract_rgb_frames_opencv.sh对应脚本 tools/data/hmdb51/extract_rgb_frames_opencv.sh 增加了--use-opencv参数。需要留意的是OpenCV 方式会保留视频原始分辨率不会像 denseflow 那样做缩放若需固定尺寸需在配置的数据预处理管线中自行处理。4.4 方案 C同时抽取 RGB 帧与光流tvl1 算法如果需要 RGB 与光流两路输入运行bash extract_frames.sh对应脚本 tools/data/hmdb51/extract_frames.sh 的核心命令为python build_rawframes.py ../../data/hmdb51/videos/ ../../data/hmdb51/rawframes/ --task both --level 2 --flow-type tvl14.5 抽帧脚本 build_rawframes.py 的参数详解上述命令统一调用仓库工具 tools/data/build_rawframes.py其支持的参数源码parse_args部分包括参数默认值可选值/说明src_dir/out_dir必填视频源目录 / 帧输出目录--taskflowrgb、flow、both抽取帧类型--level21或2视频目录层级HMDB51 为类别/视频两级--num-worker8抽帧并行进程数--flow-typeNonetvl1、warp_tvl1、farn、brox光流算法--out-formatjpgjpg、h5、png输出帧格式--extaviavi、mp4、webm源视频扩展名--mixed-ext关闭处理混合扩展名的视频--new-width/--new-height0抽帧时统一缩放的目标宽/高0 表示不缩放--new-short0按短边缩放并保持长宽比--num-gpu8GPU 数量并行相关--resume关闭断点续抽跳过--report-file中已成功的视频--use-opencv关闭使用 OpenCV 抽取 RGB 帧--input-frames关闭基于已有 RGB 帧计算光流而非从视频直接计算--report-filebuild_report.txt记录已成功处理视频的文件从源码实现看denseflow 抽帧时底层通过命令行拼接执行例如 RGB 任务会生成denseflow {video} -b20 -s0 -o{out_dir} -nw... -nh... -v之类的命令task both时则分别生成 RGB 与光流两条 denseflow 命令。所有任务通过多进程Pool并行执行见源码main末尾的pool.map。当使用--resume时脚本会读取--report-file中已经成功的视频路径仅处理剩余部分这在数据集大、训练中断时非常实用。4.6 抽帧产物说明使用 denseflow 抽出的 RGB 帧命名为img_00001.jpg、img_00002.jpg…光流帧分为两个方向命名为flow_x_00001.jpg、flow_y_00001.jpg…每个视频对应一个以视频名命名的子目录位于对应类别目录下。5. 步骤四生成文件列表文件列表是 MMAction2 数据集配置ann_file所必需的 txt 文件每行描述一个样本。运行以下两个脚本分别生成 rawframes 与 videos 两种格式的列表bash generate_rawframes_filelist.sh bash generate_videos_filelist.sh5.1 脚本调用的核心工具对应脚本 tools/data/hmdb51/generate_rawframes_filelist.sh 与 tools/data/hmdb51/generate_videos_filelist.sh 均调用仓库工具 tools/data/build_file_list.py# rawframes 格式 PYTHONPATH. python tools/data/build_file_list.py hmdb51 data/hmdb51/rawframes/ --level 2 --format rawframes --shuffle # videos 格式 PYTHONPATH. python tools/data/build_file_list.py hmdb51 data/hmdb51/videos/ --level 2 --format videos --shuffle其中--shuffle表示对生成的列表做随机打乱。5.2 HMDB51 列表的生成逻辑在 tools/data/parse_file_list.py 的parse_hmdb51_split函数中列表生成包含以下关键逻辑自动生成classInd.txt按data/hmdb51/videos下的类别目录名排序为每个类别赋予从 1 开始的类别 ID写入data/hmdb51/annotations/classInd.txt格式与 UCF101 的ClassInd.txt一致id 类名读取官方划分遍历 51 个类别的{class}_test_split{i}.txti取 1、2、3将标记为1的行归入训练集、标记为2的行归入测试集并拼上类别 ID生成trainlist{i}.txt与testlist{i}.txt即data/hmdb51/annotations/trainlist01.txt、testlist01.txt、trainlist02.txt…类别 ID 修正读取classInd.txt后建立「类名 → 0 起始 ID」的映射int(x[0]) - 1最终列表中的标签为0 ~ 50与 MMAction2 的类别计数51 类对齐。5.3 文件列表内容格式生成的列表位于data/hmdb51/下命名形如hmdb51_train_split_{1,2,3}_rawframes.txt hmdb51_val_split_{1,2,3}_rawframes.txt hmdb51_train_split_{1,2,3}_videos.txt hmdb51_val_split_{1,2,3}_videos.txtrawframes 格式的每行相对路径 帧总数 标签帧总数取自parse_directory对目录内帧的统计见 tools/data/build_file_list.py 中frame_info的构造videos 格式的每行视频相对路径 标签此时帧数记为-1。这两类列表分别对应VideoDataset与RawframeDataset的ann_file输入。例如 mmaction/datasets/video_dataset.py 中VideoDataset会逐行读取ann_file并结合data_prefix[video]拼接出完整视频路径。6. 步骤五检查目录结构完成上述流程后在仓库根目录下HMDB51 相关的目录结构应形如mmaction2 ├── mmaction ├── tools ├── configs ├── data │ ├── hmdb51 │ │ ├── hmdb51_{train,val}_split_{1,2,3}_rawframes.txt │ │ ├── hmdb51_{train,val}_split_{1,2,3}_videos.txt │ │ ├── annotations │ │ ├── videos │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0.avi │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0.avi │ │ ├── rawframes │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0 │ │ │ │ │ ├── img_00001.jpg │ │ │ │ │ ├── img_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_x_00001.jpg │ │ │ │ │ ├── flow_x_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_y_00001.jpg │ │ │ │ │ ├── flow_y_00002.jpg │ │ │ ├── ... │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_nm_p1_ba_med_0 │ │ │ │ ├── ... │ │ │ │ ├── winKen_wave_u_cm_np1_ri_bad_1annotations目录下应包含每类视频的官方划分文件如brush_hair_test_split1.txt、classInd.txt以及trainlist{1,2,3}.txt、testlist{1,2,3}.txt。7. 数据验证与后续训练7.1 数据完整性检查在正式训练前可以使用仓库的检查工具对视频文件做一遍完整性校验python tools/analysis_tools/check_videos.py data/hmdb51/videos/ data/hmdb51/hmdb51_train_split_1_videos.txt具体参数以 tools/analysis_tools/check_videos.py 的--help输出为准。该校验可提前发现损坏或缺失的视频避免训练中途报错。7.2 基于 HMDB51 的训练示例仓库中已有以 HMDB51 为目标的现成配置例如 PoseC3D 骨架动作识别配置 configs/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.py其分类头num_classes51并定义了完整的 train/val/test pipeline 与调度器可直接作为骨架识别skeleton-based任务在 HMDB51 上微调的参考。该配置的load_from使用 Kinetics-400 预训练的 PoseC3D 权重说明 HMDB51 也常用于验证「预训练 下游微调」范式。对于 RGB 识别任务可仿照仓库中 configs/recognition 下的 TSN、TSM、SlowFast 等配置将dataset_type、ann_file指向data/hmdb51/hmdb51_train_split_1_rawframes.txt或videos.txt并将num_classes设为 51。7.3 训练与测试入口数据准备完成后HMDB51 的训练与测试流程与其他数据集完全一致可参照官方 训练与测试教程 使用 tools/train.py 与 tools/test.py 完成训练、评估与推理。注意仓库为纯只读数据准备指南训练脚本仅用于本地运行无需修改仓库文件。8. 常见问题与注意事项下载失败/证书问题官方源使用 HTTPS脚本已带--no-check-certificate若网络受限可考虑代理或更换下载源脚本本身不含重试逻辑可手动重跑。unrar未安装会报unrar: command not found请先安装unrar无 sudo 环境可参考文首提到的免 sudo 安装方式。抽帧与训练格式匹配使用 OpenCV 抽帧会保留原始分辨率而 denseflow 支持--new-short/--new-width/--new-height缩放两种产物的尺寸不一致时需在训练配置的数据增强如Resize、CenterCrop中统一处理。多进程资源占用build_rawframes.py默认--num-worker 8、--num-gpu 8在机器资源紧张时可适当调低。类别标签从 0 开始build_file_list.py生成的标签为 0~50源码中将classInd.txt的 ID 减 1配置中num_classes统一为 51避免出现「类别数不匹配」错误。总结本文完整复现了 MMAction2 中 HMDB51 数据集的五步准备流程下载标注、下载视频、抽帧denseflow/OpenCV/tvl1 三种方案、生成文件列表、校验目录结构并结合 tools/data/build_rawframes.py、tools/data/build_file_list.py、tools/data/parse_file_list.py 等源码剖析了每个脚本的底层行为与关键参数。按照上述流程操作后你将获得一份可直接用于 MMAction2 训练、验证与测试的 HMDB51 数据集并能够在此基础上配置 TSN、TSM、SlowFast、PoseC3D 等模型进行动作识别实验。赞分享人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载相关推荐MMAction2 实战UCF-101 数据集完整准备指南标注下载、视频处理、帧与光流抽取、文件列表生成MMAction2 实战UCF 101 数据集完整准备指南标注下载、视频处理、帧与光流抽取、文件列表生成 导读 本文基于 MMAction2 仓库中 to人工智能计算机视觉深度学习MMAction2 实战UCF-101 数据集准备全流程指南标注下载、视频处理、帧/光流抽取与文件列表生成MMAction2 实战UCF 101 数据集准备全流程指南标注下载、视频处理、帧/光流抽取与文件列表生成 本指南以 tools/data/ucf101/人工智能计算机视觉深度学习MMAction2 的 AVA-Kinetics 数据集准备指南从 Kinetics700 裁剪、RGB 帧提取到标注与提案合并的完整流程MMAction2 的 AVA Kinetics 数据集准备指南从 Kinetics700 裁剪、RGB 帧提取到标注与提案合并的完整流程 AVA Kinet人工智能计算机视觉深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考