YOLO9000 Better, Faster, Stronger

YOLO9000: Better, Faster, Stronger学习笔记

摘要

yolo9000,最先进的,实时的目标检测系统,可以检测超过9000个类别。

yolov2提出了很多新的改进方法,无论是新的还是在原有的yolov1中汲取的。

yolov2使用新颖的,多尺度训练方法,它可以在各种尺寸的图片上运行(yolov1固定图片尺寸448*448),从而在速度与准确度之间平衡。

yolov2在VOC 2007数据集上达到67fps的同时,还有着76.8mAP,当fps在40的时候,yolov2就能达到78.6的mAP,效果优于最先进的带有ResNet和SSD的Faster-RCNN,同时它还是运行最快的。

最后作者提出了一种联合训练对象检测和分类的算法,并在COCO检测数据集和ImageNet分类数据集上同时训练yolo9000。在这种联合训练下,yolov2可以预测没有标记数据集的对象(即图像分类中有的,但是目标检测数据集中没有的类别)

1.介绍

通用的目标检测应当是快速的、准确的,而且应当具备识别大量的目标。自从引入神经网络之后,目标检测的框架变得越来越快速和准确,但是大部分的目标检测方法都只能受限于一小部分目标。(作者提出当前目标检测的特点-----快速而准确,但是能识别的目标还不够多)

与分类和标记等其他任务的数据集相比,当前的对象检测数据集是有限的。最常见的检测数据集包含数千到数十万张图片但是只有数十到数百个标签。分类数据集有数百万张图像,具有数万或数十万个类别。(当前的目标检测数据集远不如分类数据集)获得标记对象检测数据集远比获得标记分类数据集(标签通常由用户免费提供-----steam中注册账号的时候人机识别免费标注公交车和直行车之类的)要花的代价更多。

作者提出解决数据集的方法:使用对象分类的分层视图,允许我们将不同的数据集组合在一起

作者提出联合训练算法:让yolov2同时在目标检测数据集和分类数据集上同时训练目标检测。利用标记的检测图像让yolov2来学习精确定位对象,同时使用分类图像来增加其识别的类别和鲁棒性

2.更好的

回顾yolov1,和Fast R-CNN相比,yolov1产生了大量的定位错误,此外相比较于候选区域定位法,yolov1有着更低的召回率。因此,作者在专注于提高召回率(recall,所有真实目标中被检测的比例)和定位问题的同时还要保持yolo的分类准确性。

更好的性能通常取决于训练更大的网络或将多个模型集成在一起,但是对于yolov2,作者想要的是更准确,速度更快的检测系统,而不是简简单单的扩大自己的网络。相反,作者有意简化自己的网络,使其表示更容易学习

