SlowFast 动作检测实战:从环境搭建到模型部署的完整指南

发布时间:2026/6/28 20:13:46

SlowFast 动作检测实战:从环境搭建到模型部署的完整指南 1. 环境配置避开版本冲突的坑第一次接触SlowFast时最头疼的就是环境配置。官方代码库更新频繁但很多教程用的还是旧版本稍不注意就会掉进版本冲突的坑里。我当初在CUDA 10.0环境下折腾了整整两天最后发现问题的根源在于pytorchvideo这个包——它强制要求PyTorch版本≥1.8而CUDA 10.0最高只支持到PyTorch 1.6。推荐方案如果你也遇到类似问题可以直接使用这个经过验证的旧版本组合git clone https://gitee.com/qiang_sun/SlowFast.git pip install opencv_python4.5.1.48 torch1.6.0 torchvision0.7.0 pip install githttps://github.com/facebookresearch/detectron2.git --user特别要注意detectron2的安装这里有个小技巧先确保gcc版本≥5.0用gcc --version检查否则编译会失败。我在Ubuntu 18.04上实测时发现默认gcc是7.5.0没问题但CentOS 7上就需要手动升级。2. 数据准备制作自己的动作数据集官方提供的AVA数据集虽然全面但实际项目中我们往往需要识别特定动作。比如上次给健身房做智能教练系统时就需要专门采集深蹲、硬拉等健身动作视频。关键步骤视频切片用FFmpeg按固定间隔抽取帧建议2-4帧/秒ffmpeg -i input.mp4 -r 3 -q:v 2 frames/%04d.jpg标注工具推荐使用CVAT或LabelMe标注时注意时间对齐格式转换最终需要转成SlowFast支持的CSV格式包含视频路径起始/结束帧号动作类别ID人物检测框坐标可用YOLOv5预生成实测发现至少需要200个视频片段每个3-5秒才能保证基础识别效果。如果是复杂动作如武术套路建议增加到500样本。3. 模型训练参数调优实战心得直接跑官方默认配置往往效果不理想经过多次实验我总结出几个关键参数调整点学习率策略SOLVER: BASE_LR: 0.1 # 8GPU时的基准值 STEPS: [3000, 5000] # 学习率衰减节点 WARMUP_EPOCHS: 5 # 热身阶段单卡训练时要等比例缩小BASE_LR如8卡→1卡则除以8否则会出现梯度爆炸。我常用的是0.01250.1/8。数据增强技巧随机水平翻转FLIP.ENABLE: True颜色抖动COLOR_JITTER.ENABLE: True多尺度裁剪TRAIN_JITTER_SCALES: [256, 320]遇到过最坑的问题是GPU显存不足报错这时可以调小BATCH_SIZE最低可到8同时等比例增加训练轮数。4. 模型部署让检测结果实时可视化训练好的模型要真正用起来还需要解决两个实际问题实时性和可视化。这里分享我的部署方案优化推理速度使用TensorRT加速torch2trt(model, [dummy_input], fp16_modeTrue)实测在T4显卡上推理速度能从45ms/frame提升到22ms/frame多线程处理主线程负责视频解码子线程处理模型推理用Queue实现数据管道可视化技巧# 在demo.py中添加这段代码 cv2.putText(frame, f{label}: {score:.2f}, (x1,y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,255,0), 2)建议用不同颜色区分动作类别比如站立用绿色跌倒用红色。最近一个安防项目中我们还在输出视频中添加了时间戳和报警标记。5. 常见问题排查指南报错No module named slowfast这是因为PYTHONPATH没有设置解决方法export PYTHONPATH$PYTHONPATH:/path/to/SlowFast报错CUDA out of memory除了减小batch size还可以尝试使用梯度检查点在config中添加MEMORY.ENABLE: True混合精度训练TRAINER.ENABLE_AMP: True预测结果不准检查三个地方训练数据是否均衡每个类别至少50个样本配置文件中的NUM_CLASSES是否正确输入视频的帧率是否与训练时一致建议统一用30FPS最近帮客户调试时发现一个隐藏问题他们的监控摄像头是15FPS而训练数据是30FPS导致快速动作识别率很低。解决方法是用FFmpeg做帧率转换ffmpeg -i input.mp4 -filter:v fps30 output.mp4

相关新闻