目录
前言
一、Faster(更快)
1、Darknet-19
2、Training for classification(分类训练)
3、Training for detection(检测训练)
二、Stronger(更强)
1、Hierarchical classification(分层分类)
2、Dataset combination with WordTree(使用词根树组合数据集)
3、Joint classification and detection(联合分类和检测)
三、Conclusion(结论)
四、后记
前言
继续做YOLO v2的论文翻译。
如果你是第一次看我的博客,可以点击以下链接去看更多有关于YOLO的内容。
【YOLO系列】
1.YOLO v1 论文笔记1
2.YOLO v1 论文笔记2
3.YOLO v2 论文翻译1
4.YOLO 代码实战
5.YOLO数据集制作1(含LabelImg工具讲解)
6.YOLO数据集制作2
7.YOLO配置文件解析
8.什么是mAP
9.“分类” 与 “回归”详解
由于论文本身内容比较多这篇论文我分两次翻译完,这次从名为“更快”的章节开始,一直到论文的结束。
接下来就让我们继续学习这篇论文,跟随这篇论文一起走进YOLO v2的世界吧!
一、Faster(更快)
我们希望检测是准确的,但我们也希望它是快速的。大多数检测应用(如机器人或自动驾驶机车)依赖于低延迟预测。为了最大限度提高性能,我们从头开始设计YOLOv2。
大多数检测框架依赖于VGG-16作为的基本特征提取器。VGG-16是一个强大的,准确的分类网络,但它是很复杂,也不是必要的。在单张图像224×224分辨率的情况下VGG-16的卷积层运行一次传递需要306.90亿次浮点运算。
YOLO框架使用基于Googlenet架构的自定义网络。这个网络比VGG-16更快,一次前馈传播只有85.2亿次的操作。然而,它的准确性比VGG-16略差。在ImageNet上,对于单张裁剪图像,224×224分辨率下的top-5
准确率,YOLO的自定义模型获得了88.0%,而VGG-16则为90.0%。
1、Darknet-19
我们提出一个新的分类模型作为YOLO v2的基础。我们的模型建立在网络设计先前工作以及该领域常识的基础上。与VGG模型类似,我们大多使用3×3的滤波器,并在每个池化步骤之后使通道数量加倍。按照Network in Network(NIN)的工作,我们使用全局平均池化做预测以及1×1滤波器来压缩3×3卷积之间的特征表示。我们使用批标准化来稳定训练,加速收敛,并正则化模型。
我们的最终模型叫做Darknet-19,它有19个卷积层和5个最大池化层。完整描述请看表6。Darknet-19只需要55.8亿次运算来处理图像,但在ImageNet上却达到了72.9%的top-1
准确率和91.2%的top-5
准确率。
表6:Darknet-19
2、Training for classification(分类训练)
我们使用随机梯度下降(起始学习率为0:1)、多项式速率衰减(4次方)、权重衰减(0:0005)和动量衰减(0:9)在标准ImageNet 1000类分类数据集上对网络进行了160次的训练。在训练期间,我们使用标准的数据增强技巧,包括随机作物、旋转、色调、饱和度和曝光偏移。
如上所述,在我们对224×224的图像进行初始训练之后,我们对网络在更大的尺寸448上进行了微调。对于这种微调,我们使用上述参数进行训练,但是只有10个迭代周期,并且以0.001的学习率开始。在这种更高的分辨率下,我们的网络达到了76.5%的top-1
准确率和93.3%的top-5
准确率。
3、Training for detection(检测训练)
我们修改这个网络进行检测:删除了最后一个卷积层,加上了三个具有1024个滤波器的3×3卷积层,其后是最后的1×1卷积层与我们检测需要的输出数量。对于VOC,我们预测5个边界框,每个边界框有5个坐标和20个类别,所以有125个滤波器。我们还添加了从最后的3×3×512层到倒数第二层卷积层的直通层,以便我们的模型可以使用细粒度特征。
我们训练网络160个迭代周期,初始学习率为0.001,在60个和90个迭代周期时将学习率除以10。我们使用0.0005的权重衰减和0.9的动量。我们对YOLO和SSD进行类似的数据增强,随机裁剪,色彩偏移等。我们对COCO和VOC使用相同的训练策略。
二、Stronger(更强)
我们提出了一个联合训练分类和检测数据的机制。我们的方法使用标记为检测的图像来学习边界框坐标预测和目标之类的特定检测信息以及如何对常见目标进行分类。它使用仅具有类别标签的图像来扩展可检测类别的数量。
在训练期间,我们混合来自检测和分类数据集的图像。当我们的网络看到标记为检测的图像时,我们可以基于完整的YOLOv2损失函数进行反向传播。当它看到一个分类图像时,我们只能从该架构的分类特定部分反向传播损失。
这种方法提出了一些挑战。检测数据集只有通用目标和通用标签,如“狗”或“船”。分类数据集具有更广更深的标签范围。ImageNet有超过一百种品种的狗,包括Norfolk terrier
,Yorkshire terrier
和Bedlington terrier
。如果我们想在两个数据集上训练,我们需要一个连贯的方式来合并这些标签。
大多数分类方法使用跨所有可能类别的softmax层来计算最终的概率分布。使用softmax假定这些类是相互排斥的。这给数据集的组合带来了问题,例如你不想用这个模型来组合ImageNet和COCO,因为类Norfolk terrier
和dog
不是相互排斥的。
我们可以改为使用多标签模型来组合不假定互斥的数据集。这种方法忽略了我们已知的关于数据的所有结构,例如,所有的COCO类是互斥的。
1、Hierarchical classification(分层分类)
ImageNet标签是从WordNet中提取的,这是一个构建概念及其相互关系的语言数据库。在WordNet中,Norfolk terrier
和Yorkshire terrier
都是terrier
的下义词,terrier
是一种hunting dog
,hunting dog
是dog
,dog
是canine
等。分类的大多数方法为标签假设一个扁平结构,但是对于组合数据集,结构正是我们所需要的。
WordNet的结构是有向图,而不是树,因为语言是复杂的。例如,dog
既是一种canine
,也是一种domestic animal
,它们都是WordNet中的同义词。我们不是使用完整的图结构,而是通过从ImageNet的概念中构建分层树来简化问题。
为了构建这棵树,我们检查了ImageNet中的视觉名词,并查看它们通过WordNet图到根节点的路径,在这种情况下是“物理对象”。许多同义词通过图只有一条路径,所以首先我们将所有这些路径添加到我们的树中。然后我们反复检查我们留下的概念,并尽可能少地添加生长树的路径。所以如果一个概念有两条路径到一个根,一条路径会给我们的树增加三条边,另一条只增加一条边,我们选择更短的路径。
最终的结果是WordTree,一个视觉概念的分层模型。为了使用WordTree进行分类,我们预测每个节点的条件概率,以得到同义词集合中每个同义词下义词的概率。例如,在terrier
节点我们预测:
如果我们想要计算一个特定节点的绝对概率,我们只需沿着通过树到达根节点的路径,再乘以条件概率。所以如果我们想知道一张图片是否是Norfolk terrier
,我们计算:
为了分类目的,我们假定图像包含一个目标:
为了验证这种方法,我们在使用1000类ImageNet构建的WordTree上训练Darknet-19模型。为了构建WordTree1k,我们添加了所有将标签空间从1000扩展到1369的中间节点。在训练过程中,我们将真实标签向树上面传播,以便如果图像被标记为Norfolk terrier
,则它也被标记为dog
和mammal
等。为了计算条件概率,我们的模型预测了具有1369个值的向量,并且我们计算了相同概念的下义词在所有同义词集上的softmax,见图5。
图5:在ImageNet与WordTree上的预测
图注:大多数ImageNet模型使用一个较大的softmax来预测概率分布。使用WordTree,我们可以在共同的下义词上执行多次softmax操作。
使用与以前相同的训练参数,我们的分级Darknet-19达到71.9%的top-1
准确率和90.4%的top-5
准确率。尽管增加了369个额外的概念,而且我们的网络预测了一个树状结构,但我们的准确率仅下降了一点点。以这种方式进行分类也有一些好处。在新的或未知的目标类别上性能会优雅地降低。例如,如果网络看到一只狗的照片,但不确定它是什么类型的狗,它仍然会高度自信地预测“狗”,但是在下义位扩展之间有更低的置信度。
这个构想也适用于检测。现在,我们不是假定每张图像都有一个目标,而是使用 YOLO v2 的目标预测器给我们Pr(physical object)的值。检测器预测边界框和概率树。我们遍历树,在每个分割中采用最高的置信度路径,直到达到某个阈值,然后我们预测目标类。
2、Dataset combination with WordTree(使用词根树组合数据集)
我们可以使用词根树以很好的方式将多个数据集组合在一起。我们只需将数据集中的类别映射到树中的同步集。图6显示了使用词根树组合来自ImageNet和COCO的标签的示例。WordNet非常多样化,因此我们可以将此技术用于大多数数据集。
图6:使用WordTree层次结构组合数据集。
图注:利用WordNet概念图构建了可视化概念的层次树。然后我们可以通过将数据集中的类映射到树中的同步集来将数据集合并在一起。这是用于说明的词根树的简化视图。
3、Joint classification and detection(联合分类和检测)
现在我们可以使用词根树组合数据集,我们可以在分类和检测上训练联合模型。我们想要训练一个非常大规模的检测器,所以我们使用COCO检测数据集和完整的ImageNet版本中的前9000个类来创建我们的组合数据集。我们还需要评估我们的方法,以便从ImageNet检测挑战中添加任何尚未包含的类。该数据集的相应词根树有9418个类别。ImageNet是一个更大的数据集,所以我们通过对COCO进行过采样来平衡数据集,使得ImageNet仅仅大于4:1的比例。
我们使用这个数据集训练YOLO9000。我们使用基本的YOLO v2 架构,但是只有3个优先级而不是5个优先级来限制输出大小。当我们的网络看到一个检测图像时,我们将反向传播损失视为正常。对于分类损失,我们只在标签的相应级别或以上进行反向传播损失。例如,如果标签是“狗”,我们会将任何错误分配给树下的预测,“德国牧羊犬”对比“黄金猎犬”,因为我们没有这些信息。
当它看到分类图像时,我们只会反向传播分类丢失。要做到这一点,我们只需找到预测类的最高概率的边界框,然后只计算其预测树上的损失。我们还假设预测框与地面真值标签重叠至少0.3 IOU,并基于此假设反向传播物体损失。
使用这种联合训练,YOLO9000学习使用COCO中的检测数据来查找图像中的目标,并学习使用来自ImageNet的数据对各种目标进行分类。
我们在ImageNet检测任务上评估YOLO9000。ImageNet的检测任务与COCO共享44个目标类别,这意味着YOLO9000只能看到大多数测试图像的分类数据,而不是检测数据。YOLO9000在从未见过任何标记的检测数据的情况下,整体上获得了19.7 mAP,在不相交的156个目标类别中获得了16.0 mAP。这个mAP高于DPM的结果,但是YOLO9000在不同的数据集上训练,只有部分监督。它也同时检测9000个其他目标类别,所有的都是实时的。
当我们分析YOLO9000在ImageNet上的表现时,我们发现它很好地学习了新的动物种类,但是却在像服装和设备这样的学习类别中徘徊。新动物更容易学习,因为目标预测可以从COCO中的动物泛化的很好。相反,COCO没有任何类型的衣服的边界框标签,只针对人,因此YOLO9000正在努力建模“墨镜”或“泳裤”等类别。
三、Conclusion(结论)
我们介绍了YOLO v2 和YOLO9000,两个实时检测系统。YOLO v2 在各种检测数据集上都是最先进的,也比其他检测系统更快。此外,它可以运行在各种图像大小,以提供速度和准确性之间的平滑折衷。
YOLO9000是一个通过联合优化检测和分类来检测9000多个目标类别的实时框架。我们使用WordTree将各种来源的数据和我们的联合优化技术相结合,在ImageNet和COCO上同时进行训练。YOLO9000是在检测和分类之间缩小数据集大小差距的重要一步。
我们的许多技术都可以泛化到目标检测之外。我们对ImageNet的词根树表示为图像分类提供了更丰富,更详细的输出空间。使用分层分类的数据集组合在分类和分割领域将是有用的。像多尺度训练这样的训练技术可以为各种视觉任务提供益处。
对于未来的工作,我们希望使用类似的技术来进行弱监督的图像分割。我们还计划使用更强大的匹配策略来改善我们的检测结果,以在训练期间将弱标签分配给分类数据。计算机视觉受到大量标记数据的祝福。我们将继续寻找方法,将不同来源和数据结构的数据整合起来,形成更强大的视觉世界模型。
四、后记
终于翻译完了一篇,其实这次的翻译速度远快于第一篇,YOLO v1是我第一次翻译外文论文,当时英语水平不行,对深度学习的专业术语,相关概念也不是很了解,很多单词不知道该如何翻译成汉语,如今,快一年过去了,也翻译了几篇外文论文了,翻译的也有些感觉,知道的相关术语也多了。
但是在这条路上,我还是一个小白,差的还很多,需要学习,需要努力的还有很多。希望大家能够喜欢我的“深度学习论文翻译”系列,这只是一个开端,在今后,我会深入研究机器学习和区块链技术,深度学习会根据自己的项目需要去做相关的研究。感谢每一个人对我的支持,我会继续努力,写出让大家能够受益匪浅的博客。也希望我们能够一起努力,一起加油。
未来还在脚下,需要我们一步一步走过去。
标签:02,分类,YOLO9000,检测,YOLO,Better,ImageNet,数据,我们 From: https://blog.51cto.com/u_12001271/5984329