猫 vs 人——照片就是数字矩阵

人一眼就能分清猫和人,但计算机收到的是一张密密麻麻写满 0~255 数字的表。本篇先一路追踪到单个像素,看照片如何变成矩阵;再确认像素距离为什么量不出“相似”;然后亲手计算用 3 × 3 滤波器寻找边缘的卷积。最后看看人工设定的特征(人脸框·特征点·边缘强度)的优点和局限。

0~255单个通道值的范围(8 比特)
9,40856 × 56 彩色照片中的数字个数
3 × 3一个滤波器的大小
2001Viola–Jones 人脸检测 [R4]
14% → 90%平移 2 格的数字:MLP 对 CNN(代码 2)
2 段可在 Colab 中直接运行的代码
1问题

猫 vs 人——对人来说最简单的问题

尖尖的耳朵和毛发,光滑的皮肤。人一眼就能分清。计算机把这张照片当成什么来接收,又能从哪些线索开始找起呢?

左边是猫脸照片,上面有连接额头·眼睛·鼻子的红线;右边是长发女性的脸部照片,上面标有绿色人脸框、红色特征点和粉色核心点
作者亲自制作的图像。线和点是人事先定好的面部特征点。

左边猫身上的红线是连接额头·眼睛·鼻子的面部骨架,右边人身上的绿框是“这里有一张脸”的检测结果,红点是下颌线·眉毛·嘴唇周围的特征点,粉点是两只眼睛·鼻子·嘴的核心位置。这些都是人事先定好“要看什么”的线索。

本篇关注两点。第一,计算机收到的不是这些线和点,而是数字矩阵(章节 2~3)。第二,从这些数字中寻找边缘之类线索的滤波器,以及人工设定线索的局限(章节 4~6)。

数字示例在整个系列中都用同一张吉娃娃照片(4-4 的主角)来演示,因为像素和滤波器对任何照片的作用方式都一样。动手实践中可以在猫·人·狗·吉娃娃·松饼五张照片中任意选择。

给初学者的讲解

对人简单的问题,对计算机不一定简单。人看到照片的瞬间就能察觉“有毛”“耳朵是尖的”,而计算机必须从数字中把这些线索一个个算出来。猫 vs 人的线索比较明显,很适合作为图像分类的第一道练习。

2像素

像素与矩阵——计算机收到的最小信息

照片是数字网格,彩色照片是三张这样的网格叠在一起。模型输入的最小单位是一个通道值(0~255)。

1定义

数码照片是由横竖细密划分的小格子组成的。其中一个格子叫作像素(pixel,picture element)。一个像素只包含一种颜色,这种颜色用红(R)·绿(G)·蓝(B)三种光的强度来记录。强度是从 0(没有光)到 255(最亮)的整数。所以彩色照片就是排列着高 × 宽 × 3 个数字的表,也就是矩阵(准确地说是 3 层的张量)。

形状高 H × 宽 W × 通道 3
单个值0 ~ 255 整数(8 比特)
最小的意义单位一个通道值

简单来说就像方格纸涂色游戏。把每个方格里分别放了几滴红·绿·蓝三种颜料,用 0~255 记下来,那么任何人只凭这张纸条就能涂出同样的画。计算机拥有的不是画,而是这张纸条。

2公式
X[y, x, c] ∈ {0, 1, …, 255},   y = 1…H,  x = 1…W,  c ∈ {R, G, B}注意:这里的 0~255 是为屏幕显示而校正过(伽马编码)的值。数字是两倍,并不代表光的物理强度正好是两倍。
灰度亮度  Y = 0.299·R + 0.587·G + 0.114·B这是反映人眼对绿色最敏感这一特点的加权和(ITU-R BT.601)。一个彩色格子缩减为一个数字。
输入模型之前: x′ = x / 255  (缩放到 0 ~ 1 之间)
H, W
纵向格数、横向格数。两者合称分辨率
c(通道)
颜色层。彩色有 R、G、B 三张,灰度只有一张
X[y, x, c]
第 y 行、第 x 格、通道 c 的一个数字。模型收到的最小输入
Y
混合三个通道得到的灰度亮度
逐块读懂公式
  1. {0, 1, …, 255}表示取值是 256 种整数。因为 2⁸ = 256,一个数字正好能装进 8 比特(1 字节)。
  2. H × W × 3这是数字的个数。本页动手实践的照片是 56 × 56 × 3 = 9,408 个,常见的模型输入 224 × 224 × 3 是 150,528 个,1,200 万像素的手机照片约有 3,600 万个。
  3. 0.299R + 0.587G + 0.114B形式和感知机的加权和一样。把三个数分别乘以权重再相加,就得到一个亮度。三个权重之和为 1,所以结果也在 0~255 之内。
  4. x / 255把大数字缩小到 0~1,让模型更容易处理。和前一篇看到的归一化目的相同。