在这里插入图片描述

  • 批量标准化(对每一个输出的神经元进行标准化)

    • 批量归一化可以显着提高收敛性,同时消除对其他形式的正则化的需求 。通过在 YOLO 中的所有卷积层上添加批量归一化,yolov2的 mAP 提高了 2% 以上。批量标准化也有助于规范化模型。通过批量标准化,我们可以在不过度拟合的情况下从模型中移除dropout。
  • 高分辨分类器

    • 从 AlexNet 开始,大多数分类器对小于 256 × 256的输入图像进行操作。原 YOLO 以 224 × 224 训练分类器网络,并将分辨率提高到 448 用于检测。这意味着网络需要同时切换到学习对象检测并调整到新的输入分辨率。

    • 对于 YOLOv2,作者首先在 ImageNet 上以 448 × 448 的全分辨率微调分类网络 10 个 epoch。这使网络有时间调整其过滤器以更好地处理更高分辨率的输入。然后,在检测时微调生成的网络。这种高分辨率分类网络使yolov2的 mAP 增加了近 4%。

  • 带有锚盒的卷积

    • YOLO 直接使用卷积特征提取器之上的全连接层来预测边界框的坐标.

    • Faster R-CNN 不是直接预测坐标,而是使用手工挑选的先验预测边界框,模型输出的是预测框相对于这些手动选取边界框的偏移量。Faster R-CNN 中的区域提议网络 (RPN,候选区) 仅使用卷积层来预测锚框的偏移量和置信度。

    • 预测偏移量而不是坐标可以简化问题并使网络更容易学习。

    • 作者在yolov1的基础上移除了全连接层,增加了锚点盒子来预测边界框。首先作者移除了一个池化层来提高卷积层的高分辨率输出,作者还缩小了网络让输入图象是416x416而不是448x448。这样做是因为想要在特征图中有奇数个位置,所以只有一个中心单元,这个中心单元用来预测图片中最大的那个物体(yolov1是四个单元预测一个大物体)。YOLO 的卷积层将图像下采样 32 倍,因此通过使用 416 的输入图像,我们得到 13 × 13 的输出特征图

    • 使用锚框,yolov2的准确性会略有下降。 YOLO 仅预测每张图像 98 个框,但使用锚框,yolov2的模型预测将近1000 个框(416/32=13,13x13x5=845)。在没有锚框的情况下,yolov1的中间模型得到 69.5 mAP,召回率为 81%。使用锚框,yolov2的模型获得 69.2 mAP,召回率为 88%。尽管 mAP 降低了,但召回率的增加意味着模型还有更多的改进空间。

  • 数据集标注框长宽聚类

    • 在 YOLO 中使用锚框时,作者遇到了两个问题。首先是盒子尺寸是手工挑选的。网络可以学习适当地调整框,但是如果我们为网络选择更好的先验(锚框)(指定更好的长宽比例),就可以让网络更好的学习预测更好的目标。

    • 在yolov2中,作者不在手动挑选锚框,而是在训练集边界框中运行k-means聚类,让它来告诉我们最佳锚框长宽比是多少。k-means算法,作者选择k=5,一个网格框产生5个边界框。

  • 直接位置预测

    • 在 YOLO 中使用锚框时,遇到了第二个问题:模型不稳定,尤其是在早期迭代期间。大多数不稳定性来自预测框的 (x, y) 位置。在候选区域网络中,网络预测值 tx 和 ty 并且 (x, y) 中心坐标计算为(有些up认为这个计算公式是错误的)。预测中心坐标(x,y)等于输出的偏移量(tx,ty)乘上锚框的宽高(wa,ha)然后加航锚框的中心坐标(xa,ya)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rg2Rh3uy-1665836376272)(D:\陈芳林\Documents\人工智能学习\image-20221014160006044-1665734409812-1.png)]

  • 细粒度特征
    • 修改后的 YOLO 在13*13的特征图上预测目标检测。虽然这对于大型对象来说已经足够了,但是加上细粒度特征后,它也可以更好的检测小物体(弥补yolov1对小目标检测的缺陷)。 Faster R-CNN 和 SSD 都在网络中的各种特征图上运行他们的候选区域网络,以获得一系列分辨率。作者采用了不同的方法,只需添加一个直通层,从前面的层中引入26x26分辨率的特征。

    • 直通层通过将相邻特征堆叠到不同的通道而不是空间位置来连接更高分辨率的特征和低分辨率的特征,类似于 ResNet 中的恒等映射。

    • 这将 26 × 26 × 512 的特征图变成了 13 × 13 × 2048 的特征图,可以与原始特征进行拼接。我们的检测器在这个扩展的特征图之上运行,因此它可以访问细粒度的特征。这会带来 1% 的适度性能提升

    • (具体的拆分方法没有弄懂,同济子豪兄yolov2 论文讲解59:02处)

  • 多尺度训练
    • 原始 YOLO 使用 448 × 448 的输入分辨率。通过添加锚框,我们将分辨率更改为 416×416。作者希望 YOLOv2 能够在不同大小的图像上运行,因此他们将这个想法训练到模型中。

    • 作者不是固定输入图像的大小,而是每隔几次迭代就改变网络。每 10 批他们的网络就会随机选择一个新的图像尺寸。由于作者的模型下采样了 32 倍,因此他们从以下 32 的倍数中随机挑选尺度:{320, 352, …, 608}。因此,最小的选项是 320 × 320,最大的选项是 608 × 608。(这种制度迫使网络学会在各种输入维度上进行良好的预测)这意味着同一个网络可以预测不同分辨率的检测。网络在较小的尺寸下运行得更快,因此 YOLOv2 提供了速度和准确性之间的简单权衡。

    • 在低分辨率下,YOLOv2 是一种廉价且相当准确的检测器。在 288 × 288 时,它以超过 90 FPS 的速度运行,mAP 几乎与 Fast R-CNN 一样好。这使其非常适合较小的 GPU、高帧率视频或多个视频流场景。

    • 在高分辨率下,YOLOv2 是最先进的检测器,在 VOC 2007 上具有 78.6 mAP,同时仍以高于实时速度运行。

    • 在这里插入图片描述

