• 深度学习修炼(三)卷积操作 | 边界填充、跨步、多输入输出通道、汇聚池化



    之前我们讲了 线性分类器

    深度学习修炼(一)线性分类器 | 权值理解、支撑向量机损失、梯度下降算法通俗理解_Qodi的博客-CSDN博客

    又讲了基于线性分类器的全连接神经网络

    深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略_Qodi的博客-CSDN博客

    但是 单纯的线性非线性操作有着比较大的局限性

    ​ 一方面这种全连接网络参数量巨大,另一方面对于位置信息表现比较差。而今天的卷积神经网络非常重要,可以捕捉输入数据中的位置信息,这使得它在处理具有明显空间结构的数据时如图片表现优异。

    1. 卷积基本操作

    卷积操作可以将输入数据映射为输出数据,同时保留输入数据的空间结构信息。

    假设我们有一个3x3的图像像素矩阵,如下所示:

    1 2 3 
    4 5 6 
    7 8 9 
    
    • 1
    • 2
    • 3

    我们希望对这个图像进行卷积操作。为了实现这个操作,我们需要定义一个**卷积核(也称为过滤器)**来滑动在图像上,从而产生一个新的输出图像。

    卷积核

    1 0
    0 1
    
    • 1
    • 2

    卷积操作的基本思想是在输入图像上滑动卷积核,对每个位置进行卷积运算,并将结果存储到输出图像中。具体来说,每一次卷积操作的计算方式如下:

    1. 将卷积核的每个元素与输入图像中对应的元素相乘
    2. 将所得到的乘积相加,得到卷积核在当前位置的输出值
    3. 将卷积核向右或向下移动一个位置,重复上述步骤,直到卷积核覆盖完整个输入图像。

    拿上面那个例子来说

    1. 对于输出图像中的第一个位置,卷积核与输入图像的左上角区域进行卷积运算,计算方式如下:
    1*1 + 0*2 + 0*4 + 1*5 = 6 
    
    • 1

    因此输出图像中的第一个位置的值为6。
    在这里插入图片描述

    1. 对于输出图像中的第二个位置,卷积核向右移动一个位置,与输入图像的右上角区域进行卷积运算,计算方式如下:
    1*2 + 0*3 + 0*5 + 1*6= 8
    
    • 1

    因此输出图像中的第二个位置的值为6。

    在这里插入图片描述

    1. 对于输出图像中的第三个位置,卷积核向右移动一个位置,与输入图像的左下角区域进行卷积运算,计算方式如下:
    1*4 + 0*5 + 0*7 + 1*8 = 12 
    
    • 1

    因此输出图像中的第三个位置的值为12

    在这里插入图片描述

    1. 对于输出图像中的第四个位置,卷积核向右移动一个位置,与输入图像的右下角区域进行卷积运算,计算方式如下:
    1*5 + 0*6 + 0*8 + 1*9 = 14 
    
    • 1

    因此输出图像中的第四个位置的值为14。
    在这里插入图片描述

    上面举的例子中

    卷积核大小 宽度和高度分别2,2

    卷积核从左到右,从上到下遍历 将输入的图像(3*3)转换为特征图(2*2)

    这里得到的这个矩阵叫做特征图,可以理解为卷积层对于图像自动提取的特征,各种任务都是建立在特征之上的

    对于给定的任意宽高的卷积核($高k_h 宽k_w ) ,对给定宽高的图像( ),对给定宽高的图像( ),对给定宽高的图像(高n_h 宽n_w$)进行卷积操作,输出的形状是可以确定的 卷积核大小

    ( n h − k h + 1 ) × ( n w − k w + 1 ) (n_h-k_h+1)×(n_w-k_w+1) (nhkh+1)×(nwkw+1)

    比如上面的例子中输出形状为

    $(3-1+1)×(3-1+1) =2×2 $

    2 现代卷积进阶武器操作

    当下的卷积 会有很多辅助武器,让卷积的效果变得更好

    2.1 边界 填充

    我们知道经过卷积之后,输出形状有可能会变小

    但有些时候我们希望输出特征图的形状维持不变,这时候就可以进行边界填充,填充后就可以维持不变

    最常用的边界填充方法是零填充

    对于给定的任意宽高的卷积核( 高 k h 宽 k w 高k_h 宽k_w khkw),对给定宽高的图像( 高 n h 宽 n w 高n_h 宽n_w nhnw)进行卷积操作,左右上下各填充p 则输出形状为

    输出高 = ( n h − k h + 2 p ) + 1 输出高=(n_h-k_h+2p)+1 输出高=(nhkh+2p)+1

    输出宽 = ( n w − k w + 2 p ) + 1 输出宽= (n_w-k_w+2p)+1 输出宽=(nwkw+2p)+1

    比如特征图7*7

    卷积核3*3

    零填充 1

    在这里插入图片描述

    则代入输出形状代入公式

    ( n h − k h + 1 ) × ( n w − k w + 1 ) (n_h-k_h+1)×(n_w-k_w+1) (nhkh+1)×(nwkw+1)

    (7-3+1+2×1) ×(7-3+1+2×1) =7×7

    这也是为什么很多卷积核设计都是奇数,唯有奇数才能保证填充后前后形状不变

    总结填充作用:保持输入输出的形状一致

    2.2 跨步 步幅

    但有些时候,我们需要降低输出特征图维度,可以指定的间隔进行卷积操作降低特征图维度,可以降低计算量。

    另一方面,设置步幅可以控制特征提取的粒度。在卷积神经网络中,卷积核在输入图像上滑动时,会对输入图像的每个局部区域进行特征提取。而设置步幅可以控制卷积核在输入图像上移动的步长大小,从而控制特征提取的粒度。当步幅较小时,卷积核在输入图像上移动的步长较小,可以提取更为精细的特征信息;当步幅较大时,卷积核在输入图像上移动的步长较大,可以提取更为宏观的特征信息。

    之前我们默认都是1步操作

    对于给定的任意宽高的卷积核($高k_h 宽k_w ) ,对给定宽高的图像( ),对给定宽高的图像( ),对给定宽高的图像(高n_h 宽n_w$)进行卷积操作,左右上下各填充p 跨步S

    输出高 = ( n h − k h + 2 p ) / S + 1 输出高=(n_h-k_h+2p)/S+1 输出高=(nhkh+2p)/S+1

    输出宽 = ( n w − n h + 2 p ) / S + 1 输出宽= (n_w-n_h+2p)/S+1 输出宽=(nwnh+2p)/S+1

    2.3 多输入输出通道

    多输入通道

    在第一节的讲解中,我们默认我们的输入输出都是平面的, 只考虑了宽高的变化

    但实际上,真实中往往有多层,专业术语叫做多个通道

    比如图片输入往往是3通道的R,G,B 这时候我们就需要构造一个和输入相同通道的卷积核(这个例子中是3)

    我们需要把 这样一个多通道的卷积核对齐到图像的某个位置,计算对应元素加权求和再累加,一般还会加一个偏移量

    虽然卷积核是多通道的,但在一个位置加权求和累加之和只能得到一个值,意味着只能得到一层的输出
    在这里插入图片描述

    图片借鉴北京邮电大学鲁鹏老师的课程

    多输出通道

    如果我们想要输出变成多个,那么我们就可以使用多个卷积核

    在这里插入图片描述

    使用多少个卷积核,就会得到多少组中间特征图

    图示例子是6个

    2.4 汇聚 池化

    除了跨步可以降低特征图大小,池化也可以

    对每一个特征图独立进行,降低特征相应图组中的每个特征相应图的宽度和高度

    (1)减少后续卷积层的参数数量,控制过拟合

    (2)降低计算资源耗费

    池化也有卷积操作一样的填充,步幅,多输入输出通道的概念,输出形状通道数计算公式和卷积都一样

    比如,特征图大小4*4

    1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16

    现在我们对这个输入特征图进行2×2的最大池化操作,步幅为2,即每个子区域的大小为2×2,卷积核从左上角开始移动,每次向右移动2个像素,最后得到输出特征图大小为2×2,如下所示:

    两个基本操作

    最大池化

    取每个子区域中最大的特征值作为该区域的输出

    本例中 输出

    6 8
    14 16
    
    • 1
    • 2

    平均池化

    取每个子区域中所有元素的平均值作为该区域的输出

    本例中输出

    3.5 5.5
    11.5 13.5
    
    • 1
    • 2

    3. 卷积层设计

    每一层的卷积核的

    卷积核个数

    卷积核尺寸大小

    卷积核移动的步幅

    是否进行填充

    什么时候汇聚池化

  • 相关阅读:
    Linux驱动的软件架构(二):设备驱动的分层思想
    科技云报道:AI时代,对构建云安全提出了哪些新要求?
    笔记--autosar是什么
    高频科技亮相SEMl-e2024第六届深圳国际半导体展,以超纯工艺推动行业发展
    云原生团队如何实现加量不加价
    侧边栏的文章分类、热门文章和热门文章的展示(Go 搭建 qiucode.cn 之九)
    面试被吊打!正确打开Redis分布式锁的七种方案,涨见识了
    C Primer Plus(6) 中文版 第14章 结构和其他数据形式 14.4 数组
    vim绝对常用命令
    VR虚拟现实技术应用到猪抗原体检测的好处
  • 原文地址:https://blog.csdn.net/Q52099999/article/details/133151017