1.批次归一化
YOLO第二版在训练时使用的是批次归一化(Batch Normalization)方法,能够更好地增加模型的泛化能力,在PASCO VOC数据集上,不改变网络结构的前提下,mAP有了2%的提升。另外,使用了批量归一化方法之后,可以去掉YOLO第一版使用的dropout方法。
2.使用高分辨率训练集
YOLO第二版训练时,使用了更高分辨率的数据。YOLO第一版首先基于224×224的分类数据集训练前面的卷积层,然后在448×448的检测数据集上训练整个检测网络,两次训练数据的分辨率存在差距,使得模型不容易达到最优的效果。YOLO第二版为了克服这个问题在224×224的分类数据集训练前的卷积层之后,基于448×448的分类数据进行了若干轮迭代训练,使得网络更加适配高分辨率的数据,之后,在分辨率为448×448的检测数据集上训练整个检测网络。通过这样的训练策略,模型的mAP有了4%的提升。
3.基于锚
YOLO第二版相对于第一版另一个重要的改进就是使用了锚。类似FasterR-CNN中的RPN网络,基于锚的网络是全卷积的,其原理就是在前面若干卷积层提取的特征图上,用一个小卷积网络在每个位置上进行滑动,在特征图每个位置上回归目标参数。在YOLO第二版中,去掉了第一版最后的两个卷积层以及一个池化层,并添加了用于在每个特征图的子块上进行预测的卷积层,整个网络变成全卷积结构。因为采用的是全卷积网络,所以不受输入图像尺寸的限制,对于一些大的目标,很大概率其居于图像中心的位置,如果用于回归的特征图的子块维度为奇数,则目标的中心大概率会落在中心的子块,相比子块维度为偶数时目标中心落在周围的子块的情况,目标中心落在中心子块时错与目标更容易匹配。因此YOLO第二版中对输入图像的尺寸做了一点修改,由448×448缩减到416×416,这样经过前面的卷积层,图像经过32倍的下采样,生成的特征图尺寸为13×13,行列均为奇数,即大目标的中心大概率会落在中间的特征子块中,更有助于进行目标的预测。
Faster R-CNN使用的锚完全是手工设计的,YOLO第二版做了进一步改进,通过k-means算法,在训练集中对anchor的位置和形状进行了聚类。用box表示图像上任意一个框,centroid表示k-means聚类中心anchor(也是一个框),定义两者的距离为
d(box,centroid)=1-IoU(box,centroid)
选择的聚类中心(这里就是错)越多,能够匹配的目标框就越多,但计算过程也会越复杂。一般通过统计,会选取一个匹配度和计算复杂度较好的折中。如图10-3所示,通过分析,选择了5个锚。这种情况下,特征图上的每个位置会回归(4+1+20)×5个参数,表示5个锚,每个锚需要回归4个位置坐标、1个框置信度,以及20个分类概率。
为了训练过程更加稳定,YOLO第二版限制了要预测的目标框的位置,如图
10-4所示,目标的中心点被限制在当前子块内,通过预测目标框的宽和高与错的宽
和高的比例,获取目标框的位置,计算公式如下。
整个图像基于子块的宽和高进行了归一化处理,最终子块的宽和高都为1。tx、ty、tw、th。是需要回归的参数,bx、by,bw、bh,分别表示整幅图像归一化后目标框的中心点坐标以及宽和高,Pw、Ph分别表示整幅图像归一化后错的宽和高。其中 为sigmoid函数,将 约束在(0,1)内。给出了预测框相对于子块左上角(Cx,Cy)的归一化偏移量,给出了预测框的置信度。因为对所预测的目标框中心点位置范围进行了限制,所以模型优化的过程变得更加稳定且更容易学习。
值得注意的是,YOLO第二项使用了基于锚的方法,每个锚都分别回归各自框的坐标和分类概率,本质上就去掉了YOLO第一版中一个子块只包含一个目标的默认假设,从而针对密集小目标的场景增加了适应能力。使用锚策略,和YOLO第一版相比显著增加了预测框的数量,使得算法对目标召回更加有利。
4.使用浅层细节特征
YOLO使用最上层13×13的特征图进行且标预测,因为顶层的特征图具有较大的感受野,所以有利于对大目标进行预测,但同时,也会因为使用的都是整体特征,所以对细节和小目标的预测性造成影响。为了提升多尺度目标的检测能力,FasterR-CNN采取的策略是在不同尺度的特征图上设计锚,YOLO则另辟蹊径,把深层特征和浅层特征进行级联,使得新的特征图同时具有深层特征和浅层特征的表达能力。顶层特征图的尺寸为13×13—其前面一层特征图的尺寸为26×26,将26×26的特征图按照奇数行列和偶数行列进行拆分,变成4个13×13的特征图并依次摞在原始的顶层13×13的特征图上,则新的特征图尺寸仍然保持13×13,通道数为原顶层13×13特征图通道数+4×原26×26特征图的通道数。
基于新的特征图进行预测,mAP有了1%的提升。
5.使用多尺度图像进行训练
因为YOLO第二版使用的是全卷积网络,只包含卷积层和池化层,所以对输入图像的尺寸没有限制。在训练的时候,在一个尺寸上完成若干次迭代后,可以把样本图像缩放到其他尺寸上继续迭代训练,从而提升网络对多尺度目标检测的性能。