3.更快的

大多数检测框架依赖 VGG-16 作为基本特征提取器 。VGG-16 是一个强大、准确的分类网络,但它太过复杂。VGG-16 的卷积层需要306.9亿次浮点运算才能在 224 × 224 分辨率的单个图像上进行单次传递。YOLO 框架使用基于 Googlenet 架构的自定义网络。这个网络比 VGG-16 更快,前向传递只使用了 85.2 亿次操作。但是,它的准确性比 VGG16 略差。对于 224 × 224 的单裁剪、top-5 (模型预测五个结果,只要猜中一个就算对了)准确率,在这种224x224单裁剪,top5的准确率中YOLO 的自定义模型获得 88.0%的准确率,而 VGG-16 为 90.0%。

  • Darknet-19(新的骨干网络)
    • 作者提出了一个新的分类模型骨干网络作为yolov2的基本网络。这个模型建立在先前设计的网络(应该指的是yolov1的网络)以及该领域的常识之上。与 VGG 模型类似,我们主要使用 3 × 3 过滤器,并且在每个池化步骤之后将通道数加倍。受 Network in Network (NIN) 论文启发,作者去掉了全连接层采用全局平均池化。作者使用全局平均池进行预测,并使用 1 × 1 卷积在 3 × 3 卷积之间进行降维(先用1x1卷积降维,然后用3x3卷积低纬度卷积,再用1x1卷积升维)。
    • 最终模型称为 Darknet-19,有 19 个卷积层和 5 个最大池化层。Darknet-19 只需要 55.8 亿次操作来处理图像,但在 ImageNet 上实现了 72.9% 的 top-1 准确率和 91.2% 的 top-5 准确率。(参数变少,计算量变少,同时还保持目标检测的快速识别)
      在这里插入图片描述
  • 分类训练
    • 作者使用随机梯度下降法在标准 ImageNet 1000 类分类数据集上训练了Darknet-19有 160 个回合,起始学习率为 0.1,使用了4次多项式速率衰减,权重衰减为 0.0005,动量为 0.9,Darknet神经网络框架在训练期间,作者使用标准的数据增强技巧,包括随机裁剪、旋转以及色调、饱和度和曝光变化(解决了作者刚开始提出的目标检测数据集不足的问题)。
  • 检测训练
    • 为了进行检测,作者修改了这个网络,去掉了最后一个卷积层,取而代之的是增加三个3 × 3的卷积层,每个3 × 3的卷积层有1024个卷积核,最后一个1 × 1的卷积层有检测所需的输出数。作者还从最后的 3 × 3 × 512 层到倒数第二个卷积层添加了一个直通层,以便模型可以融合最后一层的细粒度特征和高层的抽象特征。

4.更强大的

作者提出联合训练和检测的机制: 使用标记的图像让检测器来学习特定于检测的信息,例如边界框坐标预测和对象性,以及如何对常见对象进行分类。

在训练期间,作者混合来自检测和分类数据集的图像。当网络看到标记为检测的图像时,可以基于完整的 YOLOv2 损失函数进行反向传播。当它看到分类图像时,我们只从体系结构的分类特定部分反向传播损失。

这种方法遇到的挑战:

目标检测数据集只有一些常见的目标和标签,比如狗和船。而目标分类的数据集则不管在种类和数量上都多的多(ImageNet 拥有一百多种犬种,包括“诺福克梗犬”、“约克夏梗犬”和“贝灵顿梗犬”)。如果想在两个数据集上进行训练,则我们需要一种连贯的方式来合并这些标签。

