当前位置: 首页 > article >正文

保姆级教程:用MMAction2训练你的第一个自定义动作识别模型(从数据集准备到模型训练)

从零开始构建自定义动作识别模型MMAction2实战指南动作识别技术正在重塑多个行业的交互方式——从健身应用的实时动作纠正到工业质检中的异常行为检测。作为OpenMMLab生态中的重要成员MMAction2以其模块化设计和丰富的预训练模型成为开发者进入这一领域的高效入口。本文将带你完整走通自定义数据训练的全流程涵盖从原始视频处理到模型调优的每个技术细节。1. 环境配置与数据准备1.1 开发环境搭建推荐使用conda创建隔离的Python环境3.7版本这是避免依赖冲突的最佳实践conda create -n mmaction python3.8 -y conda activate mmaction pip install torch torchvision torchaudio pip install openmim mim install mmengine mmcv git clone https://github.com/open-mmlab/mmaction2.git cd mmaction2 pip install -v -e .关键组件说明PyTorch基础深度学习框架MMCV计算机视觉基础库MMEngine训练流程管理OpenMPI可选多节点训练支持1.2 数据集结构设计规范的目录结构是后续流程的基础建议采用如下组织形式mmaction2 └── data └── custom_dataset ├── videos │ ├── class1 │ │ ├── video1.mp4 │ │ └── video2.mp4 │ └── class2 │ ├── video1.mp4 │ └── video2.mp4 ├── rawframes └── annotations ├── classInd.txt ├── trainlist.txt └── testlist.txt标签文件规范classInd.txt类别索引映射1 jumping_jacks 2 squatstrainlist.txt训练样本路径与标签class1/video1.mp4 1 class2/video1.mp4 22. 视频数据处理流水线2.1 视频帧提取实战MMAction2提供多种帧提取方式OpenCV方案兼顾效率与兼容性python tools/data/build_rawframes.py \ data/custom_dataset/videos/ \ data/custom_dataset/rawframes/ \ --task rgb \ --level 2 \ --ext mp4 \ --use-opencv \ --new-width 340 \ --new-height 256参数解析--level 2保留二级目录结构--new-width/height统一帧尺寸--num-worker多进程加速建议设为CPU核心数常见问题排查若遇到Could not open codec错误尝试检查ffmpeg安装ffmpeg -version转换视频编码ffmpeg -i input.mp4 -c:v libx264 output.mp42.2 数据集清单生成自定义数据集需要适配MMAction2的数据加载逻辑。修改tools/data/build_file_list.py# 注册新数据集类型 DATASET_CONFIGS { custom: { ann_file: data/custom_dataset/annotations/trainlist.txt, data_prefix: data/custom_dataset/rawframes, filename_tmpl: img_{:05d}.jpg, with_offset: False } } # 添加解析逻辑 def parse_custom_splits(): video_items [] with open(ann_file) as fin: for line in fin: filename, label line.strip().split() video_items.append( dict(filenamefilename, labelint(label))) return video_items执行生成命令python tools/data/build_file_list.py custom \ data/custom_dataset/annotations/ \ --format rawframes \ --out-root data/custom_dataset/ \ --shuffle3. 模型训练与调优3.1 配置文件深度定制以TSM模型为例关键配置项需要针对性调整# configs/recognition/tsm/custom_config.py # 数据集配置 dataset_type RawframeDataset data_root data/custom_dataset/rawframes/ ann_file_train data/custom_dataset/custom_train_list.txt # 训练参数优化 train_cfg dict( typeEpochBasedTrainLoop, max_epochs100, # 小数据集需更多epoch val_begin5, # 前5个epoch不验证 val_interval2) # 每2个epoch验证一次 # 学习率策略调整 param_scheduler [ dict( typeLinearLR, start_factor0.1, by_epochTrue, begin0, end5), dict( typeMultiStepLR, milestones[30, 60, 90], # 调整衰减点 gamma0.1) ]3.2 分布式训练启动4卡GPU训练启动命令CUDA_VISIBLE_DEVICES0,1,2,3 \ bash tools/dist_train.sh \ configs/recognition/tsm/custom_config.py \ 4 \ --cfg-options \ model.backbone.pretrainedhttps://download.pytorch.org/models/resnet50-0676ba61.pth \ data.videos_per_gpu16 # 根据显存调整性能优化技巧使用--amp开启混合精度训练设置data.workers_per_gpu4加速数据加载添加--validate参数启用定期验证3.3 训练监控与可视化MMAction2集成多种监控工具日志解析python tools/analysis_tools/analyze_logs.py \ plot_curve work_dirs/exp1/20230601_123456.log.json \ --keys acc_top1 \ --out acc_curve.png结果可视化from mmaction.apis import inference_recognizer, init_recognizer model init_recognizer(configs/recognition/tsm/custom_config.py, latest.pth) results inference_recognizer(model, demo.mp4) print(results.pred_score)4. 模型部署与性能优化4.1 模型导出与压缩将训练好的模型转换为部署格式python tools/deployment/pytorch2onnx.py \ configs/recognition/tsm/custom_config.py \ checkpoints/epoch_100.pth \ --shape 1 8 3 224 224 \ --verify \ --dynamic-export模型压缩方案对比方法压缩率精度损失硬件支持量化 (INT8)4x2%TensorRT, OpenVINO知识蒸馏-1-3%所有平台通道剪枝2-4x3-5%需要重新训练4.2 实时推理优化针对边缘设备的优化策略# 使用TensorRT加速 from mmdeploy.apis import create_calib_input_data calib_data create_calib_input_data( configs/recognition/tsm/custom_config.py, data/custom_dataset/, img_shape(224, 224)) !python tools/deployment/tensorrt.py \ configs/recognition/tsm/custom_config.py \ checkpoints/epoch_100.pth \ --calib-file calib_data.pkl \ --enable-fp16延迟测试结果NVIDIA Jetson Xavier模型分辨率帧率(FPS)内存占用(MB)TSN (原始)224x224321200TSN (量化)224x22478320MobileNetV2192x192105180在实际工业质检项目中经过量化的TSM模型将处理速度从原来的15FPS提升到63FPS同时保持了98.7%的识别准确率。这种优化使得单个GPU可以同时处理4路视频流显著降低了硬件投入成本。

