YOLOv3 SPP超详细入门

前言
SPP在基础上添加了若干trick模块,其中重要的改进有SPP模块,图像增强,CIOU替代IOU来计算交并比以及Focal loss (尽管没有使用) 。其中涉及了很多论文,这些trick非常重要,图像分类网络到目标检测网络的研究中,各种trick一直在更新迭代,不断优化使模型能够更好训练,获得更好的结果 。
一、网络架构
【YOLOv3 SPP超详细入门】网络架构
SPP网络架构
和 SPP的区别在于,将第一个预测特征图经过的Set 给从中间拆开插入了 SPP 模块 。
二、(SPP)
SPP模块借鉴空间金字塔思想,实现局部特征和全局特征的融合 。如图可知,SPP模块由四个分支组成,且SPP模块在下面三个输出特征层之上,而非在每一个上采样后都加入SPP模块(理论上这种方式可以优化,但是换来更长的响应时间),在经过SPP模块后,张量中应变为原来的4倍,B,H,W不变 。
中的 SPP 模块并不是的 SPP 结构 。SPP 由四个并行的分支构成,分别是 size为 5×5, 9×9, 13×13的最大池化和一个跳跃连接,步距都是为 1,意味着池化前进行填充,最后池化后得到的特征图尺寸大小和深度不变 。SPP 模块实现了不同尺度特征的融合 。
在一般的CNN网络结构中,最后的分类层通常是由全连接层组成,而全连接层特征数是固定的,所以图片在输入网络的时,大小必须是固定的 。
但在实际情况中,图片大小是多种多样的,如果不能满足网络的输入,图片将无法在网络中进行前向计算,所以为了得到固定尺寸的图片,必须对图片进行,同时可能会导致图像失真,从而影响预测精度,我们希望网络能够保持原图大小的输入,得到最大的精度 。
SPP全称为(空间金字塔池化结构),它是由微软研究院的何凯明大神提出,主要是为了解决两个问题:
1.有效避免了R-CNN算法对图像区域剪裁、缩放操作导致的图像物体剪裁不全以及形状扭曲等问题 。
2.解决了卷积神经网络对图像重复特征提取的问题,大大提高了产生候选框的速度,且节省了计算成本 。
SPP优点
1.不管输入尺寸是怎样,SPP 可以产生固定大小的输出
2.使用多个窗口( )
3.SPP 可以使用同一图像不同尺寸(scale)作为输入, 得到同样长度的池化特征 。
4.由于对输入图像的不同纵横比和不同尺寸,SPP同样可以处理,所以提高了图像的尺度不变(scale-)和降低了过拟合(over-)
5.实验表明训练图像尺寸的多样性比单一尺寸的训练图像更容易使得网络收敛()
6.SPP 对于特定的CNN网络设计和结构是独立的 。(也就是说,只要把SPP放在最后一层卷积层后面,对网络的结构是没有影响的, 它只是替换了原来的层)
7.不仅可以用于图像分类而且可以用来目标检测
三、图像增强
图像增强算法将多张图片按照一定比例组合成一张图片,使模型在更小的范围内识别目标 。在该网络中通过将四张图片随机裁剪,再拼接到一张图片上作为训练数据,这种做法丰富了图片的背景,并且四张图片拼接在一起提高了,在进行batch 的时候也会计算四张图片,所以降低了对的依赖性 。
方法步骤:
1.随机选取图片拼接基准点坐标(xc,yc),另随机选取四张图片 。
2.四张图片根据基准点,分别经过尺寸调整和比例缩放后,放置在指定尺寸的大图的左上,右上,左下,右下位置 。
3.根据每张图片的尺寸变换方式,将映射关系对应到图片标签上 。
4.依据指定的横纵坐标,对大图进行拼接 。处理超过边界的检测框坐标 。
方法优点:
1.增加数据多样性,随机选取四张图像进行组合,组合得到图像个数比原图个数要多 。