CNN让计算机"看见"世界

系列文章见: 《回忆AI时代-从图灵机到人工智能》

文章目录

什么是CNN

CNN(Convolutional Neural Network,卷积神经网络)是一种专门用于处理图像数据的深度学习模型,它最大的特点是能够自动从图像中学习特征,而无需人工设计图像的特征。

譬如下图是一张猫的图片,人类几乎一眼就能判断这是一只猫但对于计算机来说,它看到的并不是猫,而是一大堆数字。因为图片实际上是由大量像素组成,每个像素都对应着 RGB(三原色)数值,计算机需要从这些数字中发现规律,最终判断图片中是否存在一只猫。

猫

为什么是CNN

前文介绍过神经网络,为什么CNN比普通的神经网络更适合处理图像呢?譬如有一张100 × 100的灰度图片,共包含100 × 100 = 10000个像素。如果直接将这10000个像素,全部输入到普通的全连接神经网络中,那么每一个神经元都需要与所有输入相连接,当网络层数增加时,参数数量很容易达到数千万甚至更多,不仅训练速度慢、内存开销大,而且非常容易出现过拟合的现象。

CNN则采用了完全不同的思路。它认为没有必要一开始就观察整张图片,而是像人观察事物一样,先看局部,再逐渐组合成整体。
CNN会利用卷积操作,在图片上用一个较小的窗口(卷积核)不断滑动,每次只关注图片中的一小块区域,例如边缘、纹理、颜色变化等局部特征。随着网络不断加深,这些简单特征会逐渐组合成更加复杂的特征,最终识别出眼睛、耳朵、鼻子,甚至整只猫。

CNN的出现,使计算机第一次能够自动学习图像特征,摆脱了传统计算机视觉中依赖人工设计特征(Feature Engineering)的方法,极大地提升了图像识别的准确率。

CNN的发展过程

第一阶段(1962年),David Hubel(大卫·休伯尔)和Torsten Wiesel(托斯坦·威泽尔),他们研究猫的大脑视觉皮层时发现,猫的大脑并不是一次性识别整个图像,而是由许多神经元分别负责检测不同的特征,例如:

  • 横线
  • 竖线
  • 边缘
  • 方向
  • 运动

这些研究后来获得了1981年的诺贝尔生理学或医学奖,也成为CNN的重要生物学启发。

第二阶段(1980年),Kunihiko Fukushima(福岛邦彦,日本科学家)他提出了Neocognitron(新认知机),首次引入了许多今天CNN的核心思想。它首次引入了许多今天 CNN 的核心思想:

  • 局部感受野(Local Receptive Field)
  • 分层提取特征
  • 卷积思想
  • 池化(类似现代 Pooling)
  • 从低级特征逐步组合成高级特征

不过,它还不能用现代的反向传播算法进行高效训练,因此影响力有限。可以认为Neocognitron是CNN的祖先。

第三阶段(1989-1998年),1989年Yann LeCun(法国裔美国计算机科学家、人工智能研究员,也是现代深度学习领域最具影响力的人物之一)开始把卷积、反向传播、梯度下降结合起来训练纯CNN,并发表了LeNet-5,而LeNet能识别手写数字、邮政编码和银行支票数字,这是世界上第一个真正投入实际应用的CNN。

第四阶段(2012年),Geoffrey Hinton和他的学生们发表了AlexNet,在著名的《ImageNet Large Scale Visual Recognition Challenge 2012》全球图像识别竞赛中,AlexNet将图像分类错误率大幅降低,远远超过当时其他方法,震惊了整个AI界。这一突破成为深度学习发展的重要里程碑,也开启了计算机视觉高速发展的新时代。

ImageNet
年份 模型 错误率
2010 传统CV方法 28.2%
2011 传统CV方法 25.8%
2012 AlexNet 16.4%
2013 ZFNet 11.7%
2014 VGG 7.3%
2014 GoogLeNet 6.7%
2015 ResNet 3.6%
2016 ResNeXt等 3.0%
2017 SENet 2.3%
Human 人类 5.1%

CNN是如何工作的

CNN识别图片共分为五步:

  • 1.输入图片(Input)
  • 2.特征提取(Feature Extraction)
  • 3.重复提取特征
  • 4.特征整合(Classification)
  • 5.输出结果(Output)

1.输入图片(Input)
CNN接收一张图片作为输入。对于计算机来说图片本质上是一组数字。例如,一张100 × 100的彩色图片,会被表示为100 × 100 × 3个RGB数值。

2.特征提取
CNN首先利用卷积层(Convolution)在图片上不断滑动,提取局部特征,例如:

  • 边缘
  • 纹理
  • 颜色变化
  • 简单形状

随后,ReLU激活函数增强模型的表达能力,Pooling(池化)层则压缩数据规模,同时保留最重要的特征。这一步核心在做从图片中找出有价值的信息,过滤掉不重要的信息

3.重复提取特征
CNN 通常不会只有一层卷积,而是由多层卷积组成。随着网络不断加深,提取到的特征也越来越复杂。

1
2
3
4
5
6
7
8
9
第一层:边缘、线条

第二层:纹理、角点

第三层:眼睛、耳朵、鼻子

第四层:猫脸

最后:整只猫

4.特征整合(Classification)
经过多层特征提取后,CNN已经获得了图片的大量高级特征。这些特征会送入全连接层(Fully Connected Layer),综合分析各种特征之间的关系,并计算图片属于各个类别的可能性。

5.输出结果(Output)
最后,通过Softmax函数将计算结果转换为概率。例如:

1
2
3
猫     98%
狗 1%
兔子 1%

概率最高的类别就是CNN的最终识别结果。