RelationNet++:基于Transformer融合多种检测目标的表示方式 | NeurIPS 2020
论文提出了基于注意力的BVR模块,能够融合预测框、中心点和角点三种目标表示方式,并且能够无缝地嵌入到各种目标检测算法中,带来不错的收益
来源:晓飞的算法工程笔记 公众号
论文: RelationNet++: Bridging Visual Representations for Object Detection via Transformer Decoder

Introduction

目标检测算法有很多种目标表示方法,如图b所示,有基于矩形框的也有基于关键点的。不同的表示方法使得检测算法在不同的方面表现更优,比如矩形框能更好的对齐标注信息,中心点更利于小目标识别,角点则能够更精细地定位。论文探讨能否将多种表示方式融合到单框架中,最终提出了基于注意力的解码模块BVR(bridging visual representations),该模块与Transformer的注意力机制类似,通过加权其它目标特征来增强当前目标特征,能够融合不同表示方式的异构特征。

以BVR嵌入anchor-based方法为例,如图a所示,表示方式acnhor作为\(query\),其它表示方式中心点和角点作为\(key\),计算\(query\)和\(key\)间关联性权重,基于权重整合\(key\)的特征来增强\(query\)的特征。针对目标检测的场景,论文对权重计算进行了加速,分别为key sampling和shared location embedding,用于减少\(key\)的数量以及权重计算量。除了嵌入到anchor-based方法外,BVR也可嵌入到多种形式的目标检测算法中。
论文的贡献如下:
- 提出通用模块BVR,可融合不同目标表示方式的异构特征,以in-place的方式嵌入到各种检测框架,不破坏原本的检测过程。
- 提出BVR模块的加速方法,key sampling和shared location embedding。
- 经测试,在ReinaNet、Faster R-CNN、FCOS和ATSS四个检测器上有明显的提升。
Bridging Visual Representations

使用不同表示方式的检测算法有不同的检测流程,如图2所示,BVR注意力模块以算法原本的表示方式为主特征,加入其它表示方式作为辅助特征。将主特征\(query\)和辅助特征\(key\)作为输入,注意力模块根据关联性加权辅助特征来增强主特征:

\(f^q_i\),\(f^{'q}_i\),\(g^q_i\)为第\(i\)个\(query\)实例的输入特征,输出特征和几何向量,\(f^k_j\),\(g^k_j\)为第\(j\)个\(key\)实例的输入特征和几何向量,\(T_v(\cdot)\)为线性变化,\(S(\cdot)\)为\(i\)和\(j\)实例间的关联性计算:

\(S^A(f^q_i, f^k_j)\)为外观特征相似度,计算方法为scaled dot product。\(S^G(g^q_i, g^k_j)\)为几何位置相关的项,先将相对的几何向量进行cosine/sine位置embedding,再通过两层MLP计算关联度。由于不同表示方式的几何向量(4-d预测框与2-d点)不同,需从4-d预测框提取对应的2-d点(中心或角点),这样两种不同表示方式的几何向量就对齐了。
在实现时,BVR模块采用了类似multi-head attention的机制,head数量默认为8,即公式1的+号后面改为Concate多个关联特征的计算,每个关联特征的维度为输入特征的1/8。
BVR for RetinaNet

以RetinaNet为例,RetinaNet在特征图的每个位置设置9个anchor,共有\(9\times H\times W\)个预测框,BVR模块将\(C\times 9\times H\times W\)特征图作为输入(\(C\)为特征图维度),生成相同大小的增强特征。如图a所示,BVR使用中心点和角点作为辅助的\(key\)特征,关键点通过轻量级的Point Head网络预测,然后选择少量的点输入到注意力模块中增强分类特征和回归特征。
Auxiliary (key) representation learning
Point Head网络包含两层共享的\(3\times 3\)卷积,然后接两个独立的子网(\(3\times 3\)卷积+sigmoid),预测特征图中每个位置为中心点(或角点)的概率及其相应的偏移值。如果网络包含FPN,则将所有GT的中心点和角点赋予各层进行训练,不需根据GT大小指定层,这样能够获取更多的正样本,加快训练。
Key selection
由于BVR模块使用了角点和中心作为辅助表示方式,特征图的每个位置会输出其为关键点的概率。如果将特征图的每个位置都作为角点和中心点的候选位置,会生成超大的\(key\)集,带来大量的计算消耗。此外,过多的背景候选者也会抑制真正的角点和中心点。为了解决上述问题,论文提出top-k(默认为50)\(key\)选择策略,以角点选择为例,使用stride=1的\(3\times 3\)MaxPool对角点分数图进行转换,选取top-k分数位置进行后续计算。对于包含FPN的网络,则选择所有层的top-k位置,输入BVR模块时不区分层。
Shared relative location embedding
对于每组\(query\)和\(key\),公式2的几何项需要对输入的相对位置进行cosine/sine embedding以及MLP网络转换后再计算关联度。公式2的几何项的几何复杂度和内存复杂度为\(\mathcal{O}(time)=(d_0+d_0d_1+d_1G)KHW\)和\(\mathcal{O}(memory)=(2+d_0+d_1+G)KHW\),\(d_0\),\(d_0\),\(G\),\(K\)分别为cosine/sine embedding维度,MLP网络内层的维度、multi-head attention模块的head数量以及选择的\(key\)数量,计算量和内存占用都很大。

由于几何向量的相对位置范围是有限的,一般都在\([-H+1, H-1]\times [-W+1, W-1]\)范围内,可以预先对每个可能的值进行embedding计算,生成\(G\)维几何图,然后通过双线性采样获得\(key/query\)对的值。为了进一步降低计算量,设定几何图的每个位置代表原图\(U=\frac{1}{2}S\)个像素,\(S\)为FPN层的stride,这样\(400\times 400\)的特征图就可表示\([-100S, 100S)\times [-100S, 100S)\)的原图。计算量和内存消耗也降低为\(\mathcal{O}(time)=(d_0+d_0d_1+d_1G)\cdot 400^2+GKHW\)和\(\mathcal{O}(memory)=(2+d_0+d_1+G)\cdot 400^2+GKHW\)。
Separate BVR modules for classification and regression
目标中心点表示方式可提供丰富目标类别信息,角点表示方式则可促进定位准确率。因此,论文分别使用独立的BVR模块来增强分类和回归特征,如图a所示,中心点用于增强分类特征,角点用于增强回归特征。
BVR for Other Frameworks

论文也在ATSS、FCOS和Faster R-CNN上尝试BVR模块的嵌入,ATSS的接入方式跟RetinaNet一致,FCOS跟RetinaNet也类似,只是将中心点作为\(query\)表示方式,而Faster R-CNN的嵌入如图4所示,使用的是RoI Aligin后的特征,其它也大同小异。
Experiment




论文进行了充足的对比实验,可到原文看看具体的实验步骤和关键结论。
Conclusion
论文提出了基于注意力的BVR模块,能够融合预测框、中心点和角点三种目标表示方式,并且能够无缝地嵌入到各种目标检测算法中,带来不错的收益。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

RelationNet++:基于Transformer融合多种检测目标的表示方式 | NeurIPS 2020的更多相关文章
- 基于 python imageai 对象检测 目标检测 识别 视频
1.视频连接如下: http://www.iqiyi.com/w_19s6vownit.html
- 基于模糊Choquet积分的目标检测算法
本文根据论文:Fuzzy Integral for Moving Object Detection-FUZZ-IEEE_2008的内容及自己的理解而成,如果想了解更多细节,请参考原文.在背景建模中,我 ...
- 基于COCO数据集验证的目标检测算法天梯排行榜
基于COCO数据集验证的目标检测算法天梯排行榜 AP50 Rank Model box AP AP50 Paper Code Result Year Tags 1 SwinV2-G (HTC++) 6 ...
- PyTorch专栏(八):微调基于torchvision 0.3的目标检测模型
专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...
- 基于YOLO和PSPNet的目标检测与语义分割系统(python)
基于YOLO和PSPNet的目标检测与语义分割系统 源代码地址 概述 这是我的本科毕业设计 它的主要功能是通过YOLOv5进行目标检测,并使用PSPNet进行语义分割. 本项目YOLOv5部分代码基于 ...
- 【AdaBoost算法】基于OpenCV实现人脸检测Demo
一.关于检测算法 分类器训练: 通过正样本与负样本训练可得到分类器,opencv有编译好的训练Demo,按要求训练即可生成,这里我们直接使用其已经训练好的分类器检测: 检测过程: 检测过程很简单,可以 ...
- [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...
- 基于OpenCV的火焰检测(一)——图像预处理
博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...
- 基于图的异常检测(三):GraphRAD
基于图的异常检测(三):GraphRAD 风浪 一个快乐的数据玩家/风控/图挖掘 24 人赞同了该文章 论文:<GraphRAD: A Graph-based Risky Account Det ...
- 基于高斯分布的异常检测(Anomaly Detection)算法
记得在做电商运营初期,每每为我们频道的促销活动锁取得的“超高”销售额感动,但后来随着工作的深入,我越来越觉得这里面水很深.商家运营.品类运营不断的通过刷单来获取其所需,或是商品搜索排名,或是某种kpi ...
随机推荐
- Keil MDK STM32系列(十) Ubuntu下的PlatformIO开发环境
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Spring源码之-AOP
目录 一.大话AOP 1.AOP的概念 2.必要的准备工作 什么是代理模式? 3.大话AOP 那么AOP 具体是什么呢? 实现AOP的方式 二.动态AOP自定义标签 1.JDK动态代理 2.CGLIB ...
- 3分钟总览微软TPL并行编程库
有小伙伴问我每天忽悠的TPL是什么?☹️ 这次站位高一点,严肃讲一讲. 引言 俗话说,不想开飞机的程序员不是一名好爸爸:作为微软技术栈的老鸟,一直将代码整洁之道奉为经典, 优秀的程序员将优雅.高性能的 ...
- win32 - 将原始音频样本转换为wav文件
需要先从麦克风中采样,代码样本可以参考官方示例: WASAPI Capture Shared Event Driven 官方示例采样10s, 我们需要在WriteWaveFile函数下添加生成原始音频 ...
- MySQL的随机排序(random orderby)
MySQL的随机排序(random orderby)是指在查询数据库时,将结果集以随机的方式排列.这种排序方式可以用于有趣的应用场景,例如实现随机音乐播放.广告推荐等. 要实现MySQL的随机排序,可 ...
- ABP开发需要用到的命令
0.命令行在哪里执行? 在Visual Studio的"解决方案资源管理器"的解决方案或者项目上点鼠标右键,选择"在终端中打开". 1.安装abp的命令行 官网 ...
- mac环境下安装python3的requests包
大家知道,mac环境默认安装的都是python2,自己装好python3之后,怎么使用pip来安装到python3下的包呢? 解决方法:pip3 install requests
- Rust 登上了开源头条「GitHub 热点速览」
抱歉!上周因为出月刊工作量比较大,所以「GitHub 热点速递」暂停了一期,必须要给守着更新的读者道个歉,以后每周二的「热点速递」会按时更新,下不为例. 说回本周的热门开源项目,Rust 语言可谓是出 ...
- 1、eureka的注册流程
客户端注册到服务端是通过http请求的 涉及到多级缓存 register注册表 源码精髓:多级缓存设计思想 在拉取注册表的时候: 首先从ReadOnlyCacheMap里查缓存的注册表. 若没有,就找 ...
- 4、dubbo的高可用
1.zookeeper宕机与dubbo直连 现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务. 原因: 健壮性 l 监控中心宕掉不影响使用,只是丢失部分采样数据 l 数据库宕掉后, ...