

FLOPs = Floating Point Operations(浮点运算次数) ,在深度学习里通常指:
模型在一次前向推理中需要执行的浮点运算总量。
它是衡量 模型计算复杂度 的指标,比参数量更能反映"推理时到底要算多少"。
🚀 一句话理解
-
参数量(Params):模型有多少"数字"。
-
FLOPs:这些数字在一次推理中要被"算多少次"。
例如:
一个 3×3 卷积核从输入提取特征时,就会进行乘加操作,每次卷积会产生大量"浮点运算",这些都算进 FLOPs。
📌 为什么 FLOPs 很重要?
FLOPs 越大,意味着:
| 指标 | 意味着 |
|---|---|
| 推理更慢 | 因为计算量更大 |
| 需要更强的 GPU/CPU | 不然延迟高 |
| 能耗更高 | 移动端不适合 |
| 模型更难实时化 | 比如要求 30FPS |
因此 FLOPs 是判断模型能否部署到 移动设备 / 工业相机 / 单片机 / 边缘端 的核心指标。
🧠 FLOPs 如何计算?(直观理解)
以一个卷积为例:
卷积 FLOPs ≈ 输出特征图的每个像素
× 卷积核大小
× 输入通道数
× 输出通道数
× 乘加次数
大模型就是所有层 FLOPs 的累计和。
📚 举例(非常直观)
假设你有一个 224×224 输入的轻量级模型:
-
MobileNetV2:300M FLOPs
-
ResNet50:4.1G FLOPs
-
YOLOv8n:8.7G FLOPs
-
YOLOv8l:165G FLOPs
→ 同样输入下,ResNet50 的计算量是 MobileNetV2 的 13 倍。
💡 FLOPs ≠ 实际速度
虽然 FLOPs 越小一般越快,但并不完全等价:
-
不同硬件(CPU/GPU/TPU)效率不同
-
不同框架(TensorRT / OpenVINO)加速不同
-
内存访问、缓存命中率也影响速度
-
算子类型是否被芯片支持也影响
但 FLOPs 依然是一个非常重要的理论指标。
Precision(精确率) 是机器学习 / 目标检测 / 分类中非常重要的评价指标,用来衡量:
模型预测为"正类"的样本中,有多少是真的正类。
简单说:预测出来的结果里,有多少是真的?
越高代表"误报(假阳性)越少"。
🧠 Precision 的公式

-
TP(True Positive)真正例:预测是正类,实际也是正类
-
FP(False Positive)假正例:预测是正类,但实际为负类(误报)
📦 举个很简单的例子
你设计一个"缺陷检测模型",检测是否有缺陷。
现在模型说 10 个有缺陷 ,实际只有 7 个是真的缺陷:
-
TP = 7
-
FP = 3
-
Precision = 7 / (7 + 3) = 0.7
→ 表示模型预测缺陷时,只有 70% 是真的。
🔍 和 Recall 对比(容易混淆)
| 指标 | 含义 | 形象理解 |
|---|---|---|
| Precision | 预测为正的中有多少是真的 | 我说的对不对?(误报少) |
| Recall | 实际为正的中我找到了多少 | 我漏没漏掉?(漏检少) |
例如目标检测:
-
Precision 低 → 报错一堆不存在的目标
-
Recall 低 → 漏掉很多真实目标
🎯 Precision 在检测中怎么用?
特别常见于:
✓ 目标检测 mAP 的计算(P--R 曲线中的一部分)
Precision 要和 Recall 配合才能评估完整性能。
✓ 工业缺陷检测
工业场景非常看重 Precision,因为误报会导致:
-
额外人工检查
-
生产线停顿
-
良品被误认为不良
⚠ Precision 不关心漏检
如果模型把"有缺陷的产品"全当作"没缺陷",Precision 可能依然非常高。
所以 Precision 不能单独判断模型好坏。