YOLOv2, YOLO9000学习

网址:YOLO9000: Better, Faster, Stronger https://arxiv.org/abs/1612.08242

  1. YOLO9000的特点在于可以检测多于9000个对象类别。使用多尺度训练方式,YOLOv2可以在可变尺度上运行,同时提供速度和准确性之间的平衡。最后,可以联合训练目标检测和分类,即在训练过程中,同时使用COCO检测数据集和ImageNet分类数据集。最后在ImageNet检测任务上进行验证
  2. 本文主要讲了两个模型:YOLOv2和YOLO9000
    1. YOLOv2:在一系列检测数据及上进行训练,且可以在不同尺寸的图像上提供速度和准确性的权衡
    2. YOLO9000:实时框架,通过联合优化检测和分类,可以检测超过9000种对象类别。使用WordTree来将不同源的数据组合起来,并且进行联合优化
  3. 本文主要解决的问题是:很多检测方法只对一系列小的对象集合有效果,泛化性较差。目标是将检测问题扩展到对象分类这一层面上去
  4. 本文的创新点
    1. 对于目标分类,采取一个层次化的视角从而可以将不同的数据集组合在一起
    2. 提出一种联合训练算法,可以在检测和分类中都对对象检测器进行训练。使用已标记好的检测图像来学习如何精准的定位对象,使用分类图像来增加它的数据量和强健性
  5. 本文的目标:在保持分类准确性的同时,来提高recall和localization
  6. 改进之处:
    1. 引入Batch Normalization: 在提高收敛性的同时减小对于正则项的依赖,在YOLOv1的基础上提高多于2%的mAP
    2. 增加高分辨率分类器:YOLOv1在从ImageNet训练好之后,需要同时学习目标检测和调整到新的输入分辨率两个方面。所以对这一方面的改进是:在预训练过程中,进行10epochs的448x448的训练,然后再进行针对检测的精调,提高多于4%的mAP
    3. 将最后的那两个全连接层去掉,换上anchor boxes来预测bb。去掉一个池化层。将输入尺寸换成416x416,并且使用卷积层对其进行32尺度的下采样,输出13x13的特征图,注意,这个13x13只是卷积层的输出维度。注意到,当时用anchor box时,将类别预测与空间位置进行了解耦,可以直接对每一个anchor box进展类别的预测,并且计算其objectness。这个objectness预测和类别预测和YOLOv1的计算方法一致。效果:虽然精度上有较小的下降,但是模型可以预测超过1000种对象,有69.2mAP, 88%的召回率
    4. 维数聚类:y因为使用了anchor box,这个box的维数是手动选择的,但是有一个好的先验,可以帮助网络更简单的学习以达到更好的预测。使用k-means聚类方法来自动化的寻找好的先验,其中在k-means方法中采用的距离度量函数为在这里插入图片描述。这个函数的目的很单纯,就是想让先验函数产生好的IOU分数,且与box的尺寸无关。最后选择的是k=5来作为模型复杂度和高召回率的平衡,这将会有更少的矮宽型box,将会有更多高瘦型box
      在这里插入图片描述
      由上图可以看出,使用5个先验,centroids产生的效果与使用9个anchor boxes的效果相近,如果使用9个先验,那么就会得到一个更高的平均IOU。使用K-means来产生bb,可以使得模型有一个更好的表示同时使得任务更简单的进行学习
    5. 直接位置预测:因为引入了anchor box,在早期迭代过程中,由于box的(x, y)位置的预测会不稳定,所以仍然沿用YOLOv1模型中的方法,相对于grid cell的位置来预测位姿坐标,使用logistic激活函数。
      这个网络中,会为输出特征图中的每一个cell会预测5个bb,对于每一个bb预测5个坐标。其中,(cx, cy)表示当前cell距离图片左上角的偏移量,(pw, ph)表示bb先验。该方法在anchor boxes版本的基础上又提高了至多5%的mAP
      在这里插入图片描述
      在这里插入图片描述
    6. 精粒度的特征:修改版的YOLO在13x13维度的特征图上来预测检测。直接将26x26层的特征连接到当前的特征涂上来得到更精粒度的特征,这有助于定位较小的对象。注意,这个passthrough层将高分辨率特征和低分辨率特征通过将邻接的特征对丢到不同的通道上来实现,而不是将它们在空间位置上进行堆叠,也就是说,原先26x26x512的特征图将会被变成13x13x2048维度的特征图,此时就可以与原先的特征图相连接了。这个可以带来1%的性能提升
    7. 多尺度训练:为了能够适应不同尺度的输入,所以在训练过程中,每经过一些迭代,就改变网络。具体的,每经过10个batches,网络就随机选择一个新的图像维度尺寸。由于后面会进行32的下采样,所以是32的倍数,{320, 352, ……, 608}。这种直接在训练过程中修改模型输入图像尺寸的方法可以强制网络对于不同输入维度都可以有很好的预测。也即相同的网络可以以不同的分辨率来预测检测
    8. 网络结构,最终名字叫做Darknet-19
      在这里插入图片描述
  7. 结果
    在这里插入图片描述
    下面这一个图可以很清楚的表示YOLOv2相较于YOLOv1有了哪些改进
    在这里插入图片描述
  8. 在Darkent-19的基础上进行分类和检测工作
    1. 分类:在ImageNet 1000类别的分类数据集上进行训练,使用数据增强。初始时以224x224进行训练,后面10个epoches使用448x448的尺寸进行精调
    2. 检测:将最后一层卷积层去掉,加上3个3x3的卷积层,其中每个卷积层有1024个filters,每一个3x3卷积层之后会各接一个1x1的卷积层,其filters的数目为待检测类别的数目
  9. 使用仅有类别标签的图像来扩展都它可以检测的类别数目。将输入的检测和分类的数据集进行混合训练,一旦看到用于检测的图像,就基于完整的YOLOv2的损失函数进行反向传播;当只看到用于分类的图像,那么只将与分类相关的部分进行反向传播
    但是,如何根据结构来判断最终可能的类别,如果使用softmax,结果之间将是互斥的,这对于数据集的组合来说并不适用,因为不同数据集标记的内容并不会是完全互斥的。所以,采取的方法是多标签模型,这个模型将忽略已知的对数据那些结构
  10. 由于不同数据集的标签写法不同,所以需要将不同数据集的标签进行统一,为此,根据ImageNet的特点,构建WordTree,即YOLO9000,是一个实时架构可以检测超过9000种对象类别。此时,如果需要计算一个特定节点的绝对概率名词是需要从树的根开始一直到叶节点在这里插入图片描述
    将Darknet-19在WordTree上进行训练,我们会将标签沿着树进行传播,即如果一幅图像被标记为Norfolk terrier,它也会被标记成dog和mammal。为了计算条件概率,我们在所有同义词之间计算softmax。即使用WordTree的关键是构建树中的同义词集合
    在这里插入图片描述
    在这里插入图片描述
    在进行预测时,我们从上到下对树进行遍历,每一个split时都选择最高的confidence路径,直到我们遇到一些阈值,然后我们就可以预测这个对象的类别
    当看到一个分类的图片是我们只将分类损失进行反向传播。首先获得具有最高概率的bb,然后只在该预测树上计算损失
    同时假设预测的box至少要与金标准有.3 IOU时才会将其objectness 损失进行反向传播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值