胡慧华
菜单
首页人工智能机器学习深度学习项目实践关于我
跳至课程正文
← 人工智能课程

ARTIFICIAL INTELLIGENCE · COURSE 07

视觉应用:识别结果怎样变成业务动作

理解漏报、误报、阈值和人工复核之间的取舍。

第 07 / 18 课20–30 分钟(含实验)无需密钥 · 本地实验
声音波形、文字信息和带检测框的图像在三块透明面板中汇合
读懂文字、图像与声音
  • 业务闭环
  • 人工复核
01

START WITH A QUESTION

识别出疑似缺陷之后,谁来决定下一步?

质检系统给六张图片打出缺陷分数。把分数高的全部转为告警,会漏掉一些低分缺陷;把门槛降得很低,又可能让复核人员收到太多正常图片。模型输出必须进入一个有人负责的流程。

本课不重复卷积或目标检测原理,而是关注如何使用识别结果。我们用一组明确标注的教学样本,观察阈值改变时漏检与误报的实际数量。

02

BUILD YOUR VOCABULARY

先把三个概念讲清楚

CONCEPT 01

阈值

将分数变成行动的分界值。本课规定分数大于等于阈值就进入复核;分数只是模型输出,不自动等于校准后的概率。

放进场景看

阈值 0.5 时,分数 0.6 的图片进入复核。

CONCEPT 02

漏检与误报

漏检是真有缺陷却没被选中,误报是正常图片被选中。两类错误代价不同,不能只看总体正确率。

放进场景看

漏掉危险缺陷与多看一张正常图片的后果可能差很多。

CONCEPT 03

人工复核与闭环

由人员确认告警、记录真实结果并跟进处置。模型只是提供线索,不能把“疑似”直接写成已证实。

放进场景看

复核确认后创建整改记录,并保存确认人和图片。

03

FOLLOW THE PROCESS

把原理放进完整流程

  1. 01

    定义识别目标

    明确缺陷是什么,以及什么图片不适合判断。

  2. 02

    获得分数

    保存原图、时间、模型版本与输出,便于复盘。

  3. 03

    按阈值分流

    比较漏检代价与复核能力,选择进入人工队列的条件。

  4. 04

    复核与反馈

    人员确认后完成后续处置,并用真实标签重新评估。

教学数据:六张图片
样本缺陷分数人工真值
A / B / C0.95 / 0.70 / 0.45均有缺陷
D / E / F0.80 / 0.40 / 0.10均正常
阈值 0.503 张进入复核发现 2 个缺陷、漏 1 个、误报 1 个
04

CHANGE ONE THING & OBSERVE

在漏检与复核工作量之间做选择

拖动阈值,观察六张样本的分流结果、漏检数和误报数。蓝色表示有缺陷,空心表示正常,文字标签同时说明含义。

INTERACTIVE LAB / 07
A · 有缺陷0.95进入复核
B · 有缺陷0.70进入复核
C · 有缺陷0.45未选中
D · 正常0.80进入复核
E · 正常0.40未选中
F · 正常0.10未选中
复核数量3 / 6
漏检1
误报1

选中 2 个真实缺陷。分数 ≥ 阈值才进入复核;这组小样本不代表真实现场表现。

05

KNOW THE LIMITS

哪些结论不能直接推出?

高分不等于可以免复核

真实环境可能出现光照、角度或新型缺陷变化;高风险任务仍需设计复核与失效处置。

只在最清晰的图片上测试

验收样本应覆盖现场分布,包括模糊、遮挡、不同设备和正常情况。

06

READ, RUN & EXPLAIN

从分数计算误报与漏检

以下示例仅使用 Python 3 标准库,可复制到本地 Python 环境运行。先看每一行的作用,再修改一个输入观察结果;无需网络或密钥。

Python 3 · 完整示例下载 .py
scores = [0.95, 0.70, 0.45, 0.80, 0.40, 0.10]
truth = [True, True, True, False, False, False]
threshold = 0.5
pred = [score >= threshold for score in scores]
miss = sum(t and not p for t, p in zip(truth, pred))
false_alarm = sum(not t and p for t, p in zip(truth, pred))
print('漏检', miss, '误报', false_alarm)

复制或下载只获取本课示例,不会自动执行。

逐行解释(7 行)
  1. 第 1 行scores = [0.95, 0.70, 0.45, 0.80, 0.40, 0.10]

    六个分数与课程实验一致。

  2. 第 2 行truth = [True, True, True, False, False, False]

    True 代表人工确认有缺陷,False 代表正常。

  3. 第 3 行threshold = 0.5

    设定进入复核的门槛。

  4. 第 4 行pred = [score >= threshold for score in scores]

    逐个比较分数,生成是否进入复核的布尔值列表。

  5. 第 5 行miss = sum(t and not p for t, p in zip(truth, pred))

    zip 对齐真值与预测;统计有缺陷却未被选中的数量。

  6. 第 6 行false_alarm = sum(not t and p for t, p in zip(truth, pred))

    统计正常却进入复核的数量。True 在求和时按 1 计。

  7. 第 7 行print('漏检', miss, '误报', false_alarm)

    把两类错误分别输出,避免被单个平均指标掩盖。

预期输出
漏检 1 误报 1
07

CHECK YOUR UNDERSTANDING

换一个角度,检查自己是否理解

已回答 0 / 3 题 · 当前答对 0 题

1. 疑似缺陷分数 0.8 能否直接写成已确认缺陷?
2. 本例降低阈值通常会带来什么?
3. 现场图片风格变化时需要什么?
08

TAKE IT WITH YOU

带走三个判断,再做一次迁移练习

  • 分数要经过阈值和复核流程才能产生业务行动。
  • 漏检与误报分别衡量,并结合各自代价。
  • 持续记录现场结果,验证模型是否仍适用。
延伸:图像分类、检测与分割
参考与延伸阅读

本课例子、代码和模拟数据为教学设计。以下一手文档用于延伸核对,不代表对本示例的认证。