卷积神经网络概述

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,至少在一个层中使用卷积代替一般矩阵乘法,它的神经元可以响应感受野范围内的其他神经元,在目标检测、语义分割等任务中表现出色。

神经元模型

如图1所示,典型的生物神经元能感知环境的变化,再将信息传递给其他的神经元,并指令集体做出反应。这个过程依次经过接收、触发、传导和输出,对应神经元的四个区:

  • 接收区:为树突到胞体的部分,会有电位的变化
  • 触发区:胞体部分,用于整合电位,决定是否产生神经冲动
  • 传导区:为轴突的部分,当产生动作电位(action potential)时,传导区能遵守全有全无的定律(all or none)来传导神经冲动
  • 输出区:神经末梢部分,突触释放神经传递物质给下一个接受的细胞(如神经元、肌肉细胞或腺体细胞)

 

图1 典型生物神经元  --来自维基百科

将生物神经元抽象,并进一步模型化得到人工神经元,如图2所示,是人工神经网络的基本处理单元。其中,x_i(i=0,1,2,...,n)是神经元的输入,w_i(i=0,1,2,...,n)是对应输入x_i与神经元的连接权重,和偏置项b共同影响神经元的激活输出yf是激活函数。输入与输出之间的关系可表示如下:

y=f(b + \sum_{i=0}^{n} (x_i \times w_i))

图2  人工神经元

卷积运算

在卷积网络出现之前,应用最多的是多层感知机(Multi-Layer Perceptron, MLP),如图3右图所示,包含了输入层、一层隐藏层和输出层,其高层每个节点(神经元)与低一层所有节点连接(全连接),MLP可以解决单层感知机的线性不可分问题。

如图3左图所示,与全连接不同,卷积层中的每个节点只与低一层的部分节点连接(局部连接),这部分连接的节点与其对应的权重参数做卷积运算,得到一个输出节点的值,而且,同一卷积层不同位置的节点的权重参数是共享的(权值共享)。这两条性质使卷积网络的参数量相比MLP而言,大幅度减少了。在具体卷积网络中,卷积层是通过特定数目的卷积核对输入的多通道特征图进行扫描和运算,从而得到多个拥有更高层语义信息的输出特征图,输出通道数与卷积核个数相等。

             

图3 卷积(左)和全连接(右)

神经元感受野的计算

由于卷积的局部连接性,输出神经元只与部分输入神经元相连接,这部分输入神经元的每一个又分别有与其相连接的部分神经元。因此,引出了感受野的定义,即对于某一层的一个神经元来说,其感受野是原始输入数据上能影响到该神经元值大小的区域。

感受野大小的计算可以递推得出,可参考这篇文章,这里直接给出计算公式:

R_{e}^{i}=min(R_{e}^{i-1} + (K_{e}^{i}-1)\prod_{j=0}^{i-1}s_{e}^{j}, L_e)

其中,e \in \{w,h\}L_e是原始输入数据的尺寸,R_e^i是第i层感受野大小,K_e^i是第i层滤波器大小,s_e^j是第j层的滤波器滑动步长。特别地,

  • 对于原始输入数据层, R_e^i以及s_e^j均为1
  • 对于激活层、BN层, R_e^iR_e^{i-1}相等,s_e^j为1
  • 对于全连接层,R_e^i=L_e

常用的卷积

1、分组卷积

