《YOLO9000: Better, Faster, Stronger》论文笔记

Abstract

  1. 解决的问题?
  • YOLOV1 SOTA不再
  • YOLOV1以及大部分其他的检测模型能够检测的类别都不够多(主要受制于检测任务的数据集本身包含的类别不够多)
  1. 怎么解决的?
  • 在YOLOV1的基础上做出了大量的改进,使得新的YOLOV2达到了SOTA,mAP超过了faster-RCNN以及SSD同时速度也更快
  • 提出了一种新的训练方法,使得模型可以在检测和分类的联合数据集上进行训练,从而将YOLO能够检测的物体类别从200多扩展到9000多。
  1. 结果如何?

SOTA

Introduction

  1. 现有的研究方法?存在什么问题?

当前的目标检测方法所能检测的目标种类还不够多。其中一个原因是目标检测数据集的数据量远远少于分类、标记等其他任务的数据集。常见的检测数据集包含数十到数百种中类别,图片数量在数千到数十万的数量级之间。而分类和标记的数据集,有数万或数十万个类别,图片数量则达到了百万级。标签制作的难易程度是造成上述现象的一个重要原因。

  1. 本文是怎么解决上述问题?提出了哪些方法
  • 文中提出了一种层级化的方式来组织物体的类别,从而能够将不同的训练集组合起来。
  • 同时又提出了一种新型的训练方法,可以让检测模型能够利用检测数据集和分类数据集的联合数据及进行训练,缓解了检测数据集数据量不足的问题。
  1. 本文的主要贡献

新的YOLOV2能够检测超过9000种类别,同时能够达到实时。

Methods

YOLOV2相较于YOLO的改进-Better

  1. Batch Normalization. 使用BN之后模型可以更好的收敛,同时也不需要在使用其他的regularization方法(比如dropout)。使用BN让YOLO的mAP提升超过2%
  2. High Resolution Classifier. 之前YOLO在224 x 224的分辨率上训练分类网络,在检测时将分辨率增加为448 x 448.现在,YOLOV2首先以448 x 448的全分辨率在ImageNet上训练10个epoch。这给了网络时间可以调整自己的卷积核以更好的在大分辨率输入的情况下工作。10个epoch后,再将网络在检测数据集上进行fine tune。这个策略使mAP提高了差不多4%。
  3. Convolutional with Anchor Boxes. YOLO与Faster-RCNN相比有两个不足之处。一是更多的定位错误,而是更低的召回率。因此在YOLOV2中,作者借鉴了Faster-RCNN中采用的anchor,因为相比于直接预测box的坐标,预测box的坐标相对于anchor的偏移值是一个更加容易学习的任务。跟Faster-RCNN一样,YOLO会在特征图的每个位置上预测一组偏移值,因此作者将输入的分辨率由448调整为416。这是因为,作者认为大物体通常位于图片的中心,当输入尺寸为奇数时(YOLO的下采样倍数为32),输出的特征图也是奇数大小。这样整个特征图就有一个确定的中心,而不是4个相距较劲的伪中心。在引入anchor box之后,预测物体类别的机制也从之前的以空间位置为单位变成了以anchor box为单位。对每个anchor都预测类别以及objectness。objectness仍然是通过IOU确定的,类别预测仍然使用的是条件概率。引入anchor使mAP小幅下降,但是召回率大幅提升。
  4. Dimension Clusters. 在Faster-RCNN中,每个位置的9个anchor都是从一个认为确定的初始anchor通过缩放、改变纵横比得到的。在YOLOV2中,作者通过使用K-means聚类的方法选择初始anchor的尺寸。K-means的距离函数定义如下:

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的尺寸是为了能够获得更高的IOU分数。最终作者在anchor的数目与平均IOU之间权衡之后挑选了一个最佳的结果:

image-20220227192823804
  1. Direct location prediction. 作者指出Faster-RCNN中预测的box的坐标计算方式会导致算法不稳定,尤其是在早期模型刚开始拟合的时候。这是因为预测每个box的坐标使用的只有特征图上一个局部位置,但是在下面Faster-RCNN的计算公式中可以看见如果 t x t_x tx t y t_y ty很大,那么一个box可以跑到图像上的任意位置,这是不合理的。所以作者采用了直接预测box的坐标而不是相对anchor的偏移量的方式。具体计算公式如下:
image-20220227200537410

更直观的示意图:

image-20220227210509390

其中 ( c x , c y ) (c_x,c_y) (cx,cy)是一个单元格(cell)的左上角的坐标。因为使用了sigmoid函数,预测box的中心点坐标( b x , b y b_x, b_y bx,by)到 ( c x , c y ) (c_x,c_y) (cx,cy)的偏移量不会超过1(也就是不会跑出这个单元格,因为yolo会做归一化,使得一个单元格长度为单位1). 而 ( c x , c y ) (c_x,c_y) (cx,cy)决定了计算 ( t x , t y ) (t_x,t_y) (tx,ty)使用的特征图上的局部区域。这样就合理了。与Faster-RCNN中的计算方式相比mAP提高了5%。

论文中给出的Faster-RCNN中的计算公式存在错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmuaBKWC-1646032578127)(/home/rds/.config/Typora/typora-user-images/image-20220227195056039.png)]

结合原文中对上述公式的解释“For example, a prediction of t x t_x tx = 1 would shift the box to the right by the width of the anchor box, a prediction of t x t_x tx= −1 would shift it to the left by the same amount.”以及Faster-RCNN中给出的公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fjfthzx-1646032578129)(/home/rds/.config/Typora/typora-user-images/image-20220227195356782.png)]

上面的公式在等号右边的减号应该都改为加号。

另外,box的表示方式通常有两种: x1y1x2y2以及xcycwh。也就是当出现box的w和h的时候,xy默认指中心点的坐标。上面公式中 x x x指预测box的中心点的横坐标, x a x_a xa指anchor的中心点的横坐标。

  1. Fine-Grained Features. Faster-RCNN和SSD都使用了FPN来应对不同大小的物体对于特征图精细度的需求。YOLOV2中采用了一个更为直接的方式,将26x26x512的特征图变换成13x13x2048的特征图(之前在空间上相邻的特征现在在通道间相邻),然后和原来输出的13x13的特征图concat在一起。这种方式不需要像FPN一样根据预测的box的大小决定使用哪一层输出的特征图,是一种简化近似方式。这个trick让表现有了1%的微弱提升。(我猜测这1%的提升也有可能来自对特征图利用率的提升)
  2. Multi-Scale Training. 这种策略一直延续到了旷视出品的YOLOX。每训练十个epoch,就从一组预设的输入尺寸中随机重新挑选一个(由于YOLO的下采样倍数为32,因此这些尺寸都得是32的整数倍)。这样模型就必须要适应不同大小的输入图片,从而能够应付实际场景中图片尺寸不一致的问题。当输入尺寸比较小时,YOLO可以工作在一个较高的FPS上,此时mAP就会较小;反过来,FPS会下降,但是YOLO的性能也会逐渐达到SOTA:
image-20220227213208560

(本以为以上就是全部的trick了,没想到还只是Better这一个小节的内容)

YOLOV2相较于YOLO的改进-Faster

  1. DarkNet-19. 一个有19个卷基层以及5个最大池化层的网络:
image-20220227215906776

3x3的卷积核以及让特征图维度减半通道数翻倍的最大池化层是发源于VGG-16的灵魂设计。夹杂其中的1x1的卷积核以及来自于Network in Network的平均池化层用于压缩特征表达。相比于常用的backboneVGG-16,DarkNet-19计算量降低了三倍多,在ImageNet上的top5准确率只有2%的损失。

YOLOV2相较于YOLO的改进-Stronger

  1. Hierarchical classification. 主要介绍了怎么把ImageNet和COCO这两个数据集结合起来。需要解决把两个数据集中的类别统一起来的问题。这部分内容等到有相关需求的时候再仔细研究。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值