openglwidget缩放刷新慢_目标检测算法之ICCV 2019 TridentNet(三叉戟网络,刷新COCO纪录,已开源)...

0d9eab7115e71b17c6d012c87af7d4a4.png

88eed65ed40778bec3156b6c9f72f682.png

前言

今天为大家介绍一篇图森科技在ICCV 2019的目标检测论文《Scale-Aware Trident Networks for Object Detection》,简称TridentNet,中文翻译为三叉戟网络。论文地址见附录。

背景

我们知道在目标检测任务中,尺度变化一直是很关键的问题。针对尺度变化问题,也有很多的方案被提出,如Figure 1所示:

4bee1e0ab1f71c560e7fdbecd2de8460.png

其中(a)图表示多尺度图像金字塔网络,直接对图像进行不同尺度的缩放。(b)是FPN网络,借鉴了金字塔结构将分辨率信息和语义信息相结合,克服不同层,不同尺度带来的问题。这两种方法的目的都是让模型对尺寸不同的目标具有不同不同的感受野。除此之外还有SNIP,SNIP主要包含了两个改进点:1、为了减少domain-shift,在梯度回传的时候只将和预训练模型所基于的训练数据尺寸相应的ROI的梯度进行回传。2、借鉴了多尺度训练思想,引入图像金字塔来处理数据集种不同尺寸的数据。虽然图像金字塔的效率比较低,但通过对原图不同比例的缩放,充分利用了模型的表征能力。相比之下,FPN产生多层次的特征,但也牺牲了不同尺度下的特征一致性。总结一下就是,图像金字塔虽然慢但是精度高。而FPN虽然快,但相比于图像金字塔牺牲了精度。有没有办法将这两者统一起来呢?TridentNet横空出世。

主要贡献

论文提出了TridentNet,基于ResNet-101骨架网络在COCO数据集上达到了单模型48.4的准确率,刷新COCO纪录。TridentNet的主要贡献在于:

  • 首次提出感受野(receptive filed)对目标检测任务中不同尺度大小目标的影响,并进行相关实验验证。
  • 提出了适应于多尺度的目标检测框架TridentNet。
  • 使用参数共享的方法,提出了训练3个分支,但测试时只使用其中一个分支,这样保证前向推理的时候不会有额外的参数和计算量增加。
  • 使用ResNet-101为backbone的TridentNet在COCO数据集上达到了48.4的map,真正的SOTA。

膨胀卷积

假设膨胀率为

equation?tex=ds,使用的卷积核大小为
equation?tex=3%5Ctimes+3,则使用膨胀卷积的感受野大小为
equation?tex=3%2B2%5Ctimes+2%5Ctimes+%28ds-1%29,例如:
  • equation?tex=ds%3D1,表示不进行膨胀,感受野大小为
    equation?tex=3%5Ctimes+3
  • equation?tex=ds%3D2,表示膨胀卷积系数为
    equation?tex=2,感受野大小为
    equation?tex=7%5Ctimes+7
  • equation?tex=ds%3D4,表示膨胀卷积系数为
    equation?tex=4,感受野大小为
    equation?tex=15%5Ctimes+15 从Table1可以看到,随着感受野的增大,小目标的检测准确性也开始下降,但是大目标的检测准确性开始上升,Table1如下:

6b3751499a3720174e7d16f58c25b990.png

网络结构

Figure2展示了TridentNet的网络结构。

251e547148883178ac0a9ca2934195a4.png

TridentNet模块包含3个完全一样的分支,唯一不同的只是膨胀卷积的膨胀速率。从上到下,膨胀率分别为1,2,3,分别检测小,中,大的目标。TridentNet的构造和改进是通过将一些常规卷积快替换为三叉戟块(Trident Block)。其中Trident Block由多个平行分支组成,除了膨胀卷积的膨胀速率之外,每个分支和原始的卷积块有完全相同的结构。下面以ResNet为例,对于一个残差模块,包括三个卷积核即

equation?tex=1%5Ctimes+1
equation?tex=3%5Ctimes+3
equation?tex=1%5Ctimes+1。详细结构如下图所示:

fc667c062077ac427d3f70377b560327.png

可以看到三个分支由于膨胀卷积的膨胀速率不同使得网络拥有了更多可供选择的感受野。通常用三叉戟块替换主干的最后一个阶段的卷积块,因为三叉戟块产生的感受野有较大的差异,足以执行目标检测任务。同时,三叉戟块的三个分支之间的权重是共享的,只有膨胀速率不同,这种设置使得权值共享更加简单。权值共享有以下几个优点:

  • 可以不增加额外的参数量。
  • 和论文的出发点一致,即不同尺度的物体应该以同样的表征能力进行统一的转化。
  • 在不同的感受野下,可以对不同尺度范围训练相同的参数。

训练和测试

TridentNet在训练过程中会对每一个分支进行优化。因此,需要对目标的ground truth的大小进行测试,即:

aaa979b500274133592111385f012f1c.png

其中,

equation?tex=w
equation?tex=h代表ground truth的宽和高。
equation?tex=l_i
equation?tex=u_i代表实验中定义的第
equation?tex=i个分支的目标最小面积和最大面积 。在COCO数据集上分别为
equation?tex=32%5Ctimes+32
equation?tex=96%5Ctimes+96。基于此公式实现目标匹配原则,即小的目标走第一个分支,中等目标走第二个分支,大的目标走第三个分支。而不是所有的目标都走一个分支,这样就可以有针对性的训练。 在测试时,只用中间的分支进行推理,然后对结果进行NMS后处理,最后输出预测的目标信息。当然这样做会带来一些精度损失,大概在0.5-1个map值,但这样的好处在于不会引入额外的参数,不会增加额外的计算量。

实验结果

本文的另外一个值得称道的地方就是实验做的非常棒。首先来看Multi-branch ,Weight-sharing, Scale-aware有效性证明,如Table2所示。可以看到都比baseline好并且当三部分都加上的时候性能达到最高。注意一下,Table2是在CICO验证集上进行的测试。

9988a462cce7b1f5c124809714a4f841.png

然后Table3展示了TridentNet模块分支个数对AP值的影响。

2d1a8655814f3860e7954c6c893ae1cd.png

然后TridentNet模块在ResNet不同block中的实验结果如Table4所示。

cef0fb43a71ab3c059fcb58aea143402.png

然后论文探索了TridentNet各个分支的检测精度,如Table5所示。

7ec6c931b1359d9382578659e0b39588.png

然后论文还给出了TridentNet 中间分支在coco测试的结果,如Table6所示。

ae4326a7aef956029ede4076ab1b37a7.png

上面的实验都是在COCO验证集上的结果,接下来给出模型在COCO测试集上相对于其他SOAT网络的精度,如Table 7所示:

37d32c346776572d14c17116700b00ca.png

总结

好了,做一个简短的总结吧。TridentNet是一种尺度敏感的检测网络,并且训练过程也要进行多尺度训练。检测准确性很高,并且不会有额外的参数,额外的计算量,是ASPP结构的灵活应用。

附录

论文原文:https://arxiv.org/pdf/1901.01892.pdf 官方实现:https://github.com/TuSimple/simpledet/tree/master/models/tridentnet


欢迎关注我的微信公众号GiantPandaCV,期待和你一起交流机器学习,深度学习,图像算法,优化技术,比赛及日常生活等。

bd01dda5280534ce79643cb20a0e40a1.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值