4. 模型选型与评估指标:不同场景下的模型选择(轻量级 vs 高精度)、mAP、FPS、混淆矩阵、ROC曲线

各位同学,欢迎来到第四讲。

前面我们聊了数据、聊了算法基础。今天咱们来点实在的——模型选型与评估

说白了,就是回答两个问题:
第一,我这个场景到底该用哪个模型?
第二,模型好不好,拿什么尺子量?

这两个问题,我当年刚入行时也踩过不少坑。有一次给客户做园区周界安防,我直接上了个YOLOv5s,觉得轻量级跑得快。结果呢?晚上光线一暗,漏报率直接飙到30%。客户差点让我返工重做。嗯,从那以后,我再也不敢只看FPS了。

核心观点:没有最好的模型,只有最合适的模型。选型不是选最强的,而是选最匹配场景的。

4.1 轻量级 vs 高精度:场景决定一切

先看一张图,这是我总结的模型选型决策树。

安防场景模型选型 实时性要求高 精度要求高 边缘设备(IPC/NVR) → 轻量级:MobileNet、ShuffleNet 服务器端/云端 → 高精度:ResNet、EfficientNet 典型场景:门禁、移动检测 推荐:YOLOv5n、NanoDet 典型场景:周界、人群分析 推荐:YOLOv8x、Cascade R-CNN 核心原则:算力约束 → 精度需求 → 实时性 → 选型

你看,决策路径其实很清晰。我个人习惯把场景分成两大类:

  • 边缘端场景:比如摄像头内置AI、门禁机、手持终端。算力有限,功耗敏感。这时候轻量级模型是首选。
  • 服务器端场景:比如监控中心、云端分析。算力充足,可以上大模型。

但这里有个坑——你以为的边缘端,可能比你想的更弱。我曾经在一个海思3559A的板子上跑YOLOv5s,结果帧率只有8FPS。后来换成NanoDet,直接飙到30FPS。所以,选型前一定要先摸清硬件底牌。

我的经验:如果目标设备是ARM架构的IPC,优先考虑MobileNetV3-SSD或NanoDet。如果是x86的NVR,可以考虑YOLOv5s。如果是GPU服务器,直接上YOLOv8x或Cascade R-CNN。

4.2 mAP:模型精度的黄金标准

mAP,全称mean Average Precision。说白了,就是平均精度均值

为什么用这个指标?因为安防场景里,目标检测不是二分类,而是多类别检测。比如你要同时检测人、车、自行车。每个类别都有自己的AP,mAP就是所有类别AP的平均值。

计算公式其实不复杂:

AP = ∫₀¹ P(R) dR  (P是精确率,R是召回率)
mAP = (1/N) * Σ APᵢ  (N是类别数)

但实际项目中,我们更关心的是mAP@0.5mAP@0.5:0.95这两个值。

指标 含义 安防场景适用性
mAP@0.5 IoU阈值0.5时的mAP 宽松标准,适合大目标检测(如车辆)
mAP@0.5:0.95 IoU从0.5到0.95,步长0.05,取平均 严格标准,适合小目标检测(如人脸、行人)

我记得有一次做行人检测项目,模型mAP@0.5有85%,看起来不错。但实际部署后,漏检率很高。后来一查,mAP@0.5:0.95只有32%。说明模型虽然能框出人,但框得不准。所以,安防场景建议同时关注两个指标

避坑指南:我曾经见过有人用mAP@0.5=90%的模型去做人脸识别门禁,结果实际效果一塌糊涂。为什么?因为门禁要求框得准,mAP@0.5:0.95才是关键。所以,选模型时别只看一个数。

4.3 FPS:实时性的生命线

FPS,Frames Per Second,每秒处理帧数。

安防场景里,FPS就是生命线。你想想看,如果摄像头是25帧的,你的模型只能跑5FPS,那意味着每5帧才检测一次,中间漏掉的关键画面怎么办?

