您好,欢迎来到微智科技网。
搜索
您的当前位置:首页目标检测总结(onestage)

目标检测总结(onestage)

来源:微智科技网
⽬标检测总结(onestage)

让我们再看⼀下滑动窗⼝检测器。我们可以通过在特征图上滑动窗⼝来检测⽬标。对于不同的⽬标类型,我们使⽤不同的窗⼝类型。以前的滑动窗⼝⽅法的致命错误在于使⽤窗⼝作为最终的边界框,这就需要⾮常多的形状来覆盖⼤部分⽬标。更有效的⽅法是将窗⼝当做初始猜想,这样我们就得到了从当前滑动窗⼝同时预测类别和边界框的检测器。

单次检测器通常需要在准确率和实时处理速度之间进⾏权衡。它们在检测太近距离或太⼩的⽬标时容易出现问题。

Faster R-CNN速度上并不能满⾜实时的要求。YOLO这类⽅法使⽤了回归的思想,既给定输⼊图像,直接在图像的多个位置上回归出这个位置附近的⽬标位置和⽬标类别。

(1.1)YOLOv1 (CVPR2016, oral)检测流程:

1.给定⼀个输⼊图像,⾸先将图像分割成7*7的⽹格

2.对于每个⽹格,都负责预测2个边框(包括每个边框的位置,⽬标物体置信度和多个类别上的概率)

3.根据上⼀步可以预测7*7*2个⽬标窗⼝,根据阈值去除执⾏度⽐较低的⽬标窗⼝,最后NMS去除冗余窗⼝

优点:YOLO将⽬标检测任务转换成回归问题,⼤⼤加快了检测的速度。同时由于⽹络预测每个⽬标窗⼝时使⽤的是全局信息,使得false positive⽐例⼤幅降低(充分的上下⽂信息)。存在的问题:使⽤整图特征在7*7的粗糙⽹格内回归,对⽬标的定位并不是很精准,检测精度不⾼

输⼊尺⼨固定:由于输出层为全连接层,因此在检测时,YOLO训练模型只⽀持与训练图像相同的输⼊分辨率。其它分辨率需要缩放成改分辨率.

占⽐较⼩的⽬标检测效果不好.虽然每个格⼦可以预测B个bounding box,但是最终只选择只选择IOU最⾼的bounding box作为物体检测输出,即每个格⼦最多只预测出⼀个物体。当物体占画⾯⽐例较⼩,如图像中包含畜群或鸟群时,每个格⼦包含多个物体,但却只能检测出其中⼀个。

(1.2)YOLOv2 (CVPR2016, oral)

它并没有使⽤多尺度特征图来做独⽴的检测。相反,它将特征图部分平滑化,并将其和另⼀个较低分辨率的特征图拼接。例如,YOLO 将⼀个 28 × 28 × 512 的层重塑为 14 × 14 × 2048,然后将它和 14 × 14 ×1024 的特征图拼接。之后,YOLO 在新的 14 × 14 × 3072 层上应⽤卷积核进⾏预测。

YOLO(v2)做出了很多实现上的改进,将 mAP 值从第⼀次发布时的 63.4 提⾼到了 78.6。YOLO与Fast R-CNN相⽐有较⼤的定位误差,与基于region proposal的⽅法相⽐具有较低的召回率。因此YOLO v2主要改进是提⾼召回率和定位能⼒。下⾯是改进之处:

Batch Normalization: v1中也⼤量⽤了Batch Normalization,同时在定位层后边⽤了dropout,v2中取消了dropout,在卷积层全部使⽤Batch Normalization。

⾼分辨率分类器:v1中使⽤224 × 224训练分类器⽹络,扩⼤到448⽤于检测⽹络。v2将ImageNet以448×448 的分辨率微调最初的分类⽹络,迭代10 epochs。

