论文提出了基于注意力的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的更多相关文章

  1. 基于 python imageai 对象检测 目标检测 识别 视频

    1.视频连接如下: http://www.iqiyi.com/w_19s6vownit.html

  2. 基于模糊Choquet积分的目标检测算法

    本文根据论文:Fuzzy Integral for Moving Object Detection-FUZZ-IEEE_2008的内容及自己的理解而成,如果想了解更多细节,请参考原文.在背景建模中,我 ...

  3. 基于COCO数据集验证的目标检测算法天梯排行榜

    基于COCO数据集验证的目标检测算法天梯排行榜 AP50 Rank Model box AP AP50 Paper Code Result Year Tags 1 SwinV2-G (HTC++) 6 ...

  4. PyTorch专栏(八):微调基于torchvision 0.3的目标检测模型

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...

  5. 基于YOLO和PSPNet的目标检测与语义分割系统(python)

    基于YOLO和PSPNet的目标检测与语义分割系统 源代码地址 概述 这是我的本科毕业设计 它的主要功能是通过YOLOv5进行目标检测,并使用PSPNet进行语义分割. 本项目YOLOv5部分代码基于 ...

  6. 【AdaBoost算法】基于OpenCV实现人脸检测Demo

    一.关于检测算法 分类器训练: 通过正样本与负样本训练可得到分类器,opencv有编译好的训练Demo,按要求训练即可生成,这里我们直接使用其已经训练好的分类器检测: 检测过程: 检测过程很简单,可以 ...

  7. [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...

  8. 基于OpenCV的火焰检测(一)——图像预处理

    博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...

  9. 基于图的异常检测(三):GraphRAD

    基于图的异常检测(三):GraphRAD 风浪 一个快乐的数据玩家/风控/图挖掘 24 人赞同了该文章 论文:<GraphRAD: A Graph-based Risky Account Det ...

  10. 基于高斯分布的异常检测(Anomaly Detection)算法

    记得在做电商运营初期,每每为我们频道的促销活动锁取得的“超高”销售额感动,但后来随着工作的深入,我越来越觉得这里面水很深.商家运营.品类运营不断的通过刷单来获取其所需,或是商品搜索排名,或是某种kpi ...

随机推荐

  1. 二进制文件转Hex和Wav文件转Hex的Java代码

    二进制文件转Hex 对于需要将二进制数据写入固件的场景(例如mp3文件), 需要将二进制文件表示为byte数组 import java.io.File; import java.io.FileInpu ...

  2. java集成华为云obs上传下载实战

    说明 最近项目上需要开发一个服务去和华为云OBS集成获取一些业务上的文件,此处记录一下简单的java集成obs的入门,希望对大家快速入门有所帮助:) 实现效果 上传对象 下载到本地 操作步骤 1.开通 ...

  3. win32-使用FillRect绘制具有渐变颜色的客户区域背景

    void OnEraseBkGnd(HWND hwnd) { /* Vars */ HDC dc; /* Standard Device Context; used to do the paintin ...

  4. 【Android逆向】frida hook so 函数

    1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 ja ...

  5. 重点:递归函数,数学模块,随机模块---day14

    1.递归函数 自己调用自己的函数是递归函数 递:去 归:回 一去一回叫作递归 简单递归 def digui(n): print(n,'<==1==>') if n > 0: digu ...

  6. django学习第五天---model类的属性参数,单表ORM数据库增删改查动作,查询的13个API接口

    model类的属性参数 比如:models.CharField(null=True,blank=True) (1)null 如果为True,Django将用NULL在数据库中存储空值.默认值时Fals ...

  7. [Rust] Workspace,Package, Crate 和 Module

    package(包) 一个 package 对应一个项目,package 的信息在 Cargo.toml 里面定义. crate(木箱.箱子) crate 指的是 package 编译后的输出文件.以 ...

  8. 【Azure 环境】使用 az ad group create 时候遇见 Insufficient privileges to complete the operation

    问题描述 使用China Azure,通过Azure CLI 创建AAD组报错,提示权限不足 Insufficient privileges to complete the operation # 使 ...

  9. 【Azure 应用服务】遇见“无法创建hybrid connection for App Service”的解决办法

    Hybrid Connection (混合连接) 在两个联网应用程序之间启用了双向.请求-响应和二进制流通信以及简单的数据报流.通过混合连接,可以实现应用部署在公网环境中,而数据库保存在本地私网环境中 ...

  10. 【Azure 应用服务】基于Azure的CI/CD工具链部署App Service

    问题描述 在中国区Azure中,App Service是否支持CI/CD工具部署呢? Windows 和Linux两个系统都是同样的方法吗? 问题解答 目前中国区Azure支持Windows 和 Li ...