论文及代码

论文地址:https://arxiv.org/abs/1904.04402

代码:http://www.svcl.ucsd.edu/projects/universal-detection/

概述

文章提出了一个通用的目标检测系统,适用于不同的图像领域而不需要该领域的先验知识。通过引入一个新的适应层系列(基于SE和新的领域-关注机制)。在所提出的通用检测器中,所有参数和计算都在领域之间共享,并且单个网络始终处理所有领域。作者在新的数据集上做实验(11个不同的目标检测数据集组成),检测效果比一组单领域检测器、一个多领域检测器和通用检测器的baseline都好。

介绍

目标检测任务是多种多样的,有种类差异(人脸、马、医学损伤等等),也有相机视角差异(从飞机、自动驾驶汽车上拍摄的图像等),还有图像风格(比如漫画、剪贴画、水彩画、医学图像等)等。现有的检测器大多是针对某一明确领域的(在单一数据集上进行训练和测试),部分原因是目标检测数据集是多样的且它们之间存在非平凡的领域转换。

众所周知,为不同领域的任务各自设置专门的检测器能达到很好的检测效果。但是实际应用中,系统可能需要处理多个领域的图像。简单粗暴一点的方法,我们要处理D个领域的图像,那么就训练D个检测器分别处理每个领域。但是,系统不一定明确某个时间点出现的是哪个领域的图像,而且模型会很大。所以研究人员提出了两种方案(图像分类),一种是在一个通用模型上解决多任务,另一种是在多个领域解决同一任务。目标检测比分类任务复杂得多。

文中建立了一个新的通用目标检测benckmark(包括11个不同的目标检测数据集),如图1所示:

并提出了一系列系统结构用于通用/多领域的目标检测问题(如图2):

其中D表示不同的领域,O表示输出,A表示领域专用的adapter,DA表示文中提出的领域注意模块,蓝色部分是领域通用,其他颜色表示各领域专用。图2的(a)和(b)是多领域检测器,显然它们都需要领域的先验知识。(a)是一系列领域专用检测器,不共享参数和计算;在(a)的基础上进行卷积层共享以及实现轻量级的领域专用的适应层,即(b)。图2的(c)和(d)是通用检测器,(c)所有领域间参数和计算(除了输出层),很难覆盖所有非平凡转换的领域,所以检测效果比(b)差;(d)是文中提出的方法,加入了DA(domain attention)模块,首先加入一系列通用SE adapter,然后引入基于特征的关注机制以实现对领域的敏感。该模块通过通用SE适配器库学习将网络激活分配给不同的域,并通过领域-注意机制来确定它们的响应,所以adapter可以专注于各自的领域。由于该过程是数据驱动的,所以域的数量不必与数据集的数量相匹配,数据集可以跨越多个域。网络可以利用跨领域的共享知识。

Multi-domain Object Detection

通用目标检测benchmark(UODB):Pascal VOC,WiderFace,KITTI,LISA,DOTA、COCO、Watercolor、Clipart、Comic、Kitchen和DeepLesions。

Single-domain Detector Bank

将Faster R-CNN作为Baseline,在每个数据集上分别训练检测器,得到11个检测器。各个检测器对应的卷积激活的均值和方差如下图:

VOC和COCO的激活分布是相似的,而DOTA、DeepLesion和CrossDomain的分布相对差别较大。此外,不同层的统计结果不同。前面的层对校正领域偏移贡献更大,所以比后面的层差异性更明显,RPN层差异也很明显(虽然它们是类别无关的)。而且很多层在不同的数据集上有相似的统计数据,特别是中间层,这表明至少在一些领域它们是可以数据共享的。

Adaptive Multi-domain Detector

该模型中输出层和RPN层是领域专用的,网络区域部分是共享的(如所有的卷积层)。为了适应新的领域,文中提出了一些额外的领域专用层(补偿领域转移、轻量化)。

使用SE模块构建所有的领域适应检测器,原因如下:领域适应与基于特征的注意力机制相关,而SE模块根据各channel的依赖关系来调节channel的响应,这可以看做是一种基于特征的注意力机制;而且基于SE模块的SENet在ImageNet上具有很好的分类效果,而且是一个轻量化模型。

SE Adapters

SE adapter包括如下操作:首先使用一个全局池化层进行Squeeze,然后通过两个全连接层组成的bottleneck结构来建模通道之间的相关性(先将特征维度降低到输入的1/r,然后经过ReLU激活后再通过一个全连接层升回原来的维度),这样可以具有更多的非线性、极大减少参数量和计算量。

文中r取16。FSE是指FC+ReLU+FC 。

将其用于多领域的目标检测(称为SE adapter bank),如图4b所示,给每个领域添加一个SE adapter分支和一个领域开关,可以选择领域关联的SE adapter。实现了图2b的结构,模型大小是图2a的1/5.

Universal Object Detection

在上述方法中,需要有领域的先验信息,而在自动系统中这是不可取的,比如自动驾驶或机器人系统。作者设计了通用检测器来解决这一问题。

Universal Detector

最简单的实现如上图所示,也就是所有task共享同一检测器,而输出层是task-specific的。这种方法简单粗暴,没有特定领域的参数,在所有领域上强制使用相同的参数/表示,检测效果较差。

Domain-attentive Universal Detector

理想情况下,通用检测器应该具有一定的领域敏感性,并且能够适应不同的领域。与多领域检测的区别在于:第一,必须自动推断领域;第二,不需要绑定领域和任务。

而一个常用的领域往往会有很多子领域,以交通场景为例,包含天气条件(晴天、雨天等)、环境(城市、乡村)等子领域。实际上,领域可能没有明确的语义,即它们可以是数据驱动的。在这种情况下,不需要要求每个检测器在单个域中工作,而软域分配更有意义。文章提出DA(domain adaptation)模块来突破网络单独处理单一领域的局限性。如下图所示。

Universal SE Adapter Bank

没有领域switch,通过连接各个域适配器的输出来实现的,以形成一个通用的表示空间。

其中N是adapter的数目。

每个分支(非线性)沿着与特定域的统计信息相匹配的子空间映射输入。然后,注意力组件产生一组域敏感的权重,用于以数据驱动的方式组合这些映射。在这种情况下,不需要事先知道操作域,因为输入映像可以激发多个SE适配器分支。

Domain Attention生成一个领域敏感的权重集,用于组合SE bank映射。DA组件首先对输入特征进行全局池化,然后应用Softmax层(线性层加Softmax函数),即

然后将得到的向量SDA给USE的输出XUSE加权,得到领域适应的响应向量:

最后逐通道进行激活的rescale,即:

其中Fscale是逐通道乘法。

Experiments

实验backbone:Faster R-CNN + SE-ResNet-50(pretrained on ImageNet)

数据集、超参数设置以及单领域检测器的mAP:

mAP比较如下:

只使用了五个数据集。

多领域目标检测器(adaptive)的平均精度相比baseline提升了0.7%,且明显优于BN Adapter和residual adapter(RA)。通用目标检测器只增加了0.5M参数,但平均精度较差(只有72.5%)。领域注意机制的通用检测器效果最好,每个领域参数增加了大约7%,平均精度相对baseline提升了1.6%。如果领域注意机制的参数固定(也就是直接取SE adapter 响应的平均),平均精度则会下降0.5%(相对baseline提升1.1%)。

SE adapter数目的影响

5个adapter左右是最合适的。

实验结果:

domain attention module学到了什么?下图显示了第四和第五个残差块第一阶段残差和最后一阶段残差学到的权重。

official evaluation

上表显示了universal+DA模型在各个官方测试集上的结果,增加了领域自适应后,在多个数据集上的mAP都有不同程度的提升。

