【yolov2模型】

YoloV2是YoloV1的升级版,通过引入BatchNormalization、高分辨率分类器、AnchorBoxes等优化提升了定位效果和召回率。模型不再使用全连接层,而是利用多尺度训练和维度聚类来改进预测。损失函数综合考虑了定位、置信度和分类误差。
摘要由CSDN通过智能技术生成

一、模型简介

yolov2是yolov1的升级版,yolov1主要存在如下的缺点:

  • 误差方面:与Fast R-CNN相比,yolov1的会有更多的定位误差
  • 召回率:与区域候选框的方法相比,yolov1的召回率更低

由此,作者在yolov2模型中做了一系列的改进来优化定位效果和提升召回率,包括增加BN层、增大分辨率、引入候选框、多尺度训练等。

二、模型结构

在这里插入图片描述

三、模型优化点

1. Better

(1) Batch Normalization

   原始图像输入到模型之前,通常先将图像归一化,以保证数据输入层获取的数据处于相同的分布。但后续每层网络的输入数据分布是一直变化的,这就导致模型训练时难以收敛。BN可以在网络的任意层进行归一化,这可以使中间层网络的输入更稳定(数据归一化到以0为均值,1为方差的分布),然而这样会使得上一层网络学习到的信息,在下一层输入前被归一化而丢失信息。由此引入了缩放变量 γ \gamma γ和平移变量 β \beta β,这两个变量是训练过程根据前面的数据分布学习到的,这样就保证BN既能实现归一化,又能保留下学习到的特征,BN层的具体公式如下。
在这里插入图片描述
  引入BN层的优点:

  • BN层引入后,初始学习率和初始化权重对模型训练的影响变小,可以调整使用更大的学习率,随机初始化权重
  • BN层使得网络中间层输入分布更稳定,数据分布更多处于激活函数的不饱和区域,有利于模型学习到更大的梯度,加速模型收敛
  • BN本身也是一种正则化参数,可以代替dropout层,防止过拟合
(2) High Resolution Classifier

   ImageNet数据集上训练的图像分类网络的输入分辨率大都小于256 x 256。yolov1模型也是在224 x 224图像上训练分类网络,然后增加分辨率到448 x 448用于检测。这意味着网络需要学习去适应在新的分辨率图像上进行目标检测。
   yolov2直接在448 x 448图像上训练分类网络,这使得在训练检测网络之前就能很好得适应高分辨率。使用高分辨率得分类网络是模型mAP从65.8提升到69.5。

(3) Convolutional With Anchor Boxes

  yolov1通过全连接层直接预测物体框坐标,而yolov2借鉴了Faster R-CNN人工预选锚框anchor的方法。通过引入anchor,相当于预先确定了一套宽高尺寸,使得预测层只需要预测anchor相对于真实框的偏移量(中心点偏移量、宽高偏移量),而不用预测整个物体位置,这简化了网络的学习。

  • 首先,yolov2网络移除了全连接层和最后一个池化层,这使得网络卷积层输出更高的分辨率
  • 其次,输入图像尺寸由448调整为416,从而得到奇数宽高的特征图
      输入图像416尺寸经过下采样后,得到13 x 13的特征图,奇数宽高的特征图会有一个中心cell,大物体更倾向于占据图像中心,有一个中心的cell负责预测物体要好过四个靠近中心的cell;
  • 最后,yolov2对每一个anchor都会预测物体类别
       在yolov1中将图像划分7 x 7的网格,每个网格能生成2个边界框,边界框与真实框IOU最大的负责预测物体,即最多只会对49个边界框预测类别。在yolov2中,输入416尺寸可输出13 x 13的特征图,每个网格可以有5个anchor,由此会有13 x 13 x 5 = 845个anchor预测类别。

  不使用anchor时,yolov2模型能达到69.5mAP和81%的召回率,使用anchor后,网络达到69.2mAP和88%的召回率。虽然mAP略有下降,但是召回率有明显的提升。

