在图像识别或目标检测领域,如果还没有掌握构建架构的基础知识,本文将带从基础开始了解卷积神经网络架构,并以一个基础架构为例,应用学习成果。只需要知道卷积是如何工作的,这非常简单!
将逐层深入了解CNN。首先,需要从第一层学习一些内容,包括步长和填充,将简要介绍它们,并提供示例。
假设有一个5×5的输入矩阵和一个3×3的滤波器。对于那些不知道什么是滤波器的人来说,滤波器是应用于图像或矩阵以获得所需特征的一组权重矩阵,请搜索卷积,如果这是第一次接触!
注意:在进行卷积时,总是取所有值的总和或平均值。滤波器可以是任何深度,如果滤波器具有深度d,它可以到达d层深度并进行卷积,即对d层的所有(权重×输入)进行求和。
在这里,输入的大小是5×5,在应用3×3的核或滤波器后,得到一个3×3的输出特征图,让尝试制定这个公式。
在应用卷积时,不会获得与输入相同的输出尺寸,会在边界上丢失数据,因此附加一个零的边框并重新计算卷积,覆盖所有输入值。
将尝试制定这个公式,这里2是沿着高度和宽度的两列零,并对宽度也制定相同的公式。
有时不想捕获所有可用的数据或信息,因此跳过一些邻近的单元格。让可视化它,这里的输入矩阵或图像的尺寸是5×5,滤波器是3×3,步长是2,因此每次跳过两列并进行卷积,让制定这个公式。
如果尺寸是浮点数,可以在输出上取ceil(),即(下一个最接近的整数)。在这里,H指的是高度,因此输出高度是制定的,同样的方法也适用于输出宽度,这里的2是步长值,可以将其作为S在公式中。
一般来说,池化指的是一小部分,因此取输入的一小部分并尝试取平均值,称为平均池化,或者取最大值,称为最大池化,因此通过对图像进行池化,不是取出所有的值,而是取出所有值的总结值!
这里是一个最大池化的例子,因此在这里取一个步长为二,取矩阵中存在的最大值。
激活函数是放在神经网络末端或中间的节点。它们有助于决定神经元是否会发射。有不同类型的激活函数,就像上面的图中一样,但本文的重点是Rectified Linear Unit (ReLU)。
不要惊讶,这个函数并不复杂,这个函数简单地返回0如果值是负数,否则它返回给出的相同值,只不过是消除了负输出,并保持值在0到+infinity之间。
现在,已经学习了所有需要的基础知识,让研究一个名为LeNet的基本神经网络。
在开始之前,将看看迄今为止设计的架构。这些模型在ImageNet数据上进行了测试,有超过一百万的图像和1000个类别来预测。
LeNet-5是一个非常基础的架构,适合任何人开始学习高级架构。
它通过权重共享和稀疏连接工作。在这里,可以看到卷积有一些权重,这些权重由所有输入神经元共享,不是每个输入都有一个单独的权重,称为权重共享,并且不是所有的输入神经元都连接到输出神经元,只有一些被卷积的被激发,称为稀疏连接,CNN与前馈神经网络没有什么不同,这两个属性使它们特别!
以下是用于构建ConvNets的层类型: