mmaction2 Charades-STA 数据集准备指南:从标注下载到 C3D 特征组织,再到 DRN 视频定位训练
人工智能计算机视觉深度学习【免费下载链接】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),仅供参考

相关新闻

QT框架下旅行模拟查询系统的开发与优化实践

QT框架下旅行模拟查询系统的开发与优化实践

1. 项目概述与核心价值这个旅行模拟查询系统本质上是一个集成了地图可视化、路径规划和信息查询的桌面端应用。不同于简单的网页版工具,基于QT框架的C实现让它具备了本地化运行的高效性,特别适合需要处理大量地理数据或复杂计算场景的旅行规划需求。我去…

2026/10/13 17:59:40 阅读更多 →
向量库索引膨胀致C盘0字节?从原理到重建的完整排查指南

向量库索引膨胀致C盘0字节?从原理到重建的完整排查指南

C盘红了、0字节,数据库直接罢工,这段经历让我每次想起来都后背发凉。我跑的这个微客AI 项目其实不大,原始数据只有 75M,本来以为撑死占个几百兆磁盘空间,结果向量库硬生生把索引撑到了 48.6G,直接把 C 盘干…

2026/10/13 17:59:40 阅读更多 →
SSM毕设实战:农村宅基地管理系统设计与运行全解析

SSM毕设实战:农村宅基地管理系统设计与运行全解析

简介:这是一套基于SSM框架开发的农村宅基地管理系统,属于完整的JavaWeb工程项目,适合计算机相关专业学生用于毕业设计或课程设计实训。系统围绕宅基地审批业务,设计了村民、村委、镇府、县委、管理员五个角色端,覆盖村…

2026/10/13 17:59:40 阅读更多 →

最新新闻

多智能体电梯群控:基于目的楼层预约与PPO的深度强化学习实现

多智能体电梯群控:基于目的楼层预约与PPO的深度强化学习实现

简介:本资源是一套面向计算机、人工智能、自动化等专业学生的毕业设计与课程设计实践项目,聚焦于多智能体协同下的电梯群控优化问题,采用深度强化学习实现目的楼层预约调度算法,解决传统电梯响应延迟高、能耗大、乘客等待时间长等…

2026/10/13 19:14:30 阅读更多 →
语义分割环境搭建:PyTorch CPU与GPU版本安装及验证全攻略

语义分割环境搭建:PyTorch CPU与GPU版本安装及验证全攻略

1. 系列前情回顾与本期核心目标语义分割学习系列写到第四篇,前面几篇我分别梳理了语义分割的基本概念、常见数据集的组织方式、以及几个主流分割模型的结构差异。按照正常的学习路线,理论铺垫到这一步,接下来就该动手了。动手的第一步就是装环…

2026/10/13 19:14:30 阅读更多 →
Spring Boot配置绑定实战:@ConfigurationProperties原理与避坑

Spring Boot配置绑定实战:@ConfigurationProperties原理与避坑

接触Spring Boot这些年,我做得最多的一个动作就是替同事定位“配置不生效”的诡异问题。排查到最后,十有八九都落在同一个注解上——ConfigurationProperties。它看起来只是给配置类加个前缀声明,实际牵扯到数据绑定、松散命名、第三方注册、…

2026/10/13 19:14:30 阅读更多 →
语义分割必备:PyTorch CPU/GPU版本安装全攻略

语义分割必备:PyTorch CPU/GPU版本安装全攻略

废话不多说,直接进入正题。这一篇是这个系列的第四篇,主题是很多人在语义分割学习中绕不过去的第一道坎——CPU和GPU版本的PyTorch及其环境安装。前几篇我们聊了语义分割的数据标注、模型结构、评价指标,但真正动手跑代码的时候,你…

2026/10/13 19:14:29 阅读更多 →
Java核心知识点全解析:从JVM到并发编程的底层原理

Java核心知识点全解析:从JVM到并发编程的底层原理

做Java开发这些年,我有一个很深的感受:真正拉开水平差距的,不是谁背的框架更多、API记得更熟,而是对底层那批核心知识点有没有吃透。所谓“Java重要知识点”,不是让你背八股文,而是帮你在遇到线上问题时&am…

2026/10/13 19:14:29 阅读更多 →
Go监听MySQL binlog实战:轻量级数据变更捕获与生产避坑指南

Go监听MySQL binlog实战:轻量级数据变更捕获与生产避坑指南

1. 这不是“监听MySQL”,而是重建一套轻量级数据变更管道很多人第一次看到“用Go监听binlog”这个说法,第一反应是:“MySQL自己不就有mysqlbinlog命令吗?再不济写个Python脚本调用一下不就完了?”——我试过&#xff0…

2026/10/13 19:13:29 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →