点击上方“”,选择加"
重磅干货,第一时间送达
在深度学习方法流行之前,对于不同尺度的目标,我们通常使用原始图像构建不同分辨率的图像金字塔,然后用固定输入分辨率的分类器滑动每层金字塔,以检测金字塔底部的小目标;或者只使用一张原始图片,在原始图片上,
SNIP:尺度归一化
https://arxiv.org/abs/1711.08189
https://github.com/mahyarnajibi/SNIPER
目前的物体检测算法通常采用微调法,即首先ImageNet训练分类任务在数据集上,然后迁移到物体检测的数据集上,如COCO训练测试任务。我们可以将ImageNet分类任务视为224×224的尺度,而COCO大部分物体尺度在几十个像素范围内,包含大量的小物体,物体尺度差距较大,样本差距过大,会导致
SNIP多尺度训练(Multi-Scale Training)改进版。MST思想是利用随机采样的多分辨率图像使检测器具有不变的尺度特性。然而,作者通过实验发现,在MST中,
SNIP的做法是
SNIP如下图所示:
(1)
(2)对于
(3)在RPN如果真实物体不在这个阶段,RPN在预测范围内,将被判定为无效,并与无效物体一起IoU大于0.3的Anchor也被判定为无效Anchor。
(4)训练时,
(5)实现时SNIP采用了
当训练和测试分辨率不一致时,性能会下降;
虽然大分辨率输入图像可以提高小目标的检测性能,但同时大目标太大,难以分类,最终精度提高不明显;
多尺度训练(Mutil-Scale training),采样到的图像分辨率很高(1400x2000),大目标大,图像分辨率过小(4800)x640),导致小目标较小,这些都产生了非最佳结果;
SNIP不同的分辨率选择不同的分辨率proposal梯度传播,然后将其他设置为0。即对每个图像金字塔的每个尺度进行正则化表示;
总体来说,SNIP
SNIP虽然该方法很简单,但它背后有深刻的含义,并对当前检测算法的多尺度检测问题进行了更深入的分析。在训练过程中,只选择在一定范围内学习物体COCO数据集中检测精度提高了3%,可谓大道至简。
SNIPER:SNIP方法的改进
论文地址:
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)算法
这些chips主要分为两类:
一种是
另一种是
所以模型结束了
SNIPER的思路:
把图片丢到网络中时,就会产生不同尺度的feature map。作者的想法就是
1、如何选择positive chips : 就是在图像金字塔的每一层中,都设定一个范围,在该大小范围内的目标就可以标出来作为ground truth box,然后对图片中ground truth box所在的地方进行crop,crop出来的图片就是chips。
2、如何选择negative chips : 如果只基于前面的positive chip,那么因为大量的背景区域没有参与训练,所以容易
3、标注label:每一张chip上大概产生300个proposal,但是对这300个proposals不做限制(比如faster-rcnn会滤除掉背景部分,我们不这样),而是对里面的一些proposal抽出来做positive proposal。
4、模型训练:应该是先生成chips,然后再用chips去训练一个端到端的网络,所以其实是分开进行的。
如下图是作者的选择positive chips的一个示意图:
左侧中,绿色框起来的就是ground truth的所在,其他颜色是生成的chips,这张图就生成了4个chips,右侧中绿色线条就是valid box,红色的线就是invalid box。可以看出,
下图是作者选择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而言,
优点:
1、确实可以
2、用固定大小的chips去进行训练时,数据很容易被打包,更利于GPU的使用。(把数据丢到GPU中去训练,这30%的差距算个毛线,GPU计算速度那么大呢)
3、更为重要的是,可以进行多尺度训练,设置更大的batch_size和batch normalization,而且再也不用担心这些操作会拉低我们的速度了!
大熊猫的总结:在SNIP的基础上加了一个「positive/negative chip selection」,从实验结果来看是非常SOTA的,可以说
SSD
一般使用低层检测小目标,但低层感受野小,上下文信息缺乏,
容易引入误检 ;使用简单的单一检测层多尺度信息略显缺乏,很多任务目标尺度变化范围十分明显;
高层虽然感受野较大,但毕竟经过了很多次降采样,
大目标的语义信息是否已经丢失 ;多层特征结构,是非连续的尺度表达,是非最优的结果;
空洞卷积本身可以控制不同大小的感受野,也即可以处理多尺度;一般空洞率设计得越大,感受野越大(但一般空洞率不能无限扩大,网格效应问题会加剧)。
https://arxiv.org/abs/1901.01892
传统的解决多尺度检测的算法,大都依赖于图像金字塔与特征金字塔。与上述算法不同,图森组对
控制实验证明了
感受野大小与目标尺度呈现正相关; 设计三个并行分支获取不同大小的感受野,以分别处理不同尺度的目标,感受野使用空洞卷积表征;每个分支采用Trident block构建,取代ResNet-res4中的多个原始的Block;
训练类似于SNIP,三个分支分别采用不同尺度的目标训练。
TridentNet网络的作者
(1)3个不同的分支
(2)由于3个分支要检测的内容是相同的、要学习的特征也是相同的,只不过是形成了不同的感受野来检测不同尺度的物体,因此,
(3)借鉴了SNIP的思想,
在训练时,TridentNet网络的三个分支会接入三个不同的head网络进行后续损失计算。在测试时,由于没有先验的标签来选择不同的分支,因此只保留了一个分支进行前向计算,这种前向方法只有少量的精度损失。
自从2016年FPN网络出来后,目前各大视觉任务的baseline基本都是以backbone-FPN。
在上采样时
使用了比较粗糙的最近邻插值,使得高层的语义信息不一定能有效传播; 由于经过多次下采样,最高层的感受野虽然很丰富,但可能已经丢失了小目标的语义信息,这样的传播是否还合适;
FPN的构建
只使用了backbone的4个stage的输出,其输出的多尺度信息不一定足够; FPN中虽然传播了强的语义信息到其他层,但对于
不同尺度的表达能力仍然是不一样的 ,因为本身就提取了不同backbone的输出。
PANet
https://arxiv.org/abs/1803.01534
https://github.com/ShuLiu1993/PANet
PANet是由香港中文大学和腾讯优图联合提出的实例分割框架。模型不是直接实现目标检测,但是论文的核心内容是增强FPN的多尺度融合信息。PANet 在 COCO 2017 挑战赛的实例分割任务中取得了第一名,在目标检测任务中取得了第二名。
FPN的低层次的特征(C5)对应大型目标,而高层级特征与低层级别特征之间路径较长(如图 2a所示红色虚线),增加访问准确定位信息的难度。
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所示。
整体的网络结构分为两部分:Backbone部分和Detection部分。
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计算,提高模型运算效率。
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
为了更高效利用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。
论文使用
在「
在「
在「
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。