(4) Dimension Cluster

  yolov2中使用预选框anchor,网络基于预设定anchor能够通过学习进行调整以检测目标,而如果预先设定更好的anchor来训练网络,则能使网络更容易学习从而达到更好的检测效果。例如,对于车辆和行人较多的数据集,可预先设定一些矮胖和瘦高尺寸的anchor。
 人工挑选anchor的工作量是比较大的,论文中使用k-means聚类方法来自动发现更好的anchor。作者在VOC数据集和COCO数据集中聚类效果如下图,当聚类中心k=5时,达到较好的平衡效果,随着k继续增加,IOU梯度越来越小,而模型复杂度则会越来越高。下右图则是VOC和COCO数据集上聚类后产生的5个anchor尺寸图。
在这里插入图片描述
  作者在论文中也对人工选取的anchor和k-means产生的anchor计算Avg IOU。如下图,人工挑选9个anchor达到Avg IOU为60.9,而k-means只需要5个anchor就能达到Avg IOU为61.0,当k-means同样生成9个anchor时,能达到Avg IOU为67.2。这表明k-means方法生成的anchor更具有代表性,使得网络更容易学习。
在这里插入图片描述
备注:作者在使用k-means方法时对距离计算公式做了调整。标准的k-means方法使用欧氏距离,这样会使尺寸大的物体产生更大的距离误差,然而实际需要的是物体间的IOU得分,不应该和物体尺寸相关,因此对于距离的度量使用了下面的公式:
d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d ) d(box, centroid) = 1 - IOU(box, centroid) d(box,centroid)=1IOU(box,centroid)
即物体与聚类中心IOU值越大的,距离越小。

(5) Direct location prediction

  yolov2中的对物体的坐标预测沿用yolov1的方法,仍然预测相对于所处网格cell的位置。如下图所示,图像被划分为13 x 13的网格,每个网格能够出预测5个物体框,每个物体框的预测值表示为: t x , t y , t w , t h t_x, t_y, t_w, t_h tx,ty,tw,th t o t_o to。假设下图为其中某个网格预测出的某个物体框,黑色虚线为其对应的anchor,其宽高为 p w p_w pw p h p_h ph,则物体框的预测值需要通过下面的公式转换为图中蓝色框:
在这里插入图片描述
  其中, σ \sigma σ表示sigmoid函数, t x t_x tx t y t_y ty经过sigmoid函数处理后范围限制在0~1之间,这保证了预测物体框的中心位置( b x b_x bx, b y b_y by)限制在所处网格中,而对宽高( b w b_w bw, b h b_h bh)没有做限制,可能真实存在大尺寸的物体,置信度仍然用IOU表示。

(6) Fine-Grain Features

 从yolov2网络的结构中能看出,网络增加了一个跳跃层(PassThrough Layer),这使得模型能够融合更原始的细粒度的特征,该方式有点类似于ResNet。具体来说PassThrough Layer将26 x 26特征图转化为 13 x 13特征图,宽高减半,通道数变为原来的4倍,再与后面网络输出的13 x 13特征图在通道层叠加融合。PassTrough Layer的过程,如下图所示。
在这里插入图片描述

(7) Multi-Scale Training

  由于yolov2模型中只有卷积层和池化层,所以yolov2的输入可以不限于大小的图片。为了增强模型的鲁棒性,yolov2采用了多尺度输入训练策略,具体来说就是在训练过程中每间隔一定的iters后改变模型的输入图片大小。由于yolov2的下采样总步长为32,输入图片大小选择一系列为32倍数的值: {320, 352,…,608}。这意味着模型网络可以在不同分辨率图像上执行预测,使得yolov2能在性能与精度上有更简单的权衡策略。作者验证yolov2在不同图像分辨率上预测效果与其他网络的比较如下表。
在这里插入图片描述

2. Faster

3. Stronger

