YOLO v2算法改进理解(自己的笔记理解)

YOLO V2算法原理理解

在YOLO V1算法中存在两个明显的缺点,一是由于每个bounding box的产生在一开始是无规律的,因此该算法在定位误差上并不理想,其次,由于YOLO v1每张图片只产生772个预测框,因此对于密度大的小物体目标的检测的效果也不理想。为此,YOLO v2算法提出了一系列想法来改进这些问题,提高目标检测的recall(即检测出所有目标的能力)和定位能力。

批归一化操作

   批归一化操作,即对每个神元得到的输入数据xi,我们通过求其均值和方差,将其归一化到满足(0,1)分
 布的正态分布上,正向传播时通过训练参数r,b使得输出yi=rxi+b。使用BN层能够有效的解决梯度消失或梯度爆炸的问题。
 BN层通常放在线形层之后,激活层之前

高分辨率的图片分类

采用更高分辨率的图片进行分类训练

緢框(Anchor boxes)的引入

在目标检测领域,对于许多物体的检测框的观察我们可以发现,一些特定尺寸或长宽比的框出现的频率十分高,因此
提出Anchor的概念,使得在yolo中的每个grid cell预测k个anchor box,选择这k个框中与ground truth交互比最大的一
个作为预测该物体的预测框。
  在YOLO v2算法中,我们将输入图片大小resize为(416*416)分成13*13个grid cell.每个grid cell预测5个Anchor box,每个Anchor box预测五个值分别为(tx,ty,tw,th,c)分别表示该框的位置,长宽和置信度参数。置信度参数表示预测框与标记的原始Anchor box的交互比。同时,会对20个类别进行预测,因此,YOLO V2的输出为bach*13*13*5*(5+20)

维度聚类

   Anchor的引入我们面对一个新的问题,如何选择较好的初始Anchor box,在本算法中,我们选择使用K-means聚类算法来选择。
同普通的k-means算法类似我们的步骤如下:
     1.随机选取K个ground truth作为初始的k个类别
     2.分别计算其他box与聚类的距离度量d,将其划分到最小的d所对应的类别
     3.根据2的分类结果计算聚类box的平均长宽,以此来更新聚类中心
     4.重复23步直到结束迭代
值得注意的是,在这里2步中的d,我们希望待分类框与类中心框在大小尺寸上越接近就将其划分为该类,因此我们定义:
     d(box,centroid)=1-IOU(box,centroid)
  在YOLO v2算法中,选取k=5得到较好的效果。

直接位置预测

    在使用Anchorbox中我们面对的第二个问题便是,如上所说每个Anchor box会有五个预测值(tx,ty,th,tw,c),这里的
 tx,ty表示预测的偏移量,因此存在如果tx,ty过大,预测框的位置可能会超出其所在的grid cell,为了解决这一问题
 对其预测值进行了限制,我们对于预测得到的tx,ty值,将其输入到sigmod函数,将其值压缩到0-1的范围,在此基础
 上,我们得到预测框的参数如下:
                         bx=s(tx)+cx  
                         by=s(ty)+cy   
                         bw=pw*etw
                         bh=ph*eth
  其中,cx,cy为grid cell左上角的x,y坐标,pw,ph为初始Anchor box的宽度与高度,bx,by为预测框的左上角x,y坐标,bw,bh为预测框的宽高。
  这样就将预测框的位置限定到了其所属的grid cell内部

细密度特征提取

  作者提出了加入一个passthrough layer层的概念,来获得输入图像更加细致的特征。其操作原理如下图所示
  (图片转载于B站 同济子豪兄)

在这里插入图片描述

多维度训练

    YOLO v1算法中,我们是对输入尺寸为448*448的图片进行训练,而在YOLO V2算法中,我们每十组随机改变输入图片
 的尺寸,其值为{320,....608}中为32的倍数。

猜你喜欢

转载自blog.csdn.net/qq_45836365/article/details/120682806