一周一个小朋友系列——YOLOV2 paper Analysis

脑瓜子嗡嗡的小刘炼丹之路—YOLOV2 paper Analysis

    嘿嘿嘿,相信大家都已经开始上班搬砖了吧,哈哈哈!脑瓜子嗡嗡的小刘,初七就开始上班了,真的难受,说好的假期计划也如期泡汤,唯一做的就是将kitti部分数据进行了可视化如下视频: 。
   果然在家里面啥也不想做,不想动,这一篇是简单的说一下YOLOV2,感觉V2完全抛弃了YOLOV1的所有做法,下面我们来唠嗑一下V2(比较篇的话还是放在V4之后吧,这一篇也是论文的分析),如果有什么不对的地方请大哥们指正出来image.png!下一期出一个嵌入式开发的项目:车内空气检测分析系统(没啥技术含量,由STM32F4和气体检测传感器搭建而成!),这篇论文说出了两个模型一个是V2,一个是9000!


一、能检测9000多个类的-YOLO9000

  大哥们都知道数据的重要性,当然深度学习中目标检测这一块数据也是非常重要的,然而随着目标检测的发展,数据这一块也是紧缺的,因此作者在文中提出了一种新的数据联合训练的方式(目标检测数据集和分类数据集),将COCO数据集和ImageNet数据集,采用wordNet的思想利用WordTree进行联合训练得到YOLO9000,YOLO9000名字的由来就是可以检测9000多个类别。YOLO9000在结构上并没大动V2的主体,只更改了anchor box由5调整到了3个,以及在误差计算的时候进行了调整和分类误差上。overall,较大的保留了V2的特性。当网络检测图像的时候,其进行反向传播,对于分类的损失仅仅只在标签的反向传播损失上,YOLO9000在动物的检测效果显著,其他较次。

   1.1、什么是WordTree(what’s means Word Tree?)

  作者为了扩大检测的能力,而不受数据集的制约,因此提出了这种方法-联合训练,在检测数据集上学习检测的相关信息,然后再去拓展到分类数据集上检测,将ImageNet和COCO中的名词对象一起构建了一个WordTree,以physical object为根节点,各名词依据相互间的关系构建树枝、树叶,节点间的连接表达了对象概念之间的蕴含关系(上位/下位关系),其中的对象不是互斥的关系,而是统一类别,比如:dog和Norfolk terrier,这样解决了9000个类别所需要的9000个softmax的问题。

  1.2、如何构建WordTree呢?

  ImgaeNet的标签是再WordNet中所得到的,而其结构是有向图,而YOLO2的作者希望用树结构来简化问题(树肯定比图好理解啦),首先通过遍历的ImageNet的所有视觉名词,对于每一个名词,在WordNet找到其的physical object为根结点,如果该节点到WordTree根节点(physical object)的路径只有一条,就将该路径添加到WrodTre。如果该节点有两条路径到根节点,则其中一条需要添加3个边到层次树,另一条仅需添加一条边,那么就选择添加边数少且较短的那条路径,添加到WordTree中。如图一、二为WordTree将多个数据集结合。

图1、COCO & ImageNet. image.png
图2、 WordTree. image.png
  1.3、WordTree如何表达 & 预测对象呢?

  WordTree中存在着9418个节点(对象),即有9418维的向量,如果每个去做softmax显然是不可能的,一个WordTree对应且仅对应一个对象,不过该对象节点到根节点的所有节点概率都是1,
体现出对象之间的蕴含关系,而其它节点概率是0。WordTree预测的各个节点都是条件概率,那么一个节点的绝对值概率就是他到根节点路径上所有条件概率的乘积,在实际的计算中而是采用了一种类似于贪婪算法,从根节点向下遍历,对于每一个节点,选择概率最大的,一直遍历到某个节点的子节点概率低于所设的阈值。
因为ImageNet样本比COCO多得多,所以对COCO样本会多做一些采样(oversampling),适当平衡一下样本数量,使两者样本数量比为4:1。
  YOLO9000本人感觉用得比较少了,不过作者也是较早的提出了联合训练的方法,来弥补数据集的问题,使得object detection能够拓展到缺乏检测样本的对象中。


二、更改颇多的YOLOV2

  YOLOV2在YOLOV1基础上变动是非常得到大的,网络的backbone以及匹配机制都进行了更改,YOLOV2的召回率是大大的提升了(如图3),并且取消了dorpout layer 添加了Batch Normlization(BN)来提高收敛效果,同时消除了其他形式的正则影响,下面小弟来唠嗑一下,虽然有点炒冷饭的嫌疑,哈哈哈哈。

**The path from YOLO to YOLOV2**.png
图3、The path from YOLO to YOLOV2.
  2.1、批归一化(Batch Normlization)

  Batch Normlization能够加快模型得收敛速度,而且在一定的程度上缓解了深层的梯度弥散,梯度消失和爆炸等问题。其主要是对每一层的数据进行归一化处理,随着网络的层数的增加数据离散和变化会越来越大,因此引入了BN层,其一定程度的防止了过拟合,可以减少惩罚项系数的添加和dropout层等处理方法。Batch Normlization一般添加咱激活函数的前面,神经网络里面使用大大多数ReLU或Leaky ReLU,YOLO里面采用的是Leaky ReLU。
  BN算法基本上的处理方法为:

  • 输入:mini batch
  • 输出:规范后的网络响应:
    1、计算数据的均值。
    2计算批处理数据方差(均值和方差是为了获得0-1分布)
    3、规范化
    4、尺度变换和偏移
    5、放回学习的γ和β参数,归一化的时候数据会呈正态分布,而引入的γ和β就良好解决了网络的表达能力下降的效果。
  2.2、使用高分辨率图像微调分类模型(High Resolution Classififier )

  YOLO先用224 × 224的分辨率来训练分类网络,然后再将分辨增加到了448 × 448来对模型进10个epochs的微调,这个过程让网络有足够的时间调整filter去适应高分辨率的输入。然后finetune为检测网络。这样使得整个网络的mAP获得了4%左右的提升。

  2.3、先验框的使用(Convolutional With Anchor Boxes)

  YOLOV1中其将图片划分为 S ∗ S S*S SS的网格,然后每一个Grid Cell 只能预测两个bbox,如果object落入中心网格,则该Grid Cell就负责检测它,YOLO一张图最多可以产生98个bbox,并且用全连接层来预测bbox中心点的坐标,后再reshape输出,这样导致了空间信息的定位不准。因此,YOLOV2采用Fast-RCNN先验框(anchor box)的思想,添加进入anchor 可以将其视为一个训练样本,因此为了训练目标模型,需要标记预测每个anchor box 的类别标签和偏移量,而非坐标,所以简化了问题的复杂度。YOLOV2的卷积层将图像进行了32倍的下采样,因此输入为416的图像,则会得到13 * 13的特征图,而先验框的数目可以如此计算13 * 13 * 5。相对YOLO1的
81%的召回率,YOLO2的召回率大幅提升到88%。同时mAP有0.2%的轻微下降。

图4、Anchor boxes use static initialization.
img
  2.4、Dimension Clusters
   2.4.1、如何解决人工挑选anchor box ?

  Fast R-CNN 中是采用的人工经验筛选anchor box,人工挑选这个问题的严重性大家都知道,不说了,YOLOV2中作者使用k-means去聚类得到anchor box ,这个的code 在darknet中写好了,V2中采用的不是传统的欧氏距离,而是自己设置了一个距离度量,从而得到了更好的anchor box。
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)  anchor box 具有不同的大小和不同的尺度,与识别的大小相近,与数据集标注很大关系,而在Fast R-CNN为超常数来进行手动设置。上述公式box 为其的边框,centroid 为其聚类被选做为中心的边框,损失函数也有这一部分的损失.
  为什么选择IOU来做距离度量?——首先iou就是两个框的交并集,作者希望自己选出来的anchor box 能够尽可能的覆盖住自己的物理类别,而iou就很好的解决了这一点。因此改成了1-IOU ,就是IOU的损失,作者在这个地方做了变换意思,从下图5中我们可以看见作者做了折中所以选择了K=5。而YOLOV2和V3的anchor box生成的是有区别的V3中有3个不同的尺度,每一个尺度有3个框,因此的到的是9个anchor box。

图5、Clustering box dimensions on VOC and COCO.
image.png
   2.4.2、如何解决anchor box 带来的模型不稳定性?

  YOLOV2在早期迭代的时候会出现模型不稳定的题,这些不稳定的因素来源于预测box的 ( x , y ) (x,y) (x,y)坐标。在区域建议网络(RPN)中会预测坐标就是预测 t x , t y t_x,t_y txty。对应的中心 ( x , y ) (x,y) (x,y)按如下公式计算:
x = ( t x ∗ t y ) − x a y = ( t y ∗ h a ) − y a x = (t_x*t_y)-x_a\\ y=(t_y*h_a)-y_a x=(txty)xay=(ty

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

脑瓜子嗡嗡的小刘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值