Anchor Boxes:v1中直接在卷积层之后使⽤全连接层预测bbox的坐标。v2借鉴Faster R-CNN的思想预测bbox的偏移.移除了全连接层,并且删掉了⼀个pooling层使特征的分辨率更⼤⼀些.另外调整了⽹络的输⼊(448->416)以使得位置坐标是奇数只有⼀个中⼼点(yolo使⽤pooling来下采样,有5个size=2,stride=2的max pooling,⽽卷积层没有降低⼤⼩,因此最后的特征是

416/(2^5)=13).v1中每张图⽚预测7x7x2=98个box,⽽v2加上Anchor Boxes能预测超过1000个.检测结果从69.5mAP,81% recall变为69.2 mAP,88% recall.YOLO v2对Faster R-CNN的⼿选先验框⽅法做了改进,采样k-means在训练集bbox上进⾏聚类产⽣合适的先验框.由于使⽤欧⽒距离会使较⼤的bbox⽐⼩的bbox产⽣更⼤的误差,⽽IOU与bbox尺⼨⽆关,因此使⽤IOU参与距离计算,使得通过这些anchor boxes获得好的IOU分值。距离公式:D(box,centroid)=1−IOU(box,centroid)D(box,centroid)=1−IOU(box,centroid)使⽤聚类进⾏选择的优势是达到相同的IOU结果时所需的anchor box数量更少,使得模型的表⽰能⼒更强,任务更容易学习.k-means算法代码实现参考:k_means_yolo.py.算法过程是:将每个bbox的宽和⾼相对整张图⽚的⽐例(wr,hr)进⾏聚类,得到k个anchor box,由于darknet代码需要配置⽂件中region层的anchors参数是绝对值⼤⼩,因此需要将这个⽐例值乘上卷积层的输出特征的⼤⼩.如输⼊是416x416,那么最后卷积层的特征是13x13.细粒度特征(fine grain features):在Faster R-CNN 和 SSD 均使⽤了不同的feature map以适应不同尺度⼤⼩的⽬标.YOLOv2使⽤了⼀种不同的⽅法,简单添加⼀个 pass through layer,把浅层特征图(26x26)连接到深层特征图(连接到新加⼊的三个卷积核尺⼨为3 * 3的卷积层最后⼀层的输⼊)。 通过叠加浅层特征图相邻特征到不同通道(⽽⾮空间位置),类似于Resnet中的identity mapping。这个⽅法把26x26x512的特征图叠加成13x13x2048的特征图,与原⽣的深层特征图相连接,使模型有了细粒度特征。此⽅法使得模型的性能获得了1%的提升。Multi-Scale Training: 和YOLOv1训练时⽹络输⼊的图像尺⼨固定不变不同,YOLOv2(在cfg⽂件中random=1时)每隔⼏次迭代后就会微调⽹络的输⼊尺⼨。训练时每迭代10次,就会随机选择新的输⼊图像尺⼨。因为YOLOv2的⽹络使⽤的downsamples倍率为32,所以使⽤32的倍数调整输⼊图像尺⼨{320,352,…,608}。训练使⽤的最⼩的图像尺⼨为320 x 320,最⼤的图像尺⼨为608 x 608。 这使得⽹络可以适应多种不同尺度的输⼊.YOLOv2提出了⼀种新的分类模型Darknet-19.借鉴了很多其它⽹络的设计概念.主要使⽤3x3卷积并在pooling之后channel数加倍(VGG);global average pooling替代全连接做预测分类,并在3x3卷积之间使⽤1x1卷积压缩特征表⽰(Network in Network);使⽤ batch normalization 来提⾼稳定性,加速收敛,对模型正则化.(1.3)YOLOv3 (CVPR2016, oral)改进之处:多尺度预测 (类FPN)更好的基础分类⽹络(类ResNet)和分类器分类器-类别预测:YOLOv3不使⽤Softmax对每个框进⾏分类,主要考虑因素有两个:Softmax使得每个框分配⼀个类别(score最⼤的⼀个),⽽对于Open Images这种数据集,⽬标可能有重叠的类别标签,因此Softmax不适⽤于多标签分类。Softmax可被独⽴的多个logistic分类器替代,且准确率不会下降。分类损失采⽤binary cross-entropy loss.多尺度预测每种尺度预测3个box, anchor的设计⽅式仍然使⽤聚类,得到9个聚类中⼼,将其按照⼤⼩均分给3中尺度.尺度1: 在基础⽹络之后添加⼀些卷积层再输出box信息.尺度2: 从尺度1中的倒数第⼆层的卷积层上采样(x2)再与最后⼀个16x16⼤⼩的特征图相加,再次通过多个卷积后输出box信息.相⽐尺度1变⼤两倍.尺度3: 与尺度2类似,使⽤了32x32⼤⼩的特征图.

