文章目录
- Abstract
- Introduction
- 当前存在的困境
- 基于此,我们给出了方法
- Better
- Batch Normalization
- High Resolution Classifier
- Convolutional With Anchor Boxes
- Dimension Clusters
- Direct location prediction
- Fine-Grained Features
- Multi-Scale Training
- Further Experiments
- Faster
- Darknet-19
- Training for classification
- Training for detection
- Stronger
- Hierarchical classification
- Dataset combination with WordTree
- Joint classification and detection
- Conclusion
- Future
论文链接
源代码
源
Abstract
我们推出了YOLO9000,这是一个最先进的实时物体检测系统,可以检测9000多种物体类别。首先,我们提出了对YOLO检测方法的各种改进,这些改进既新颖又借鉴了前人的工作。改进后的模型YOLOv2在PASCAL VOC和COCO等标准检测任务上是最先进的。通过一种新颖的多尺度训练方法,相同的YOLOv2模型可以在不同的尺寸上运行,在速度和准确性之间提供了一个简单的权衡。在67 FPS下,YOLOv2在VOC 2007上获得76.8 mAP。在40 FPS下,YOLOv2获得78.6 mAP,优于最先进的方法,如使用ResNet和SSD的Faster R- CNN,同时运行速度仍然快得多。最后提出了一种目标检测与分类联合训练的方法,使用该方法,我们在COCO检测数据集和ImageNet分类数据集上同时训练YOLO9000。我们的联合训练允许YOLO9000预测没有标记检测数据的对象类别的检测,我们在ImageNet检测任务上验证我们的方法,YOLO9000在ImageNet检测验证集上获得19.7 mAP,尽管只有200个类中的44个类的检测数据。在COCO之外的156个类中,YOLO9000的mAP值为16.0。但YOLO只能检测到200多个类别;它预测了9000多种不同对象类别的检测,它仍然是实时运行的
Introduction
当前存在的困境
通用目标检测应该是快速、准确的,并且能够识别各种各样的目标。自从神经网络的引入,检测框架变得越来越快速和准确。然而,大多数检测方法仍然局限于一小部分对象,与分类和标记等其他任务的数据集相比,当前的目标检测数据集是有限的
且为检测而标记图像比为分类或标记而标记要昂贵得多(标记通常是用户免费提供的),因此,在不久的将来,我们不太可能看到与分类数据集相同规模的检测数据集
基于此,我们给出了方法
我们提出了一种新的方法来利用我们已经拥有的大量分类数据,并用它来扩大当前检测系统的范围,我们的方法使用对象分类的分层视图,允许我们将不同的数据集组合在一起
我们还提出了一种联合训练算法,使我们能够在检测和分类数据上训练目标检测器,我们的方法利用标记检测图像来学习精确定位目标,同时使用分类图像来增加其词汇量和鲁棒性
使用这种方法,我们训练了一个实时目标检测器YOLO9000,它可以检测9000多种不同的目标类别
Better
相对于最先进的探测系统,YOLO存在各种缺点。YOLO与Fast R-CNN的误差分析表明,YOLO产生了大量的定位误差。此外,与基于区域生成的方法相比,YOLO的召回率相对较低。因此,我们主要关注在保持分类准确性的同时提高召回率和定位
对于YOLOv2,我们想要一个更准确,速度更快的探测器。而不是扩大我们的网络,我们简化网络,然后使表征更容易学习。我们将过去工作中的各种想法与我们自己的新概念结合起来,以提高YOLO的性能
Batch Normalization
批处理归一化导致显著的收敛性改进,同时消除了对其他形式的正则化的需要。通过在YOLO的所有卷积层上添加批处理归一化,mAP的改进幅度超过2%。批量规范化也有助于模型的规范化。通过批处理归一化,我们可以在不过度拟合的情况下从模型中去除dropout
High Resolution Classifier
对于YOLOv2,我们首先在ImageNet上以完整的448 × 448分辨率对分类网络进行10次微调,这使网络有时间调整其滤波器,以便在更高分辨率的输入上更好地工作。然后,我们在检测时微调结果网络。这种高分辨率分类网络使我们的mAP增加了近4%
Convolutional With Anchor Boxes
YOLO直接使用卷积特征提取器之上的全连接层来预测边界框的坐标,Faster R-CNN中的区域生成网络(RPN)仅使用卷积层来预测anchor的偏移量和置信度,由于预测层是卷积的,RPN在特征映射的每个位置预测这些偏移量,预测偏移量而不是坐标简化了问题,使网络更容易学习
因此,我们从YOLO中移除全连接层,并使用anchor来预测边界框
使用anchor,我们得到了精度的小下降,但我们的模型可以预测超过1000个。尽管mAP降低了,但召回率的增加意味着我们的模型还有更多的改进空间
Dimension Clusters
当anchor boxes与YOLO一起使用时,我们遇到了两个问题。首先,box的尺寸是手工挑选的,网络可以学习适当地调整盒子,但如果我们为网络选择更好的先验,我们可以让网络更容易学习预测好的检测。我们不是手工选择先验,而是在训练集边界盒上运行k-means聚类来自动找到好的先验
如果我们使用欧氏距离的标准k-均值较大的盒子比较小的盒子产生更多的误差,然而,我们真正想要的是导致良好IOU分数的先验,这与盒子的大小无关。对于距离度量,我们使用
我们对不同的k值运行k-means,并绘制最接近质心的平均IOU,见图2
(我们在边界盒的维度上运行k-means聚类,为我们的模型获得良好的先验。左图显示了我们在k的各种选择下得到的平均IOU。我们发现k =5在召回率和模型复杂性之间给出了一个很好的权衡。右图显示了VOC和COCO的相对质心。两组先验都倾向于更薄,更高的盒子,而COCO在尺寸上的变化比VOC更大)
我们选择k =5作为模型复杂性和高召回率之间的一个很好的权衡。聚类质心与精挑细选的锚盒明显不同。短而宽的盒子越来越少,而高而薄的盒子越来越多
我们将平均IOU与我们的聚类策略和表1中精心挑选的anchor boxes的最接近先验进行比较。5个质心的表现与9个anchor boxes相似,平均IOU为61.0,而anchor boxes为60.9。如果我们使用9个质心,我们会看到一个更高的平均IOU。这表明,使用k-means来生成边界框可以更好地表示模型,并使任务更容易学习
(使用不同的生成方法,对VOC 2007上的对象的平均IOU进行了最接近,未修改的先验。聚类产生的结果比使用手工挑选的先验要好得多)
Direct location prediction
在YOLO中使用anchor boxes时,我们遇到了第二个问题:模型不稳定,特别是在早期迭代期间。大多数不稳定性来自于对盒子(x, y)位置的预测。在区域生成网络RPN中,网络预测值tx和ty, (x, y)中心坐标计算为:
例如,对tx =1的预测将使框向右移动锚框的宽度,对tx = -1的预测将使其向左移动相同的宽度
这个公式是不受约束的,所以任何anchor boxes都可以在图像中的任何一点结束,而不管锚框预测的位置是什么。在随机初始化的情况下,模型需要较长的稳定时间才能预测出合理的偏移量
我们遵循YOLO的方法,并预测相对于网格单元的位置的位置坐标,而不是预测偏移。这将基本真值限定在0和1之间。我们使用逻辑激活来约束网络的预测落在这个范围内,该网络在输出特征图的每个单元上预测5个边界框。网络为每个边界框预测5个坐标,tx, ty, tw, th和to。如果单元格与图像左上角的偏移量为(cx,cy),并且先前的边界框的宽度和高度为pw, ph,则预测对应于:
由于我们约束了位置预测,因此参数化更容易学习,使网络更稳定
Fine-Grained Features
这种改进的YOLO在13 × 13的特征映射上预测检测。我们采用一种不同的方法,简单地添加一个passthrough直通层,以26 × 26的分辨率从先前的层中获得特征。passthrough层通过将附加特征叠加到不同的通道中而不是空间位置,将高分辨率特征与低分辨率特征连接起来,类似于ResNet中的身份映射,这将26 × 26 × 512的特征图转换为13 × 13 × 2048的特征图,可以与原始特征进行拼接
Multi-Scale Training
我们的模型只使用卷积层和池化层,因此可以动态调整大小。我们希望YOLOv2对不同大小的图像具有鲁棒性,因此我们将其训练到模型中
不采用固定输入图像的大小,我们每几个迭代就改变一次网络。这种机制迫使神经网络学会在各种输入维度上进行良好的预测。这意味着相同的网络可以预测不同分辨率的探测结果。网络在较小的尺寸下运行速度更快,因此YOLOv2在速度和准确性之间提供了一个简单的权衡。
在低分辨率下,YOLOv2作为一种便宜、相当精确的探测器运行
在高分辨率下,YOLOv2是一款最先进的探测器,在VOC 2007上具有78.6 mAP,同时仍然运行在实时速度之上
Further Experiments
我们训练YOLOv2检测VOC 2012。表4显示了YOLOv2与其他先进检测系统的性能比较。YOLOv2在运行速度远快于竞争对手的情况下达到73.4 mAP。我们还对COCO进行了训练,并与表5中的其他方法进行了比较。在VOC指标(IOU = .5)上,YOLOv2的mAP值为44.0,与SSD和Faster R-CNN相当
Faster
为了最大限度地提高性能,我们设计的YOLOv2从头到尾都是快速的,YOLO框架使用基于Googlenet架构的自定义网络。该网络比VGG-16更快,仅使用85.2亿次操作进行转发。然而,它的精度略低于VGG- 16
Darknet-19
我们提出了一个新的分类模型作为YOLOv2的基础。我们的模型建立在先前网络设计工作的基础上,以及该领域的共同知识。与VGG模型类似,我们主要使用3 × 3滤波器,并在每个池化步骤后将通道数加倍
继Network In Network(NIN)的工作之后,我们使用全局平均池化进行预测,并使用1 × 1滤波器压缩3 × 3个卷积之间的特征表示。我们使用批归一化来稳定训练,加速收敛,并正则化模型
我们的最终模型,称为Darknet-19,有19个卷积层和5个maxpooling层。完整的描述请参见表6。Darknet-19只需要55.8亿次操作来处理图像,但在ImageNet上达到了72.9%的前1精度和91.2%的Top 5精度
Training for classification
我们在标准ImageNet 1000类分类数据集上使用随机梯度下降训练网络,初始学习率为0.1,多项式速率衰减为4次方,权重衰减为0.0005,动量为0.9,使用Darknet神经网络框架[13]。在训练过程中,我们使用标准的数据增强技巧,包括随机裁剪、旋转、色调、饱和度和曝光位移
如上所述,在对224 × 224的图像进行初始训练后,我们将网络调整为更大的尺寸,448。对于这种微调,我们使用上述参数进行训练,但只训练10个epoch,并开始一个10−3的学习梯度。在这个更高的分辨率下,我们的网络达到了76.5%的前1精度和93.3%的前5精度
Training for detection
为了检测,我们修改了这个网络,去掉了最后一个卷积层,增加了三个3 × 3的卷积层,每个卷积层有1024个滤波器,最后一个1 × 1的卷积层有检测所需的输出数量。对于VOC,我们预测5个盒子,每个盒子有5个坐标,每个盒子有20个类别,所以125个过滤器。我们还从最后的3 × 3 × 512层添加了一个直通层到倒数第二个卷积层,以便我们的模型可以使用细粒度特征
我们以10−3的起始学习率训练网络160个epoch,在60和90个epoch时将其除以10。我们使用0.0005的权重衰减和0.9的动量,我们使用与YOLO和SSD类似的数据增强方法,包括随机裁剪、颜色移动等。我们对COCO和VOC采用相同的培训策略
Stronger
我们提出了一种分类和检测数据联合训练的机制。我们的方法使用图像标记进行检测,以学习检测特定的信息,如边界框坐标预测和对象以及如何对常见对象进行分类。它使用仅带有类标签的图像来扩展它可以检测的类别的数量
在训练过程中,我们混合了来自检测和分类数据集的图像。当我们的网络看到标记为检测的图像时,我们可以基于完整的YOLOv2损失函数进行反向传播。当它看到分类图像时,我们只从体系结构的特定分类部分反向传播损失
这种方法存在一些挑战,检测数据集只有常见对象和一般标签,如“狗”或“船”,分类数据集具有更广泛和更深入的标签范围,ImageNet上有一百多种狗,如果我们想在两个数据集上进行训练,我们需要一个连贯的方法来合并这些标签
大多数分类方法在所有可能的类别上使用softmax层来计算最终的概率分布。使用softmax假定类是互斥的。这给组合数据集带来了问题,例如,您可能不希望使用此模型组合ImageNet和COCO,因为类“Norfolk terrier”(狗的一种)和“dog”并不是互斥的
相反,我们可以使用多标签模型来组合数据集,而不假设互斥。这种方法忽略了我们所知道的关于数据的所有结构,例如,所有的COCO类都是互斥的
Hierarchical classification
大多数分类方法都假设标签的结构是扁平的,但是对于组合数据集来说,结构正是我们所需要的,最后的结果是WordTree,一个可视化概念的层次模型。为了使用WordTree进行分类,我们在给定该同义词集的每个下位词的概率上预测每个节点的条件概率。例如,在“terrier”节点,我们预测:
如果我们想计算一个特定节点的绝对概率,我们只需沿着树的路径到达根节点,然后乘以条件概率。因此,如果我们想知道一张图片是否是Norfolk terrier,我们计算:
出于分类目的,我们假设图像包含一个对象:Pr(physical object)= 1
为了验证这种方法,我们在使用1000类ImageNet构建的WordTree上训练Darknet-19模型。为了构建WordTree1k,我们添加了所有中间节点,将标签空间从1000扩展到1369。在训练过程中,我们在树中传播基础真值标签,这样,如果一个图像被标记为“Norfolk terrier”,它也会被标记为“狗”和“哺乳动物”,等等
使用与之前相同的训练参数,我们的高层次Darknet-19达到了71.9%的前1精度和90.4%的前5精度
这个配方也适用于检测。现在,我们不再假设每个图像都有一个对象,而是使用YOLOv2的对象预测器为我们提供Pr(physical object)的值。检测器预测一个边界框和概率树,我们向下遍历树,在每个分叉处取最高置信度的路径,直到到达某个阈值,然后我们预测对象类
Dataset combination with WordTree
我们可以使用WordTree以合理的方式将多个数据集组合在一起。我们只需将数据集中的类别映射到树中的同义词集。图6显示了一个使用WordTree来组合来自ImageNet和COCO的标签的示例。WordNet是非常多样化的,所以我们可以对大多数数据集使用这种技术
Joint classification and detection
现在我们可以使用WordTree组合数据集,我们可以在分类和检测上训练我们的联合模型
我们使用基本的YOLOv2架构,但只有3个优先级,而不是5个,以限制输出大小。当我们的网络看到检测图像时,我们反向传播正常图像。对于分类损失,我们只在标签的相应级别或以上反向传播损失
当它看到一幅分类图像时,我们只对分类损失进行反向预测
通过这种联合训练,YOLO9000学习使用COCO中的检测数据在图像中查找对象,并使用来自ImageNet的数据学习对各种各样的这些对象进行分类
Conclusion
我们介绍了实时检测系统YOLOv2和YOLO9000。YOLOv2是最先进的,在各种检测数据集上比其他检测系统更快。此外,它可以在各种图像尺寸上运行,以提供速度和准确性之间的平滑权衡。
YOLO9000是一个实时检测框架,通过对检测和分类的共同优化,可以检测9000多种目标类别。我们使用WordTree结合各种来源的数据和我们的联合优化技术在ImageNet和COCO上同时训练,YOLO9000是缩小检测和分类之间数据集大小差距的有力一步
我们的许多技术推广到目标检测之外。我们的ImageNet的WordTree表示为图像分类提供了更丰富、更详细的输出空间,使用层次分类的数据集组合在分类和分割领域是有用的,像多尺度训练这样的训练技术可以在各种视觉任务中提供好处
Future
对于未来的工作,我们希望使用类似的技术进行弱监督图像分割。我们还计划使用更强大的匹配策略来改进检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉具有大量的标记数据,我们将继续寻找将不同来源和数据结构结合在一起的方法,以构建更强大的视觉世界模型