YOLO9000:更好,更快,更强

2018 年 1 月 9 日 七月在线实验室

论文:YOLO9000: Better,Faster,Stronger

原文下载:https://arxiv.org/pdf/1612.08242v1.pdf 

工程代码:http://pjreddie.com/darknet/yolo/

背景介绍

  通用的目标检测系统应该快速准确的识别各种各样的目标。自从引入神经网络以来,目标检测系统变得更快更准确。但是大多数目标检测方法仍然局限于一小部分的对象。

  与分类标记等任务的数据集相比,当前目标检测系统的数据集是有限的。最常见的目标检测数据集拥有成千上万到十万个图像。每个图像拥有几十个到几百个的标签。分类任务的数据集有数以百万计的图像,数以十万计的类别。

  我们希望将目标检测的数据集的规模扩展到对象分类的级别。 但是,标记图像进行目标检测要比标记分类。 因此,我们不太可能在近期内看到与分类数据集相同规模的目标检测数据集。

  我们提出了一种新的方法来处理我们已经拥有的大量分类数据,并用它来扩大当前目标检测系统数据集的范围。我们的方法使用对象分类的分层视图,这能够使不同的数据集组合在一起。 

  我们还提出了一个联合训练算法,能够使我们在目标检测和目标分类的数据集上训练目标检测算法。 我们的方法利用标记的检测图像来学习精确地定位对象,同时使用分类图像来增加数据量和鲁棒性。

  这就是我们提出的YOLO9000,一个实时的目标检测系统。它可以检测超过9000个不同的物体类型。 首先,我们改进基础的目标检测系统YOLO, 提出了最先进的实时目标检测系统YOLOv2。 然后利用我们的数据集组合方法和联合训练算法,对来自ImageNet的9000多个类的物体分类数据以及COCO的目标检测的数据,来训练我们的模型。

模型介绍

  相对比之前的目标检测系统,YOLO 9000 目标检测系统,在以下三个方面做出了改进。

2.1 Better

  与最先进的检测系统相比,YOLO有许多缺点。 YOLO与Fast R-CNN对比误差分析表明,YOLO产生了大量的定位误差。 此外,与区域生成的方法相比,YOLO的召回率相对较低。 因此,我们对YOLO的提升主要侧重于提高其召回率和定位准确度,同时保持其分类的准确性。

  机器视觉一般趋向于使用更大,更深的神经网络。训练更大的网络或将多个模型集合在一起往往能提高性能。 但是,在YOLOv2中,我们需要一个更精确更快的目标检测器。 因此我们并不不是扩大我们的网络,而是简化网络,然后让网络的表示更容易学习。 我们将过去工作中的各种想法与我们自己的先进概念汇集起来,用来提高YOLO的性能。 表1列出了提升YOLO性能的方法以及性能结果。

表1 从YOLO 到 YOLOv2

  • Batch Normalization 

  Batch Normalization显着改善模型的收敛性,同时消除了对其他形式的正则化的需求。 通过在YOLO中的所有卷积层上添加Batch Normalization,我们的目标检测系统的mAP提升了2%。 Batch Normalization也有助于泛化模型。 通过Batch Normalization,我们可以从模型中删dropout,而不会担心过拟合的问题。

  • High Resolution Classifier 

  所有最先进的目标检测方法都使用在ImageNet上预先训练好的分类器。 从AlexNet开始,大多数分类器在小于256×256的输入图像上进行。 原来的YOLO使用224×224分辨率的图像训练分类器网络,并将分辨率提高到448×448进行目标检测。 这意味着网络必须同时从学习目标分类切换到学习对象检测并适应新的输入分辨率。

  对于YOLOv2,我们首先在分辨率为448×448的分辨率网络上对ImageNet的数据集,进行了10个epoch参数微调。 这给了网络时间来调整其滤波器以更好地处理更高分辨率的图像的输入。 然后,我们再微调目标检测的网络。 这个高分辨率的分类器提升接近4%的mAP。

  • Convolutional With Anchor Boxes 

  YOLO 使用卷积特征提取层之上的全联接层来预测bounding box的坐标,而在YOLOv2中,我们去掉了全联接层,直接使用anchor box 的坐标来预测bounding box的坐标。使用anchor box 会让精度下降,但是能够在之前将预测box的数目从98提升至上一千多个,同时提高了召回率。

  • Dimension Clusters 

  在YOLO中,box的大小是人工选择的,在YOLOv2中,使用了 k-means聚类的方法来自动生成box的大小。经过对比发现,使用k-means聚类生成的box使得模型具有更好的表现性。

  • Direct location prediction 

  不同于区域生成模型中的坐标偏移预测方法,我们延续使用了YOLO模型中的坐标预测方法,即通过计算相对于cell的相对位置来表示坐标。为了使相对位置的取值范围落在0到1之间,我们使用了逻辑激励函数来进行限制。

  • Fine-Grained Features 

  修改后的YOLO的特征图大小为13*13,这个尺寸对于检测大尺寸 的目标已经足够了。但为了在小尺寸目标检测中适用,我们使用可较细的特征图。不同于Faster R-CNN和 SSD,我们在YOLO中添加了一个 Passthrough Layer 来取得之前的26*26分辨率的层的特征。Passthrough Layer 通过把相邻特征叠加到不同的通道中,把高分辨率的特征和低分辨率的特征连接起来。这可以将特征图从26*26*512转为13*13*2048。YOLOv2的检测器使用了细粒度的特征,使得模型性能提升了1%。

  • Multi-Scale Training 

  不同于之前改变输入图像的像素大小,我们在YOLOv2中改变网络的大小。每10个batch,我们随机改变网络的大小{320, 352, …, 608}。


2.2 Faster

  之前的目标检测系统大多使用VGG-16来提取特征,而YOLOv2 使用了基于Googlenet 架构的通用网络。与VGG-16相比,这个网络牺牲了一小部分精确度,却带来了计算时间的节省。

  • Darknet-19 

  在YOLOv2模型的底层,我们提出了一个全新的分类模型。与VGG模型类似,我们使用3*3的滤波器,在每次池化完之后,将通道数加倍。YOLOv2在池化过程中使用全局平均值来做预测,使用1*1的卷积核来压缩3*3卷积之间的特征表示。我们使用batch normalization 来稳定训练,加速收敛,正则化模型。 

  我们最后的模型叫做Darknet-19,它有19个卷积层和5个池化层。具体结构如下表2所示:

表2 Darknet-19结构

  • Training for classification 

  我们在标准的ImageNet 1000 class 分类数据上训练模型。训练参数如下:

  • 160 个epoch

  • 使用随机梯度下降

  • 初始学习率为0.1

  • polynomial rate decay为4,weight decay为0.0005 ,momentum 为0.9

  • 训练过程中使用了数据扩充

  • Training for detection 

  去掉上述网络的最后一个卷积层,增加3个3*3的卷积层,每个卷积层后面跟着1*1的卷积层。在VOC数据集上,每张图预测5种box,每个box包含5个坐标值和20个类别值。训练参数树下:

  • 160个epoch

  • 初始学习率为10-3

  • 在第60、90的epoch,将学习率降为原来的1/10

  • weight decay为0.0005 ,momentum 为0.9

  • 训练过程中使用了数据扩充


