论文地址:https://arxiv.org/pdf/1901.01892.pdf
代码地址:https://github.com/TuSimple/simpledet/tree/master/models/tridentnet

论文提出了TridentNet,基于ResNet-101的骨干网络在COCO数据集上达到了单模型48.4的准确率,刷新了COCO新记录。

Contributions

  • 首次提出了感受野对目标检测任务中不同scale大小物体的影响,并进行了相关验证;
  • 提出了适应于多尺度的目标检测框架TridentNet;
  • 使用参数共享的方法,提出了训练时3个分支,测试时只用其中1个分支,保证推理时不会有额外的参数和计算量的增加;
  • 使用ResNet-101的骨干网络,在COCO数据集上达到了48.2的mAP。

处理多尺度问题的方法

TridentNet 论文学习
  1. 使用图像金字塔方法,传统的检测算法,在每个scale上独立地进行特征提取和目标检测。
  2. 特征金字塔方法,利用CNN中不同层的特征来解决多尺度问题,比较节约算力。
  3. 本文的Trident Net,分为3个分支,所有的参数都一样,唯一的区别就是膨胀卷积和膨胀率不同。

Dilated Convolution(Atrous Convolution)

TridentNet 论文学习

图 1. (a)对应3×33\times 3的1-dilated Conv,和普通卷积操作一样。(b)对应3×33\times 3的2-dilated Conv,实际的卷积核大小还是3×33\times 3,但是dilation 为1,也就是对于一个7×77\times 7的图像patch,只有9个红色的点和3×33\times 3的卷积核发生卷积操作,其余的点略过。也可以理解为卷积核的大小是7×77\times 7,但是只有图中9个点的权重不是0,其余都是0。可以看到虽然卷积核大小只有3×33\times 3,但是这个卷积的感受野已经增加到了7×77\times 7(如果考虑到这个2-dilated Conv 的前一层是一个1-dilated Conv的话,那么每个红色点就是1-dilated 的卷积输出,所以感受野是3×33\times 3,所以1-dilated Conv 和 2-dilated Conv 合起来就能达到7×77\times 7的Conv)。©图是4-dilated Conv,同理更在1-dilated 和 2-dilated Conv后面,能达到15×1515\times 15的感受野。对比传统的卷积操作,3层3×33\times 3的卷积加起来,stride 为1的话,只能达到rout=rin+(k1)×jin=(k1)×layer+1=7r_{out}=r_{in} + (k-1)\times j_{in}=(k-1)\times layer + 1 = 7的感受野,也就是和层数成线性关系,而dilated conv的感受野是指数级地增长。

假设膨胀率为dsds,使用的卷积核大小是3×33\times 3,则使用膨胀卷积的感受野大小为3+2×2×(ds1)3+2\times 2\times (ds-1)

例如,假设

  1. ds=1ds=1,表示不进行膨胀,感受野大小为3×33\times 3
  2. ds=2ds=2,表示进行膨胀,感受野大小为7×77\times 7
  3. ds=4ds=4,表示进行膨胀,感受野大小为15×1515\times 15

实验证明,随着感受野的增大, 小目标的检测准确率也开始下降,但是大目标的检测准确率开始上升。

TridentNet 论文学习

TridentNet的网络结构:

TridentNet 论文学习

TridentNet模块主要有3个完全一样的分支,唯一不同的是膨胀卷积和膨胀率。从上到下,膨胀率分别是1,2,3,分别检测小、中、大的物体。三个分支共享权值。

每个分支的详细结构如下:

TridentNet 论文学习

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

liwhuil_i \leq \sqrt{wh} \leq u_i

假设,w,hw,h为ground truth的宽和高。li,uil_i,u_i分别表示定义的最小面积和最大面积。在COCO实验中,分别为32×3232\times 3296×9696\times 96

基于此公式实现的小目标走第一个分支,中等目标进入第二个分支,大目标进入第三个分支。而不是所有的目标都走所有的分支,这样就可以针对性地进行训练。

在测试阶段,只使用中间的那个分支进行推断,然后对结果进行NMS,输出最终的结果。

当然这样做会损失一些精度,但是好处是不会引入额外的参数,不会增加额外的计算量。

实验结果

Multi-branch ,Weight-sharing, Scale-aware有效性证明:

TridentNet 论文学习

TridentNet模块分支个数的实验:

TridentNet 论文学习

TridentNet 每个分支中模块的数量:

TridentNet 论文学习

TridentNet各分支检测结果的评估:

TridentNet 论文学习

TridentNet中间分支在COCO测试的结果:

TridentNet 论文学习

COCO数据集结果:

TridentNet 论文学习

Conclusion

TridentNet 是一种scale-aware的检测框架,并且训练过程也得进行scale-aware的训练。检测准确性很高,不会有额外的参数或计算量。

相关文章:

  • 2021-09-03
  • 2021-06-30
  • 2021-09-10
  • 2021-05-27
  • 2021-11-06
  • 2021-04-03
  • 2021-12-31
  • 2021-06-14
猜你喜欢
  • 2021-06-27
  • 2021-06-10
  • 2021-11-19
  • 2021-06-15
  • 2021-12-29
相关资源
相似解决方案