Advertisement

YOLO9000: Better, Faster, Stronger论文解读

阅读量:

学术文章:该研究的预print可在预印本平台上找到(见附录A)。源代码及详细实现则可访问GitHub仓库(见附录B)。

一、简介

yolov2相较于v1版本,在同时保持原有处理速度的前提下,在预测精度更高、运行效率更高以及检测范围更大的前提下实现了多项改进工作。具体而言,在功能模块上进一步扩展至支持检测多达9,000种不同类别的物体,并命名为yolo9k系列

论文探讨了综合运用不同技术的新联合训练方法——联合训练算法。该训练被采用的方法是将两种不同的数据集混合在一起,并通过一种分层的观点对物体进行分类。为了进一步提高检测效率与准确性,在此过程中我们采用了分类数据集来补充和完善检测数据集的内容。最终使得两者得以结合并得到优化

联合训练算法的基本思路:在同一时间或过程内,在检测型数据集合和分类型数据集合上进行物体检测器(Object Detectors)的同步训练。利用检测型数据集合中的实例学习其精确定位位置;同时通过分类型数据集合中的实例来丰富类别数量并增强鲁棒性。

YOLO9000基于联合训练算法被训练出来,并且具备了9千个分类级别的识别能力;这些分类数据源自ImageNet的数据库,并在物体定位任务上,则借鉴了来自COCO目标检测的数据集。

YOLOv2相对于YOLOv1改进策略

在这里插入图片描述

二、YOLOv2网络改进

1、Batch Normalization(归一化)

mAP提升2.4%。

批归一化有助于通过解决反向传播过程中出现的梯度消失和梯度爆炸问题来提升模型性能,并减少了对一些关键超参数如学习率、网络规模等的高度敏感性。此外,在每个批次内部分别进行归一化处理时还带来了一定程度的正则化作用(YOLO2模型选择不采用Dropout技术),从而实现了更快捷地达到更好的收敛效果

在每次训练过程中, 系统会将一批样本输入到神经网络中. 在每层神经网络中, 在经过线性变换并施加非线性激活函数之前插入一个批归一化层. 该归一化过程主要包括两步: 首先是会对每个特征量进行标准化处理, 使得每个特征量服从均值为0, 方差为1的概率分布; 其次会对前一层的结果施加一次仿射转换, 其中Z_1 = \gamma Z + \beta, 其中\gamma\beta 是可学习参数. 这种转换操作的存在主要是为了防止由于前一步骤对数据分布施加改变了而导致原有信息丢失. 这样的设计不仅能够减少计算复杂度, 而且还能够保证各层次之间的信息传递效率.

2、High resolution classifer(高分辨率图像分类器)

mAP提升了3.7%。

图像分类任务拥有大量样本;然而,在用于对象检测任务的样本中带有边界框标注的比例较低;这一现象主要源于边界框标注的工作量较大。因此,在训练目标检测模型时,通常会先利用图像分类任务获得的样本来学习卷积层;值得注意的是这类图像分类样本往往具有较低分辨率;为此YOLOv1模型则采用了从ImageNet中获取的图像分类样本,并将输入尺寸设定为224×224;随后在进行目标检测模型的训练阶段时,则采用了更高分辨率(如448×448)的真实图片作为输入数据;这种策略虽然有助于提升目标检测的效果但在一定程度上可能会影响整体模型性能

所以YOLOv2经过 224 224 图像进行分类模型预训练后,在完成预训练的基础上采用 448 448 的高分辨率样本对分类模型进行进一步优化(10个epoch),帮助网络特征更好地适应 448 _ 的分辨率变化。接着使用 _ 检测样本进行训练以缓解分辨率突变带来的影响

3、Convolution with anchor boxes(使用先验框)

召回率大幅提升到88%,同时mAP轻微下降了0.2左右。

YOLOv1中存在全连接层这一架构设计使得其能够准确推断出目标物体边界框的具体位置信息。相比之下Faster R-CNN则仅依赖卷积层以及Region Proposal Network来推断Anchors的位置偏移及其置信度而不采用直接计算具体位置坐标的策略。研究者发现通过计算位置偏移量而非具体位置信息可以更简化模型结构这有助于降低模型的学习难度

