猫工智能:卷积神经网络层的实现

简介: 卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。

d8a45815ffe3474895cec176c159a824_jpeg

卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。

卷积神经网络在 20 世纪 90 年代就已经被广泛应用,但深度学习卷土重来的第一功臣非卷积神经网络莫属,原因之一就是卷积神经网络是非常适合计算机视觉应用的模型。

卷积在工程和数学上都有很多应用——在统计学中,加权的滑动平均是一种卷积;在概率论中,两个统计独立的变量 x 和 y 求和的概率密度函数是 x 和 y 的概率密度函数的卷积;在声学中,回声可以用原声与一个反映各种反射效应的函数相卷积来表示;在电子工程与信号处理中,任意一个线性系统的输出都可以通过将输入信号与系统函数(系统的应激响应)做卷积获得;在物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

卷积提供了能够提升机器学习效果的三个重要方法:稀疏交互(Sparse Interaction)或稀疏连接(Sparse Connectivity)、参数共享(Parameter Sharing)以及等价表达(Equivariant Representation)。此外,卷积也提供了一种使得输入尺寸可变的工作方式。

一个简单的卷积网络由一系列层构成,每层都将上一层的一组隐层输出通过一个可微函数产生一组新的隐层输出。一个典型的卷积网络可以由三种类型的层构成:卷积层(Con-volutional Layer,CONV)配套 ReLU(Rectified Linear Unit,ReLU(x) = max(0,x))、池化层(Pooling Layer,POOL)和全连接层(Fully-Connected Layer,FC,和普通神经网络一致)。

卷积层是卷积网络的核心组成部分,包含了大部分繁重的计算工作。

卷积层实现

卷积层的参数由一组可学习的卷积核(Filter)构成。每个卷积核在空间中都是小尺寸的(沿宽和高),但会穿过输入集的整个深度。例如,卷积网络第一层的卷积核尺寸通常为5×5×3(宽、高各 5 像素,深度为彩色图像的 3 个通道)或 3×3×3(宽、高各 3 像素,深度为彩色图像的 3 个通道)。

在前向传播过程中,我们在输入图像上沿宽和高的方向滑动各个卷积核(准确地讲,卷积),并在所有位置上分别计算卷积核和输入之间的点乘。当沿整个输入的宽和高方向滑动卷积核时,我们就会得到一个二维的激活映射(Activation Map),通常也称为特征图或特征映射(Feature Map),表示在每个空间位置上输入对于卷积核的响应。

直观地讲,网络将学习卷积核参数,使得在遇到某种视觉特征(如第一层某些方向上的边缘或某种颜色的斑点,或网络高层中的整个蜂窝状或轮状图案)时被激活。卷积层上的每个卷积核(如:例子 CIFAR-10 中 12 个卷积核)都会产生一个二维的激活映射,我们沿深度方向将这些激活映射排列起来,并将它们作为卷积层的输出。如图 1 所示为一个 5×5×3 的卷积核在 32×32×3 的图像上沿空间维度(宽、高)滑动,遍历空间中的所有点后便生成一个新的尺寸为 28×28×1 的特征图。如图 2 所示为另一个 5×5×3 的卷积核在 32×32×3 的图像上沿空间维度(宽、高)滑动,遍历空间中的所有点后生成另一个新的尺寸为 28×28×1的特征图。如图 3 所示则是 6 个这样的卷积核在输入图像上沿空间维度(宽、高)滑动,遍历空间中的所有点后生成 6 个尺寸为 28×28×1 的特征图,所以最终输出的特征图维度为28 × 28 × 6。
1

图 1 卷积层中的一个卷积核示例

2

图 2 卷积层中的两个卷积核示例
3

图 3 卷积层中的多个卷积核示例

在网络中堆叠 CONV-ReLU 结构。需要注意的是,卷积核的深度需要与输入的特征图的深度一致。如图 4 所示,第一个卷积层的卷积核尺寸为 5 × 5 × 3,其深度与输入图像(32 × 32 × 3)的深度一致;第二个卷积层的卷积核尺寸为 5 × 5 × 6,其深度就需要与第一个CONV-ReLU 输出的特征图(28 × 28 × 6)的深度一致。
4

图 4 后一个卷积层的卷积核大小需要与前一个卷积层输出的维度一致

