做者|Renu Khandelwal
编译|VK
来源|Medium数组
让咱们先来了解一下咱们的大脑是如何识别物体的。咱们将学习什么是CNN, CNN如何利用大脑的启发进行物体识别,CNN是如何工做的。网络
让咱们来了解一下咱们的大脑是如何识别图像的机器学习
根据诺贝尔奖得到者Hubel和Wiesel教授的说法,视觉区域V1由简单细胞和复杂细胞组成。简单的单元有助于特征检测,而复杂的单元则结合了来自小空间邻域的多个这样的局部特征。空间池有助于实现平移不变特征。函数
当咱们看到一个新的图像时,咱们能够从左到右和从上到下扫描图像,以了解图像的不一样特征。咱们的下一步是结合咱们扫描的不一样的局部特征来对图像进行分类。CNN就是这样工做的性能
平移不变特征是什么意思?学习
图像的不变性意味着,即便图像旋转、大小不一样或在不一样照明下观看,对象也将被识别为同一对象。spa
这有助于对象识别,由于图像表示对图像变换(如平移、旋转或小变形等)保持不变。.net
咱们使用卷积神经网络进行图像识别和分类。3d
让咱们了解什么是CNN,以及咱们如何使用它。对象
CNN是Convolutional Neural Network卷积神经网络的缩写,卷积神经网络是一种专门用来处理数据的神经网络,它的输入形状相似于二维的矩阵图像。
CNN一般用于图像检测和分类。图像是二维的像素矩阵,咱们在其上运行CNN来识别图像或对图像进行分类。识别一个图像是一我的,仍是一辆车,或者只是一个地址上的数字。
和神经网络同样,CNN也从大脑中获取启发。咱们使用Hubel和Wiesel提出的对象识别模型。
卷积是一种数学运算,其中咱们有一个输入I和一个参数核K来产生一个输出。
让咱们用图像来解释。
咱们有一个图像“x”,它是一个具备不一样颜色通道(红色、绿色和蓝色RGB)的二维像素矩阵,咱们有一个特征检测器或核“w”,而后应用数学运算后获得的输出称为特征图
这个数学运算有助于计算两个信号的类似度。
咱们可能有一个特征检测器或滤波器来识别图像中的边缘,因此卷积运算将有助于咱们识别图像中的边缘。
咱们一般假设卷积函数在除存储值的有限点集外的任何地方都为零。
I是二维数组,K是核卷积函数
由于卷积是可交换的,咱们能够把上面的方程从新写一下,以下图所示。咱们这样作是为了便于在机器学习中实现,由于m和n的有效值范围变化较小。这是大多数神经网络使用的互相关函数。
以上是互相关函数
那么,咱们如何在CNN中实现它呢?
咱们实现它的方式是经过卷积层
卷积层是CNN的核心构件,它有助于特征检测。
核K是一组可学习的过滤器,与图像相比,它在空间上很小,可是能够扩展到整个输入图像的深度。
理解这一点的一个简单方法是,若是你是一名侦探,你在黑暗中看到一幅很大的图像或一幅画,你将如何识别图像?
你将使用你的手电筒和扫描整个图像。这正是咱们在卷积层中所作的。
核K是一个特征检测器,它至关于图像I上的手电筒,咱们正在尝试检测特征并建立多个特征图来帮助咱们识别或分类图像。
咱们有多个特征探测器,以帮助像边缘检测,识别不一样的形状,弯曲或不一样的颜色等事情。
这一切是如何运做的?
让咱们取一幅3通道5×5矩阵的图像(RGB), 3通道3×3的特征检测器(RGB),而后以步长为1来扫描图像上的特征检测器。
当我在图像上应用特征检测时,输出矩阵或特征图的维数是多少?
特征图的维数与输入图像的大小(W)、特征检测器的大小(F)、步长(S)和图像的填充大小(P)有关
\((W−F+2p)/S + 1\)
在咱们的例子中,W是输入图像的大小,为5。
F是特征检测器接受域大小,在咱们的例子中,为3
步长(S)为1,图像上使用的填充大小(P)为0。
所以,咱们的特征图维度为(5-3+0)/1+1=3。
所以特征图将是一个3*3的矩阵,有3个通道(RGB)。
下面一步一步进行解释
咱们看到5×5的输入图像被简化为3×3的特征图,通道为3(RGB)
咱们使用多个特征检测器来寻找边缘,咱们可使用特征检测器来锐化图像或模糊图像。
若是咱们不想减小特征图的维数,那么咱们可使用以下所示的填充0
在这种状况下应用相同的公式,咱们获得
\((W−F + 2 p) / S + 1 => (5 - 3 +2)/1 + 1= 5\),
如今输出的尺寸将是5×5,带有3个颜色通道(RGB)。
让咱们看看这一切是如何运做的
若是咱们有一个3×3的特征检测器或滤波器,一个偏置单元,那么咱们首先应用以下所示的线性变换
输出=输入*权重+误差
参数个数 = (3 * 3 * 3)+1 = 28
对于100个特征检测器或过滤器,参数的数量将是2800。
在每个线性函数的卷积运算以后,咱们应用ReLU激活函数。ReLU激活函数在卷积层中引入了非线性。
它将特征图中的全部负像素值替换为零。
下图是应用ReLU激活函数后的特征图变换。
如今咱们已经完成了局部区域的特征检测,咱们将结合全部这些来自空间邻域的特征检测来构建图像。
记住你是一个在黑暗中扫描图像的侦探,你如今已经从左到右、从上到下扫描了图像。如今咱们须要结合全部的特征来识别图像
咱们如今应用池来得到平移不变性。
平移的不变性意味着当咱们少许改变输入时,合并的输出不会改变。这有助于检测输入中常见的特征,如图像中的边缘或图像中的颜色
咱们使用最大池函数,它提供了比最小或平均池更好的性能。
当咱们使用最大池时,它总结了整个邻居的输出。与原来的特征图相比,咱们如今有更少的单元。
在咱们的例子中,咱们使用一个2x2的框扫描全部的特征图,并找到最大值。
如今咱们知道卷积网络由如下构成
下图是完整的卷积神经网络
稀疏交互或稀疏权值是经过使用小于输入图像的核或特征检测器来实现的。
若是咱们有一个大小为256 * 256的输入图像,那么就很难检测到图像中的边缘,由于其可能只占图像中像素的一个更小的子集。若是咱们使用更小的特征检测器,那么当咱们专一于局部特征识别时,就能够很容易地识别边缘。
另外一个优势是计算输出所需的操做更少,从而提升了统计效率。
参数共享用于控制CNN中使用的参数或权值的数量。
在传统的神经网络中,每一个权值只使用一次,可是在CNN中,咱们假设若是一个特征检测器能够用来计算一个空间位置,那么它能够用来计算一个不一样的空间位置。
当咱们在CNN中共享参数时,它减小了须要学习的参数的数量,也减小了计算需求。
等变表示
这意味着目标检测对光照、位置的变化是不变的,而内部表示对这些变化是等方差的
原文连接:https://medium.com/datadriveninvestor/convolutional-neural-network-cnn-simplified-ecafd4ee52c5
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/