参考Faster RCNN的方法后

过去未采用任何先验框的YOLOv1架构设计中,并未对每个网格单元仅预测两个边界框进行限制。而YOLOv2采用了更为灵活的设计方案,在单个网格单元内可配置多个锚框(anchor boxes),具体而言,在每行(row)内可设置三个锚框的情况下,则总计可生成 (number) 个锚框组合(具体数值需根据具体情况计算)。因此YOLO删除了全连接层以进一步提升模型性能,并引入了Anchor Boxes来实现对边界框的位置信息进行精确定位。作者移除了一个池化层以提高卷积操作的分辨率表现能力,并通过缩放网络使其适应于不同尺寸的应用场景。

因为图片中的物体通常集中在中心位置,并且较大的物体更容易位于画面中央。因此,在处理这些场景时系统会自动识别并定位这些主要物体。YOLO模型采用了固定数值32来进行图像下采样操作这使得计算过程更加高效。通过将输入尺寸设定为416 × 416系统能够生成一个大小为13 × 13的特征图从而提高检测精度。然而使用Anchor Box可能会略微降低检测性能但其带来的好处是可以显著提升模型对多个目标的检测能力Recall值从原本的81%提升至88%同时平均精度(mAP)达到了69.2%。

召回率升高而mAP轻微下降的原因是什么?主要原因在于YOLOv2未采用anchor boxes时,在每个图像中仅估计98个边界框。然而,在采用了anchor boxes之后,YOLOv2模型在每个图像中估计了超过1000个边界框,尽管如此,由于存在大量冗余的边界框,这就导致了mAP值的略微下降。然而,随着边界框数量增加,能够准确识别出与ground truth一致的边界框数量也随之增加.目标检测不仅仅是依靠mAP来评估性能,在某些实际应用场景中,提高召回率同样重要.

4、Dimension Clusters(聚类提取先验框的尺度信息)

原先为Anchord Box设定尺寸的方式属于人工操作,在现有条件下仍存在优化空间。YOLOv2算法通过分析训练数据中的目标边界框特征来确定先验框的最佳尺寸设置。这种做法使得将先验框适应实际目标位置的过程更加简便,并减少了网络微调时的位置适应难度。YOLOv2算法采用基于K-means聚类的方法对训练集中的目标边界框进行分析,并从中提取最佳先验框尺寸特征作为参考依据。

在标准欧式距离基础上应用k-means算法时,在实际应用中会发现较大的框相较于较小的框更容易导致更高的误识别率。这是因为为了使计算出的iou值能够更好地反映两框之间的相似性这一指标与box尺寸密切相关,在选择合适的距离度量时应当考虑这一因素:较大的区域差异可能导致误判的可能性增加。因此,在选择合适的损失函数时我们采用加权iou作为新的损失函数

在聚类过程中,在每一轮迭代中都会重新计算centroid的位置,并将其视为核心的边界线;而box则代表其他类型的边界框;其中d则衡量这两个边界框之间的差距。当IOU值越高时,则表示两个边界框之间的差距越小;YOLOv2算法通过这样的聚类分析将图像分割为若干个区域,并通过下图展示了这一过程

基于实验结果(Figure 2)进行分析后发现,在模型复杂度与高召回率之间进行了权衡的基础上确定了聚类分类数目为K=5。表1显示了聚类的核心数据信息,在其中大多数是以狭长形状出现的Box结构特征明显占优

Table 1 illustrates the use of K-means in selecting Anchor Boxes, demonstrating that when the Cluster IOU threshold is set to 5, the average IOU (61) achieved is notably higher than that obtained without clustering methods (60.9). Furthermore, increasing the threshold to 9 results in a more significant improvement in average IOU values. Overall, this demonstrates that employing clustering techniques yields improved performance.

在这里插入图片描述
在这里插入图片描述
5、Direct location prediction(约束预测边框的位置)

