资讯动态

MMAction2 常见问题全解:从安装报错到数据、训练与测试的实战排障指南

发布时间:2026/10/13 9:14:37 来源:尧图企业网站定制
人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载导读本文以 MMAction2 官方 FAQ 文档docs/zh_cn/get_started/faq.md为主线系统梳理视频理解工具箱使用中最常遇到的四类问题环境安装报错、数据预处理异常、训练配置细节、测试阶段的显存与归一化技巧。每一类问题均给出可直接复制的解决方案并结合当前仓库源码如mmaction/datasets/rawframe_dataset.py、mmaction/models/backbones/resnet3d.py、mmaction/models/heads/base.py等说明问题产生的底层原理帮助你既能照方抓药也能知其所以然。说明FAQ 是社区持续维护的排障清单本文尽量保留原文档中所有问题与回答并补充实现层面的佐证。若你的问题未被覆盖可参照仓库.github/ISSUE_TEMPLATE中的报错模板创建 Issue并填写完整环境信息。一、安装阶段三大高频报错的定位与修复1. No module named mmcv.ops / No module named mmcv._ext这是 OpenMMLab 系项目最常见的安装问题根因是mmcv 安装版本不正确例如只装了纯 Python 版 mmcv或 mmcv 与 PyTorch/CUDA 编译环境不匹配导致 C/CUDA 扩展算子mmcv.ops、mmcv._ext缺失。修复步骤先卸载环境中现有 mmcvpip uninstall mmcv再参照 mmcv 官方安装说明按你的 PyTorch 与 CUDA 版本安装对应的mmcv注意选择带编译扩展的 wheel 或源码编译版。之后按 docs/en/get_started/installation.md 中的安装流程依次安装 mmengine、mmaction2 及其余依赖。2. OSError: MoviePy Error: creation of None failed because of the following error此报错出现在依赖 MoviePy 的视频处理场景例如 demo 中的可视化合成解决方案是先安装依赖pip install moviepy安装后仍需注意两个平台差异来源于 MoviePy 官方 issue 记录Windows 用户ImageMagick 不会被 MoviePy 自动检测到。需要手动编辑moviepy/config_defaults.py为IMAGEMAGICK_BINARY提供magick二进制文件的绝对路径例如IMAGEMAGICK_BINARY C:\\Program Files\\ImageMagick_VERSION\\magick.exeLinux 用户若 MoviePy 未检测到 ImageMagick需编辑/etc/ImageMagick-6/policy.xml将限制文本处理的策略注释掉!-- policy domainpath rightsnone pattern* / --3. 已安装 XXCODEBASE为何仍报 Please install XXCODEBASE to use XXX收到该错误说明 MMAction2 在运行时无法从 XXCODEBASE 中 import 某个函数或类。常见原因是依赖顺序错误OpenMMLab 系列代码库mmdet、mmseg、mmpose 等通常要求先安装 mmcv 与 mmengine再安装对应代码库。建议按照安装教程的依赖顺序重装一遍也可以直接运行报错信息对应的 import 行观察具体的失败原因是找不到模块、版本不匹配还是编译扩展缺失。二、数据阶段文件路径、预处理策略与流水线配对1. FileNotFound 错误No such file or directory: xxx/xxx/img_00300.jpg该问题的本质是start_index与帧文件命名偏移不一致。在 MMAction2 中rawframe原始帧数据集默认start_index1源码 mmaction/datasets/rawframe_dataset.py 的文档明确说明raw frames count from 1因此filename_tmplimg_{:05}.jpg会从img_00001.jpg开始取帧视频数据集默认start_index0源码 mmaction/datasets/video_dataset.py 说明frames loaded from videos count from 0。如果第一帧或最后一帧报 FileNotFound请检查数据实际从xxx_00000.jpg还是xxx_00001.jpg开始然后在配置文件的dataset或数据处理流水线中显式调整start_index的值使偏移与文件名匹配。2. 视频预处理固定尺寸 vs 统一短边FAQ 给出的建议是相比将所有视频缩放到固定尺寸如340x256统一将短边缩放到相同长度如 256px 或 320px通常是更好的方案因此仓库默认采用短边 256px 的预处理设置。两种方案的基准测试结果可分别在 configs/recognition/tsn 与 configs/recognition/slowonly 的配置目录中查阅。3. 流水线项不匹配导致KeyError: total_frames这个报错是用错了解码器的典型症状。MMAction2 的数据流水线分两条路线视频输入需要在流水线中动态解码视频必须使用配对的Init Decode组合例如DecordInitDecordDecodeOpenCVInitOpenCVDecodePyAVInitPyAVDecode典型示例见 configs/recognition/tsn/tsn_imagenet-pretrained-r50_8xb32-1x1x3-100e_kinetics400-rgb.py 中train_pipeline的DecordInit/DecordDecode配对写法。帧输入图像已离线解码应使用RawFrameDecode示例见 configs/recognition/trn/trn_imagenet-pretrained-r50_8xb16-1x1x8-50e_sthv1-rgb.py。为什么会对不上从源码看DecordInit负责初始化视频容器并写入total_frames等键见 mmaction/datasets/transforms/loading.py随后DecordDecode根据帧索引批量取帧同文件 L1170-L1248。而RawFrameDecode直接从frame_dirfilename_tmpl按路径读图见 loading.py L1361-L1462它本身并不计算total_frames。因此如果把RawFrameDecode用在视频输入上就无法预先获得total_frames触发KeyError。反过来若在帧数据上误用了视频解码器也会因缺少video_reader而报错。三、训练阶段主干预训练、冻结阶段、memcached 与数据集切换1. 如何只利用训练好的识别模型的主干进行预训练若要加载整个预训练模型全网络微调在新配置文件的load_from字段中填入预训练权重路径或 URL 即可。若要仅加载主干权重则将配置中主干backbone部分的pretrained值改为权重路径/URL。训练时与模型结构不匹配的键会被自动忽略。2. 微调时如何冻结主干的某些阶段参考 mmaction/models/backbones/resnet3d.py 中_freeze_stages()的实现当frozen_stages 0时它会将conv1及layer1 ~ layer{frozen_stages}置为eval()模式并设置requires_grad False。该函数会在train()切换模式时被自动调用见 resnet3d.py L889-L896。使用要点在主干配置中设置frozen_stages参数例如frozen_stages1冻结 conv1 与 layer1务必在配置中设置find_unused_parameters True否则分布式训练/测试时因部分参数不参与计算图而报错除 C3D 等少数模型外几乎所有继承自ResNet/ResNet3D的主干都支持内部函数_freeze_stages()因此可放心使用。3. 如何在配置中启用 memcached在 MMAction2 中memcached 参数通过FileClient传递视频数据集传给DecordInit原始帧数据集传给RawFrameDecode。FileClient来自 mmengine 的mmaction数据加载实现源码可见 loading.py L1407-L1408最终由mmengine.fileio.FileClient统一管理io_backend与扩展参数。原始帧数据集启用 memcached 的示例mc_cfg dict(server_list_cfgserver_list_cfg, client_cfgclient_cfg, sys_pathsys_path) train_pipeline [ ... dict(typeRawFrameDecode, io_backendmemcached, **mc_cfg), ... ]其中server_list_cfg、client_cfg、sys_path需按你部署的 memcached 集群实际填写。4. 如何设置load_from以微调模型configs/base/default_runtime.py 中将load_from None设为默认值。得益于 MMAction2 配置的继承机制详见 docs/zh_cn/user_guides/config.md你只需在自己的配置文件中直接覆写load_from path/to/checkpoint.pth即可无需改动基础配置。5. 训练时如何使用RawFrameDatasetMMAction2 1.x 的大多数配置默认使用VideoDataset对文件存储更友好。若数据以原始帧形式存放需要修改两处1dataset 相关将train_dataloader/val_dataloader/test_dataloader中的dataset由datasetdict( typeVideoDataset, data_prefixdict(videoxxx), ...)改为datasetdict( typeRawFrameDataset, data_prefixdict(imgxxx), filename_tmpl{:05}.jpg, ...)注意filename_tmpl必须与实际帧命名匹配默认模板为img_{:05}.jpg见 rawframe_dataset.py L89此外RawFrameDataset默认start_index1rawframe_dataset.py L93若帧从 0 开始计数请同步调整。2transform 相关在train_pipeline/val_pipeline/test_pipeline中删除dict(typeDecordInit, **file_client_args)将dict(typeDecordDecode)改为dict(typeRawFrameDecode, **file_client_args)确保配置文件中定义了file_client_args dict(io_backenddisk)。典型可参考仓库内使用RawFrameDecode的配置文件如 configs/recognition/trn/trn_imagenet-pretrained-r50_8xb16-1x1x8-50e_sthv1-rgb.py。更多自定义数据集细节见 docs/zh_cn/user_guides/prepare_dataset.md 与 docs/zh_cn/advanced_guides/customize_dataset.md。四、测试阶段得分归一化与大模型显存优化1. 如何让预测得分在 softmax 后归一化到 [0, 1]在配置文件中将model.cls_head.average_clips设置为prob。从源码看该字段支持score、prob与None三种取值mmaction/models/heads/base.py L210-L226prob先对每个 clip 的得分做softmax再对多个 clip 取平均结果天然落在 [0, 1]score直接对多个 clip 的原始得分取平均None不做平均直接返回各 clip 得分。仓库多处配置默认即使用prob例如 mmaction/configs/base/models/slowonly_r50.py。2. 模型过大、GPU 显存装不下一个测试样本怎么办默认情况下3D 模型测试采用10 clips × 3 crops 30 个视图。对超大模型而言即使 batch 只有 1 个样本30 个视图同时前向也会撑爆显存。解决办法在配置文件的model[test_cfg]中设置max_testing_views n使前向过程每次只处理 n 个视图。从 mmaction/models/recognizers/recognizer3d.py 的实现可以看到识别器在测试模式下会把总视图数按max_testing_views切块分批送入 backbone/neck最后将各批特征拼接torch.cat得到的结果与整批前向完全一致从而在不改变推理结果的前提下大幅降低峰值显存。使用前提源码中的断言max_testing_views必须是整数仅与batch_size 1兼容num_segs total_views在 recognizer2d 中max_testing_views还必须是num_segments的倍数见 mmaction/models/recognizers/recognizer2d.py。五、FAQ 之外的延伸安装与运行环境速查FAQ 中多次涉及环境依赖问题这里补充仓库内可核对的安装依据完整安装步骤见 docs/zh_cn/get_started/installation.md其中明确了 mmcv、mmengine 与 MMAction2 的安装顺序与版本匹配要求依赖声明集中在 requirements.txt 与 requirements/mminstall.txt可据此核对decord、moviepy、opencv-python等第三方库是否齐全若需在分布式或多卡环境下训练参考 tools/dist_train.sh 与 tools/dist_test.sh 的用法。结语本文沿 FAQ 的四大板块安装、数据、训练、测试逐条给出了可落地的解决方案并借源码确认了start_index默认值、_freeze_stages()冻结逻辑、FileClient的 memcached 通道、average_clips的三种聚合方式以及max_testing_views的分块推理原理。遇到类似报错时建议先对照对应小节定位问题环节再结合报错信息与配置逐项排查。若问题仍无法解决请携带完整环境信息按 Issue 模板反馈社区 FAQ 也会持续补充高频问题。赞分享人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载相关推荐MMAction2 常见问题排查实战指南安装、数据、训练与测试全流程 FAQ 深度解析MMAction2 常见问题排查实战指南安装、数据、训练与测试全流程 FAQ 深度解析 本文围绕 MMAction2 官方 FAQ 文档展开系统梳理了开发者人工智能计算机视觉深度学习MMAction2常见问题与解决方案从安装到运行的全方位排错OpenMMLab的下一代视频理解工具箱MMAction2是一个功能强大的深度学习框架专为视频动作识别和分析而设计。本文将为您全面梳理MMAction2使用过人工智能计算机视觉深度学习Ultralytics YOLO26 常见问题排查指南从安装、训练到预测与部署的完整排障手册Ultralytics YOLO26 常见问题排查指南从安装、训练到预测与部署的完整排障手册 本文以 docs/en/guides/yolo common i人工智能深度学习计算机视觉预训练上一篇探索AI的现代途径AIMA Exercises下一篇BiliTools AI总结把2小时B站视频变成3分钟可复习的笔记创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