用数字算一遍(把吉娃娃照片缩小到 14 × 14 时)眼睛格 (R, G, B) = (39, 37, 43) → Y = 0.299×39 + 0.587×37 + 0.114×43 = 38.3 ≈ 38(几乎是黑色)
毛发格 (R, G, B) = (212, 161, 115) → Y = 0.299×212 + 0.587×161 + 0.114×115 = 171.0 ≈ 171(明亮的米色)
两格之差 171 − 38 = 133。这种急剧的差异会在章节 4 中被识别为“边缘”。
3示意图 · 一直拆分到最小的信息
从照片到比特一张照片逐步拆分为一个像素、三个通道值、一个数字、八个比特,并突出显示一个通道值是图像中具有意义的最小单位 照片1 个像素3 个通道值1 个数字8 个比特 R = 39 G = 37 B = 43 39 00100111 “吉娃娃”这个含义“几乎是黑色”三种光的强度一个红色强度只有开/关 模型收到的最小输入 ← 含义大(人能理解)含义小(机器存储) → 越往左越有含义,越往右越只剩下数字
4解读

把照片不断拆分,就会一路降到一个像素、其中的 R·G·B 数字,以及构成一个数字的八个比特。比特是计算机存储的最小单位,但一个比特既不是颜色也不是亮度,只是开/关而已。

所以在图像深度学习中,具有意义的最小信息是一个通道值,也就是“这一格的红色强度是 39”这样的数字。模型的第一层接收的正是这些数字(X[y, x, c])。

但这一个数字里完全没有“吉娃娃”的含义。眼睛的像素 (39, 37, 43) 和蓝莓的像素 (37, 31, 37) 从数字上看几乎一样。含义来自许多像素如何聚在一起,而寻找这种组合的,就是章节 4 的特征提取。

5动态图解 · 照片变成数字的过程

这是把吉娃娃照片横竖各切成 14 格,选出眼睛的一格并把它变成数字的过程。右边的数字是根据照片的真实像素计算出来的值。

  1. 原始照片
  2. 切成网格
  3. 选出一格
  4. R·G·B 三个数字
  5. 一个灰度数字
  6. 展开为矩阵
6像素放大镜 · 亲手点击查看数字

选择照片和分辨率,然后点击图中的格子或把鼠标移上去。旁边(手机上在下方)的表格显示所选格子及其周围 7 × 7 格的真实数字。点击图片后,可以用方向键移动格子。

照片
分辨率
显示

7主要特点 · 直接使用像素的话
优点
  • 照片的信息一点不少,是最“诚实”的输入
  • 所有照片形状相同(H × W × 3),可以同样地输入同一个模型
  • 因为是数字,可以直接用乘法·加法计算
局限
  • 数字太多:一张 224 × 224 的照片就有 150,528 个
  • 照片只要平移一两格或稍微调亮,几乎所有数字都会改变
  • 单个数字没有含义。眼睛和蓝莓可能是同样的数字(在章节 4 以及 4-3·4-4 中讨论)
定位:在深度学习之前,人要亲手制定从像素中提取特征的规则(04 的关键点);2012 年以后,CNN 直接接收像素,连特征也自己学习。
✓小测验

Q1. 一张横 10 格、竖 10 格的彩色照片里有多少个数字?

Q2. 像素值 (R, G, B) = (0, 0, 0) 是什么颜色?

Q3. 把同一张照片向右平移两格,同一位置的数字会怎样?

Q4. 图像深度学习模型输入的最小信息是什么?

给初学者的讲解

像素是组成照片的小格子,每格用 0~255 的数字记录红·绿·蓝光的强度。用 4-1 的表格来类比,一张照片就是有“高 × 宽 × 3”格的一行。在像素放大镜里点击格子确认真实的数字,再改变分辨率,看看数字的个数如何变化。

3像素距离

像素距离的陷阱——只平移一格就成了“另一张照片”

把两张照片同一位置的数字相减来测距离,能量出“相似”吗?把同一只吉娃娃平移或调暗,再把五张照片两两之间的距离全部测一遍。

1只移动一格就成了“另一张照片” 以本页照片为准

两张照片的像素距离,是把同一位置的灰度数字相减后平方、取平均、再开平方根得到的值(0 表示完全相同)。试着把吉娃娃向旁边平移或调暗。在人眼看来它仍然是同一只吉娃娃,但从数字上看,有时它甚至比松饼离得更远。

距离(A, B) = √( (1/N) Σ (Ai − Bi)² )N = 56 × 56 = 3,136 格。用灰度亮度比较。
吉娃娃(原图)
修改后的吉娃娃
松饼

2像素距离表:吉娃娃离谁最近 以本页照片为准

