恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
mmaction2 音频动作识别实战:ResNet18 音频模型(TSNAudioHead)的完整训练与测试指南
首页
资讯中心
/
mmaction2 音频动作识别实战:ResNet18 音频模型(TSNAudioHead)的完整训练与测试指南
mmaction2 音频动作识别实战:ResNet18 音频模型(TSNAudioHead)的完整训练与测试指南
发布时间:2026/10/13 2:05:41
人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载本文以 configs/recognition_audio/resnet/README.md 为主线系统讲解 mmaction2 中ResNet for Audio音频动作识别方案如何在 Kinetics-400 数据集上训练和评测基于离线 mel 频谱特征的 ResNet18 音频识别模型并结合仓库中的配置文件tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py、模型源码recognizer_audio.py、tsn_audio_head.py与数据准备脚本帮助读者理解整条音频识别链路的配置含义、数据流转与复现要点。一、模型背景与 Model Zoo 结果该目录对应论文Audiovisual SlowFast Networks for Video RecognitionXiao, Lee, Grauman, Malik, Feichtenhofer, 2020。论文提出 AVSlowFast 架构在 Slow 与 Fast 视觉通路之外引入一条Faster Audio通路在多个层次融合音频与视觉特征并引入 DropPathway 技术在训练中随机丢弃音频通路作为正则化手段以缓解音频与视觉模态学习动态不一致带来的训练困难。mmaction2 的recognition_audio/resnet集合即该体系中仅音频模态的官方复现模型元数据记录在 metafile.yml 中。Kinetics-400 上的官方结果如下帧采样策略n_fftGPU 数主干预训练Top-1 AccTop-5 Acc测试协议FLOPs参数量64x1x110248ResNet18None13.727.31 clips0.37G11.4M对应配置文件为 configs/recognition_audio/resnet/tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py。配置文件名遵循 mmaction2 的命名约定tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature中8xb320表示 8 卡、每卡 batch 320全局 batch 256064x1x1表示每个 clip 取 64 帧、间隔 1100e表示训练 100 个 epoch输入为预提取的音频特征audio-feature。官方 checkpoint 与训练 log 发布在 OpenMMLab 模型库中下载地址见 metafile.yml 维护的仓库索引。二、模型配置详解RecognizerAudio ResNet18 TSNAudioHead官方配置的核心部分是模型定义# 文件configs/recognition_audio/resnet/tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py _base_ ../../_base_/default_runtime.py # model settings model dict( typeRecognizerAudio, backbonedict(typeResNet, depth18, in_channels1, norm_evalFalse), cls_headdict( typeTSNAudioHead, num_classes400, in_channels512, dropout_ratio0.5, init_std0.01, average_clipsprob))各字段的含义与源码依据如下typeRecognizerAudio音频识别器框架定义在 mmaction/models/recognizers/recognizer_audio.py。它继承BaseRecognizermmaction/models/recognizers/base.py在extract_feat中先把批量输入 reshape 为(-1, ...)展平 clip 维度再送入 backbone支持backbone/head两个阶段输出特征。backbonedict(typeResNet, depth18, in_channels1, norm_evalFalse)注意in_channels1——音频分支的输入不是 RGB 图像而是单通道 mel 频谱图mel-spectrogram 的每一帧被视为一张图像因此使用 ResNet18 的第一层卷积输入通道数为 1。norm_evalFalse表示训练时 BN 层保持 train 模式。cls_headdict(typeTSNAudioHead, ...)音频分类头实现位于 mmaction/models/heads/tsn_audio_head.py。TSNAudioHead继承BaseHead内部结构为AdaptiveAvgPool2d((1,1))空间平均池化 → flatten →Dropout(pdropout_ratio)→Linear(in_channels, num_classes)其中fc_cls以normal_init(stdinit_std)初始化init_std0.01与 0.5 的 dropout 是音频模型常用的防过拟合设置。num_classes400对应 Kinetics-400。TSNAudioHead中各参数的取值范围与默认值源码 docstringspatial_type默认为avgdropout_ratio默认 0.4本配置覆盖为 0.5init_std默认 0.01loss_cls默认CrossEntropyLoss。三、数据集与标注文件AudioDataset配置中的数据集部分dataset_type AudioDataset data_root data/kinetics400 ann_file_train kinetics400_train_list_audio_features.txt ann_file_val kinetics400_val_list_audio_features.txt ann_file_test kinetics400_val_list_audio_features.txtAudioDataset定义在 mmaction/datasets/audio_dataset.py其load_data_list逐行解析标注文本每行以空白符分隔为三部分——特征文件路径、原始视频总帧数、类别标签路径会与data_prefixdict(audio...)拼接。标注文件示例与 docs/en/user_guides/prepare_dataset.md 中Audio-based Action Recognition一节一致ihWykL5mYRI.npy 300 153 lumzQD42AN8.npy 240 321 sWFRmD9Of4s.npy 250 250 w_IpfgRsBVA.npy 300 356其中300是该视频原始总帧数用于把视频帧索引映射到音频特征时间轴153是类别标签。配置中data_prefixdict(audioaudio_features_train)表明音频特征.npy离线存放在data/kinetics400/audio_features_train等目录下。AudioDataset还支持multi_class参数做多标签识别此时每行剩余的多个整数都会解析为标签列表源码中label [int(x) for x in line_split[idx:]]并需指定num_classes。四、数据管线从 .npy 特征到 NCTF 张量配置的三条 pipeline 高度一致train_pipeline [ dict(typeLoadAudioFeature), dict(typeSampleFrames, clip_len64, frame_interval1, num_clips1), dict(typeAudioFeatureSelector), dict(typeFormatAudioShape, input_formatNCTF), dict(typePackActionInputs) ]逐个环节结合源码说明LoadAudioFeaturemmaction/datasets/transforms/loading.py加载离线提取的 mel 频谱.npy文件写入results[audios]与results[length]。对缺少音频流的视频它会按pad_method默认zero可选random生成 10 秒时长的占位特征形状(640, 80)保证批次形状稳定。SampleFrames与 RGB 视频相同的帧采样算子clip_len64, frame_interval1, num_clips1即每次取 1 个 64 帧 clip产出frame_inds供下一步对齐音频。AudioFeatureSelectormmaction/datasets/transforms/loading.py核心是把视频帧区间映射为音频特征行区间。它用(frame_idx1) / total_frames * length把frame_inds的首末帧换算成特征时间轴上的start_idx/end_idx切出对应片段后按fixed_length默认 128截断或零填充使每个样本长度一致。单测见 tests/datasets/transforms/test_sampling.py。FormatAudioShapemmaction/datasets/transforms/formatting.py目前仅接受input_formatNCTF否则抛ValueError把(clip, sample, freq)reshape 为(clip, 1, sample, freq)即在中间补一个通道维使其成为可送入in_channels1卷积主干的四维输入。相关测试见 tests/datasets/transforms/test_formating.py。PackActionInputs将结果打包为模型输入与 metas。Dataloader 侧的关键配置训练/验证batch_size320每卡、num_workers4、persistent_workersTrue测试batch_size1。评估器为AccMetricmmaction/evaluation/metrics/acc_metric.py输出 Top-1 / Top-5 准确率与上文结果表中的指标一致。五、音频特征数据准备提取 wav 与构建 mel 频谱由于该模型输入是离线特征训练前需要两步数据准备命令参数说明见 docs/en/user_guides/prepare_dataset.md 的音频小节第一步从视频中提取音频cd $MMACTION2 python tools/data/extract_audio.py ${ROOT} ${DST_ROOT} [--ext ${EXT}] [--num-workers ${N_WORKERS}] \ [--level ${LEVEL}]参数ROOT为视频根目录DST_ROOT为音频输出目录EXT为视频扩展名如mp4N_WORKERS为进程数LEVEL为目录层级。脚本 tools/data/extract_audio.py 内部对每个视频执行ffmpeg -i video -map 0:a -y dst.wav抽轨并用进程池并行、跳过已存在的文件。第二步离线生成 mel 频谱特征cd $MMACTION2 python tools/data/build_audio_features.py ${AUDIO_HOME_PATH} ${SPECTROGRAM_SAVE_PATH} [--level ${LEVEL}] \ [--ext $EXT] [--num-workers $N_WORKERS] [--part $PART]参数AUDIO_HOME_PATH为 wav 目录SPECTROGRAM_SAVE_PATH为特征输出目录PART支持多机分片如2/5表示 5 分片的第 2 片。脚本 tools/data/build_audio_features.py 中的AudioTools默认参数为frame_rate30、sample_rate16000、num_mels80、fft_size1280、hop_size320即 32ms 窗、16ms 步长并支持spectrogram_type取lws默认基于 lws 库的高精度谱或librosa。注意脚本命令行处默认实例化为AudioTools(fft_size512, hop_size256)而 metafile.yml 记录的模型元数据为n_fft: 1024——若要严格复现 Model Zoo 权重建议以元数据记录的 n_fft 为准调整AudioTools的fft_size并保持一致的hop_size。提取结果保存为与标注文件路径对应的.npy文件float32形状约为(帧数, 80)供LoadAudioFeature读取。六、训练通用命令python tools/train.py ${CONFIG_FILE} [optional arguments]README 给出的复现示例在 Kinetics-400 音频数据集上以确定性选项训练 ResNet 音频模型并启用周期验证python tools/train.py configs/recognition_audio/resnet/tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py \ --seed 0 --deterministic该配置的训练超参可直接在配置文件中查看train_cfg dict( typeEpochBasedTrainLoop, max_epochs100, val_begin1, val_interval5) param_scheduler [ dict(typeCosineAnnealingLR, eta_min0, T_max100, by_epochTrue) ] optim_wrapper dict( optimizerdict(typeSGD, lr0.2, momentum0.9, weight_decay0.0001), clip_graddict(max_norm40, norm_type2)) default_hooks dict(checkpointdict(max_keep_ckpts3, interval5))即100 个 epoch、从第 1 个 epoch 起每 5 个 epoch 验证一次SGD 初始学习率 0.2、momentum 0.9、weight decay 1e-4配合CosineAnnealingLR余弦退火至 0梯度裁剪max_norm40音频模型常用较大的裁剪阈值checkpoint 每 5 个 epoch 保存、最多保留 3 份。多卡分布式训练可用python -m torch.distributed.launch或tools/dist_train.sh更多训练参数--amp、--work-dir、--seed、--deterministic等见 Training and Test Tutorial。七、测试与结果导出通用命令python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]示例测试 Kinetics-400 上的 ResNet 音频模型并将结果 dump 到 pkl 文件python tools/test.py configs/recognition_audio/resnet/tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py \ checkpoints/SOME_CHECKPOINT.pth --dump result.pkl测试走test_pipeline与 val 相同test_evaluator AccMetric最终在终端报告 Top-1 / Top-5 准确率。更多测试与分布式测试选项--outfile、--format-only、tools/dist_test.sh等同样参见 Training and Test Tutorial。八、关键文件索引与引用围绕本文主题建议按以下路径深入模型配置configs/recognition_audio/resnet/tsn_r18_8xb320-64x1x1-100e_kinetics400-audio-feature.py结果元数据configs/recognition_audio/resnet/metafile.yml识别器 / 分类头mmaction/models/recognizers/recognizer_audio.py、mmaction/models/heads/tsn_audio_head.py数据集与算子mmaction/datasets/audio_dataset.py、mmaction/datasets/transforms/loading.py、mmaction/datasets/transforms/formatting.py数据准备tools/data/extract_audio.py、tools/data/build_audio_features.py、docs/en/user_guides/prepare_dataset.md相关测试tests/datasets/transforms/test_loading.py、tests/datasets/transforms/test_sampling.py、tests/datasets/transforms/test_formating.py若在你的研究中使用了该模型请引用原文论文article{xiao2020audiovisual, title{Audiovisual SlowFast Networks for Video Recognition}, author{Xiao, Fanyi and Lee, Yong Jae and Grauman, Kristen and Malik, Jitendra and Feichtenhofer, Christoph}, journal{arXiv preprint arXiv:2001.08740}, year{2020} }适用前提与限制本文所有命令、配置与参数均以当前仓库为准官方结果Top-1 13.7 / Top-5 27.3对应 8 卡、全局 batch 2560、n_fft1024 的训练设置复现时需保证 mel 频谱提取参数n_fft、hop_size、num_mels与训练时一致否则特征分布不同会影响指标缺少音频流的样本会被零填充/随机填充占位属于训练时的鲁棒性设计而非可忽略的细节。赞分享人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载相关推荐MMAction2 中 SlowOnly 视频识别模型的配置、训练与评测实战详解MMAction2 中 SlowOnly 视频识别模型的配置、训练与评测实战详解 SlowOnly 是 MMAction2 支持的经典慢路径视频识别架构它仅使人工智能计算机视觉深度学习MMAction2 中 MViTv2 视频动作识别骨干网络实现、模型配置与训练推理实战指南MMAction2 中 MViTv2 视频动作识别骨干网络实现、模型配置与训练推理实战指南 本文以 MMAction2 中 MViTMultiscale V人工智能计算机视觉深度学习Gitea 软件包仓库实战如何把 Gitea 变成你的私有 Maven/NuGet/Go 包中心Gitea 软件包仓库实战如何把 Gitea 变成你的私有 Maven/NuGet/Go 包中心 为什么用 Gitea 做软件包仓库 Gitea 是一款轻量后端代码托管研发协作CI/CD上一篇OpenAI Plugins iOS开发指南使用Build iOS Apps插件快速构建移动应用下一篇from-python-to-numpy未来展望超越NumPy的向量化技术发展趋势创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考