2.3 Stronger

  我们提出了一种在分类数据和监测数据上的联合训练机制。我们使用标记好的检测数据来学习检测相关信息,例如bounding box 的坐标,以及如区分对象。 

  在训练的过程中,我们混合检测数据集和分类数据集。当我们的网络碰到标注好的检测数据,我们使用基于YOLOv2的损失函数进行反向传播。如果碰到的是标注好的分类数据,我们仅仅从网络中分类的层反向传播。 

  这个过程中面临着诸多挑战。检测数据集仅仅包含一些常用的普通的标签,例如狗,船等。而分类数据集有更广范围的标签,ImageNet数据集中拥有不计其数的狗的种类,例如诺福克更,约克夏更(狗的种类)。如果我们要在这两个数据集上训练,需要使用将这些标签进行合并。 

  大多数的分类方法使用softmax层来计算最终的概率分布。使用softmax层的前提是,这些类别是相互排斥的。但是使用联合数据集将会产生问题,因为诺福克更和狗不是相互排斥的。我们改为使用多标签模型来组合不互斥的数据。

  • Hierarchical classification 

    ImageNet标签是从WordNet中提取的,这是一个结构概念及其相互关系的语言数据库。 在WordNet中,“诺福克梗”和“约克夏梗”都是“猎犬”类型的“下位”的下位词,它是一种“犬”。我们需要的是结构化的标签数据。

  WordNet的结构是有向图结构,而不是树结构。与使用完整的图结构不同的是,我们简化了问题,使用了ImageNet中的概念来构建分层树。 

  最终的结果是我们构建出了一个视觉概念的层次模型,WordTree。我们预测出每个节点的条件概率,例如在 “terrier”这的节点我们预测

  如果想要计算一个特定节点绝对的概率,我们沿着这个节点到达根节点,并且把这些条件概率相乘。因此,如果我们想要计算某张图片是否为 Norfolk terrier,计算公式如下:

  • Dataset combination with WordTree 

  使用WordTree,只需要把数据集中的类别映射到树结构中的同义词集合中,我们就可以将多个数据集融合在一起。

  • Joint classification and detection. 

  现在我们可以使用WordTree组合数据集来训练分类模型和检测模型。为了训练一个大规模的目标检测系统,我们使用COCO检测数据集和完整的ImageNet版本中的前9000个类来创建我们的组合数据集。

模型总结

  YOLOv2在各种数据集上显示都是最先进的,比其他的目标检测系统都要快。此外它还能在运行在各种尺寸大小的图像上,能在精度和速度之间取得完美的平衡。


相关链接:论文 | YOLO(You Only Look Once)目标检测

版权声明: 转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。 



登录查看更多
2

相关内容

Yolo算法,其全称是You Only Look Once: Unified, Real-Time Object Detection,You Only Look Once说的是只需要一次CNN运算,Unified指的是这是一个统一的框架,提供end-to-end的预测,而Real-Time体现是Yolo算法速度快。
【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
54+阅读 · 2020年6月24日
3D目标检测进展综述
专知会员服务
186+阅读 · 2020年4月24日
专知会员服务
155+阅读 · 2020年4月21日
【CVPR2020-谷歌】多目标(车辆)跟踪与检测框架 RetinaTrack
专知会员服务
44+阅读 · 2020年4月10日
生成式对抗网络GAN异常检测
专知会员服务
114+阅读 · 2019年10月13日
YOLO简史
计算机视觉life
26+阅读 · 2019年3月7日
深度学习目标检测算法综述
AI研习社
24+阅读 · 2019年2月1日
理解 YOLO 目标检测
AI研习社
19+阅读 · 2018年11月5日
教程 | 单级式目标检测方法概述:YOLO与SSD
机器之心
4+阅读 · 2018年8月6日
从零开始PyTorch项目:YOLO v3目标检测实现
机器之心
14+阅读 · 2018年4月23日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
期待已久的—YOLO V3
计算机视觉战队
20+阅读 · 2018年4月13日
YOLO升级到v3版,检测速度比R-CNN快1000倍
人工智能头条
10+阅读 · 2018年3月28日
论文 | YOLO(You Only Look Once)目标检测
七月在线实验室
14+阅读 · 2017年12月12日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
8+阅读 · 2018年1月12日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
YOLO简史
计算机视觉life
26+阅读 · 2019年3月7日
深度学习目标检测算法综述
AI研习社
24+阅读 · 2019年2月1日
理解 YOLO 目标检测
AI研习社
19+阅读 · 2018年11月5日
教程 | 单级式目标检测方法概述:YOLO与SSD
机器之心
4+阅读 · 2018年8月6日
从零开始PyTorch项目:YOLO v3目标检测实现
机器之心
14+阅读 · 2018年4月23日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
期待已久的—YOLO V3
计算机视觉战队
20+阅读 · 2018年4月13日
YOLO升级到v3版,检测速度比R-CNN快1000倍
人工智能头条
10+阅读 · 2018年3月28日
论文 | YOLO(You Only Look Once)目标检测
七月在线实验室
14+阅读 · 2017年12月12日
Top
微信扫码咨询专知VIP会员