我们测量了本页五张照片两两之间的像素距离。数字越小,就表示计算结果越“相似”。最小的值已标上颜色。

这张表的值是用本页的五张照片(只裁出脸部并缩小到 56 × 56)测得的。换用其他照片,值会随背景·光照·构图而大幅变化,但“像素距离与含义上的距离不同”这一结论,在真实照片中也是广为人知的性质。

3Colab 代码 1 的结果 · 换别的照片来测

代码 1 把 scikit-image 自带的猫照片(chelsea)和人照片(astronaut)的脸部缩小到 56 × 56,做同样的实验。同一只猫平移 1 格时距离为 16.9,2 格为 27.1,8 格增大到 40.5,而猫和人之间的距离是 85.3。只平移几格,距离就接近与另一种动物之间距离的一半。

像素距离只衡量“同一位置的数字是否相近”。所以它对位置·亮度·构图很敏感,却不知道照片里拍的是什么。这一局限正是需要章节 4 的滤波器和 4-3 的 CNN 的原因。

给初学者的讲解

4-1 的 k-NN 是向“近邻”提问的。要在照片上做同样的事,照片之间的距离就必须反映含义。可是按像素距离,吉娃娃离松饼比离同为狗的金毛寻回犬还近,而同一只吉娃娃只要平移 4 格,就比松饼离得更远。这说明在照片中不能用原始像素距离来寻找近邻。

4卷积

卷积与滤波器——寻找相邻像素构成的图案

把 3 × 3 的数字表(滤波器)在照片上滑动,逐位相乘再相加。与图案相似的地方得到大数,把这些结果汇总起来就是特征图。

1模型

特征是由许多像素共同构成的模式,比如“这里先亮后突然变暗(边缘)”“比周围暗成一个圆(点)”“细线密密排列(毛的纹理)”。CNN 把 3 × 3 这样的小数字表,即滤波器(卷积核),放在照片上一格一格地滑动,把重叠的数字两两相乘再全部相加。与滤波器图案相似的地方得到大数,其他地方得到小数,把这些结果汇总成的新矩阵就是特征图。这种计算叫作卷积。

输入像素矩阵 X
工具小滤波器 K(例:3 × 3)
输出特征图 F

简单来说就像找图案印章的游戏。拿一枚刻着“左边暗、右边亮”图案的印章,在照片上的每个位置都比一比,图案吻合得好的位置就记下高分。分数表填满后,照片中的竖直边缘在哪里就一目了然。换一枚印章,要找的图案也随之改变。

2公式
(X ∗ K)(i, j) = Σu=0…2 Σv=0…2 K(u, v) · X(i+u, j+v) + b数学上的卷积要把滤波器翻转后再相乘,但在深度学习中,习惯上把这种不翻转直接相乘的计算(互相关)也称为“卷积”。由于滤波器的数字是通过训练找出来的,结果是一样的。
F(i, j) = ReLU((X ∗ K)(i, j)) = max(0, (X ∗ K)(i, j))ReLU 把负数变成 0。丢掉“图案反向出现的地方”,只留下“有图案的地方”。
最大池化: P(i, j) = max { F(2i, 2j), F(2i+1, 2j), F(2i, 2j+1), F(2i+1, 2j+1) }在 2 × 2 格中只保留最大值,把长宽各减半。即使特征移动一两格,结果也不太会晃动。
K(u, v)
滤波器的 9 个数字。作用与感知机的权重 w 相同,是要通过训练找出的对象
X(i+u, j+v)
与滤波器重叠的 9 个像素
b
偏置。每个滤波器一个
F, P
特征图、池化后的特征图
逐块读懂公式
  1. Σ Σ K·X把 3 × 3 = 9 对数字按相同位置相乘后全部相加。这与 4-1 中看到的感知机加权和 w · x 是完全相同的计算,只是输入换成了照片的一小块。
  2. (i, j)这是放置滤波器的位置。不断改变 i、j,用同一个滤波器扫过整张照片。因为在所有位置重复使用同样的权重,所以无论眼睛在照片的哪里,都用同样的方式去找。
  3. max(0, ·)这是激活函数 ReLU。它有一个折点,所以叠加层才有意义。
  4. max { 4 格 }这是最大池化。56 × 56 的特征图变成 28 × 28,计算量减少到四分之一。
用数字算一遍(吉娃娃眼睛右侧边缘,灰度 3 × 3 小块)X = [92 129 174 ; 38 74 137 ; 55 119 176], 竖直边缘滤波器 K = [−1 0 1 ; −1 0 1 ; −1 0 1]
相乘再相加:(−92 + 174) + (−38 + 137) + (−55 + 176) = 82 + 99 + 121 = 302 → ReLU(302) = 302(强边缘)
如果是只有毛发的平坦小块 [175 176 175 ; 174 175 176 ; 175 175 174]:(175 − 175) + (176 − 174) + (174 − 175) = 1 → 几乎为 0(没有边缘)
3示意图 · 滤波器盖一次章
一次卷积5 乘 5 输入左上角的 3 乘 3 区域与 3 乘 3 滤波器按相同位置相乘后相加,得到的值成为 3 乘 3 特征图的第一格 输入 X(5 × 5)滤波器 K(3 × 3)特征图(3 × 3) −101−101−101 重叠 相乘再相加 302 紫色窗口一格一格向右 → 向下移动 “左边暗、右边亮” 每个窗口位置一个数字 输出大小 = (5 − 3) / 1 + 1 = 3。在边缘外围补一圈 0(填充),就能保持与输入相同的 5 × 5。
4解读

滤波器就是用数字写下的“想找的图案”。左列为 −1、右列为 +1 的滤波器,右边比左边越亮,输出的数就越大。所以在吉娃娃的眼睛(暗)和毛发(亮)之间的竖直边缘上,会得到 302 这样的大值,而在只有毛发的平坦区域,得到的值接近 0。

重要的是,同一个滤波器会在照片的所有位置重复使用。一个滤波器只有 9 个数字,却能找出照片中任何位置的边缘。章节 3 中看到的“只平移一格所有数字都变了”的问题也会减轻。因为照片平移时,特征图也只是跟着平移,边缘存在这一事实并没有改变。

真实 CNN 的第一层会使用几十个这样的滤波器。每个滤波器输出一张特征图,所以输出是“照片大小 × 滤波器个数”的厚矩阵。

5动态图解 · 滤波器滑动着填满特征图的过程

在吉娃娃眼睛附近的灰度 8 × 8 小块(从缩小到 28 × 28 的照片中裁出)上,把竖直边缘滤波器一格一格地放上去。蓝色数字表示“右边更亮”,橙色数字表示“左边更亮”。

  1. 放上滤波器
  2. 9 对相乘
  3. 全部相加
  4. 移动一格
  5. 用 ReLU 去掉负数
6滤波器实验室 · 换着印章盖盖看

选择照片和滤波器。也可以直接修改滤波器格子里的数字。右边特征图中亮的地方就是“找到图案的地方”。点击特征图的格子,下方会显示该位置的计算过程。为了让输出大小保持 56 × 56,边缘之外用复制最近的边缘像素的方式填充。这与 3 号示意图中的补 0 填充方式不同,因此边框格子的值可能与补 0 时不同。

照片
滤波器
输入(灰度 56 × 56)
特征图(点击查看计算)
滤波器 K(3 × 3)
7主要特点
优点
  • 一个滤波器(9 个数字)在整张照片上重复使用,权重非常少
  • 照片稍微平移时,特征也只是跟着平移,判断不会动摇
  • 叠加层后会自然形成线 → 局部 → 整体的层级
局限
  • 滤波器只看邻近的像素,相距较远的部分之间的关系要经过多层才能知道
  • 直接使用时对旋转和大小变化较弱,需要用多样的照片来训练
  • 前面几层的特征无法区分相似的图案(眼睛和蓝莓)
定位:1980 年福岛邦彦的新认知机(Neocognitron)首次提出“局部滤波器 + 叠加层”的结构,LeCun 的 LeNet(1989、1998)用反向传播训练这种结构来识别手写数字。2012 年,AlexNet 在大规模照片分类中以巨大优势胜出,开启了深度学习时代。
✓小测验

Q1. 卷积中,滤波器在一个位置的值是怎么得到的?

Q2. 在所有格子都是 10 的平坦小块上应用竖直边缘滤波器 [−1 0 1]×3,结果是?

Q3. 对 56 × 56 的特征图做 2 × 2 最大池化,大小变为?

Q4. CNN 滤波器里的数字是谁决定的?

给初学者的讲解

卷积就是把 4-1 感知机的加权和(w·x + b)在照片的每个小块上反复计算。滤波器的 9 个数字就是权重;由于同一个滤波器会在照片的所有位置重复使用,所以不管眼睛在哪里,都能用同样的方式找到。在代码 2 中,我们会确认手算结果与 scipy 的结果一致,并看到:把手写数字平移 2 格后,直接使用像素的神经网络准确率跌到 14.2%,而小型 CNN 仍保持 90.4%。

5人为设定的特征

人为设定的特征——人脸框、特征点、边缘强度

在深度学习之前,由人来决定“测量什么”。本节看看这种方法的优点,以及照片一变判断就会翻转的局限。

1人为设定特征的历史 · 人脸检测与特征点

深度学习之前的人脸识别依靠人为设定的特征。2001 年,Viola 和 Jones 快速计算数千个测量亮度差异(如“眼睛部分比脸颊暗”)的简单矩形特征(Haar 特征),从而找出照片中的人脸框 [R4]。2005 年的 HOG 在每个小格子里统计边缘的方向,用来找出人的轮廓 [R5]。像第 1 节图片中的红点那样,定位眼角、鼻尖、下颌线位置的人脸特征点,是在这样找到的人脸框内再次计算得到的 [R6]。

这些方法速度快、容易解释,但人必须事先知道要测量什么,而且对光照、角度和遮挡很敏感。CNN 通过从数据中学习同类的滤波器,突破了这一局限 [R7]。

2人为设定的特征 vs 模型学到的特征
猫脸的几何结构线与人脸的特征点

第 1 节的图片。绿色框是“这里有一张脸”的检测结果,红点是下颌线、眉毛、嘴唇轮廓上的人脸特征点,粉色点是双眼、鼻子、嘴的核心位置。猫脸上的红线是连接额头、眼睛和鼻子的面部骨架。

人为设定的特征

像“两眼间距”“耳尖角度”这样,由人先决定要测量什么。

  • 容易解释原因
  • 数据少也能工作
  • 对光照、角度、遮挡敏感
  • 用不上人没想到的线索
CNN 学到的特征

滤波器数字 K 一开始设为随机值,再由训练朝着答对的方向修正。

  • 连毛的纹理、面包的纹理、鼻子的反光都能自己找到
  • 光照、角度不同时也比较稳健
  • 需要几千到几百万张照片
  • 难以解释为什么这样判断
①猫 vs 人 简单

请切换到“边缘强度”视图。有意思的是,整张照片的平均边缘强度两者几乎相同。因为人像照片的长发里也有很多细线。区别在于边缘位于哪里。猫的毛纹和条纹一直密布到脸部正中,而人的脸颊和额头很光滑,边缘集中在眼睛、鼻子、嘴和头发上。下方“中间区域”的数值显示了这一差异。这正是我们需要按位置排列的地图——也就是特征图——而不是一个平均数的原因。

第 3 层左右的局部特征也区分得很清楚。头顶尖尖的三角形耳朵、额头的条纹、小小的粉色鼻子和长长的胡须,人脸上都没有。第 1 节图片中的红线和红点是人直接设定这些线索的方式,而 CNN 则用滤波器自己找到同样的线索。

在第 3 节的表中,猫与人的灰度像素距离和猫与狗的距离处于相近的水平。对人来说这是最容易的一组对决,但像素距离却显示不出这种差异。这是像素距离不懂含义的又一个证据。

3Colab 代码 1 的结果 · 单一的边缘强度会因照片而翻转

在上面的成对比较中,用本页的照片测得猫的中间边缘更大。但在代码 1 中用 scikit-image 的猫和人照片来测,结果却相反(脸部边缘强度:猫 101.5,人 123.6)。这是因为人像照片中的头发和笑着露出的牙齿形成了很强的边缘。

像“边缘多就是猫”这样人为设定的单一特征,照片一换就很容易翻转。所以我们需要的不是一个特征,而是多个特征的组合,而且要从数据中学习。这就是 4-3 的主题。

给初学者的讲解

人为设定的特征容易解释“为什么这样判断”,数据少也能工作。但人必须事先知道,而且照片条件一变就容易失效。请在成对比较中切换到“边缘强度”视图,比较猫和人的边缘集中在哪里。

6后面的层

层越深,找到的东西越大

第一层的滤波器寻找线条和边缘。叠加层之后,线条组合成角,角组合成眼睛和耳朵,眼睛和耳朵组合成脸。

1层越深,找到的东西越大
各层寻找的特征第 1 层寻找短线和边缘,第 2 层寻找角、曲线和纹理,第 3 层寻找眼睛、耳朵、鼻子等局部,第 4 层以后寻找整张脸 第 1 层 · 线条与边缘第 2 层 · 角·曲线·纹理第 3 层 · 局部后面的层 · 整体 只看 3 × 3 像素组合多条线眼睛、尖耳朵、鼻子“猫脸” 无法区分吉娃娃和松饼毛的纹理 vs 面包的纹理被区分开眼睛 vs 蓝莓被区分开根据整体布局判断

用池化逐步缩小照片并叠加层,后面层的一格就能看到原始照片中更大的区域。所以前面的层寻找小线条,后面的层寻找由线条组合成的眼睛和耳朵,更后面的层寻找整张脸。这张图把 Zeiler 和 Fergus(2014)可视化训练好的 CNN 各层反应时展示的趋势做了简化。

给初学者的讲解

用池化逐步缩小照片并叠加层,后面层的一格就能看到原始照片中更大的区域。所以前面的层寻找小线条,后面的层寻找这些线条的组合 [R8]。在 4-3 中,我们会看到叠加这些层的 CNN 如何输出概率,以及为什么叠加层之后,原本一个平面分不开的东西就能分开了。