不同场景对FPS的要求差异很大:

  • 门禁/考勤:1-5 FPS就够了,因为人不会跑着过门禁
  • 周界安防:10-15 FPS,要能捕捉到快速移动的人
  • 交通监控:20-30 FPS,车辆速度快,不能丢帧
  • 人群分析:5-10 FPS,重点在密度估计,不需要太高帧率

但这里有个误区——FPS不是越高越好。我见过有人为了追求60FPS,把模型压缩到极致,结果精度掉到没法用。嗯,这就本末倒置了。

我的建议:先定精度底线,再优化FPS。比如周界场景,mAP@0.5不能低于80%,在这个前提下尽量提高FPS。

4.4 混淆矩阵:诊断模型问题的X光片

混淆矩阵,Confusion Matrix。说白了,就是把模型的预测结果和真实结果做个交叉表

对于二分类问题,它长这样:

预测为正 预测为负
实际为正 TP(真正例) FN(假负例)
实际为负 FP(假正例) TN(真负例)

安防场景里,我最关注的是FN(漏报)FP(误报)

  • FN太高:该检测的没检测到,比如有人翻墙没报警。这是安防的大忌。
  • FP太高:乱报警,比如树叶晃动触发报警。运维人员会疯掉。

我曾经做过一个项目,模型FP率高达40%,每天误报上千次。后来一看混淆矩阵,发现大部分FP都来自「阴影」和「动物」。于是针对性加了数据增强和负样本,FP率降到了5%。所以,混淆矩阵能帮你精准定位问题

4.5 ROC曲线:模型泛化能力的试金石

ROC曲线,Receiver Operating Characteristic Curve。它画的是TPR(真正率) vs FPR(假正率)的关系。

为什么要看ROC?因为很多时候,我们需要调整模型的置信度阈值。比如:

  • 周界场景:宁可误报,不能漏报 → 降低阈值
  • 门禁场景:宁可漏报,不能误报 → 提高阈值

ROC曲线能告诉你:在不同阈值下,模型的性能表现如何

曲线下的面积叫AUC(Area Under Curve)。AUC越接近1,模型越好。AUC=0.5说明模型就是瞎猜。

实战技巧:我一般会同时看ROC曲线和PR曲线。为什么?因为安防场景中正负样本往往不平衡(比如99%的画面都是正常的,只有1%有异常)。这时候PR曲线比ROC曲线更敏感。记住:样本不平衡时,PR曲线优先

4.6 综合选型:一个真实案例

最后,我分享一个真实案例。

去年做一个智慧园区项目,需求是:

  • 检测行人、车辆、非机动车
  • 部署在边缘NVR上(算力有限)
  • 要求FPS≥15,mAP@0.5≥85%

我当时的选型过程:

  1. 先排除大模型:YOLOv8x、Cascade R-CNN直接pass,NVR跑不动
  2. 候选模型:YOLOv5s、YOLOv8n、NanoDet
  3. 实测对比
模型 参数量 FPS(NVR) mAP@0.5 结论
YOLOv5s 7.2M 18 87.3% ✅ 推荐
YOLOv8n 3.2M 25 83.1% ❌ 精度略低
NanoDet 1.8M 32 81.5% ❌ 精度不达标

最终选了YOLOv5s。虽然参数量比NanoDet大,但精度达标,FPS也满足要求。这就是在约束条件下找最优解

总结一下:

  • 选型看场景:边缘端轻量级,服务器端高精度
  • 评估看指标:mAP看精度,FPS看实时性,混淆矩阵看问题,ROC曲线看泛化
  • 实战中,没有完美的模型,只有最合适的模型

好了,这一讲就到这里。记住,模型选型不是一锤子买卖,需要反复迭代测试。下次你遇到选型难题时,不妨先画个决策树,再跑个混淆矩阵,问题就清晰了。


公众号:蓝海资料掘金营,微信deep3321