在神经网络的基础上,卷积神经网络(CNN)是如何完成图像识别任务的?本文介绍了其相关基本原理,一起来看看吧。
上文介绍了神经网络的基础概念,今天我们在神经网络的基础上,看看卷积神经网络(CNN)是如何完成图像识别任务的。
一、图像识别的痛点问题
在CNN出现之前,图像识别有两个大难题:
而CNN可以有效的解决这两个问题,它不仅可以大幅减少参数数量,降低复杂度;还可以使用类似视觉处理的方式保留图像特征,即使图像翻转、移动,也可以进行有效的识别。
二、人类的视觉原理
要理解CNN的原理,需要先了解人类的视觉原理。
人类判断物体的大致过程:眼睛看到物体(瞳孔摄入像素),然后发现物体的边缘和方向(初步处理),接着判断物体的形状(抽象)、最后根据形状判定是什么物体(进一步抽象)。
我们可以发现,上述过程其实就是一个神经网络,低层级负责识别图像基础特征,多个基础特征整合后变成上一层的特征,逐层处理,最终在顶层判断出是什么物体。
这就是CNN的基础思路。
三、CNN的基本原理
CNN由卷积层、池化层、全连接层三部分构成,它们各自的作用如下:
我们先来看看卷积层,卷积层提取局部特征的过程,和人类视觉的提取特征类似,如下图所示:
图中的黄色部分是一个滤波器(Filter),我们称它为“卷积核”,它是一个小的矩阵。
卷积核通过滑动窗口的方式在输入数据上进行卷积操作,卷积核的每个元素与输入数据对应位置的元素相乘,然后将所有乘积结果相加,得到卷积操作的输出结果。
不同的卷积核可以捕捉到不同的特征,例如边缘、纹理、形状等。
在训练过程中,卷积神经网络会学习到最优的卷积核参数,使得网络能更好的提取输入数据的局部特征。
因为卷积核比较小,即便我们做完了卷积处理,图像依然很大,这时候需要池化层来对数据进行降维操作:
池化层通过对输入数据的局部区域进行汇聚操作,例如最大池化或平均池化,来减少特征图的大小。
比如原图是20*20,我们用一个10*10的采样窗口对原图进行下采样,最终可以将原图下采样为一个2*2的小图。
这个操作其实就是降低图片的像素,从高清图变成模糊图,这样既保留了主要特征信息,还有效的过滤掉了图片中的干扰信息,减少了向下一阶段传递的数据量。
池化层可以更有效的降低数据维度,大大减少参数和运算量,同时还可以避免过拟合现象的发生。
卷积层和池化层提取出的特征,输入到全连接层进行训练和学习,由于大大减少了参数量,丢弃了干扰特征,使得训练成本和复杂度大大降低。
四、应用场景
CNN在计算机视觉领域有广泛的应用,以下是一些CNN的应用场景:
CNN的优点:
CNN的缺点:
本文介绍了在CNN的基本原理和应用场景,CNN非常适合处理图像类任务,在很多领域都有广泛的应用。
下篇文章,我们会介绍循环神经网络(RNN),还会简单介绍它的优化算法,敬请期待。
本文由 @AI小当家 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议