基于Faster RCNN采用的anchor boxes方法,在训练初期阶段容易导致定位预测出现不稳定现象。其位置预测公式如下所示:

在这里插入图片描述

其中x、y代表预测边框的中心坐标

注意在YOLO论文中定义为$x = (t_x * w_a) - x_a然而根据Faster RCNN的研究发现在此问题上应采用加法运算

在这里插入图片描述

其中,

b_x,\ b_y,\ b_w,\ b_h

分别表示预测边框的中心坐标及其宽度和高度。

P_r\left(object\right)\ast IOU\left(b,\ object\right)

代表预测边框与物体之间的交并比值乘以先验概率。
YOLO算法直接将置信度作为输出结果。
在网格划分时需确保每个单元格的高度和宽度均为1单位长度。
其中,

p_w,\ p_h

分别代表先验框的高度和宽度。
其中σ函数表示sigmoid激活函数。
这些t_x, t_y, t_h, t_o
参数用于学习预测边框的位置信息及其置信度评估。

在这里插入图片描述
在这里插入图片描述
6、Fine-Grained Features(passthrough层检测细粒度特征)

passthrough层检测细粒度特征使mAP提升1。

在实际应用过程中会遇到一个关键挑战就是图像中的目标尺寸存在较大差异,在这一过程中输入图像会经历多层次网络处理以提取丰富的特征信息,并最终生成具有特定维度特性的特征图(例如,在YOLOv2架构中, 输入尺寸为416×416的图像经过卷积网络进行下采样处理后, 输出的特征图尺寸为13×13)。值得注意的是, 在这种情况下, 较小的目标往往会导致其对应的特征变得不够突出甚至难以被有效识别. 因此, 为了更好地识别较小的目标, 最终输出的特征图需要更加注重保存这些区域所包含的细微信息.

YOLOv3采用了passthrough层这一技术手段,在其提取的特征图中保留了部分细节信息。详细地说,在YOLOv3网络架构中,在经过最后一次池化操作之前的特征图尺寸为26\times 26\times 512。具体而言,在这一位置上将通道数拆分为四份,并将这四份通道的数据直接传递至池化层之后,并随后经过另一组卷积操作。最后将这两部分特征图进行叠加融合后得到最终输出的特征图。

在这里插入图片描述

通过示意图可以清晰看出,在这一过程中一个4会被分解为四个2,并且由于深度保持不变,在此省略了相应的连接线

在这里插入图片描述

另外,根据YOLOV2的代码,特征图先用1 1卷积从 26 26 512 降维到 26 26*64,再做1拆4并passthrough。

7、Multi-Scale Training(多尺度图像训练)

作者致力于让YOLO v2在各种尺寸的照片上稳定运行,并将其应用于模型训练过程

不同于之前采用补全图片尺寸的方法,在YOLO v2算法中,在每一次迭代后都会调整网络参数值。每隔10批数据后系统会选择一张新的图片进行尺寸测试;该算法设定图像下采样倍数设置为固定值即为32,并且系统会选择不同但均为该倍数整除的结果范围(如:[...])。其中最小的选择是[...] 以及最大的选择是[...] ,系统会根据当前训练进度自动更换图像尺寸,并持续进行训练过程。

该方法通过各种尺寸网络实现优异的效果,并使同一个网络系统具有检测能力,在YOLOv2框架下可以通过调节图像大小实现快速处理与精确检测之间的平衡

在voc2007上的速度与精度

在这里插入图片描述
在这里插入图片描述

YOLOv2经过网络结构调整后可支持多种尺寸的输入图像。常见做法是采用_416×_ 416像素大小作为标准配置,在实际应用中若选用较大尺寸如_512×_ 512像素,则可获得约79.3%的平均精度(mAP),较基础配置提升了大约0.7个百分点。

在voc2012上的运算结果

在这里插入图片描述

在coco上的运行结果

在这里插入图片描述

Darknet-19(backbone网络)如图所示。该网络架构包含19个卷积层以及5个最大值池化层,并通过全局平均池化方法进行推断。同时使用1×1卷积来缩减相邻的3×3卷积特征图的信息量。为了提升训练效果与模型性能稳定性,在批处理归一化技术的基础上完成训练过程,并对模型参数进行标准化处理以加速收敛速度

在这里插入图片描述

Darknet-19仅需约55.8亿次运算即可完成单张图像的处理工作,在ImageNet测试集上实现了72.9%的top-1准确率以及91.2%的top-5准确率的表现

9、Hierarchical classification(分层分类)

该团队开发了一种在分类数据集与目标检测数据集上进行综合训练的机制。该方法利用目标检测数据集中图片信息来学习相关知识内容,在具体表现上包括bounding boxes坐标预测、物体是否存在以及各类别概率等方面的内容。通过仅利用具有类别标签的目标图像来提升可识别物种类别数量。

该研究者利用ImageNet对分类、COCO以及VOC等数据集进行检测模型的训练,并认为这一策略具有较高的实用价值。该方法有助于实现较好的性能水平。在混合使用两个数据集的过程中,在输入来自分类任务的数据时,则仅计算该分支的损失函数值;而当输入来自目标检测任务的数据时,则同时计算整个损失函数。

但是,在ImageNet提供的分类体系中共有9,000个类别,在COCO数据集上仅限于81个目标检测类别。研究者采用多标签模型方法(即一个多标签分类器),其基本假设是同一输入图像可能同时具有多个标签信息,并且并不需要要求这些标签之间具有独立性关系。为了进一步说明这一过程,在研究者所引用的论文中配有多张图表以作辅助说明:其中一项关键策略是基于WordNet选取了ImageNet的分类体系,并将其组织成一种层次结构(称为分层树)。

  1. 遍历每一个Imagenet标签后,在WordNet系统中查找从该标签通向根节点(即指向具体物)的具体路径。
  2. 如果找到仅有一条通向目标的路径,则将其直接整合进层级树架构里。
  3. 当存在多条备选路径时,则会选择其中最优的一条进行整合。

在本研究中,我们将该层次结构命名为 WordTree, 其主要功能是将两种不同的数据集按照层级结构整合在一起

在这里插入图片描述

在分类过程中使用的概率计算借用了决策树的思想,在这一过程中某个具体的分类结果对应的概率值等于从该结果到决策树根部的所有关键判断条件的概率乘积的结果。研究者最终得出了一种名为WordTree的新模型(一种由视觉名词构建而成的层次结构模型)。通过WordTree进行分类时,在各个层级上预测每个具体类别对应的条件概率值。如果要计算某个具体类别的绝对概率值,则只需沿着相关的路径将各个层级上的条件概率进行连乘即可完成运算。例如,在想要判定一张图片是否属于“Norfolk terrier”的时候就需要按照上述步骤进行计算:

在这里插入图片描述

为了通过实验验证该方法的有效性,在ImageNet 1k数据集上构建了WordTree结构(基于ImageNet 224×224分类任务)。研究者在构建WordTree 1k时增加了大量中间层级节点,并将分类粒度从原来的1,000扩展至当前的1,369个类别。在训练过程中,在生成图像的真实标签(ground truth label)会被系统地传播给父节点直至根部节点。例如,在对一张图像进行分类时:如果该图像被系统归类为'Norfolk terrier'这一特定物种,则也会被归类到其父类别'dog'以及祖父类别'mammal'等层次中。在计算条件概率时:该网络会生成一个包含共1,369个元素的条件概率向量;其中每个元素对应于一个特定的概念类别;并且通过基于所有这些概念层次(synonym sets)来计算softmax概率分布值

在进行深度学习模型设计时,在实现分类任务的过程中,在使用Softmax层时也应当同时采用分组操作以提升计算效率。具体而言,在下图中上半部分展示了ImageNet原生的Softmax实现方式,并且下半部分则采用了基于WordTree构建的 Softmax 结构进行优化

在这里插入图片描述

基于该方案构建WordTree结构,并生成包含9418个不同分类的树状数据模型;通过过采样技术确保Imagenet和COCO数据集的比例达到4:1

全部评论 (0)

还没有任何评论哟~