YOLOv3 使⽤了更加复杂的⾻⼲⽹络来提取特征。DarkNet-53 主要由 3 × 3 和 1× 1 的卷积核以及类似 ResNet 中的跳过连接构成。相⽐ ResNet-152,DarkNet 有更低的 BFLOP(⼗亿次浮点数运算),但能以 2 倍的速度得到相同的分类准确率。

YOLOv3 还添加了特征⾦字塔,以更好地检测⼩⽬标。以下是不同检测器的准确率和速度的权衡。

优点

快速,pipline简单.背景误检率低。

通⽤性强。YOLO对于艺术类作品中的物体检测同样适⽤。它对⾮⾃然图像物体的检测率远远⾼于DPM和RCNN系列检测⽅法。

YOLO具有以下缺点:识别物体位置精准性差。

召回率低。在每个⽹格中预测固定数量的bbox这种约束⽅式减少了候选框的数量。(2)SSD

SSD 是使⽤ VGG19 ⽹络作为特征提取器(和 Faster R-CNN 中使⽤的 CNN ⼀样)的单次检测器。我们在该⽹络之后添加⾃定义卷积层(蓝⾊),并使⽤卷积核(绿⾊)执⾏预测。

然⽽,卷积层降低了空间维度和分辨率。因此上述模型仅可以检测较⼤的⽬标。为了解决该问题,我们从多个特征图上执⾏独⽴的⽬标检测。采⽤多尺度特征图独⽴检测。

SSD 使⽤卷积⽹络中较深的层来检测⽬标。如果我们按接近真实的⽐例重绘上图,我们会发现图像的空间分辨率已经被显著降低,且可能已⽆法定位在低分辨率中难以检测的⼩⽬标。如果出现了这样的问题,我们需要增加输⼊图像的分辨率。

SSD结合YOLO的回归思想以及Faster R-CNN的anchor机制实现了精准定位。YOLO预测某个位置使⽤的是全图的特征,SSD预测某个位置使⽤的是这个位置周围的特征。建⽴某个位置和其特征的对应关系使⽤Faster R-CNN的anchor机制。

 SSD 通过多个特征图完成检测。但是,最底层不会被选择执⾏⽬标检测。它们的分辨率⾼但是语义值不够,导致速度显著下降⽽不能被使⽤。SSD 只使⽤较上层执⾏⽬标检测,因此对于⼩的物体的检测性能较差。(3)特征⾦字塔⽹络(FPN)

检测不同尺度的⽬标很有挑战性,尤其是⼩⽬标的检测。特征⾦字塔⽹络(FPN)是⼀种旨在提⾼准确率和速度的特征提取器。它取代了检测器(如 Faster R-CNN)中的特征提取器,并⽣成更⾼质量的特征图⾦字塔。

FPN 由⾃下⽽上和⾃上⽽下路径组成。其中⾃下⽽上的路径是⽤于特征提取的常⽤卷积⽹络。空间分辨率⾃下⽽上地下降。当检测到更⾼层的结构,每层的语义值增加。

虽然该重建层的语义较强,但在经过所有的上采样和下采样之后,⽬标的位置不精确。在重建层和相应的特征图之间添加横向连接可以使位置侦测更加准确。(4)Focal Loss(RetinaNet)