相关文章:

保姆级教程:用MMAction2训练你的第一个自定义动作识别模型(从数据集准备到模型训练)

从零开始构建自定义动作识别模型:MMAction2实战指南 动作识别技术正在重塑多个行业的交互方式——从健身应用的实时动作纠正到工业质检中的异常行为检测。作为OpenMMLab生态中的重要成员,MMAction2以其模块化设计和丰富的预训练模型,成为开发…...

终极Windows驱动管理解决方案:DriverStore Explorer完全指南

终极Windows驱动管理解决方案:DriverStore Explorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾经因为C盘空间不足而烦恼?是否遇到过因旧驱…...

ROS项目里OpenCV版本打架了?保姆级教程教你让OpenCV 3和4在Ubuntu 20.04上和平共处

ROS项目中OpenCV多版本共存实战指南 当ROS遇上OpenCV版本冲突 机器人操作系统(ROS)开发者们经常遇到一个令人头疼的问题:新项目需要OpenCV 4的最新特性,而老项目却固执地依赖OpenCV 3的某些接口。这种版本冲突在Ubuntu 20.04上尤为常见,因为R…...

B站视频永久保存终极攻略:m4s-converter一键转换全解析

B站视频永久保存终极攻略:m4s-converter一键转换全解析 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站视频突然下架而焦虑…...

Flutter网络请求高级指南

Flutter网络请求高级指南 引言 在现代移动应用开发中,网络请求是一个核心功能,几乎所有应用都需要与后端服务器进行通信。Flutter提供了多种网络请求方案,从基础的http包到功能强大的dio库,开发者可以根据自己的需求选择合适的方案…...

告别卡顿!用Unreal 5的Niagara和顶点动画,轻松渲染上万“小兵”