Towards Universal Object Detection by Domain Attention的更多相关文章

  1. object detection 总结

    1.基础 自己对于YOLOV1,2,3都比较熟悉. RCNN也比较熟悉.这个是自己目前掌握的基础2.第一步 看一下2019年的井喷的anchor free的网络3.第二步 看一下以往,引用多的网路4. ...

  2. (转)Awesome Object Detection

    Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...

  3. Viola–Jones object detection framework--Rapid Object Detection using a Boosted Cascade of Simple Features中文翻译 及 matlab实现(见文末链接)

    ACCEPTED CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION 2001 Rapid Object Detection using a B ...

  4. Rapid Object Detection using a Boosted Cascade of Simple Features 部分翻译

    Rapid ObjectDetection using a Boosted Cascade of Simple Features 使用简单特征级联分类器的快速目标检测 注:部分翻译不准处以红色字体给出 ...

  5. paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)

    1. 早期C. Koch与S. Ullman的研究工作. 他们提出了非常有影响力的生物启发模型. C. Koch and S. Ullman . Shifts in selective visual ...

  6. Object Detection · RCNN论文解读

    转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列.2010年-2012年,Object D ...

  7. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

  8. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

  9. (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey

    <Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...

随机推荐

  1. Spring Cloud Feign初接触

    最近想使用下Feign,然后简单了解了一下,简单的搭了个demo. 首先简单介绍一下Feign,它是一个Http请求客户端,类似HttpClient,具体里面实现还没去看,知道它是一个请求客户端就行, ...

  2. python之深拷贝和浅拷贝

    1.当拷贝的是不可变数据类型(数值.字符串.元组),不管是深拷贝和浅拷贝,都指向的是同一地址: 2.当拷贝的对象是可变数据类型(列表.字典): (1)当浅拷贝的对象中无复杂子对象,原来值的改变不会影响 ...

  3. springcloud之Feign、ribbon设置超时时间和重试机制的总结

    一 超时时间配置 如果在一个微服务当中对同一个接口同时配置了Hystrix与ribbon两个超时时间,则在接口调用的时候,两个计时器会同时读秒. 比如,访问一个接口需要2秒,你的ribbon配置的超时 ...

  4. 关于生成器generator

    generator:个人认为是产生值的,和列表生成式类似,但是比列表生成式更加节省空间 我们平常自己构造的函数中,一般返回值时都会使用return,在generator中,我们使用的是yield yi ...

  5. 全栈项目|小书架|服务器开发-Koa2 全局异常处理

    什么是异常 做开发的基本都知道异常,像Android开发中常见的ANR异常.空指针异常,服务器开发中经常遇到的异常404,500异常,还有一些其他常见的异常,具体可见HTTP状态码. 基本上这些异常可 ...

  6. 短期Flag

    十一我不想放假,我想成为那10个被拉出去去南方虐的人之一. 然而我现在,最近考得连能不能稳在之留下10个人的第一机房都有点悬. 最近的问题都无法解决,这个短期flag我也不想让它倒啊! 所以,Deep ...

  7. 基于华为物联网IOT的应用开发 ---界面管理开发

    在前面随笔<基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装>介绍过IOT中应用侧SDK的封装,主要就是基于华为IOT的应用侧封装,以便在应用系统中进行调用.应用侧SDK ...

  8. DAY 3 数论专场

    2019-07-23 今天的题目一个比一个神仙,很早之前就在讨论今天是不是晚上回宾馆就没脑子了,后来发现,是中午.... 一上午就讲了一个PPT,然而标题就两个子---数论... 这谁顶的住....整 ...

  9. NLP-BM25算法理解

    前两天老师给我们讲解了BM25算法,其中包括由来解释,以及算法推导,这里我再将其整理,这里我不讲解之前的BIM模型,大家有兴趣可以自行了解.Okapi BM25:一个非二值的模型bm25 是一种用来评 ...

  10. servlet三大组件

    servlet大致可以分为三个:简单servlet.过滤servlet.监听servlet servlet: servlet的创建 创建一个类并实现Servlet接口. 重写service方法. 在服 ...