1. 项目背景与核心需求
毕业设计选择"深度学习人体目标检测"作为课题,本质上是在探索计算机视觉领域最基础也最具挑战性的任务之一。我在大三暑期实习时第一次接触YOLOv3模型,当时就被这种能实时框出画面中所有人的技术震撼到了。人体检测不同于普通物体识别,要处理遮挡、姿态变化、光照条件等复杂情况,这对模型的鲁棒性提出了极高要求。
选择这个方向主要基于三点考量:首先,人体检测是智能监控、人机交互等应用的基础模块,具有明确的实用价值;其次,开源社区提供了丰富的预训练模型和数据集,降低了入门门槛;最重要的是,通过完整实现一个检测系统,能系统掌握数据标注、模型训练、性能优化等全流程技能。这比单纯调用API有意义得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案选型
2.1 框架对比
在PyTorch和TensorFlow之间,我最终选择PyTorch作为基础框架。2022年GitHub统计显示,PyTorch在新项目中的采用率已达75%,其动态图机制特别适合科研调试。具体到人体检测任务,MMDetection和Detectron2这两个主流检测库都优先支持PyTorch,社区生态更完善。
实测发现:同一YOLOv5模型在PyTorch下的训练速度比TensorFlow快约15%,且内存占用更低
2.2 模型选择
对比了三种主流架构:
- Faster R-CNN:检测精度高但速度慢(V100上约15FPS)
- SSD:速度快(30FPS)但对小目标检测差
- YOLO系列:在速度和精度间取得平衡
最终选定YOLOv5s作为基础模型,其参数量仅7.2M,在COCO数据集上可达140FPS。对于毕业设计级别的硬件配置(GTX 1660 Ti),这个选择能在可接受时间内完成训练。
3. 数据集构建
3.1 数据来源
使用混合数据集策略:
- COCO:提供80类通用物体标注,含丰富的人体场景
- CrowdHuman:专门针对密集人群场景,含22k图像
- 自采数据:用手机拍摄校园场景200张,覆盖不同光照条件
3.2 标注规范
采用LabelImg工具进行PASCAL VOC格式标注,关键规范:
- 遮挡超过50%的人体不标注
- 每个边界框必须完整包含头部和脚部
- 群体场景中确保个体间IoU<0.3
踩坑记录:初期标注时忽略了下雨天反光地面导致的人体倒影,造成模型将倒影误识别为真实人体
4. 模型训练细节
4.1 数据增强
采用Mosaic增强组合:
python复制# yolov5/data/hyps/hyp.scratch-low.yaml
mosaic: 1.0 # 启用mosaic增强
mixup: 0.2 # 图像混合比例
hsv_h: 0.015 # 色调变化幅度
hsv_s: 0.7 # 饱和度变化幅度
hsv_v: 0.4 # 明度变化幅度
4.2 超参数设置
经过50轮参数搜索确定的配置:
- 初始学习率:0.01(余弦退火)
- 批量大小:16(受限于显存)
- 损失函数权重:
- obj_loss: 0.7
- cls_loss: 0.3
- box_loss: 1.0
5. 性能优化技巧
5.1 模型剪枝
采用通道剪枝策略:
- 训练完成后对BN层γ系数排序
- 移除γ<0.01的通道
- 微调3个epoch
实测模型体积减小40%,推理速度提升25%,mAP仅下降1.2%
5.2 TensorRT加速
转换关键步骤:
bash复制python export.py --weights yolov5s.pt --include engine --device 0 --half
启用FP16精度后,在Jetson Nano上达到22FPS,满足实时性要求
6. 常见问题排查
6.1 漏检问题
现象:远处行人检测不到
解决方案:
- 在数据增强中增加随机缩放(0.5-1.5倍)
- 修改anchor box尺寸匹配小目标
- 添加针对小目标的检测头
6.2 误检问题
现象:将橱窗模特识别为真人
优化方法:
- 在数据集中添加200张含假人场景
- 引入注意力机制模块
- 增加运动信息判断(对视频流)
7. 效果展示与评估
在自建测试集(500张)上的表现:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| mAP@0.5 | 68.2% | 73.5% |
| 推理速度(FPS) | 45 | 62 |
| 模型大小(MB) | 14.4 | 8.7 |
实际部署在校园监控场景时,发现两个有价值的现象:一是模型对骑自行车的人检测准确率比步行者低12%,二是穿迷彩服的人员容易产生漏检。这为后续改进指明了方向。
8. 扩展应用方向
基于现有成果,可以进一步探索:
- 行为分析:结合姿态估计判断异常行为
- ReID:实现跨摄像头追踪
- 边缘部署:移植到树莓派等低成本设备
这个项目让我深刻体会到,好的检测系统不仅需要调参技巧,更需要深入理解应用场景的特性。比如在养老院场景下,就需要特别关注跌倒检测的准确性,这与普通监控的需求侧重点完全不同。