四、模型损失函数

  在yolov2的论文中并没有明确提出损失函数的计算公式,根据开源代码,网络上流传最多的是如下损失函数表达公式:
   l o s s t = ∑ i = 0 W ∑ j = 0 H ∑ k = 0 A ı M a x I O U < T h r e s h λ n o o b j ∗ ( − b i j k o ) 2 loss_t = \displaystyle\sum_{i=0}^W\displaystyle\sum_{j=0}^H\displaystyle\sum_{k=0}^A\hspace{1em} \text{\i}_{Max IOU<Thresh}\lambda_{noobj}*(-b_{ijk}^o)^2 losst=i=0Wj=0Hk=0AıMaxIOU<Threshλnoobj(bijko)2

             + ı t < 12800 λ p r i o r ∗ ∑ r ϵ ( x , y , w , h ) ( p r i o r k r − b i j k r ) 2 +\hspace{0.5em}\text{\i}_{t<12800}\lambda_{prior}*\textstyle\sum_{r\epsilon(x,y,w,h)}(prior_{k}^r-b_{ijk}^r)^2 +ıt<12800λprior(x,y,w,h)(priorkrbijkr)2

             + ı k t r u t h ( λ c o o r d ∗ ∑ r ϵ ( x , y , w , h ) ( t r u t h r − b i j k r ) 2 +\hspace{0.5em}\text{\i}_{k}^{truth}\Big(\lambda_{coord}*\textstyle\sum_{r\epsilon(x,y,w,h)}(truth^r-b_{ijk}^r)^2 +ıktruth(λcoord(x,y,w,h)(truthrbijkr)2

                   + λ o b j ∗ ( I O U t r u t h k − b i j k o ) 2 +\hspace{0.5em}\lambda_{obj}*(IOU_{truth}^k-b_{ijk}^o)^2 +λobj(IOUtruthkbijko)2

                   + λ c l a s s ∗ ( ∑ c = 1 C ( t r u t h c − b i j k c ) 2 ) ) +\hspace{0.5em}\lambda_{class}*(\displaystyle\sum_{c=1}^C(truth^c-b_{ijk}^c)^2)\Bigr) +λclass(c=1C(truthcbijkc)2))

  损失函数的计算明显是要遍历所有的预测框,可以将损失函数划分为三部分说明:
第一部分: ı M a x I O U < T h r e s h λ n o o b j ∗ ( − b i j k o ) 2 \text{\i}_{Max IOU<Thresh}\lambda_{noobj}*(-b_{ijk}^o)^2 ıMaxIOU<Threshλnoobj(bijko)2
  该部分表示不负责预测物体的预测框的置信度损失。这里需要计算每个预测框与所有真实框的IOU,如此每个预测框的都会有一个Max IOU,如果预测框的Max IOU都小于阈值(论文中为0.6),则说明该预测框不负责预测物体,预测框范围内为背景,其预测出物体的置信度应该为0。
第二部分: ı t < 12800 λ p r i o r ∗ ∑ r ϵ ( x , y , w , h ) ( p r i o r k r − b i j k r ) 2 \text{\i}_{t<12800}\lambda_{prior}*\textstyle\sum_{r\epsilon(x,y,w,h)}(prior_{k}^r-b_{ijk}^r)^2 ıt<12800λprior(x,y,w,h)(priorkrbijkr)2
  该部分是计算anchor和预测框的坐标误差,但只在前12800个iter计算,该项表示网络训练的初期应该先学习到正确预测anchor的形状。
第三部分: ı k t r u t h ( λ c o o r d ∗ ∑ r ϵ ( x , y , w , h ) ( t r u t h r − b i j k r ) 2 \text{\i}_{k}^{truth}\Big(\lambda_{coord}*\textstyle\sum_{r\epsilon(x,y,w,h)}(truth^r-b_{ijk}^r)^2 ıktruth(λcoord(x,y,w,h)(truthrbijkr)2     — 定位误差
         + λ o b j ∗ ( I O U t r u t h k − b i j k o ) 2 +\hspace{0.5em}\lambda_{obj}*(IOU_{truth}^k-b_{ijk}^o)^2 +λobj(IOUtruthkbijko)2          — 置信度误差
         + λ c l a s s ∗ ( ∑ c = 1 C ( t r u t h c − b i j k c ) 2 ) ) +\hspace{0.5em}\lambda_{class}*(\displaystyle\sum_{c=1}^C(truth^c-b_{ijk}^c)^2)\Bigr) +λclass(c=1C(truthcbijkc)2))       — 分类误差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大稻子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值