资讯详情

目标检测 | 解决小目标检测!多尺度方法汇总

点击上方“”,选择加""或“

重磅干货,第一时间送达

在深度学习方法流行之前,对于不同尺度的目标,我们通常使用原始图像构建不同分辨率的图像金字塔,然后用固定输入分辨率的分类器滑动每层金字塔,以检测金字塔底部的小目标;或者只使用一张原始图片,在原始图片上,经典的,早期的CNN这种方法也用于目标识别框架,但图像金字塔中的每一层都是分开的CNN提取特性、耗时和内存消耗都不能满足需求。值得一提的是,事实上,当大多数深度学习算法提交结果进行排名时,它们大多使用。同时类似于SNIP图像金字塔的多尺度处理采用多尺度训练。

https://arxiv.org/abs/1711.08189

https://github.com/mahyarnajibi/SNIPER

目前的物体检测算法通常采用微调法,即首先ImageNet训练分类任务在数据集上,然后迁移到物体检测的数据集上,如COCO训练测试任务。我们可以将ImageNet分类任务视为224×224的尺度,而COCO大部分物体尺度在几十个像素范围内,包含大量的小物体,物体尺度差距较大,样本差距过大,会导致的误差。

SNIP多尺度训练(Multi-Scale Training)改进版。MST思想是利用随机采样的多分辨率图像使检测器具有不变的尺度特性。然而,作者通过实验发现,在MST中,,但是MST还有一些优点,比如一张图片会有几个不同的分辨率,每个目标在训练中都会有几个不同的尺寸,所以总有一个尺寸在指定的尺寸范围内。

SNIP的做法是,实际上是训练过程,这样可以减少domain-shift影响。

SNIP如下图所示:

b0f0474ca6cf48b5d6e6c6d90b6324d1.png

(1),并在指定范围内预测物体。

(2)对于特征图,其RPN,对于特征图,其RPN,这种真实的物体尺度分布在较小的范围内,避免了极大或极小的物体。

(3)在RPN如果真实物体不在这个阶段,RPN在预测范围内,将被判定为无效,并与无效物体一起IoU大于0.3的Anchor也被判定为无效Anchor。

(4)训练时,。在测试阶段,

(5)实现时SNIP采用了类型,为了减少GPU占用,原图随机切割成1万×大小1000的图像。使用Deformable-RFCN检测器提取单分辨率候选人。Deformable-RFCN选择主干网络ResNet-101,训练分辨率为800x1200。在RPN选择5个锚尺寸。分类时,没有选择Deformable Position Sensitive RoIPooling主干网为ResNet-50的Deformable-RFCN。使用双线性插值Position Sensitive RoIPooling, 因为它将最后一层的卷积核数量减少了3倍。NMS的阈值为0.3.不是端到端训练。

  • 当训练和测试分辨率不一致时,性能会下降;

  • 虽然大分辨率输入图像可以提高小目标的检测性能,但同时大目标太大,难以分类,最终精度提高不明显;

  • 多尺度训练(Mutil-Scale training),采样到的图像分辨率很高(1400x2000),大目标大,图像分辨率过小(4800)x640),导致小目标较小,这些都产生了非最佳结果;

  • SNIP不同的分辨率选择不同的分辨率proposal梯度传播,然后将其他设置为0。即对每个图像金字塔的每个尺度进行正则化表示;

总体来说,SNIP,剥离了多尺度的学习难题。在网络搭建时,SNIP也使用类似的MST多尺度训练方法构建了三个尺度的图像金字塔,但在训练过程中,只在指定范围内Proposal反向传播,忽略过大或过小Proposal。

SNIP虽然该方法很简单,但它背后有深刻的含义,并对当前检测算法的多尺度检测问题进行了更深入的分析。在训练过程中,只选择在一定范围内学习物体COCO数据集中检测精度提高了3%,可谓大道至简。

论文地址:

https://arxiv.org/abs/1805.09300代码地址:

https://github.com/MahyarNajibi/SNIPER

SNIPER关键是减少SNIP的计算量。SNIP借鉴了multi-scale training训练思想,multi-scale training图像金字塔被用作模型的输入。虽然这种方法可以提高模型效果,但由于模型需要处理每个模型,计算量的增加也非常明显scale图像的每一个像素,而SNIPER(Scale Normalization for Image Pyramids with Efficient Resampling)算法,在训练期间,由于SNIPER采样后低分辨率chips因此,它可以在训练期间受益Batch Normalization,而不需要在GPU统计信息采用同步批量标准化。实验证明,BN有助于提高最终性能。

这些chips主要分为两类:

一种是,这些chips包含ground truth;

另一种是,这些chips相当于难以分类的背景,

所以模型结束了,而不是处理整张图像,这样就达到提升效果的同时提升速度。相比于SNIP,基于Faster RCNN(ResNet101作为Backbone)的实验结果显示SNIPER的mAP值比SNIP算法提升了4.6百分点,所以效果也还是非常不错的。在单卡V100上,每秒可以处理5张图像,这个速度在two-stage的算法中来看并不快,但是效果是非常好。

SNIPER的思路:

把图片丢到网络中时,就会产生不同尺度的feature map。作者的想法就是

1、如何选择positive chips : 就是在图像金字塔的每一层中,都设定一个范围,在该大小范围内的目标就可以标出来作为ground truth box,然后对图片中ground truth box所在的地方进行crop,crop出来的图片就是chips。

2、如何选择negative chips : 如果只基于前面的positive chip,那么因为大量的背景区域没有参与训练,所以容易(比较高的false positive rate),传统的multi scale训练方式因为有大量的背景区域参与计算,所以误检率没那么高,但因为大部分背景区域都是非常容易分类的,所以这部分计算量是可以避免的,于是就有了negative chip seleciton。选择negative chips的目的在于在Faster-RCNN中的RPN的其中一步就是,将anchor和ground truth box交并比小于0.3视为背景,全部去掉(去掉易分样本)。然后剩下的再去掉完全覆盖groun truth box的proposal(去掉易分样本),大部分proposal都是具有假阳性的,也就是和ground truth 都有一部分的交集,但是比较小,我们的negative chips都从这里来。(negative chips就是难分样本)。这样可以用来减少假阳率。

3、标注label:每一张chip上大概产生300个proposal,但是对这300个proposals不做限制(比如faster-rcnn会滤除掉背景部分,我们不这样),而是对里面的一些proposal抽出来做positive proposal。

4、模型训练:应该是先生成chips,然后再用chips去训练一个端到端的网络,所以其实是分开进行的。

如下图是作者的选择positive chips的一个示意图:

positive chips

左侧中,绿色框起来的就是ground truth的所在,其他颜色是生成的chips,这张图就生成了4个chips,右侧中绿色线条就是valid box,红色的线就是invalid box。可以看出,(clip的尺寸要比原图小很多,不然就起不到减少计算量的目的,对于高分辨率的图,clip可以比它小十倍不止)

下图是作者选择negative chips的一个示意图:

negative chips

上面一行就是ground truth boxes,下面一行就是作者选择的negative chips,比如最后两个,negative chips都和ground truth box有一定的交集。这就是我们所需要的negative chips。第二行图像中的红色小圆点表示没有被positive chips(Cipos)包含的negative proposals,因为proposals较多,用框画出来的话比较繁杂,所以用红色小圆点表示。橘色框表示基于这些negative proposals生成的negative chips,也就是Cineg。每个negative chip是这么得到的:对于尺度i而言,在训练模型时,每一张图像的每个epoch都处理固定数量的negative chip,这些固定数量的negative chip就是从所有scale的negative chip中抽样得到的。 

优点:

1、确实可以;(一张图片可以Crop出5个512x512的chips,而且进行3个尺度的训练,但是它的计算量只比一张800x1333的图片进行单尺度训练多出30%,要是800x1333也进行多尺度训练时,训练量可比这种方法大多了)

2、用固定大小的chips去进行训练时,数据很容易被打包,更利于GPU的使用。(把数据丢到GPU中去训练,这30%的差距算个毛线,GPU计算速度那么大呢)

3、更为重要的是,可以进行多尺度训练,设置更大的batch_size和batch normalization,而且再也不用担心这些操作会拉低我们的速度了!

用图像金字塔生成chips的时候,在不同scale的层上使用的ground truth box范围在[0,80²]、[32²,150²]、[120², inf]。训练RPN是为了获取negative chips。

大熊猫的总结:在SNIP的基础上加了一个「positive/negative chip selection」,从实验结果来看是非常SOTA的,可以说。另外基于ResNet101的Faster RCNN架构结合SNIPER,精度超过了YOLOV4接近4个点,效果是非常好的。感兴趣的朋友可以尝试。

SSD该方式尺度处理简单有效,但存在一些缺陷:

  • 一般使用低层检测小目标,但低层感受野小,上下文信息缺乏,

  • 使用简单的单一检测层多尺度信息略显缺乏,很多任务目标尺度变化范围十分明显;

  • 高层虽然感受野较大,但毕竟经过了很多次降采样,

  • 多层特征结构,是非连续的尺度表达,是非最优的结果;

空洞卷积本身可以控制不同大小的感受野,也即可以处理多尺度;一般空洞率设计得越大,感受野越大(但一般空洞率不能无限扩大,网格效应问题会加剧)。

https://arxiv.org/abs/1901.01892

https://github.com/TuSimple/simpledet/tree/master/models/tridentnet

传统的解决多尺度检测的算法,大都依赖于图像金字塔与特征金字塔。与上述算法不同,图森组对这一因素进行了深入的分析,并利用了这一利器,构建了简单的三分支网络TridentNet,对于多尺度物体的检测有了明显的精度提升。

  • 控制实验证明了

  • 设计三个并行分支获取不同大小的感受野,以分别处理不同尺度的目标,感受野使用空洞卷积表征;每个分支采用Trident block构建,取代ResNet-res4中的多个原始的Block;

  • 训练类似于SNIP,三个分支分别采用不同尺度的目标训练。

TridentNet网络的作者,提出了如下图所示的检测框架。采用ResNet作为基础Backbone,前三个stage沿用原始的结构,在第四个stage,使用了三个感受野不同的并行网络。

(1)3个不同的分支,可以更好地覆盖多尺度的物体分布。

(2)由于3个分支要检测的内容是相同的、要学习的特征也是相同的,只不过是形成了不同的感受野来检测不同尺度的物体,因此,,这样既充分利用了样本信息,学习到更本质的目标检测信息,也减少了参数量与过拟合的风险。

(3)借鉴了SNIP的思想,,避免了过大与过小的样本对于网络参数的影响。

在训练时,TridentNet网络的三个分支会接入三个不同的head网络进行后续损失计算。在测试时,由于没有先验的标签来选择不同的分支,因此只保留了一个分支进行前向计算,这种前向方法只有少量的精度损失。

自从2016年FPN网络出来后,目前各大视觉任务的baseline基本都是以backbone-FPN。。FPN看起来很完美,但仍然有一些缺陷:

  • 在上采样时

  • 由于经过多次下采样,最高层的感受野虽然很丰富,但可能已经丢失了小目标的语义信息,这样的传播是否还合适;

  • FPN的构建

  • FPN中虽然传播了强的语义信息到其他层,但对于,因为本身就提取了不同backbone的输出。

PANet

https://arxiv.org/abs/1803.01534

https://github.com/ShuLiu1993/PANet

