其他分享
首页 > 其他分享> > 百面深度学习之卷积神经网络知识总结

百面深度学习之卷积神经网络知识总结

作者:互联网

一. 卷积基础知识

卷积的特点: 局部连接,权值共享

1.1 感受野的计算

其中: R e 0 = 1 , s e 0 = 1 R_{e}^{0} = 1, s_{e}^{0} = 1 Re0​=1,se0​=1
R表示感受野. s表示步长, k表示kernel. L表示原始特征图的尺寸.

1.2 卷积层的输出尺寸

l e o = ⌊ l e i + 2 P e − K e s e ⌋ + 1 l_{e}^{o} =\lfloor \frac{l_{e}^{i} + 2P_e - K_e}{s_e} \rfloor + 1 leo​=⌊se​lei​+2Pe​−Ke​​⌋+1

二. 卷积变种

2.1 分组卷积与深度可分离卷积

这两种卷积都可以用来降低模型的容量.

2.1.1 分组卷积

分组卷积最早出现在alexnet中,主要用来解决在单个gpu显存较小无法处理含有较大计算量与存储需求的卷积层, 因此采用分组卷积来将计算与存储分离在不同的gpu上.

后来在ResNeXt中,作者广泛采用分组卷积来降低模型的计算量与容量.

分组卷积就是自己处理自己的那一部分.

例如针对一个C x H x W的一组特征图, 如果采用普通的卷积,需要的卷积核的大小为C x K x K x O, 输出的特征层为O x H x W(假设特征层的宽高不变).

如果采用分组卷积, 将其分为0.5C x H x W0.5C x H x W的两部分. 采用卷积核的大小为0.5C x K x Kx 0.5O0.5C x K x K x 0.5O, 输出的特征层分别为0.5O x H x W0.5O x H x W, 然后二者合成原来的O x H x W.

2.1.2 深度可分离卷积

深度可分离卷积就是采用depth wise卷积加上point wise卷积得到的层,相比较普通卷积而言,可以很大程度上减小参数量

对一个C x H x W的一组特征图, 如果采用普通的卷积,需要的卷积核的大小为C x K x K x O, 输出的特征层为O x H x W(假设特征层的宽高不变).

如果采用深度可分离卷积, 需要由两部分组成,第一部分是C x K x K x 1的depth wise卷积, 第二部分是C x 1 x 1 x O的point wise卷积

2.2 转置卷积

转置卷积(又叫做反卷积).其实也不能称作反卷积,因为特征层经过普通卷积操作后然后经过转置卷积仅仅能恢复原来的形状大小,不能恢复原来的数值.

具体的介绍可以参考大佬的博客: https://blog.csdn.net/lanadeus/article/details/82534425

2.3 空洞卷积

通常可以采用pooling的方法来扩大感受野, 但是pooling的过程会降低特征图的分辨率,损失信息,导致上采样过程中很难恢复原来的信息.

空洞卷积在标准的卷积中插入空洞来增加卷积核的感受野, 空洞卷积引入扩张率(dilation rate)这个超参数, 就是在卷积核中插入r-1个空洞(0), r为扩张率.

对于标准的卷积核K x K, 使用r的扩张率后,卷积核的尺寸变为K + (r-1)* (k-1)

2.4 可变形卷积

普通卷积是在固定的, 规则的网格点上进行采样,这就束缚了网格感受野的相撞,限制了其几何形变的适应能力. 为了克服这个限制,可变形卷积(DCN)在每个采样点上添加一个可学习的偏移量(offset), 让采样点不再局限于规则的网格点.

如图所示:

a为普通卷积, 后边为几种不同offset的形式
如上图,最左端为普通的卷积,后边的为可变形卷积,通过不同的offset,得到可变形的效果.

offset的取得由卷积层来实现, 引入一个平行分支,根据输入的特征图计算出采样点的偏移量, 然后在输入特征图上对应的点进行卷积运算.

在这里插入图片描述

三. 卷积整体结构

主要介绍如下几种网络结构:

AlexNet-> VGGNet->GoogleNet/Inception-v1 -> inception v2/inception v3 -> ResNet -> Inception-v4/ Inception-resnet-> ResNeXt.

分别介绍这几种网络的特点:

3.1 AlexNet

3.2 VGGNet

3.3 GoogleNet/ Inception-v1

在这里插入图片描述
上边的两个结构分别为不带bottleneck的inception模块与带有bottleneck的版本.

3.4 Inception-v2/Inception-v3

提出了网络设计的准则:

在这里插入图片描述
使用3x3取代原始inception模块的5x5.
在这里插入图片描述
3x3分解为1x3与3x1的串联或者并联
在这里插入图片描述

3.5 ResNet

3.6 Inception-v4/Inception-ResNet

进行了更加精细的设计,融入了resnet.

3.7 ResNeXt

四. 卷积基础模块

4.1 BN

机器学习中,一般会假设模型的输入数据的分布是稳定的,如果模型输入数据发生变化,则称为协变量偏移,模型的训练与测试集的分布不一致,或者模型在训练过程中输入数据发生变化,这都属于协变量偏移现象.

对于深度神经完了过训练过程中,每一层的参数都会随之而更新,训练过程中如果之前层的参数被更新,那么该层的输入数据的分布必然也会发生变化,网络越深,这种内部协变量偏移的现象更加明显. 这种协变量偏移的会带来很多的问题:

BN主要是为了确保即使网络的参数发生变化,各个层的输入输出数据的分布也不会发生较大的变化.

公式:

在这里插入图片描述

x与y分别为原始输入数据与BN后的输出数据,有两个可学习的参数 γ \gamma γ(缩放参数)与 β \beta β(平移参数).在这两个参数的作用:

BN放置在激活层之前之后均可

4.2 分类网络最后几层的变化

在AlexNet 与VGGNet中采用两层的全连接层,而在GoogleNet之后的网络中一般采用全局平均池化层加上一层全连接层实现.

全局平均池化的优点:

4.3 瓶颈与沙漏结构

hourglass网络,在目标检测的anchor-free方法中使用.

五. 目标检测

5.1 单步法与两步法性能差异的原因

单步法在检测速度上有优势,两步法在检测精度上有优势.出现这种差异的原因:

5.2 RCNN系列的发展过程

5.2.1 RCNN

5.2.2 SPPNet

5.2.3 Fast RCNN

5.2.4 Faster RCNN

5.3 yolo系列的发展过程

5.3.1 yolo

yolo整体使用一个端到端的cnn来直接预测目标的位置与类别, 实时性高,但是检测精度稍低.

yolo将输入图像划分成SxS的方格,每个方格需要检测出中心点位于方格内的物体,在具体实施时, 每个方格会预测B个边界框.

5.3.2 yolov2

yolov2针对yolo的低召回率与低的定位精度进行改进.

5.3.3 yolo9000

5.3.4 yolov3

5.4 如何增强模型对小目标的检测效果

标签:候选,卷积,特征,神经网络,图像,百面,输入,采用
来源: https://blog.csdn.net/lxztju/article/details/112331860