一、引言
翻译
通用目标检测应该快速、准确,并且能够识别多种多样的物体。自从神经网络出现以来,检测框架已经变得越来越快、越来越精确。然而,大多数检测方法仍然局限于一组有限的物体。
与分类和标记等其他任务相比,当前的目标检测数据集数量有限。最常见的检测数据集包含数千到数十万张带有数十到数百个标签的图像。分类数据集包含数百万张图片,每类有数十千或数万个类别。
我们希望检测可以扩展到与对象分类相同的级别。然而,为检测标记图像比为分类或标记(标签通常是用户免费提供的)标记图像要昂贵得多。因此,我们不太可能希望在不久的将来,检测数据集能够达到与分类数据集相同的规模。
我们提出了一种新方法来利用我们已经拥有的大量分类数据,并将其用于扩展当前检测系统的范围。 我们的方法使用层次化对象分类的观点,使我们可以将不同的数据集组合在一起。
我们还提出了一种联合训练算法,使我们能够在检测和分类数据上对目标检测器进行训练。我们的方法利用标记检测图像来学习精确地定位对象,而使用分类图像来增加其词汇量和鲁棒性。
我们使用这种方法训练 YOLO9000,一个实时目标检测器,可以检测超过 9000 种不同的物体类别。首先,我们在基础的 YOLO 检测系统上进行改进,使其产生 YOLOv2,这是一个最先进的实时检测器。然后,我们使用我们的数据集组合方法和联合训练算法,在来自 ImageNet 的 9000 多个类别的图像以及来自 COCO 的检测数据上训练模型。
解读
本篇论文作者介绍了基于YOLO改进的YOLOv2算法,还提出了一种新的方法来利用大量的分类数据来扩展当前的检测系统,并使用层次化的对象分类观点将不同的数据集组合在一起。同时,作者还提出了一种联合训练算法,使得物体检测器能够在检测和分类数据上进行训练。这种方法不仅能够提高检测系统的准确性,而且还能够增加其词汇量和鲁棒性。
yolov1到yolov2改进mAP对比
二、Better(预测更准确)
1.Batch Normalization (批归一化)
加入了BN层(通常在线性层后面激活函数层前面)可以提升收敛速度,消除对其他正则化的依赖;对BN层的深入理解可以看Batch Normalization原理与实战
2.High Resolution Classifier(高分辨率分类器)
目标检测通常先使用图像分类的样本来训练卷积层(因为目标检测的样本需要人工标注框,样本数量较少),但是图像分类的样本通常分辨率较低。yolov1中模型先在小分辨率的图像上面训练,然后再切换到大分辨率图像上面进行目标检测,这样做会影响模型的性能。
而在yolov2中模型则是先在小分辨率图像上训练了一会,接着在大分辨率图像继续训练,逐渐让模型能够适应这种切换。
3.Anchor Boxes(锚框)
首先采用Anchor机制让yolov2的召回率提升了不少,但同时mAP也轻微下降了。在yolov1中没有采用Anchor,而是bounding box,每个grid cell预测两个bounding box整个图像也只有98个,所以导致yolov1的召回率比较低,容易漏检。
而现在yolov2中每个grid cell产生5个Anchor总共13x13x5个所以召回率就高了,与此同时无用的框也更多了导致mAP也下降了,但从总体上说,这仍然是一个明智的选择,我们可以通过其他方式提高mAP。
4.Dimension Clusters(聚类提取先验框尺度)
之前先验框都是手工设定的,YOLO2尝试统计出更符合样本中对象尺寸的先验框,这样就可以减少网络微调先验框到实际位置的难度。YOLO2的做法是对训练集中标注的边框进行聚类分析,以寻找尽可能匹配样本的边框尺寸。
聚类算法最重要的是选择如何计算两个边框之间的“距离”,对于常用的欧式距离,大边框会产生更大的误差,但我们关心的是边框的IOU。所以,YOLO2在聚类时采用以下公式来计算两个边框之间的“距离”。 𝑑(𝑏𝑜𝑥,𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑)=1−𝐼𝑂𝑈(𝑏𝑜𝑥,𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑) centroid是聚类时被选作中心的边框,box就是其它边框,d就是两者间的“距离”。IOU越大,“距离”越近。
5.Direct location prediction(限制预测框的位置)
在yolov1中,每个grid cell有两个bounding box,bounding box的中心坐标由它与grid cell的中心的偏移量确定,但因为偏移量可能很大,所以bounding box的中心不一定被限制在grid cell中,也就是它属于grid cell1,但它的中心有可能落在grid cell2中。所以yolov2加入了sigmoid函数将bounding box的中心限制在它所属的grid cell中。
也就是在yolov1中,grid cell对于bounding box来说,只是一个位置坐标的参考系,在yolov2中,才成为位置的限制基准。
6.Fine-Grained Features(细粒度特征)
添加细粒度特征是因为小目标的区分性特征在经过多层卷积和池化操作后,可能会因为信息压缩而变得模糊,导致深层特征对于小目标的表达能力不如浅层特征直接有效。所以为了提高对小目标的检测能力,直接将浅层的特征保留下来和深层的特征合并在一起输出。
7.Multi-Scale Training(多尺度训练)
原始YOLO使用448x448的输入分辨率,但YOLOv2通过引入锚框(anchor boxes)将分辨率改为416x416。由于模型仅由卷积层和池化层组成,它能够在运行时调整输入图像的尺寸。并且模型不会固定在单一的输入图像大小,而是每10个批次随机选择一个新的尺寸。
这种训练策略强迫网络学会在多种输入尺寸上进行精确的预测。让同一网络可以适应不同分辨率的图像,提供一致的检测性能。
但是需要在性能上做出权衡。较低分辨率的图像允许更快的处理速度,使得YOLOv2在288x288分辨率下能够达到90FPS以上的速度,接近Fast R-CNN的精度。高分辨率图像则能提供更高的检测精度,在PASCAL VOC 2007数据集上达到78.6 mAP,同时保持高于实时的速度。
三、Faster(速度更快)
1.Darknet-19
YOLOv2使用Darknet-19网络结构。Darknet-19包含有19个卷积层和5个MaxPooling层。与复杂计算量大的VGG-16相比Darknet-19大大的减少了计算量,同时也精度也不低,提高了模型的速度。
以上为图像分类的网络结构图
2.Training for detection(修改成目标检测的网络)
yolov2删除最后一个卷积层,将其换成了三个3 × 3的卷积层,每个3 × 3的卷积层有1024个卷积核,最后一个1 × 1的卷积层。