突破性能极限:Unreal 5 Niagara与顶点动画实现万人同屏实战指南 当屏幕上同时出现数百个角色时,帧率骤降是每个UE5开发者都经历过的噩梦。骨骼动画的计算开销、移动组件的性能消耗、DrawCall的堆积,这些问题在大规模群体渲染时会被无限放大。…...

APP兼容性测试前期准备全攻略:筑牢测试根基,保障应用适配无忧

兼容性测试是确保App在不同设备、系统版本和网络环境下稳定运行的关键环节。在正式开始测试之前,充分的准备工作能大幅提升效率与覆盖率。一、明确兼容性测试核心目标与范围首先要清晰界定测试目标,避免测试工作盲目开展。核心目标是验证APP在不同终端、…...

从双11到某省政务平台:信息系统架构的本质思考

从双11到某省政务平台:信息系统架构的本质思考 一、架构不是设计出来的,是长出来的 某电商巨头今天的架构,是业务增长、填坑、拆分、迭代的结果,不是一开始就"神设计"。 核心技术底座大量依赖开源产品(K8s 等…...

从手机全景到安防监控:聊聊图像拼接(Image Stitching)技术在实际项目里的那些坑

图像拼接实战指南:从算法原理到工程避坑 当你在旅游景点举起手机拍摄全景照片时,是否好奇过背后的技术如何将多张照片无缝拼接?当安防监控系统需要将多个摄像头画面整合成全景视图时,工程师们又面临哪些挑战?图像拼接技…...

设备机箱机柜批量生产厂家

设备机箱机柜批量生产厂家怎么选?掌握这些要点不踩坑在现代工业领域,设备机箱机柜生产至关重要,它为各种设备提供保护和支撑,确保设备稳定运行。选择一家合适的设备机箱机柜批量生产厂家,对于企业的生产和发展意义重大…...

Windows Terminal美化避坑指南:手把手解决Oh-My-Posh字体乱码、主题不生效问题

Windows Terminal美化避坑实战:Oh-My-Posh疑难杂症全解析 当你第一次看到别人炫酷的终端界面时,那种心动的感觉我完全理解。但现实往往是骨感的——Nerd Fonts装了半天还是显示乱码,精心挑选的主题死活不生效,环境变量像迷宫一样让…...

TV Bro电视浏览器终极指南:用遥控器轻松掌控大屏上网体验

TV Bro电视浏览器终极指南:用遥控器轻松掌控大屏上网体验 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro 想在智能电视上畅游互联网世界,却苦于遥…...

强力AI填充插件Fillinger:3分钟掌握20倍效率提升的完整指南

强力AI填充插件Fillinger:3分钟掌握20倍效率提升的完整指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中重复繁琐的图案填充而烦恼吗&…...

鼠标滚动优化终极指南:如何让Mac外接鼠标拥有触控板般的顺滑体验

鼠标滚动优化终极指南:如何让Mac外接鼠标拥有触控板般的顺滑体验 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction indep…...

从45分钟到5分钟:Brigadier如何彻底改变Mac Boot Camp驱动部署体验

从45分钟到5分钟:Brigadier如何彻底改变Mac Boot Camp驱动部署体验 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 在混合设备管理成为企业IT新常态的今天,Ma…...

LeetCode 斐波那契搜索题解

LeetCode 斐波那契搜索题解 题目描述 实现斐波那契搜索算法,在一个有序整数数组中查找目标值。 示例: 输入:[11, 12, 22, 25, 34, 64, 90],目标值:22输出:2(目标值在数组中的索引) 解…...

如何快速解密QQ音乐加密文件:qmcdump完整使用指南

如何快速解密QQ音乐加密文件:qmcdump完整使用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经…...

别再让 Agent 盲目“猜”了!揭秘 CareerPilot 如何用 PaddleOCR 打造职业规划的“第一道防线”

大家在聊起 AI Agent(智能体) 时,脑海中浮现的第一个画面是什么? 是一个无所不知的聊天窗口?还是一个能自动写代码的机器人? 在很多人的认知里,Agent 的核心似乎就是“对话”。但在职业规划这…...

200+小说网站一键下载:novel-downloader终极离线阅读解决方案

200小说网站一键下载:novel-downloader终极离线阅读解决方案 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 在数字阅读时代,你是否曾担心心爱的小说突然消失…...

VRCT:打破VRChat语言壁垒的3大核心功能

VRCT:打破VRChat语言壁垒的3大核心功能 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT 你是否曾在VRChat的国际房间中,因为语言不通而错失结识全球朋友的机会&am…...

终极窗口大小调整神器:WindowResizer让你完全掌控桌面布局

终极窗口大小调整神器:WindowResizer让你完全掌控桌面布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些固执的应用程序窗口而烦恼吗?有些软件…...

如何快速掌握JetBrains IDE试用期重置工具:面向开发者的完整指南

如何快速掌握JetBrains IDE试用期重置工具:面向开发者的完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾经因为JetBrains IDE试用期到期而被迫中断开发工作?精心配置的开发…...

如何快速配置BaiduPCS-Web:三步实现百度网盘极速下载的完整指南

如何快速配置BaiduPCS-Web:三步实现百度网盘极速下载的完整指南 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 还在为百度网盘令人崩溃的下载速度而烦恼吗?你是否经历过下载一个大文件需要数小时甚至…...

7大核心能力深度解析:foo_openlyrics打造foobar2000终极歌词体验的完整指南

7大核心能力深度解析:foo_openlyrics打造foobar2000终极歌词体验的完整指南 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics 在音乐播放器生态中&#xff…...

2026年项目管理工具推荐!这6款主流软件值得试试​

2026 年,企业数字化协作全面普及,远程办公、跨部门联动、多项目并行已成为团队工作常态。但多数企业仍深陷项目管理困境:任务分工模糊导致相互推诿、进度全靠口头同步频繁遗漏、风险爆发后才被动补救、文档散落在聊天记录与网盘中难以追溯………...

Firefox Reality:如何在VR/AR头显中重新定义你的网页浏览体验?

Firefox Reality:如何在VR/AR头显中重新定义你的网页浏览体验? 【免费下载链接】FirefoxReality A fast and secure browser for standalone virtual-reality and augmented-reality headsets. 项目地址: https://gitcode.com/gh_mirrors/fi/FirefoxRe…...

MIKE IO完全指南:5分钟掌握Python水文数据处理核心技能

MIKE IO完全指南:5分钟掌握Python水文数据处理核心技能 【免费下载链接】mikeio Read, write and manipulate dfs0, dfs1, dfs2, dfs3, dfsu and mesh files. 项目地址: https://gitcode.com/gh_mirrors/mi/mikeio MIKE IO是DHI集团开发的Python开源库&#…...

手把手教你,如何一句话建立嵌入式闭环开发agent的工作流

上一篇介绍完10分钟安装好OpenCode,有的小伙伴下载不到安装的EXE,我已经上传我的资源了,大家可以直接下载 安装好opencode和Python后 1 在自己的电脑下建一个文件夹,名字随意 2 打开opencode添加文件夹作为工程的路径 3 输入提示词&#x…...

微信视频号评论采集:技术原理、逆向分析与工程挑战

文章目录前言1. 通信架构:不只是 HTTP 那么简单1.1 核心链路拆解2. 逆向攻坚:如何搞定 Sign 签名?2.1 常见的逆向手段2.2 采集流程示意3. 工程化落地:稳才是硬道理3.1 别被风控盯上3.2 工程化提效:从自建到平台化4. 红…...

工行科技岗面试官亲述:我们如何在2对1面试中考察应届生的真实能力?

工行科技岗面试官亲述:我们如何在2对1面试中考察应届生的真实能力? 在金融科技快速发展的今天,银行科技岗位的竞争愈发激烈。作为工商银行科技部门的面试官,我每年都要面对数百份应届生简历,如何在短短30分钟的2对1面试…...