作者提出的解决方案

  • 分级分类

    • ImageNet 标签是从 WordNet (WordNet 是一种语言数据库,用于构建概念及其相互关系)中提取的,在 WordNet 中,“诺福克梗”和“约克夏梗”都是“梗犬”的下义词,“梗犬”是“猎犬”的一种,“狗”是“犬”的一种,等等。大多数分类方法都假设标签具有平面结构,但是对于组合数据集,结构正是我们所需要的
    • WordNet 的结构是有向图,而非层次树状结构,因为语言很复杂。例如,“狗”既是“犬”的一种,又是“家畜”的一种,它们都是 WordNet 中的同义词。所以作者就没有使用这种复杂的结构,而是通过从 ImageNe 中的概念构建分层的树状结构。
    • 为了构建这棵树,作者研究了ImageNet 中的视觉名词,基于wordnet,把他从根节点往下排(根节点是physical object),同义词只有一条路连接加在树上。然后我们迭代地检查我们留下的名词,并尽可能少地添加树的路径。因此,如果一个名词有两条到根的路径,一条路径将向我们的树添加三条边,而另一条只添加一条边,我们选择较短的路径。最后的结果就称为WordTree。
  • 数据集与WordTree的组合

    • 我们可以使用 WordTree 以合理的方式将多个数据集组合在一起。我们只是将数据集中的类别映射到树中的同义词集。 WordNet 非常多样化,因此我们可以将这种技术用于大多数数据集。
      在这里插入图片描述
  • 联合分类与检测

    • 现在我们可以使用 WordTree 组合数据集,我们可以在分类和检测方面训练我们的联合模型。我们想训练一个超大规模的检测器,因此作者使用 COCO 检测数据集和完整 ImageNet 版本中的前 9000 个类别创建组合数据集。作者为了评估这个方法,他添加了 ImageNet 检测挑战中尚未包含的任何类,然后在Image net目标检测数据集上进行测试。
    • 网络看到检测图像时,会像往常一样反向传播损失。对于分类损失,我们只在标签相应级别或以上进行反向传播损失。例如,如果标签是“狗”,那么就只把标签赋予到“狗”这个层次,不会再往后去查找它到底是什么狗。
    • 当它看到分类图像时,我们只反向传播分类损失。为此,我们只需找到预测该类最高概率的边界框,然后仅计算其预测树的损失。我们还假设预测框与地面实况标签重叠至少 0.3 IOU,我们基于此假设反向传播对象损失。
    • 通过这种联合训练,YOLO9000 学习使用 COCO 中的检测数据在图像中查找对象,并学习使用来自 ImageNet 的数据对各种这些对象进行分类
    • yolo9000也有一些小缺点,比如它可以很好地学习新的动物,但是对学习衣服和装备的时候却很吃力。新动物更容易学习,因为客观性预测很好地概括了 COCO 中的动物。相反,COCO 没有针对任何类型服装的边界框标签,仅针对人有边界框标签,因此 YOLO9000 难以为“太阳镜”或“泳裤”等类别建模。

总结

YOLOv2 是最先进的检测系统,并且在各种检测数据集中比其他检测系统更快。此外,它可以在各种图像尺寸下运行,以提供速度和准确性之间的平滑折衷。

YOLO9000 是一个实时框架,通过联合优化检测和分类来检测超过 9000 个对象类别。作者使用 WordTree 结合来自各种来源的数据和他们的联合优化技术,在 ImageNet 和 COCO 上同时进行训练。 YOLO9000 是朝着缩小检测和分类之间的数据集大小差距迈出的重要一步。

作者的许多技术都在对象检测之外进行推广。他们的 ImageNet 的 WordTree 表示为图像分类提供了更丰富、更详细的输出空间。使用分层分类的数据集组合将在分类和分割领域中很有用。多尺度训练等训练技术可以为各种视觉任务带来好处

作者对未来的展望

对于未来的工作,我们希望使用类似的技术进行弱监督图像分割。我们还计划使用更强大的匹配策略来改进我们的检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉拥有大量标记数据。我们将继续寻找将不同来源和数据结构整合在一起的方法,以构建更强大的视觉世界模型

对于未来的工作,我们希望使用类似的技术进行弱监督图像分割。我们还计划使用更强大的匹配策略来改进我们的检测结果,以便在训练期间为分类数据分配弱标签。计算机视觉拥有大量标记数据。我们将继续寻找将不同来源和数据结构整合在一起的方法,以构建更强大的视觉世界模型

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值