跳到主要内容
返回课程

第 3 周 · 第 1 课 · 45-55 分钟

图像分类器是怎样工作的

跟着一张照片从像素走到标签,了解图像分类器如何把视觉特征变成带置信度分数的预测。

材料
在网页浏览器中打开的这节课 · 纸和笔,或者一个记事应用 · 本课中展示的内置带标签图像集
本课
进行中

会自动保存在这台设备上

你将能够做到

  • 说明图像是由像素组成的,而计算机把像素读作数字。
  • 描述分类器如何利用视觉特征做出预测。
  • 读懂置信度分数,并说出它代表什么、不代表什么。
  • 追踪一张图像走过分类器的全过程,从输入到带标签的输出。

想一想

你给一个相册应用看一张图片,它立刻说「猫,96% 确定」。它从没见过这张具体的照片。一台只看得到数字的计算机,怎么可能判断出这是猫?

记住你的第一个猜想,看完像素如何变成预测之后,你会回来核对它。

做个预测

预测一下:分类器看一张照片时,你觉得它是一下子认出整只「猫」,还是从边缘、形状这样更小的规律里一点点拼出答案?

像素
图像中的一个极小的点。一张图片就是一格一格的像素网格,计算机把每个像素以数字形式存下它的颜色和亮度。
视觉特征
图片中分类器会留意的某种规律,比如边缘、颜色、形状或质地。
分类
把某样东西归入一组有名称的分组之一,这些分组称为类别或类。
预测
分类器针对一张输入图像所选出的、它认为最合适的类别。
置信度
一个数字,常以百分比显示,表示分类器对自己的预测有多确定。数值越高越确定,但未必越正确。

图片是一张像素网格,而像素就是数字

计算机没法像你那样「看」照片。对计算机来说,图像是由无数称为像素的小点排成的网格,每个像素都以描述其颜色和亮度的数字形式存储。一张小照片就可能有几十万个像素。

所以分类器最先拿到的并不是一只「猫」,而是一大片数字。分类器所做的一切判断,都必须从这些数字里搭建起来。

  • 一个黑白像素可能存成一个从 0(黑)到 255(白)的数字。
  • 一个彩色像素通常存成三个数字:它含有多少红、绿、蓝。
  • 一张 100 乘 100 的照片就是 10,000 个像素,对一张小图来说已是海量数字。

从像素到视觉特征

只靠原始像素来处理很困难,所以分类器会去寻找视觉特征:像边缘、拐角、颜色、质地和形状这些有用的规律。靠近上方的尖尖的三角形状,可能就是一种常与猫一起出现的特征(耳朵)。

分类器是在早先的训练中,通过研究大量带标签的样例,学会哪些特征重要的。没有人把「猫有尖耳朵」当成规则告诉它,是它自己从样例中找出了这样的规律,这正是前几周讲过的同一种学习思路。

  • 深色区域与浅色区域相接处的边缘
  • 圆形,可能是眼睛,也可能是轮子
  • 毛发、鳞片或光滑金属这样的质地

预测与置信度

把视觉特征累加起来之后,分类器就做出预测:挑出最匹配的那个类别,比如「猫」或「狗」。在给出预测的同时,它通常还会报告一个置信度,也就是表示它有多确定的数字,常以百分比显示。

置信度有用,但也很微妙。置信度高,意味着这些特征与某个类别高度吻合,而不是说答案一定正确。分类器完全可能自信满满地弄错,而这正是你这周要研究的那类错误。

  • 「狗,91%」:这些特征与狗的吻合程度远高于其他任何类别。
  • 「猫 55%,狗 45%」:分类器拿不准,这张图两边的特征都有。
  • 如果照片很不寻常,哪怕 98% 的自信也可能是错的。

例题讲解

跟着一张照片从像素走到标签

  1. 输入:一张猫的照片以像素网格的形式到来,只是一堆关于颜色和亮度的数字。
  2. 寻找特征:分类器先检测出边缘,然后是靠近上方的两个尖形、圆圆的眼睛形状,以及毛发质地。
  3. 为每个类别打分:这些特征与「猫」高度吻合,与「狗」只有一点点吻合。
  4. 给出带置信度的预测:它输出「猫」,置信度 96%,因为猫的特征得分远高于其他类别。
  5. 输出:标签「猫」和置信度呈现在你面前。整个答案都是从像素搭建起来的,并不是计算机真的「看见」了一只猫。

要点:分类器把像素变成视觉特征,依据这些特征给每个类别打分,再把最匹配的那个作为带置信度的预测报告出来。

从像素到带标签的预测

一个四步流程。第 1 步:输入图像,画成一张像素(数字)网格。第 2 步:寻找视觉特征,包括边缘、形状、颜色、质地。第 3 步:依据这些特征为每个类别打分,例如猫 96、狗 3、兔子 1。第 4 步:把得分最高的类别作为预测输出,并附上置信度:「猫,96%」。箭头清楚地表明,标签是从像素一步步搭起来的,而不是直接看出来的。