PANet是由香港中文大学和腾讯优图联合提出的实例分割框架。模型不是直接实现目标检测,但是论文的核心内容是增强FPN的多尺度融合信息。PANet 在 COCO 2017 挑战赛的实例分割任务中取得了第一名,在目标检测任务中取得了第二名。

FPN的低层次的特征(C5)对应大型目标,而高层级特征与低层级别特征之间路径较长(如图 2a所示红色虚线),增加访问准确定位信息的难度。(图 2b)。用于缩短信息路径,利用low-level 特征中存储的精确定位信号,提升特征金字塔架构。

PANet网络架构

PANet创建自适应特征池化(Adaptive feature pooling)( 图 2c)。用于恢复每个候选区域和所有特征层次之间被破坏的信息路径,聚合每个特征层次上的每个候选区域。

PANet的目标检测和实例分割共享网络架构的图 2 abc三部分,使得两者性能均有提升。

ThunderNet

https://arxiv.org/pdf/1903.11752.pdf

https://github.com/ouyanghuiyu/Thundernet_Pytorch

ThunderNet是旷视提出的轻量型目标检测框架,实现了ARM平台上的实时检测器,整体结构如图 3所示。 (Face++论文好多这么用,确实有效),最终输出C4分辨率大小的累加特征。ThunderNet使用320×320像素作为网络的输入分辨率。

整体的网络结构分为两部分:Backbone部分和Detection部分。 网络的检测部分,利用了压缩的RPN网络,既。并提出,引入来自RPN的前后景信息用以优化特征分布。

FPN的结合不同层语义信息,但是相对而言每层均有检测分支,对移动终端而言增加计算成本和运行时间。论文提出简单粗暴的CEM(如图 4所示),合并三个尺度特征图C4,C5和Cglb:

1、C4 1×1卷积,通道数量压缩为α×p×p = 245

2、C5进行上采样 + 1×1卷积,通道数量压缩为α×p×p = 245

3、C5全局平均池化得到Cglb,Cglb进行Broadcast + 1×1卷积,通道数量压缩为α×p×p = 245 。

通过利用局部和全局信息,CEM有效地扩大了感受野,并细化了特征图的表示能力。与先前的FPN结构相比,CEM predict预测及减少fc计算,提高模型运算效率。

 ThunderNet网络模型
CEM网络结构

Libra R-CNN

https://arxiv.org/pdf/1904.02701.pdf

https://github.com/OceanPang/Libra_R-CNN

Libra R-CNN是有浙江大学,香港中文大学等联合提出目标检测模型。无论是one-stage two-stage,都涉及选择候选区域,特征提取与融合、loss收敛。针对目标检测的三个阶段,论文提出三个问题:论文针对三个问题提出三个改进方向:

1、IoU-balanced Sampling

M个候选框选择N个hard negative,选中的概率就是:

N个样本通过IoU的值划分为K个区间,每个区间中的候选采样数为Mk,则IoU-balanced sampling的采样公式即为:

作者通过在IoU上均匀采样, 把hard negative在IoU上均匀分布。

2、Balanced Feature Pyramid

 Balanced Feature Pyramid

为了更高效利用FPN特征,论文(如上图所示):

a. rescaling。把{C2,C3 ,C5}的多层特征均rescaling到C4尺寸,做加权求平均值。得到的特征C rescaling返回到{C2,C3 ,C5}特征分辨率。

b. Refining&strengthening。论文使用Gaussian non-local attention 增加特征。

c. Indentity,既残差设计。

3、Balanced L1 Loss。

论文使用,改善网络的训练过程。

在「」公众号后台回复:即可下载全网第一份OpenCV扩展模块教程中文版,涵盖等二十多章内容。

在「」公众号后台回复:即可下载包括等31个视觉实战项目,助力快速学校计算机视觉。

在「」公众号后台回复:即可下载含有个基于实现20个,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。在群内发送广告,否则会请出群,谢谢理解~

标签: abs轮速传感器各自的优缺点

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台