one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:样本的类别不均衡导致的。我们知道在object

detection领域,⼀张图像可能⽣成成千上万的candidate

locations,但是其中只有很少⼀部分是包含object的,这就带来了类别不均衡。(1) training isinefficient as most locations are easy negatives that contribute no useful learning signal; (2) en

masse, the easy negatives can overwhelm training and lead to degenerate models. 什么意思呢?负样本数量太⼤,占总的loss的⼤部分,⽽且多是容易分类的,因此使得模型的优化⽅向并不是我们所希望的那样。⾸先pt的范围是0到1,所以不管γ是多少,这个调制系数都是⼤于等于0的。易分类的样本再多,你的权重很⼩,那么对于total loss的共享也就不会太⼤。那么怎么控制样本权重呢?举个例⼦,假设⼀个⼆分类,样本x1属于类别1的pt=0.9,样本x2属于类别1的pt=0.6,显然前者更可能是类别1,假设γ=1,那么对于pt=0.9,调制系数则为0.1;对于pt=0.6,调制系数则为0.4,这个调制系数就是这个样本对loss的贡献程度,也就是权重,所以难分的样本(pt=0.6)的权重更⼤。Figure1中γ=0的蓝⾊曲线就是标准的交叉熵损失。focal loss的含义可以看如下Figure1,横坐标是pt,纵坐标是loss。CE(pt)表⽰标准的交叉熵公式,FL(pt)表⽰focal loss中⽤到的改进的交叉熵,可以看出和原来的交叉熵对⽐多了⼀个调制系数(modulating factor)。为什么要加上这个调制系数呢?⽬的是通过减少易分类样本的权重,从⽽使得模型在训练时更专注于难分类的样本。

这⾥介绍下focal loss的两个重要性质:1、当⼀个样本被分错的时候,pt是很⼩的(请结合公式2,⽐如当y=1时,p要⼩于0.5才是错分类,此时pt就⽐较⼩,反之亦然),因此调制系数就趋于1,也就是说相⽐原来的loss是没有什么⼤的改变的。当pt趋于1的时候(此时分类正确⽽且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很⼩。2、当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。

focal loss的两个性质算是核⼼,其实就是⽤⼀个合适的函数去度量难分类和易分类样本对总的损失的贡献。既能调整正负样本的权重,⼜能控制难易分类样本的权重:

实验中a的选择范围也很⼴,⼀般⽽⾔当γ增加的时候,a需要减⼩⼀点(实验中γ=2,a=0.25的效果最好)

类别不平衡会损害性能。SSD 在训练期间重新采样⽬标类和背景类的⽐率,这样它就不会被图像背景淹没。Focal loss(FL)采⽤另⼀种⽅法来减少训练良好的类的损失。因此,只要该模型能够很好地检测背景,就可以减少其损失并重新增强对⽬标类的训练。我们从交叉熵损失 开始,并添加⼀个权重来降低⾼可信度类的 CE。(4)G-CNN(CVPR2016)

Region proposal⽅法考虑数以万计的潜在框来进⾏⽬标位置搜索,这种⽅式存在的问题是负样本空间⼤,因此需要⼀定的策略来进⾏抑制(OHEM还是region proposal⽅法,其本质都是⼀种抑制负样本的⼯作)。G-CNN初始化时将图像进⾏划分(有交叠),产⽣少量的框(⼤约180个),通过⼀次回归之后得到更接近物体的位置。然后以回归之后的框作为原始窗⼝,不断的迭代回归调整,得到最终的检测结果。

OHEM(online hard example mining),OHEM的主要思想可以⽤原⽂的⼀句话概括:InOHEM each example is scored by its loss, non-maximum suppression (nms) is then applied,and a minibatch is constructed with the highest-loss examples。OHEM算法虽然增加了错分类样本的权重,但是OHEM算法忽略了容易分类的样本。

CE

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务