1. 项目背景与核心价值去年在指导本科生毕业设计时遇到一个特别有现实意义的选题——基于深度学习的行人口罩佩戴检测系统。这个项目看似简单实则涵盖了计算机视觉领域的多个核心技术点。疫情防控常态化背景下公共场所的口罩佩戴检测从人工巡检转向智能化是大势所趋。传统人工检测存在效率低、成本高、易漏检等问题。我们团队开发的这套系统在校园教学楼入口实测时对密集人流的检测准确率达到94.7%比市面常见方案高出8-12个百分点。关键突破在于改进了YOLOv5的注意力机制这个后面会详细展开。2. 技术方案选型解析2.1 为什么选择YOLOv5而不是其他模型对比测试了Faster R-CNN、SSD和YOLO系列后最终选择YOLOv5s作为基础模型主要基于三点考量速度优势在Jetson Nano边缘设备上YOLOv5s能达到23FPS满足实时性要求精度平衡相比YOLOv3v5的mAP提升约15%而模型体积减小40%易用性PyTorch框架的生态完善便于学生快速上手实测数据在自制数据集上YOLOv5s的mAP0.5达到0.89推理速度比同精度级的EfficientDet快3倍2.2 数据集的特殊处理技巧口罩检测的关键难点在于遮挡情况的处理。我们采用的数据增强策略包括模拟遮挡随机添加眼镜、围巾等遮挡物概率0.3光照变化随机调整亮度±30%、对比度±20%角度变换±15度随机旋转# 数据增强示例代码 transform A.Compose([ A.RandomBrightnessContrast(p0.5), A.Rotate(limit15, p0.3), A.RandomFog(p0.1) # 模拟呼吸导致的镜片模糊 ])3. 模型优化关键突破点3.1 改进的注意力机制在YOLOv5的Backbone末端添加CBAM模块使模型能更关注口罩区域特征。具体实现通道注意力对特征图进行全局平均池化和最大池化空间注意力在通道维度拼接后接7x7卷积融合方式采用element-wise乘法而非简单相加class CBAM(nn.Module): def __init__(self, c): super().__init__() self.channel_attention nn.Sequential( nn.AdaptiveAvgPool2d(1), nn.Conv2d(c, c//8, 1), nn.ReLU(), nn.Conv2d(c//8, c, 1), nn.Sigmoid() ) self.spatial_attention nn.Sequential( nn.Conv2d(2, 1, 7, padding3), nn.Sigmoid() )3.2 损失函数改进采用CIoU Loss替代原版GIoU Loss增加长宽比惩罚项CIoU IoU - (ρ²(b,b^gt)/c² αv) 其中 ρ预测框与真实框中心点距离 c最小外接矩形对角线长度 v长宽比一致性度量实测显示CIoU使小目标检测AP提升5.2%。4. 工程落地实践要点4.1 边缘设备部署优化在Jetson Nano上的部署关键步骤模型转换使用TorchScript导出比ONNX快15%TensorRT加速FP16精度下推理速度提升3倍线程优化绑定CPU核心减少上下文切换# TensorRT转换命令 trtexec --onnxmask_yolov5.onnx \ --fp16 \ --workspace2048 \ --saveEnginemask_yolov5.engine4.2 实际部署中的性能调优通过测试发现三个关键参数影响最大输入分辨率640x640比320x320精度高9%但速度降低40%NMS阈值0.45时取得最佳平衡FP:FN1:1.2置信度阈值动态调整策略人流量大时调高5. 常见问题与解决方案5.1 误检情况分析收集到的典型误检案例相似物干扰围巾、高领毛衣极端光照背光场景儿童面部比例异常解决方案增加难例样本到训练集添加HSV色彩空间过滤口罩蓝色特征引入人脸关键点辅助判断5.2 模型量化后的精度损失测试发现INT8量化导致mAP下降7.2%采用QAT量化感知训练后差距缩小到2.1%具体操作在原始模型中插入伪量化节点微调时模拟量化过程最后导出真正的INT8模型6. 项目扩展方向当前系统还可进一步优化多模态融合结合红外测温数据行为分析检测不规范佩戴露出鼻子轻量化尝试MobileNetV3作为backbone在实验室环境测试MobileNetV3-YOLOv5组合模型体积减小60%但精度只下降3.8%适合对功耗敏感的场景。