如图 5 所示,通过可视化各个卷积层输出的特征图,我们看到随着卷积网络的不断加深,特征图上的响应表现出的语义层次也在不断加深。最初的卷积层通常对图像中的边缘或色斑产生较强的响应,我们认为这个部分抽取的主要是低层特征(Low-Level Feature)。此后的卷积层在低层特征基础上产生的特征图开始出现一些具有一部分语义的图形或纹理。最后的卷积层倾向于对有明确语义的目标产生强响应,认为此时具有了抽取高层特征(High-Level Feature)的能力。
5

图 5 卷积层可视化

相关文章
|
8天前
|
机器学习/深度学习 编解码 算法
YOLOv5改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】
在YOLOv5的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用EfficientNet代替backbone。本文给大家带来的教程是**将原来的主干网络替换为EfficientNet。文章在介绍主要的原理后,将手把手教学如何进行模块的代码添加和修改,并将修改后的完整代码放在文章的最后,方便大家一键运行,小白也可轻松上手实践。以帮助您更好地学习深度学习目标检测YOLO系列的挑战。
|
10天前
|
机器学习/深度学习 编解码 边缘计算
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
本文介绍了如何在YOLOv5中用ShuffleNetV2替换卷积以减少计算量。ShuffleNetV2是一个轻量级网络,采用深度可分离卷积、通道重组和多尺度特征融合技术。文中提供了一个逐步教程,包括ShuffleNetV2模块的代码实现和在YOLOv5配置文件中的添加方法。此外,还分享了完整的代码链接和GFLOPs的比较,显示了GFLOPs的显著减少。该教程适合初学者实践,以提升深度学习目标检测技能。
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
|
2天前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】
本教程介绍了如何在YOLOv8中使用动态卷积提升网络性能和灵活性。动态卷积利用注意力机制动态选择和组合卷积核,适应输入数据特征,解决了轻量级CNN的局限。文中提供了详细步骤教读者如何添加和修改代码,包括在`conv.py`中添加`Dynamic_conv2d`模块,更新`init.py`、`task.py`和`yaml`配置文件。此外,还分享了完整代码和进阶技巧,帮助深度学习初学者实践目标检测。参考[YOLOv8改进](https://blog.csdn.net/m0_67647321/category_12548649.html)专栏获取更多详情。
|
7天前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进 | 融合模块 | 用Resblock+CBAM卷积替换Conv【轻量化网络】
在这个教程中,介绍了如何将YOLOv8的目标检测模型改进,用Resblock+CBAM替换原有的卷积层。Resblock基于ResNet的残差学习思想,减少信息丢失,而CBAM是通道和空间注意力模块,增强网络对特征的感知。教程详细解释了ResNet和CBAM的原理,并提供了代码示例展示如何在YOLOv8中实现这一改进。此外,还给出了新增的yaml配置文件示例以及如何注册模块和执行程序。作者分享了完整的代码,并对比了改进前后的GFLOPs计算量,强调了这种改进在提升性能的同时可能增加计算需求。教程适合深度学习初学者实践和提升YOLO系列模型的性能。
|
10天前
|
机器学习/深度学习 人工智能 算法
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
食物识别系统采用TensorFlow的ResNet50模型,训练了包含11类食物的数据集,生成高精度H5模型。系统整合Django框架,提供网页平台,用户可上传图片进行食物识别。效果图片展示成功识别各类食物。[查看演示视频、代码及安装指南](https://www.yuque.com/ziwu/yygu3z/yhd6a7vai4o9iuys?singleDoc#)。项目利用深度学习的卷积神经网络(CNN),其局部感受野和权重共享机制适于图像识别,广泛应用于医疗图像分析等领域。示例代码展示了一个使用TensorFlow训练的简单CNN模型,用于MNIST手写数字识别。
33 3
|
15天前
|
机器学习/深度学习 算法 PyTorch
卷积神经网络的结构组成与解释(详细介绍)
卷积神经网络的结构组成与解释(详细介绍)
40 0
|
15天前
|
机器学习/深度学习 算法 数据挖掘
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
26 1
|
15天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
23 1
|
15天前
|
机器学习/深度学习 存储 算法
卷积神经网络(CNN)的数学原理解析
卷积神经网络(CNN)的数学原理解析
48 1
卷积神经网络(CNN)的数学原理解析
|
15天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习500问——Chapter05: 卷积神经网络(CNN)(2)
深度学习500问——Chapter05: 卷积神经网络(CNN)(2)
26 2