Colab 代码——亲自运行本页内容

两段代码都只使用 Colab 默认安装的库和内置数据。点击“下载笔记本(.ipynb)”后,在 Colab 中通过文件 → 上传笔记本打开,或者复制后粘贴到新笔记本的单元格中。

代码 1 · 把照片打开成数字矩阵对应第 2·3·5 节 · numpy、scikit-image、scipy、matplotlib(内置照片)· CPU 几秒

查看 scikit-image 自带的猫和人照片的形状与像素值,计算灰度亮度、像素距离和边缘强度。想换成自己的数据,就用 io.imread 读取自己的照片,并把 small() 的(上、左、边长)改成脸的位置。

运行结果(2026-10-04 运行,numpy 2.4 · scikit-image 0.26 · scipy 1.17 · CPU)。没有随机数,任何时候运行结果都相同。
代码 2 · 手算卷积,以及 CNN 真的不怕平移吗对应第 4 节 · numpy、scipy、tensorflow(Keras)、scikit-learn · CPU 约 1 分钟

手算 3 × 3 竖直边缘滤波器的卷积并与 scipy 对照,再在把手写数字平移 1~2 格的测试照片上比较 MLP 和小型 CNN。

运行结果(2026-10-04 运行,TensorFlow 2.21 · Keras 3 · CPU)。2 个种子的平均值。数字可能因种子、版本和硬件略有不同。

AI 应用提示词——以这段代码为起点

这是粘贴到 ChatGPT、Qwen、Claude 等 AI 助手中的提示词。点击“复制”,所选代码会一起附在提示词后面。把〔 〕里的内容换成你自己的情况即可。

一起附上的代码

AI 的回答只是起点。它推荐的论文·数值·库函数一定要对照原文和官方文档核实。如果在竞赛·论文中得到了 AI 的帮助,要按照主办方和期刊的规定说明使用的事实和范围。

术语表

与正文中黄色虚线下划线对应的词典。整个系列使用相同的写法。点击章节名可以跳到首次出现的位置。

类比合集——以及类比不成立的地方

类比是理解的第一步,但也可能成为误解的种子。人眼·人脑类比标注了对应程度。直接 有依据表明确实在做同样的事 · 部分 只有部分性质相似 · 无 尚未发现对应的东西

概念日常类比人眼·人脑类比类比不成立的地方
像素一块马赛克瓷砖部分 眼睛的视网膜上也密布着感光细胞视网膜上的细胞并不是均匀排成网格,而是集中在中央(中央凹),色觉细胞的种类和比例也各不相同
卷积滤波器刻着花纹的印章部分 视觉皮层的简单细胞会对特定方向的边缘产生强烈反应大脑细胞的学习方式和连接要复杂得多。CNN 滤波器在所有位置重复使用同样的数字,而大脑并非如此
特征图藏宝图上的 X 标记无地图只有一张,而实际的层里有和滤波器数量一样多的特征图层层叠在一起
池化选班级代表无班级代表由人来选,而最大池化是机械地选出数字最大的那一格
人脸特征点地图上的路标无路标由人来立,而特征点的位置是训练好的模型针对每张照片计算出来的。被遮挡时会标到错误的位置

作者简介与参考文献

E-1 作者简介 · E-2 学术参考文献 · E-3 图片·数据参考资料

E-1 作者简介

Sangsun Ahn(M-Robo Inc. 代表)

曾任职于韩国电气安全公社(Korea Electrical Safety Corporation)、《每日经济新闻》(Maeil Business Newspaper),现创办每日经济的外部风险企业 M-Robo Inc. 并担任代表。M-Robo Inc. 是以媒体公司内部创业起步的媒体风险企业,曾为《国民日报》(Kukmin Ilbo)提供机器人记者(StockBot)服务,并在韩国互联网振兴院(KISA)、韩国言论振兴财团(Korea Press Foundation)、韩国广播通信电波振兴院(KCA)等机构开展了多个项目。此后一直运营自有的 AI 新闻报纸 Money-Robo。担任代表期间,曾获亚洲开放数据黑客松冠军,并因在数据创业领域的贡献两次获得韩国行政安全部长官奖;是人工智能和区块链领域 5 项专利的发明人及注册人。著有《AI 犯罪与自我防卫》(AI범죄와 자기방어),并为韩国技术教育大学(KOREATECH)在线终身教育院开发了金融科技、统计学、人工智能领域的网络课程内容。最高学位为经济学博士(东国大学,微观数理经济学)。目前在国民大学、湖西大学等多所大学讲授数据与人工智能相关课程。详细简历