每一个预测都是从像素出发、经由特征、最终变成一个带分数的判断。

同一张照片在各个类别上的置信度

一张条形图,用百分比显示分类器对一张猫照片在各个类别上的置信度。猫这一条遥遥领先,为 96%,狗为 3%,兔子为 1%。最高的那条就是预测,它的高度就是置信度。各条加起来约为 100%,因为分类器是在各个类别之间分配它的确定程度。

最高的那条就是预测;它的高度就是置信度。

活动

分类器全流程演示

跟随一张内置图片从像素走到带标签的预测,看看置信度如何在类别之间做比较,却并不保证答案正确。

  1. 选一张图片。用计算机的方式看它:一张标着数字的像素网格。
  2. 看看模型测量了哪些视觉特征,再看它的预测和置信度。
  3. 注意:置信度只是在几个类别之间做比较,并不保证答案是对的。

1 · Choose a picture

2 · A picture is a grid of pixels

一个实心圆,偏小,居中。

一个实心圆,偏小,居中。 The computer stores this 16×16 grid as 256 numbers — one brightness value per pixel.

3 · Features measured from the pixels

  • ink coverage18%
  • fill inside its box81%
  • top-left corner18%
  • left-right symmetry100%
  • edge (outline) amount38%

4 · Prediction and confidence

预测: 圆形实际: 圆形 正确
圆形66%
三角形0%
正方形34%

最接近的训练图片是:圆形(相似度 91%), 正方形(相似度 86%), 圆形(相似度 80%)。模型把这些相似度加起来,选了圆形,置信度 66%。置信度只是在几个类别之间做比较,并不保证答案是对的。

置信度不等于确定

一个旋转了 45 度的正方形,看上去像菱形。

一个旋转了 45 度的正方形,看上去像菱形。

真正的答案是正方形 但模型预测的是 圆形 ,置信度 69%。 模型可能很有把握却仍然是错的:置信度高只说明在模型看来几个类别的差距明显,并不代表它答对了。

选做:试试你自己的图片

Everything above works with the built-in pictures — this is an extra. If you upload a picture, it is shrunk to a 16×16 grid and classified entirely on your device. It is never saved and never sent to any service. Draw a big circle, triangle, or square on white paper for the best result.

检查你的理解

回答这些题,检验你是否理解图像分类器如何把像素变成预测。

  1. Question 1. 图像分类器真正接收到的输入是什么?

  2. Question 2. 把图像分类的各个步骤按顺序排好,从收到照片到显示答案。

    1. 1.以像素网格的形式接收图像
    2. 2.寻找边缘、形状、质地等视觉特征
    3. 3.为这些特征与每个类别的吻合程度打分
    4. 4.把得分最高的类别作为预测输出,并附上置信度
  3. Question 3. 判断这句话是对还是错。

    置信度为 98% 的预测一定是正确的。

已回答 0 / 3

自己动手试试

由你来当分类器

挑一个你想象得出的简单物体(苹果、自行车、房子),并说明分类器可以怎样借助视觉特征把它和一个近亲区分开。

  1. 选定你的物体,以及一个可能与它混淆的相似物体(苹果与西红柿,自行车与摩托车)。
  2. 列出三个会把预测推向你那个物体的视觉特征。
  3. 列出一个两个物体共有的、可能让分类器犹豫的特征。

做到这样就算成功

  • 选出了一对相似的物体。
  • 列出了三个用于区分的视觉特征。
  • 指出了一个可能拉低置信度的共有特征。

反思

输入时会保存在这台设备上

请不要写私人信息。你的回答只保存在这个浏览器里,不会发送到任何地方。

小结

图像分类器把一张像素网格变成视觉特征,为每个类别打分,再把最匹配的那个作为带置信度的预测输出。

  • 对计算机来说,图像是一张以数字形式存储的像素网格。
  • 分类器依据边缘、形状、颜色、质地这类视觉特征来工作。
  • 预测会附带一个置信度,而高置信度并不保证答案正确。

七至八年级延伸内容

置信度为什么会骗到你

置信度告诉你的是特征与某个类别吻合得有多强,而不是答案有多正确。一个只用清晰的白天照片训练出来的分类器,面对一张模糊的夜间照片时,可能有 95% 的自信却是错的,因为那些不寻常的像素碰巧仍与某一个类别最吻合。

描述一种你希望系统说「我不确定」而不是给出自信答案的情形。设计者为什么可能会定下「如果置信度低于 60%,就交给人来判断」这样的规则?

完成这一课

  • Attempt the knowledge check(未完成)
  • Save a reflection (recommended)(未完成)

先做一下知识检查,才能完成这一课。