人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载本文围绕 mmaction2 仓库中 Charades-STA 数据准备文档 展开完整讲解视频语言定位Video Grounding任务中 Charades-STA 数据集的两步准备工作标注文件下载与 C3D 特征文件组织并结合CharadesSTADataset数据集类与 DRN 三阶段训练配置说明这些数据文件如何被框架实际消费帮助读者在 mmaction2 中完整跑通基于 Charades-STA 的视频定位训练与测试流程。一、Charades-STA 数据集简介Charades-STA 是在 Charades 数据集基础上增加了自然语言句子的时间定位标注sentence temporal annotations而成的数据集由 Gao 等人发表于 ICCV 2017 的论文《TALL: Temporal Activity Localization via Language Query》中提出。给定一段室内场景视频和一句自然语言查询query模型需要预测句子所描述事件在视频中的起止时间。在 mmaction2 中Charades-STA 主要用于DRNDense Regression Network for Video GroundingCVPR 2020的视频定位实验。按 数据准备文档 的说明当前框架只支持来自 DRN 官方实现的 C3D 特征即从原始视频中预先抽取好、以.pt文件形式存储的视频片段级 C3D 特征。这意味着 Charades-STA 在 mmaction2 中走的是离线特征 定位网络的技术路线不需要在训练时加载原始视频。对应的数据引用文献为inproceedings{gao2017tall, title{Tall: Temporal activity localization via language query}, author{Gao, Jiyang and Sun, Chen and Yang, Zhenheng and Nevatia, Ram}, booktitle{Proceedings of the IEEE international conference on computer vision}, pages{5267--5275}, year{2017} } inproceedings{DRN2020CVPR, author {Runhao, Zeng and Haoming, Xu and Wenbing, Huang and Peihao, Chen and Mingkui, Tan and Chuang Gan}, title {Dense Regression Network for Video Grounding}, booktitle {CVPR}, year {2020}, }二、Step 1准备标注文件准备工作的第一步是在仓库根目录下的 tools/data/charades-sta 目录中执行bash download_annotations.sh查看 download_annotations.sh 的源码可知该脚本做了三件事检查${MMACTION2}/data/CharadesSTA/目录是否存在不存在则自动创建mkdir -p进入该目录从 DRN 官方仓库的data/dataset/Charades目录下wget下载以下 6 个标注/元信息文件文件作用在框架中的使用位置Charades_sta_train.txt训练集标注每行格式为视频名 起始时间 结束时间##查询句子ann_file_trainCharades_sta_test.txt测试/验证集标注ann_file_val/ann_file_testCharades_duration.json每个视频的时长秒用于把起止时间归一化duration_fileCharades_fps_dict.json每个视频的帧率fps_fileCharades_frames_info.json每个视频对应的特征帧数量num_frames_fileCharades_word2id.json查询句子词表词到 id 的映射vocab_size为 1301word2id_file这 6 个文件与 DRN 训练配置中的字段一一对应。以 drn_2xb16-4096-10e_c3d-feature_first.py 为例dataset_type CharadesSTADataset root data/CharadesSTA data_root f{root}/C3D_unit16_overlap0.5_merged/ ann_file_train f{root}/Charades_sta_train.txt ann_file_val f{root}/Charades_sta_test.txt ann_file_test f{root}/Charades_sta_test.txt word2id_file f{root}/Charades_word2id.json fps_file f{root}/Charades_fps_dict.json duration_file f{root}/Charades_duration.json num_frames_file f{root}/Charades_frames_info.json window_size 16 ft_overlap 0.5可以看到第一步下载的 4 个 JSON 文件分别作为word2id_file、fps_file、duration_file、num_frames_file传入数据集配置2 个 txt 标注文件作为ann_file_train/ann_file_val/ann_file_test。三、Step 2准备 C3D 特征完成第一步后工作目录应位于${MMACTION2}/data/CharadesSTA/。按照 数据准备文档 的指引参照 DRN 官方仓库中 Download features 给出的命令把 C3D 特征下载到当前目录最终存放于子目录C3D_unit16_overlap0.5_merged/其中每个视频对应一个以视频名命名的.pt文件如001YG.pt、003WS.pt。从目录名和配置参数可以解读其特征组织方式unit16 / window_size 16C3D 特征以 16 帧为一个提取窗口overlap0.5 / ft_overlap 0.5相邻窗口 50% 重叠merged重叠窗口特征经过合并处理。这两个参数直接参与数据集的 proposal 构造。在 charades_sta_dataset.py 中窗口步长由二者计算得到self.ft_interval int(window_size * (1 - ft_overlap)) # 16 * (1 - 0.5) 8即特征帧之间实际以 8 帧的步长滑窗。四、完成后的目录结构两步完成后仓库中的数据目录结构应为mmaction2 ├── mmaction ├── tools ├── configs ├── data │ ├── CharadesSTA │ │ ├── C3D_unit16_overlap0.5_merged │ │ | ├── 001YG.pt │ │ | ├── 003WS.pt │ │ | ├── 004QE.pt │ │ | ├── 00607.pt │ │ | ├── ... │ │ ├── Charades_duration.json │ │ ├── Charades_fps_dict.json │ │ ├── Charades_frames_info.json │ │ ├── Charades_sta_test.txt │ │ ├── Charades_sta_train.txt │ │ ├── Charades_word2id.json其中C3D_unit16_overlap0.5_merged子目录对应配置中的data_root即data_prefixdict(videodata_root)标注与元信息文件位于其上一级data/CharadesSTA/。五、源码解析标注与特征如何被消费数据集实现位于 CharadesSTADataset在 mmaction/datasets/init.py 中注册导出它继承BaseActionDataset核心逻辑分为三部分1. 标注加载load_data_list逐行读取标注 txt以##分隔视频元信息与查询句子两部分first_part, query_sentence item.strip().split(##) vid_name, start_time, end_time first_part.split()随后对查询句子做分词依赖nltknltk未安装时会在__init__中抛出ImportError通过word2id映射为 token 序列同时利用duration_info将真实起止时间归一化为gt_bboxgt_bbox (gt_start_time / duration, min(gt_end_time / duration, 1))2. proposal 生成get_proposals按 32 帧等距划分出 33 个采样点两两配对得到 32 个候选时间区间proposals并把每个区间映射到特征帧索引proposal_indexes步长即ft_intervaldef get_proposals(self, num_frames): proposals (num_frames - 1) / 32 * np.arange(33) ...3. 特征抽取get_data_info按vid_name定位C3D_unit16_overlap0.5_merged/{vid_name}.pt并torch.load对每个 proposal 区间做区间内取 max 的池化vid_feature[s:e1].max(dim0)得到 32 维 proposal 特征raw_feature供 DRN 网络输入。索引越界时会裁剪到特征长度proposal_indexes data_info[proposal_indexes].clip(maxvid_feature.shape[0] - 1)数据经过PackLocalizationInputs变换打包keys 为gt_bbox、proposalsmeta_keys 包含vid_name、query_tokens、query_length、num_proposals、num_frames后进入DRN模型实现在 mmaction/models/localizers/drn/drn.py。六、与 DRN 三阶段训练、测试的衔接数据准备完成后即可按 DRN 配置说明 进行三阶段训练。三阶段通过配置中的is_first_stage/is_second_stage开关以及学习率区分阶段配置文件学习率特殊设置第一阶段firstAdam, 1e-3is_first_stageTrue前 5 个 epoch 线性升温LinearLR,start_factor0.1第二阶段secondAdam, 1e-5is_second_stageTrue启用 FCOS 模块加载第一阶段最优 ckpt第三阶段thirdAdam, 1e-6微调阶段加载第二阶段最优 ckpt对照三个配置文件可见除阶段开关与optim_wrapper中的lr1e-3 / 1e-5 / 1e-6外其余模型超参完全一致feature_dim4096对应 C3D 特征维度、embed_dim300、vocab_size1301对应Charades_word2id.json的词表大小等。训练命令以 2 卡为例# 第一阶段 bash tools/dist_train.sh configs/localization/drn/drn_2xb16-4096-10e_c3d-feature_first.py 2 # 第二阶段 BEST_CKPTwork_dirs/drn_2xb16-4096-10e_c3d-feature_first/SOME.PTH bash tools/dist_train.sh configs/localization/drn/drn_2xb16-4096-10e_c3d-feature_second.py 2 --cfg-options load_from${BEST_CKPT} # 第三阶段 BEST_CKPTwork_dirs/drn_2xb16-4096-10e_c3d-feature_second/SOME.PTH bash tools/dist_train.sh configs/localization/drn/drn_2xb16-4096-10e_c3d-feature_third.py 2 --cfg-options load_from${BEST_CKPT}测试命令python3 tools/test.py configs/localization/drn/drn_2xb16-4096-10e_c3d-feature_third.py CHECKPOINT.PTH评估指标由RecallatTopK提供mmaction/evaluation/metrics/video_grounding_metric.py配置中为val_evaluator dict(typeRecallatTopK, topK_list(1, 5), threshold0.5)即统计预测区间与 ground truth 的 IoU 大于 0.5 的 RecallTop1 / RecallTop5。该指标的实现逻辑compute_metrics是对每个样本取前 K 个预测只要任一预测与 gt 的 IoU 超过阈值即记为正确最终输出RecallTop{K}_IoU0.5。DRN 官方预训练模型在 Charades-STA 上报告的参考指标为 RecallTop1(IoU0.5) 47.04、RecallTop5(IoU0.5) 84.57见 DRN README 的 Results and Models 表格。七、注意事项必须安装nltkCharadesSTADataset在初始化时检测nltk缺失会直接抛出ImportError见 charades_sta_dataset.py且分词时会用到 punkt 等数据需保证可正常加载。特征目录名必须与配置一致data_root硬编码为C3D_unit16_overlap0.5_merged/window_size16与ft_overlap0.5也与之绑定。若使用其他窗口大小或重叠率抽取的特征需同步修改配置中的data_root、window_size、ft_overlap否则ft_interval与特征帧索引会错位。特征文件命名规则get_data_info中特征路径为os.path.join(self.data_prefix[video], f{vid_name}.pt)即每个视频的.pt文件名必须与标注中的vid_name完全一致。验证集即测试集配置中ann_file_val与ann_file_test均指向Charades_sta_test.txttest_dataloader val_dataloader评测统一在测试集上进行。特征维度C3D 特征为 4096 维对应模型参数feature_dim4096如需更换特征需同时调整该参数与特征目录。八、小结mmaction2 中 Charades-STA 的数据准备是一条清晰的两步链路先用 download_annotations.sh 从 DRN 官方仓库拉取 6 个标注与元信息文件到data/CharadesSTA/再按 DRN 官方方式下载 C3D 特征到data/CharadesSTA/C3D_unit16_overlap0.5_merged/。数据就绪后CharadesSTADataset负责把标注解析为归一化gt_bbox、语言 token 序列和 32 个 proposal 及其 max-pool 特征交由 DRN 三阶段训练学习率依次为 1e-3、1e-5、1e-6并用 RecallTopK(IoU0.5) 评估从而在 mmaction2 中完整复现基于 Charades-STA 的视频语言定位任务。赞分享人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载相关推荐MMAction2 数据集准备实战ActivityNet 视频下载、特征提取与动作检测全流程指南MMAction2 数据集准备实战ActivityNet 视频下载、特征提取与动作检测全流程指南 ActivityNet 是视频理解领域公认的大规模时序动作检人工智能计算机视觉深度学习PaddleX 视频检测数据集标注完整指南从原始视频到可训练的标准数据格式PaddleX 视频检测数据集标注完整指南从原始视频到可训练的标准数据格式 视频检测Video Detection任务要求模型在视频帧上定位并识别目标其人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG微调语音MMAction2 PoseC3D 自定义数据集训练实战从骨架标注提取到模型训练的完整流程MMAction2 PoseC3D 自定义数据集训练实战从骨架标注提取到模型训练的完整流程 本篇技术指南以 custom_dataset_training.m人工智能计算机视觉深度学习上一篇SpeechBrain 文档系统构建指南Sphinx 文档、API 自动生成与 Jupyter 教程集成下一篇League Akari 快速上手指南本地自动选人、战绩分析与日常自动化三步配好创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考