课程

  • Sangsun Ahn (2025).《面向商业的数据科学》(비즈니스를 위한 데이터 과학)讲义。韩国开放网络大学(Open Cyber University of Korea)人工智能融合学科。
  • Sangsun Ahn (2025). [K-Digital] 人工智能自然语言处理。STEP(智能职业培训平台),韩国技术教育大学(KOREATECH)在线终身教育院。
  • Sangsun Ahn (2024). [K-Digital] 金融科技数据分析基础。STEP(智能职业培训平台),韩国技术教育大学(KOREATECH)在线终身教育院。

STEP 课程链接:link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
如因网站改版无法正常访问,请访问 www.step.or.kr。

论文与发表

  • Sangsun Ahn (2025). 利用国民老年保障面板数据的家庭支出预测模型研究:基于人工智能模型的方法。《未来社会》(미래사회),16(2)。原文
  • Sangsun Ahn (2025). 利用国民老年保障面板数据的家庭支出预测模型研究:人工智能方法。国民老年保障面板学术会议报告资料(2025.05.13),国民年金公团国民年金研究院(National Pension Service, National Pension Research Institute)。报告资料
  • Sangsun Ahn (2025). 基于 SNS 文本的疑似毒品交易检测算法研究:以模式与语境分析为中心。《未来社会》(미래사회),16(1)。原文
  • Sangsun Ahn (2024). 面向金融领域异常检测模型安全的基于统计的对抗性数据应对方案:实证分析与模拟结果。《未来社会》(미래사회),15(3)。原文
  • Sangsun Ahn (2024). 利用人工智能、基于虚拟角色特征的 SNS 帖子检测解决方案。2024 Summer Newmedia Party 海报发表(2024.06.19),首尔媒体研究生院大学(Seoul Media Institute of Technology)。
  • Sangsun Ahn (2024). 利用工伤面板数据的机器学习模型。第 10 届工伤保险面板学术会议海报发表(2024.05.17),勤劳福祉公团勤劳福祉研究院(COMWEL Labor Welfare Research Institute)。
  • Sangsun Ahn (2024). 虚拟资产时间序列数据的分析与预测:时间序列模型与人工智能模型的比较及改进建议。《未来社会》(미래사회),15(1)。原文

E-2 学术参考文献

  1. [R1] ITU-R Recommendation BT.601. Studio encoding parameters of digital television. — 第 2 节(灰度亮度系数)
  2. [R2] LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278–2324. — 第 4 节
  3. [R3] Fukushima, K. (1980). Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36, 193–202. — 第 4 节
  4. [R4] Viola, P., & Jones, M. (2001). Rapid object detection using a boosted cascade of simple features. CVPR 2001. — 第 5 节
  5. [R5] Dalal, N., & Triggs, B. (2005). Histograms of oriented gradients for human detection. CVPR 2005. — 第 5 节
  6. [R6] Kazemi, V., & Sullivan, J. (2014). One millisecond face alignment with an ensemble of regression trees. CVPR 2014. — 第 1·5 节
  7. [R7] Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS 2012. — 第 5 节
  8. [R8] Zeiler, M. D., & Fergus, R. (2014). Visualizing and understanding convolutional networks. ECCV 2014. — 第 6 节
  9. [R9] van der Walt, S., et al. (2014). scikit-image: image processing in Python. PeerJ, 2, e453. — 代码 1(chelsea、astronaut 照片)

E-3 图片·数据参考资料

  • 第 1 节的图片由作者亲自制作。实践用的猫和人照片是从这张图片中裁出脸部,缩小到 56 × 56,并去掉线条和点后使用的
  • 第 2 节的吉娃娃照片是从 4-4 的图片中裁剪出来的
  • 第 6 节的分层图是把 [R8] 展示的趋势简化而成的概念示意图

给教师的 TIP

这是给讲师、在职培训(OJT)负责人和辅导老师的运营指南。时间为预估值,请根据实际课堂进行调整。

对象学完 4-1 的大学生和职场人士;想了解图像 AI“如何接收照片”的从业者
预备知识4-1 的特征、目标值与加权和,乘法与加法
学习目标① 计算彩色照片的形状(H × W × 3)和数字个数 ② 手算一格 3 × 3 卷积 ③ 举例说明像素距离和人为设定特征的局限
预计时间阅读 40~50 分钟 · 实践演示 25 分钟 · Colab 实践 25 分钟(代码 1 10 分钟,代码 2 运行 1 分钟 + 解读 14 分钟)

三种运营方案

讲授式 50 分钟

以概念为中心

导入 5 分钟(第 1 节)→ 第 2 节像素放大镜 15 分钟 → 第 3 节平移实验 10 分钟 → 第 4 节卷积手算 15 分钟 → 小测验 5 分钟。

在职培训(OJT)90 分钟

以业务应用为中心

