论文:Scale-Aware Trident Networks for Object Detection
发表时间:2019
发表作者:(University of Chinese Academy of Sciences)Yuntao Chen, (TuSimple)Naiyan Wang
发表刊物/会议:ICCV
论文链接:论文链接
论文代码:代码链接

DetNet

这篇文章主要要解决的问题便是目标检测中最为棘手的scale variation问题。使用了非常简单干净的办法在标准的COCO benchmark上,使用ResNet101单模型可以得到MAP 48.4的结果,远远超越了目前公开的单模型最优结果。

多尺度问题

先简单回顾一下现有处理多尺度问题的两大类方法。第一大类,也是从非Deep时代,乃至CV初期就被就被广泛使用的方法叫做image pyramid。在image pyramid中,我们直接对图像进行不同尺度的缩放,然后将这些图像直接输入到detector中去进行检测。虽然这样的方法十分简单,但其效果仍然是最佳,也后续启发了SNIP这一系列的工作。单论性能而言,multi-scale training/testing仍然是一个不可缺少的组件。然而其缺点也是很明显的,测试时间大幅度提高,对于实际使用并不友好。另外一大类方法,也是Deep方法所独有的,也就是feature pyramid。最具代表性的工作便是经典的FPN了。这一类方法的思想是直接在feature层面上来近似image pyramid。非Deep时代在检测中便有经典的channel feature这样的方法,这个想法在CNN中其实更加直接,因为本身CNN的feature便是分层次的。从开始的MS-CNN直接在不同downsample层上检测大小不同的物体,再到后续TDM和FPN加入了新的top down分支补充底层的语义信息不足,都是延续类似的想法。然而实际上,这样的近似虽然有效,但是仍然性能和image pyramid有较大差距。

总结如下:

  • 图像金字塔,传统的检测算法
  • 特征金字塔,FPN
  • 本文的三叉戟网络,分为3个分支,所有的参数都一样,唯一的区别就是膨胀卷积的膨胀率不一样。
    DetNet

膨胀卷积Dilated convolution(空洞卷积Atrous convolution)

膨胀卷积 假设膨胀率为ds,使用的卷积核大小为$33$,则使用膨胀卷积的感受野大小为$3+22*(ds-1)$,
例如,假设
1、ds=1,表示不进行膨胀,感受野大小为$33$
2、ds=2,表示进行膨胀,感受野大小为$7
7$
3、ds=4,表示进行膨胀,感受野大小为$15*15$
实验验证,随着感受野的增大,小目标的检测准确性也开始下降,但是大目标的检测准确性开始上升。

膨胀卷积2

网络结构

网络结构 TridentNet 模块主要包括3个完全一样的分支,唯一不同的只是膨胀卷积的膨胀率。从上到下,膨胀率分别为1,2,3,分别检测小,中,大的目标。三个分支共享权值。

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

网络结构

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

\[
l_i ≤ \sqrt{w_h} ≤ u_i
\]

假设,w,h为ground truth的宽,高。Li,ui表示实验中定义的最小的面积和最大的面积。在coco实验中分别为$3232$和$9696$。
基于此公式实现小的目标走第一个分支,中等目标走第二个分支,大的目标走第三个分支。而不是所有目标都走所有分支。这样就可以进行有针对性的训练。
在测试阶段,只使用中间的那个分支进行推断,然后对结果进行NMS,输出最终的结果。
当然这样做会有一些精度的损失,但是好处就是不会引入额外的参数,不会增加额外的计算量。

实验结果

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

实验结果

TridentNet 每个分支中unit个数的实验:

实验结果

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

实验结果

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

实验结果

coco数据集结果:

实验结果

总结:

TridentNet 是一种尺度敏感的检测框架,并且训练过程也得进行尺度敏感的训练。检测准确性很高,并且不会有额外的参数,额外的计算量。是对ASPP结构的一种升华。

参考:
TridentNet

Paper Reading:TridentNet的更多相关文章

  1. Paper Reading: Stereo DSO

    开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...

  2. [Paper Reading]--Exploiting Relevance Feedback in Knowledge Graph

    <Exploiting Relevance Feedback in Knowledge Graph> Publication: KDD 2015 Authors: Yu Su, Sheng ...

  3. Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection

    Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11  19:47:46   CVPR 20 ...

  4. Paper Reading: In Defense of the Triplet Loss for Person Re-Identification

    In Defense of the Triplet Loss for Person Re-Identification  2017-07-02  14:04:20   This blog comes ...

  5. Paper Reading - Attention Is All You Need ( NIPS 2017 ) ★

    Link of the Paper: https://arxiv.org/abs/1706.03762 Motivation: The inherently sequential nature of ...

  6. Paper Reading - Convolutional Sequence to Sequence Learning ( CoRR 2017 ) ★

    Link of the Paper: https://arxiv.org/abs/1705.03122 Motivation: Compared to recurrent layers, convol ...

  7. Paper Reading - Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN ) ( ICLR 2015 ) ★

    Link of the Paper: https://arxiv.org/pdf/1412.6632.pdf Main Points: The authors propose a multimodal ...

  8. Paper Reading - Deep Visual-Semantic Alignments for Generating Image Descriptions ( CVPR 2015 )

    Link of the Paper: https://arxiv.org/abs/1412.2306 Main Points: An Alignment Model: Convolutional Ne ...

  9. Paper Reading - Mind’s Eye: A Recurrent Visual Representation for Image Caption Generation ( CVPR 2015 )

    Link of the Paper: https://ieeexplore.ieee.org/document/7298856/ A Correlative Paper: Learning a Rec ...

随机推荐

  1. 如何使用CLI命令行部署VMware VCSA 6.5

    在本文中,我们讨论如何使用CLI部署VMware vCSA 6.5,vCSA 6.0提供了两种实现类型,向导和脚本化.我们将使用一个名为vcsa-deploy的实用程序进行CLI安装.同样vcsa-d ...

  2. golang web框架 beego 学习 (七)json转数组

    Modules type User struct { Id int64 `json:"id"` Name string `json:"name"` Email ...

  3. TCP通信的文件上传案例

  4. Jupyter修改工作目录(Anaconda环境)

    Anaconda安装时未添加环境变量 1.打开Anaconda Prompt 输入jupyter notebook --generate-config (base) C:\Users\Sroxi> ...

  5. Python 中文件操作

    上代码: import os import os.path rootdir = "d:/code/su/data" # 指明被遍历的文件夹 for parent,dirnames, ...

  6. 利用Python进行数据分析_Pandas_层次化索引

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 层次化索引主要解决低纬度形式处理高纬度数据的问题 import pandas ...

  7. shell习题第23题:检测网卡流量

    [题目要求] 写一个脚本,检测网卡流量并记录到日志,需要按照如下格式并一分钟统计一次(只需统计外网网卡,网卡名称eth0) 2019-06-07 1:11 eth0 input: 1000bps et ...

  8. rgba()和opacity的比较(转)

    https://blog.csdn.net/u014150409/article/details/44906767

  9. 给初学PHP的学习线路和建议

    直入主题  1.熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. 2.理解动态语言的概念和运做机制,熟悉基本的PHP语法. 3.学习如何将PHP与HTML结 ...

  10. bat实现监控进程守护程序-保证平台服务的稳定执行

    背景是平台所在的服务器经常因异常原因导致当前机器所在的服务关闭....直接贴代码吧. ********************************************************* ...