对于普通卷积,卷积核(k\times k \times c)通道数与输入Feature Map(w \times h \times c)的通道数相等,则输出Feature Map的大小为(w^{'} \times h^{'} \times c^{'}),此时,参数量params = c^{'} \times (k^2 \times c)

而分组卷积在普通卷积的基础上,按通道维度将输入Feature Map和卷积核分为若干组,组数用G表示,相应的输出Feature Map也有G组,如图4所示,将输入Feature Map划分为3组,每组有3个Feature Map。此时,参数量params = c^{'} \times (k^2 \times \frac{c}{G}) \times G,输出Feature Map的通道数为c^{'} \times G,我们可以发现,同样的参数量,输出Feature Map的通道数是普通卷积的G倍。

图4 分组卷积

 我们可以灵活改变组数G,当G=1时,就是一个普通的卷积;当G等于输入Feature Map的通道数时,得到深度可分离卷积,每组卷积只有一个输入Feature Map。

分组卷积最初在AlexNet网络中提出,为了解决当时的GPU无法处理含有较大计算量和存储需求的卷积层这个问题,就采用分组卷积将计算和存储分配到多个GPU上。现在,GPU性能得到了很大提升,基本上不用这样分配卷积了。分组卷积,特别是深度可分离卷积,目前经常用在构建轻量模型上,如MobileNet,以支持移动设备的应用场景。由于现有的GPU加速库(如cuDNN)对其优化的程度有限,因此它在效率上的提升并不如理论上显著。

2、转置卷积

 转置卷积是一种特殊卷积操作,也叫反卷积,但是它不是卷积的逆运算。主要用于对特征图进行扩张或者上采样,其应用场景很多,如语义分割、GAN等。

我们直观理解的卷积是在原始数据上通过滑动卷积核进行的,这样的计算效率太低。机器在实际计算的时候,会将输入和卷积核进行等效变换成矩阵,然后做矩阵乘法得到输出。而转置卷积中,将输出矩阵乘以等效卷积核转置矩阵,还原原始输入数据的维度,但是不能还原具体值。

具体可参考这篇文章

3、空洞卷积

空洞卷积(Dilated Convolution)也叫膨胀卷积或者扩张卷积,在卷积核元素之间填充零(即空洞)来扩大卷积核,在计算的时候只有非零元素起作用,相当于采样点间隔扩大了。相邻采样点之间零的个数由“扩张率”来控制,假设扩张率用r表示,原卷积核尺寸为k,那么相邻采样点之间零的个数为r-1,扩张后的卷积核尺寸为k^{'}=k+(k-1)(r-1)。其示意图如图5所示,左图为普通卷积,对应了扩张率为1的情况,该层感受野为3\times 3,当扩张率为2时,相邻采样点之间填充了1个零,感受野变为5 \times 5,依次类推。

 图5 普通卷积(左)和空洞卷积(右)

空洞卷积的作用主要由以下两点

  • 扩大感受野:通常在卷积网络模型中为了扩大感受野,会使用池化层减小特征图尺寸,这样感受野扩大了,但是空间分辨率降低了,丢失了一些信息(如内部数据结构、空间层级信息等)。为了在原有分辨率下扩大感受野,可以使用空洞卷积。
  • 获取多尺度上下文信息:通过改变扩张率,得到不同的空洞卷积,每个空洞卷积的感受野都不一样,能获取到多尺度信息。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CNN,即卷积神经网络(Convolutional Neural Networks),是一种深度学习模型,广泛应用于图像识别、处理和分类任务。它是深度学习领域的一个重要分支,与传统的神经网络相比,CNN通过引入卷积层,可以更好地处理局部和上下文信息,并且具有很好的空间适应性。 CNN的主要特点包括: 1. 卷积层:CNN的核心在于卷积层,该层利用滑动窗口在输入数据上滑动,同时对窗口附近的像素进行加权平均得到该位置的卷积结果。这种操作能够有效地捕捉输入数据中的局部和上下文信息。 2. 池化(Pooling)技术:卷积神经网络通常结合池化技术以减少特征地图的大小,并保持某些区域的权重比其他区域更高,这在神经网络中引入了空间下的“稀疏性”。 3. 深度:CNN通常具有多层的卷积层和池化层,这使得CNN具有很强的特征学习和分类能力。随着网络深度的增加,CNN能够学习到越来越复杂的特征表示。 4. 适应性:CNN对输入数据的形状具有适应性,这意味着它可以轻松处理不同形状和大小的输入数据。 卷积神经网络在计算机视觉、自然语言处理、机器人视觉等领域有广泛应用,尤其是在图像分类、目标检测、图像生成等领域表现出了强大的性能。虽然CNN已经取得了许多成功,但它仍在不断发展和改进,如使用自注意力机制、跨通道信息融合等新技术,以进一步提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值