用第 2 节计算本单位业务照片(次品、文件扫描件等)的分辨率和数字个数 20 分钟 → 在第 4 节滤波器实验室里找出适合自己照片的滤波器 25 分钟 → 第 5 节讨论人为设定特征的局限 15 分钟 → 代码 2 运行与解读 30 分钟。

一对一辅导

按水平安排进度

入门者只学第 1·2·4 节。中级者把第 4 节的输出尺寸公式改为含填充和步幅的形式来计算,并预测在代码 2 的 CNN 中把 GlobalMaxPooling 换成 Flatten 后,对平移的稳健性会怎样变化。

各章节运营要点

章节停下来提的问题操作技巧
1 问题“人是看到什么才知道这是猫的?”指出线条和点是人为设定的线索
2 像素“眼睛那一格的三个数字是什么?”在像素放大镜中把分辨率从 7 改到 56
3 像素距离“明明是同一只吉娃娃,为什么比松饼还远?”把平移滑块拖到 4 格以上
4 卷积“在平坦的毛发小块上盖竖直边缘滤波器,会怎样?”把动画停在“全部相加”,再动手算一遍核对
5 人为设定的特征“边缘多就是猫”总是对的吗?把成对比较的边缘强度视图和代码 1 的结果放在一起看
6 后面的层“找眼睛的滤波器在第几层?”从左到右逐一讲解分层图

常见误解 Top 5

误解正确解释要展示的画面
照片是图片文件,和数字不一样对计算机来说,照片就是 H × W × 3 个 0~255 的数字第 2 节像素放大镜
像素相近,拍到的就是同一个东西只平移一格,距离就会大变。像素距离不懂含义第 3 节平移实验
卷积是复杂的数学只不过是把重叠的 9 对数相乘再相加。和感知机的加权和一样第 4 节的数字示例
滤波器由人设计实践中的滤波器只是示例。CNN 从数据中学习滤波器的数字第 4 节小测验 Q4
人为设定的特征毫无用处容易解释,数据少也能用。只是条件一变就不稳健第 5 节与代码 1 中翻转的结果

小测验(点击展开解析)

Q1. 彩色 56 × 56 照片有多少个数字?灰度的呢?

彩色 56 × 56 × 3 = 9,408 个,灰度 56 × 56 = 3,136 个。

Q2. 第 2 节中吉娃娃眼睛那一格 (39, 37, 43) 的灰度亮度是多少?

0.299×39 + 0.587×37 + 0.114×43 = 11.661 + 21.719 + 4.902 ≈ 38.3.

Q3. 在小块 [92 129 174; 38 74 137; 55 119 176] 上盖竖直边缘滤波器 [−1 0 1]×3,结果是多少?

(174−92) + (137−38) + (176−55) = 82 + 99 + 121 = 302。这是右侧较亮的强边缘。

Q4. 对 56 × 56 的输入不加填充(步幅 1)应用 3 × 3 滤波器,输出尺寸是多少?

56 − 3 + 1 = 54,即 54 × 54。加填充 1 则保持 56 × 56。

Q5. 在代码 2 中,对平移 2 格的数字,MLP 为 14.2%,CNN 为 90.4%。造成差异的两个因素是什么?

一是在所有位置重复使用同一个滤波器的卷积(位置变了也能找到同样的花纹),二是丢掉位置、只保留最大反应的全局最大池化。

Colab 作业

基础

在代码 1 中读取自己的人脸照片(或宠物照片),输出形状和数字个数,并把平移 1·2·4 格时的像素距离整理成表格。

挑战

把代码 2 的 CNN 中的 GlobalMaxPooling2D 换成 Flatten 重新训练,用 3 个种子报告平移 1·2 格照片的准确率变化。结合第 4 节的解读写出原因。

难度调整与延伸学习

入门者第 3 节的距离表和第 6 节可以跳过。只要把第 2·4 节的实践扎实做一遍即可
进阶让学生调查 Haar 特征和 HOG,并在第 4 节的滤波器实验室里做出类似的滤波器。调查到的论文要查阅原文确认
延伸学习3-3 图像与 CNN · 4-3 猫 vs 狗(CNN 整体结构)
讲师用资料小测验的评分标准和作业参考答案可在教师用答案页(4-2)中查看

辛苦了!

你已经读完了《4-2 猫 vs 人》这一篇。实验室的伙伴们各用一句话为你总结。

实验室的四位伙伴在相机前拍纪念照的像素画
博士
博士我们把照片打开成数字看了看。
  • 计算机接收的最小信息是一个通道值
  • 像素距离不懂含义
  • 卷积就是把 9 对数相乘再相加的盖印章
助手
助手只平移了一格,居然比松饼还远了!
果蝇研究员
果蝇研究员下一篇我们把滤波器叠起来做成 CNN 吧。