YOLOv2论文翻译。它提出了一个升级版的YOLO,以及利用分类数据集提升检测模型检测类别范围的方法,和一个使用该方法训练出的模型:YOLO9000。
YOLO9000: Better, Faster, Stronger
Joseph Redmon, Ali Farhadi, 2016
University of Washington, Allen Institute for AI
1. Introduction
通用的物体检测应该能快速、准确、能识别许多种物体。自从神经网络的引入,检测框架变得非常快速、准确。但大部分检测方法所能检测的仅仅是一小部分物体。
当前的物体检测数据集相比其它数据集,如分类和标签,相当有限。常见检测数据集包含数百万或数十万图片,有着数十到数百个标签$^{[3,10,2]}$。而分类数据集多为数百万张图片,多达数万或数十万种类$^{[20,2]}$。
我们非常希望检测也能达到分类数据集的尺度。但是,用于检测的图片标注要比用于分类或标签的昂贵得多(标签通常由用户免费贡献)。因此我们不太可能在近期看到检测数据集尺度接近分类数据集。
我们提出了一种利用已有的大量分类数据并用其扩展当前检测系统范围的方法。我们的方法使用了一种物体分类的分层视野(hierarchical view),让我们能将有区别的数据集合并起来。
我们还提出了一种联合训练算法,能在检测和分类数据集上训练物体检测器。我们的方法杠杆式地利用带标注的检测图片来训练其精确定位物体的能力,同时利用分类图片来增加其词汇量和健壮性。
我们使用这一方法训练了YOLO9000,一个能实时检测超过9000种物体的检测器。首先我们在YOLO检测系统的基础上加以提升,得到YOLOv2,一个前沿的实时检测器。接着我们使用数据集结合方法和联合训练算法在COCO检测集和ImageNet超过9000类的数据集上训练这个模型。
我们所有代码和预训练的模型已开源。
2. Better
YOLO相比前沿检测系统,有许多短处。YOLO与FRCN的错误分析相比显示出YOLO出现了很多定位错误。此外,与基于候选区域的方法相比,YOLO的召回率相对低。因此我们专注于提高召回率和定位,同时维持分类准确率。
计算机视觉通常倾向于更大、更深的网络$^{[6,18,17]}$。更高的性能常常依靠训练更大的网络或组合多个模型。但对于YOLOv2,我们希望它是一个又精确又快速的检测器。我们没有放大网络,而是简化了网络让其表达更易训练。我们从过去的研究中的许多想法与我们自己的新概念联合起来提升YOLO的性能。表2为结果总结。
Batch Normalization. BN能显著提升收敛性,同时排除对其余正则化形式的需要$^{[7]}$。通过为YOLO的所有卷积层增加BN,我们得到了高于2%的mAP提升。BN也能正则化模型。有了BN后我们可以移除模型中的dropout,而不会导致过拟合。
High Resolution Classifier. 所有前沿检测器都使用在ImageNet上预训练的分类器。从AlexNet开始,大部分分类器都在小于$256\times256$的输入上进行。原始YOLO在$224\times224$的图片上训练分类网络,并在物体检测时将分辨率提升到448。这意味着网络不得不同时学习物体检测和适应新的输入分辨率。
在YOLOv2时我们首先使用$448\times448$分辨率图片来调优分类网络10个epoche。这给与了网络调优其核在更高分辨率输入时性能的时间。接着我们调优网络的检测性能。这一高分辨率分类网络为我们增加了近4%的mAP。
Convolutional With Anchor Boxes. YOLO直接使用在卷积特征抽取器上的全连接层来预测限位框坐标。而Faster R-CNN没有直接预测坐标,它们使用人工选择的priors来预测限位框。Faster R-CNN使用RPN的卷积网络来为锚点框预测偏移和信心。因为进行预测的是卷积层,RPN在特征图上的每个位置预测这些偏移。预测偏移而不是坐标简化了问题,让网络更容易学习。
我们移除了YOLO中的全连接层,并用锚点框来预测限位框。我们首先移除了一个池化层,让卷积层的输出分辨率更高。我们同样降低了输入,从448到416。我们需要一个奇数,使特征图中有单个中心点。物体,特别是大物体,倾向于占据图片中心,因此只有一个中心来预测这些物体要好过4个位置。YOLO的卷积层对图片以32的因子对图片进行下采样,因此使用416的图片,会得到$13\times13$的特征图。
随着我们迁移到锚点框机制,我们也将类预测机制从空间位置上解耦,为每个锚点框预测类和是否有物体。跟YOLO一样,是否有物体依然是预测gt框和锚点框的IoU,类预测则是预测那儿是否有给定类的物体的条件概率。
使用锚点框让我们的准确度有小下降。YOLO只为每个图片预测98个框,而使用锚点框后,模型预测超过1000个框。移除锚点框后,我们的中间态模型mAP为69.5,召回率为81。加入锚点框后mAP为69.2,召回率为88%。尽管mAP下降了,但召回率的提升说明我们的模型仍有提升空间。
Dimension Clusters. 在YOLO中使用锚点框时我们遭遇了两个问题。第一个是框的维度是手选的。网络能训练到适配它,但如果我们能选择更好的priors,使网络更易学习做出好的预测。
与其手选priors,我们在训练集限位框上运行了K-means聚类来自动寻找好的priors。如果我们使用标准的欧几里得距离K-means聚类,则更大的框的误差会更大。而我们期望priors能引出好的IoU得分,这与框大小无关。因此我们的测距方法是:
$d(box, centroid) = 1 - IoU(box,centroid)$
我们使用不同的k值运行k-means,并把有着平均IoU用最近的图心画出,见图2。我们选择k=5,作为模型复杂度和高召回率的一个好的权衡点。聚类中心点与手选锚点框区别巨大。它们中短而宽的更少,高而窄的更多。
我们比较了我们的聚类策略下离最近聚类中心的平均IoU,以及手选锚点框,见表1。仅需5个聚类中心点便与9个锚点框的IoU近似。如果我们使用9个聚类中心点,则会看到一个高得多的平均IoU。这说明使用k-means聚类来生成我们的锚点框,会让我们的模型有更好的起始表达,更易训练。
Direct location prediction. 当将锚点框与YOLO结合时,我们遭遇了另一个问题:模型不稳定性,尤其是早期迭代中。大部分不稳定性来自于预测限位框的(x, y)坐标。在RPN网络中,它预测值$t_x$和$t_y$,(x, y)中心坐标可以如下计算:
举个例子,预测值$t_x = 1$会将限位框向右平移一个锚点框宽度的距离,-1会向左平移同样距离。
这一方程是无条件限制的,所以任意锚点框能平移到图片中任意点,而不管它是在哪儿被预测的。这个模型使用随机初始化的话会花很长时间来稳定下来,预测合理的偏移。
与其预测偏移,我们按照YOLO的方法,预测相对格子的坐标。这让gt落入01之间。我们使用了逻辑激活函数,限制网络预测落入此范围。
网络在输出的特征图中每个格子预测5个限位框。为每个限位框预测5个坐标,$t_x,t_y,t_w,t_h,t_o$。如果该格子偏离图片左上角$(c_x,c_y)$且限位框prior的宽高为$p_w,p_h$,则预测为:
因为我们约束了位置预测,使网络更易学习、更稳定。使用维度距离与直接预测限位框中心位置比使用锚点框的版本提升了5%的mAP。
Fine-Grained Features. 这一YOLO修改版在一个$13\times13$的特征图上预测。尽管这对于大物体已足够,它也许能从更细纹理的特征中获利:更易定位小物体。Faster R-CNN和SSD都在它们网络中的多个特征图上运行候选网络,来得到更多的分辨率范围。我们使用了另一种方法,加入了一个转移passthrough层,将前一层的$26\times26$分辨率的特征图带过来。
转移层通过将临近特征堆叠到不同通道而不是空间位置,类似ResNet的一致性映射,将高低分辨率特征连接了起来。这将$26\times26\times512$的特征图变为$13\times13\times2048$的特征图,可以连接到最初的特征。我们的检测器在这一扩展特征图上运行,因此它能获取更细纹理的特征,这得到了接近1%的提升。
Multi-Scale Training. YOLO输入分辨率为$448\times448$。加入锚点框后,我们将分辨率调整为$416\times416$。但因为我们的模型仅使用卷积层和池化层,它能实时调整大小。我们希望YOLOv2能在更多尺寸图片上健壮运行,因此我们将其训练入模型。
与其固定输入图片大小,我们每几次迭代后就改变网络。每10个batch我们的网络会随机选择一个新图片大小。因我们的模型下采样因子为32,我们从如下32的倍数中选择:{320,352,…,608}。因此最小选项是$320\times320$,最大为$608\times608$。我们调整网络到那个尺寸后继续训练。
这一制度强迫网络学习如何很好地预测各个输入尺寸。这意味着同一网络能在多个分辨率下预测。模型在尺寸较小时更快,因此YOLOv2提供了简便的速度、精度权衡方法。
在低分辨率时,YOLOv2表现为便宜而相对精确的检测器。在$288\times288$时帧率超过90,而mAP与FRCN一样好。这使其对小GPU、高帧率视频、多视频流应用非常理想。
在高分辨率时,YOLOv2是前沿的检测器,在VOC07上有78.6的mAP,同时仍保持实时以上的速度。见表3和图4,YOLOv2与其他框架在VOC2007进行了比较。
Further Experiments. 我们训练了YOLOv2用于在VOC 2012上进行检测。表4显示了YOLOv2与其余前沿检测系统相比有相当的性能。YOLOv2达到了73.4的mAP,同时比其余模型更快。我们也在COCO上训练,并与其它方法比较,见表5。在VOC评价下(IoU=.5)YOLOv2得到了44.0的mAP,等于SSD和Faster R-CNN。
3. Faster
我们既希望检测精确,又希望它快速。大多数检测应用,如机器人或自动驾驶,依赖于低延迟预测。为了最大化其性能,我们将YOLOv2设计为从头到尾的快。
大多数检测网络依赖VGG-16作为基本特征抽取器$^{[17]}$。VGG-16是一个强力、准确的分类网络,但它复杂得不必要。VGG-16
的卷积层前向处理一个$224\times224$的图片需要306.9亿次浮点数计算。
YOLO使用了一个基于GoogLeNet架构$^{[19]}$的自定义网络。它快过VGG-16,前向传播仅需85.2亿次浮点数运算。不过它的精确度略低于VGG-16。对于单切片,$224\times224$的top-5精确度,在ImageNet上YOLO自定义模型为88.0%,VGG-16为90.0%。
Darknet-19. 我们提出了一个新的供YOLOv2使用的分类模型。我们的模型建于之前的网络设计工作和领域内共识。类似VGG模型,我们主要使用了$3\times3$卷积核,并在池化步骤后对通道数量加倍。按照NIN的研究我们使用了global average pooling,让预测像$1\times1$卷积核一样压缩$3\times3$卷积间的特征表达。我们使用了BN来稳定训练,加速收敛并正则化模型。
我们最终的模型称为Darknet-19,有19个卷积层和5个maxpooling层。表6为全面的描述。Darknet-19处理一张图片仅需55.8亿次计算,在ImageNet上仍有72.9%的top-1准确度和91.2%的top-5准确度的。
Training for classification. 我们在ImageNet标准1000类分类数据集上使用SGD训练了Darknet-19模型160个epoch,起始学习率为0.1,幂为4的正态学习率衰减,权重衰减为0.0005,动量为0.9。在训练中我们使用了标准数据增广技巧,如随机裁剪,旋转,hue,饱和度和曝光度偏移。
如上文讨论一样,在我们初始使用$224\times224$训练,然后使用更大尺寸的图片448来调优网络。调优时我们仍使用上述参数,但仅进行了10个epoch,且初始学习率为0.001。通过高分辨率的使用,我们网络的top-1准确率为76.5%,top-5为93.3%。
Training for detection. 我们修改网络以进行检测:移除最后的全卷积层,并添加3个$3\times3$卷积层,每个有着1024个卷积核,最终一个$1\times1$卷积层,其输出数量与检测所需相关。对于VOC我们预测5个限位框,每个限位框有5个坐标和20类。因此共125个卷积核。我们为最后一个$3\times3\times5$卷积层到倒数第二个卷积层增加了一个passthrough层,让我们的模型能使用精细纹理特征。
我们使用初始学习率0.001训练了网络160个epoch,在第60和90个epoch除以10。权重衰减为0.0005,动量为0.9。我们使用了与YOLO和SSD相似的增广方法,如随机裁剪,颜色偏移等。我们在COCO和VOC上使用了同样的训练策略。
4. Stronger
我们提出了一个在分类和检测数据集上联合训练的机制。我们的方法使用带标注的检测数据来学习检测相关的信息,如限位框坐标预测和objectness以及分类常见物体。它仅使用只有类标注的图片来扩展其能检测的类别数量。
在训练时我们混合用于分类和检测的数据。当我们的网络发现一个带检测标注的图片时,我们能基于完整YOLOv2 loss函数进行反向传播。当它发现一个分类图片时,只是用来自架构中的分类相关loss进行反向传播。
这一方法提出了一些挑战。检测数据集仅有常见物体和大致标签,如狗或船。分类数据集有着广泛得多且细致的标签。ImageNet中有超过100种狗,如诺福克梗,约克郡犬和贝灵顿狗。如果我们要在两个数据集上训练,我们需要一个方法来合并这些标签。
大部分分类方法使用一个softmax层来对所有可能种类计算最终概率分布。使用softmax即假定这些类互斥。这为合并数据集造成了问题,你不会想用这一模型合并ImageNet和COCO,因为类“狗”和“诺福克梗”不是互斥的。
我们可以使用一个多标签模型来合并两个数据集,它不假定类互斥。这一方法忽略了我们关于数据所知的所有结构,如所有COCO类之间都是互斥的。
Hierarchical classification. ImageNet标签来自WordNet,一个有着结构化概念和之间关联的语言数据库。在WordNet中,“诺福克梗”和“约克郡犬”都是“梗类犬”的下义词,一种“猎犬”,一种“狗”。大部分分类方法需要标签有着扁平化的结构,而合并数据库,这一种结构正是我们需要的。
WordNet以有向图而不是树的结构组织,因为语言的复杂性。比如一个“狗”,它既是一种“犬类”,又是一种“家畜”,都是“物体”的一个同义词组。与其使用完全的图结构,我们通过为ImageNet中的概念建立一个层级树来简化此问题。
为了建立此树,我们检查了ImageNet中的名词并查看了它们在WordNet图中到根节点的路径。许多同义词都只有一条路径,因此我们首先将所有这些路径加入我们的树中。接着我们检查剩余的概念,并选择树增长最小的路径加入。故如一概念有两个到根节点的路径,一个会加入三条边到我们的树中,而另一条仅增加一条,我们会选择更短的路径。
最终结果即是WordTree,一个视觉概念的层级模型。要使用WordTree来进行预测,我们需要在每个节点预测该同义词集的所有下义词基于此同义词集的条件概率。比如,对于“terrier”梗类犬节点我们进行如下预测:
如果我们想计算某个节点的绝对概率,我们仅需沿着到根节点的路径并将条件概率相乘。故如果我们想知道一个图片是不是“诺福克梗”Norfold terrier,我们计算:
对于分类任务我们假定图片包含一个物体:$P_r(physical\ object) = 1$。
为了验证这一方法我们在ImageNet 1000类数据集上训练了基于WordTree的Darknet-19模型。为了建立WordTree1k,我们增加的中间节点使标签空间从1000增大到1369。在训练中,gt标签会沿树向上传播,故如一张图被标记为“诺福克梗”,它也会被记做“狗”和“哺乳动物mammal”。为了计算条件概率,我们的模型预测了一个1369的向量,我们为属于某个概念的下义词的所有同义词集计算softmax,见图5。
使用与之前一样的训练参数,我们的层级化Darknet-19获得了71.9%的top-1准确度和90.4%的top-5准确度。尽管增加了369个额外概念,而且让我们的网络预测一个树形结构,准确度仅仅下降少许。以这一方式进行分类也有好处。在新的或未知的物体类别时性能下降很温和。比如,如果网络碰到一张不确定种类的狗,它依然会以高信心预测“狗”和更低信心的展开预测。
这一方法对检测依然奏效。与其假定所有图片都有一个物体,我们使用YOLOv2的objectness预测器来给我们$P_r(physical\ object)$的值。检测器预测一个限位框和概率树。我们向下遍历概率树,在遇到分叉时选择高信心的路径,直到达到某个阈值,我们就预测那个物体类。
Dataset combination with WordTree. 我们能用WordTree合理地合并多个数据集。我们简单地将数据集中的类别映射为树中的同义词集。图6是一个用WordTree合并来自ImageNet和COCO标签的例子。WordNet是如此多样,因此我们能将此技术应用于大部分数据集上。
Joint classification and detection. 现在我们能使用WordTree合并数据集,并联合分类和检测训练我们的模型。我们想要训练一个极大的检测器,因此我们使用COCO检查数据集和ImageNet的top9000类创建了我们自己的合并数据集。我们还需要评估我们的方法,因此所有ImageNet中未加入合并数据集的都引入了。对应的WordTree共9418个类。因为ImageNet是一个大得多的数据集,故我们通过对COCO过采样来平衡它们,让ImageNet仅大4倍。
我们使用这个数据集训练了YOLO9000。我们使用了YOLOv2基础架构,但仅3个而不是5个prior,以限制输出大小。当我们的网络碰见一个检测图片时,它正常进行反向传播。对于分类loss,我们仅在标签对应层级当层或之上进行loss的反向传播。如果标签为狗,我们不会为树下的预测赋予任何error,因为我们没有相关信息。
当它碰到分类图片时,我们仅对分类loss进行反向传播。我们找到预测该类有着最高概率的限位框,并在它的预测概率树上计算loss。我们也假定预测框应与gt框有至少0.3的IoU,并基于此假设反向传播objectness loss。
使用了联合训练后,YOLO9000学会了使用COCO的检测数据在图片中寻找物体,并学会了用ImageNet的数据辨认非常多种类的物体。
我们在ImageNet检测任务上评估了YOLO9000。这一任务与COCO有着44种相同的种类,这意味着对于YOLO9000来说,大部分测试图片它仅有分类的数据,而不是检测数据。YOLO9000在整体测试集中得到了19.7的mAP,在156种从未见过带标注的检测数据的物体类别的集合中得到16.0的mAP。这一mAP高于DPM所获得的,但YOLO9000是部分监督的在不同数据集上训练的。它同时能实时检测9000种其余物体类别。
当我们在ImageNet上分析YOLO9000的性能时,我们看到它对于新动物识别得不错,但对于衣物和装备比较挣扎。新动物容易训练,因为objectness预测容易从COCO中的动物泛化。但COCO没有任何衣物限位框标签,只有人,故YOLO9000对于如“墨镜”或“泳裤”非常挣扎。
5. Conclusion
我们提出了YOLOv2和YOLO9000,实时的检测系统。YOLOv2是一个前沿的检测系统,在许多检测数据集上都快过其余系统。而且它能在许多图片尺寸上使用,以在精确度和速度之前权衡。
YOLO9000是一个通过联合优化检测和分类的,能检测超过9000种物体的实时架构。我们使用WordTree来合并不同的数据源,并用我们的联合优化技术同时在ImageNet和COCO上训练。YOLO9000是一个拉近检测和分类数据集差距的强有力的一步。
我们许多技术能泛化于物体检测领域之外。我们的ImageNet的WordTree表达为图片分类提供了一个更丰富、更细节的输出空间。基于层级分类的数据集合并能用于分类和分割领域。训练技术,如多尺度训练,能为许多视觉任务提供帮助。
对于未来的研究,我们希望在弱监督图片分割上使用类似的技术。我们同样计划使用更强力的匹配技术,为训练时的分类数据赋予弱标签,以提升检测结果。计算机视觉受益于海量标记数据。我们会继续探索合并不同来源、结构的数据的方法,为视觉领域构建更强力的模型。
Reference
[1] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Insideoutside
net: Detecting objects in context with skip
pooling and recurrent neural networks. arXiv preprint
arXiv:1512.04143, 2015. 6
[2] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei.
Imagenet: A large-scale hierarchical image database.
In Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on, pages 248–255. IEEE, 2009. 1
[3] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and
A. Zisserman. The pascal visual object classes (voc) challenge.
International journal of computer vision, 88(2):303–338, 2010. 1
[4] P. F. Felzenszwalb, R. B. Girshick, and D. McAllester.
Discriminatively trained deformable part models, release 4.
http://people.cs.uchicago.edu/ pff/latent-release4/. 8
[5] R. B. Girshick. Fast R-CNN. CoRR, abs/1504.08083, 2015.4, 5, 6
[6] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning
for image recognition. arXiv preprint arXiv:1512.03385, 2015. 2, 4, 5
[7] S. Ioffe and C. Szegedy. Batch normalization: Accelerating
deep network training by reducing internal covariate shift.
arXiv preprint arXiv:1502.03167, 2015. 2, 5
[8] A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet
classification with deep convolutional neural networks. In
Advances in neural information processing systems, pages 1097–1105, 2012. 2
[9] M. Lin, Q. Chen, and S. Yan. Network in network. arXiv
preprint arXiv:1312.4400, 2013. 5
[10] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan,
P. Dollar, and C. L. Zitnick. Microsoft coco: Com- ´
mon objects in context. In European Conference on Computer
Vision, pages 740–755. Springer, 2014. 1, 6
[11] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. E. Reed.
SSD: single shot multibox detector. CoRR, abs/1512.02325, 2015. 4, 5, 6
[12] G. A. Miller, R. Beckwith, C. Fellbaum, D. Gross, and K. J.
Miller. Introduction to wordnet: An on-line lexical database.
International journal of lexicography, 3(4):235–244, 1990.6
[13] J. Redmon. Darknet: Open source neural networks in c.
http://pjreddie.com/darknet/, 2013–2016. 5
[14] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You
only look once: Unified, real-time object detection. arXiv
preprint arXiv:1506.02640, 2015. 4, 5
[15] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards
real-time object detection with region proposal networks.
arXiv preprint arXiv:1506.01497, 2015. 2, 3, 4, 5,6
[16] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh,
S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein,
A. C. Berg, and L. Fei-Fei. ImageNet Large Scale Visual
Recognition Challenge. International Journal of Computer
Vision (IJCV), 2015. 2
[17] K. Simonyan and A. Zisserman. Very deep convolutional
networks for large-scale image recognition. arXiv preprint
arXiv:1409.1556, 2014. 2, 5
[18] C. Szegedy, S. Ioffe, and V. Vanhoucke. Inception-v4,
inception-resnet and the impact of residual connections on
learning. CoRR, abs/1602.07261, 2016. 2
[19] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed,
D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich.
Going deeper with convolutions. CoRR, abs/1409.4842, 2014. 5
[20] B. Thomee, D. A. Shamma, G. Friedland, B. Elizalde, K. Ni,
D. Poland, D. Borth, and L.-J. Li. Yfcc100m: The new
data in multimedia research. Communications of the ACM,
59(2):64–73, 2016. 1