边界对于定位问题十分重要,BorderDet的核心思想BorderAlign巧妙又有效,将边界特征融入到目标定位预测中,而且能够简单地融入到各种目标检测算法中带来较大的性能提升下。在开源实现中,对BorderAlign进行了高效CUDA实现,不会对耗时带来很大的影响,整个工作十分扎实



来源:晓飞的算法工程笔记 公众号

论文: BorderDet: Border Feature for Dense Object Detection

Introduction


  目前大部分的point-based目标检测算法(SSD, RetinaNet, FCOS)使用特征图的single-point进行定位和分类,但single-point特征可能没有足够多的信息来表达完整的实例以及实例的边界信息。很多研究通过各种手段补充single-point的特征表达能力,这些方法虽然能够提取更多的特征,但可能带来不必要的计算以及会受背景的影响。最关键的,这些方法都没有直接利用边界特征,而边界对于定位是十分重要的。为此,论文提出新的特征提取操作BorderAlign,可直接利用边界特征优化原本的single-point特征,基于BorderAlign提出了SOTA目标检测算法BorderDet。

  论文的主要贡献如下:

  • 分析dense object detector的特征表达,展示边界特征对补强single-point特征的重要性。
  • 提出新的特征提取操作BorderAlign,通过边界特征来优化网络特征,并基于BorderAlign提出高性能目标检测算法BorderDet。
  • 在COCO数据集上,将BAM模块集成到FCOS和FPN中分别提升2.8AP和3.6AP,而集成到ResNext-101-DCN准确率为50.3AP,达到SOTA。

Our Approach


Motivation

  论文以FCOS为baseline,加入第二阶段预测来对比多种特征增强方法的效果,最后发现仅用边界中心点的增强效果与region-based方法几乎一样。从实验结果来看,可以得出以下结论:

  • point-based特征表达缺乏完整物体的显著特征,需要进行特征增强。
  • 从完整的boxes内提取特征是不必要的,且存在冗余。
  • 高效的边界特征提取策略能够带来更好的性能。

Border Align

  密集地从边界提取特征是很低效的,一般边界上的目标物体相关的点很少,大多为背景点。为此,论文提出BorderAlign特征提取操作,能够有效且自适应地榨取边界特征。

  参考R-FCN的思想,BorderAlign提取\((4+1)C\)维度的border-sensitive特征图作为输入,\(4C\)维度对应4条边,另外\(C\)维对应原本的single-point特征。假定特征图顺序为(single point, left border, top border, right border和bottom border),计算输出特征图时,对点\((i, j)\)对应的bbox的每条边均匀取\(N\)个采样点,\(N\)默认设为10,采样点的值使用双线性插值计算,最后通过channel-wise max-pooling得到输出:

  \((x_0, y_0, x_1, y_1)\)为点\((i,j)\)预测的bbox,这种方法能够自适应地从边界极点榨取边界特征。

  论文对border-sensitive特征图中各channel的最大值进行了可视化,发现最大值分布基本符合预设的作用。

Border Alignment Module

  BAM模块封装了BorderAlign操作,先使用\(1\times 1\)卷积生成border-sensitive feature maps,然后结合初步bbox预测,通过BorderAlign输出Border增强后的特征图,再使用\(1\times 1\)卷积恢复为模块输入维度。

BorderDet

  BorderDet基于FCOS检测架构,主要在特征金字塔的预测head中加入BAM模块。首先预测初步bbox预测和初步分类预测,然后将初步bbox预测输入到BAM模块得到Border分类预测和Border bbox预测,预测跟原先一样使用\(1\times 1\)卷积,最后统一两种结果进行输出。

BorderRPN

  BAM模块也能用于two-stage目标检测算法中,将原本第二阶段的region-based特征提取改为文中的BAM模块进行边界特征增强预测,另外将前面特征提取的卷积改为空洞卷积来提升感受域。

Model Training and Inference

  • Target Assignment

  BorderDet基于FCOS进行初步预测,在第二阶段将GT赋予每个IoU大于0.6的初步预测结果,回归目标定义为:

  \(\sigma\)为方差,用于提高多任务学习的效率,默认为0.5。

  • Loss Function

  BorderDet的损失函数定义为:

  \(\mathcal{L}^C_{cls}\)和\(\mathcal{L}^C_{reg}\)为初步分类损失和初步定位损失,在实现时分别为focal loss和IoU loss,\(\mathcal{L}^B_{cls}\)和\(\mathcal{L}^B_{reg}\)则计算border预测结果与对应GT之间的分类损失和定位损失,仅处理正样本,在实现时分别为focal loss和\(\mathcal{L}_1\) loss。

  • Inference

  BorderDet在推理时对两种分类结果进行直接的相乘输出,而对于定位则使用border定位预测对初步定位的bbox进行公式2的反向转换,对所有的结果进行NMS输出,IoU阈值为0.6。

Experiments


  对BAM模块以及BorderAlign参数进行对比实验。

  对比其它特征增强方法,作者对BorderAlign进行高效的CUDA实现,速度很快。

  直接将BorderDet结合到one-stage检测器和two-stage检测器中。

  与主流的检测算法进行对比。

Conclustion


  边界对于定位问题十分重要,BorderDet的核心思想BorderAlign巧妙又有效,将边界特征融入到目标定位预测中,而且能够简单地融入到各种目标检测算法中带来较大的性能提升下。在开源实现中,对BorderAlign进行了高效CUDA实现,不会对耗时带来很大的影响,整个工作十分扎实。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

BorderDet:通过边界特征大幅提升检测准确率,即插即用且速度不慢 | ECCV 2020 Oral的更多相关文章

  1. SIFT特征点检测学习一(转载)

    新手上路,先转载学习tornadomeet的博客:http://www.cnblogs.com/tornadomeet/archive/2012/08/16/2643168.html 特征点检测学习_ ...

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

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

  3. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

  4. OpenCV特征点检测------ORB特征

    OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt ...

  5. ORB特征点检测

    Oriented FAST and Rotated BRIEF www.cnblogs.com/ronny   这篇文章我们将介绍一种新的具有局部不变性的特征 -- ORB特征,从它的名字中可以看出它 ...

  6. OPENCV图像特征点检测与FAST检测算法

    前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...

  7. python+OpenCV 特征点检测

    1.Harris角点检测 Harris角点检测算法是一个极为简单的角点检测算法,该算法在1988年就被发明了,算法的主要思想是如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点.基本原理是根据 ...

  8. OpenCV特征点检测匹配图像-----添加包围盒

    最终效果: 其实这个小功能非常有用,甚至加上只有给人感觉好像人脸检测,目标检测直接成了demo了,主要代码如下: // localize the object std::vector<Point ...

  9. OpenCV特征点检测------Surf(特征点篇)

    Surf(Speed Up Robust Feature) Surf算法的原理                                                              ...

  10. surf特征点检测

    ※注:参数SURF中的hessian阈值是图像Hessian矩阵判别式的阈值,值越大检测出的特征点就越少,也就意味着特征点越稳定 #include "opencv2/core/core.hp ...

随机推荐

  1. HTTP协议发展历程

    HTTP协议发展历程 HTTP超文本传输协议是一个用于传输超文本文档的应用层协议,它是为Web浏览器与Web服务器之间的通信而设计的,HTTP协议到目前为止全部的版本可以分为HTTP 0.9.HTTP ...

  2. junit使用mock objects进行单元测试

    上一篇我介绍了使用stub进行单元测试.那么mock objects和stub有何区别?什么情况下使用mock objects呢? 下面摘自junit in action书中的解释: mock obj ...

  3. Spring源码阅读系列--全局目录

    阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. 写在开始前的话: 阅读spring 源码实 ...

  4. 读 NebulaGraph源码 | 查询语句 LOOKUP 的一生

    本文由社区用户 Milittle 供稿 LOOKUP 是图数据库 NebulaGraph 的一个查询语句.它依赖索引,可以查询点或者边的信息.在本文,我将着重从源码的角度解析一下 LOOKUP 语句的 ...

  5. 《A Hierarchical Framework for Relation Extraction with Reinforcement Learning》论文阅读笔记

    代码 原文地址 摘要 现有的大多数方法在确定关系类型之前,需要先识别出所有的实体,这样就忽略了实体提及和关系类型之间的交互.本文提出了一种新颖的联合抽取范式,把相关实体看作是关系的参数( 首先检测一个 ...

  6. ArrayList继承了AbstractList为何还要实现List接口

    ArrayList继承了AbstractList为何还要实现List接口? 相关的问题: Vector既然继承了AbstractList为啥还要实现List接口 HashMap继承了AbstractM ...

  7. 俄罗斯套娃 (Matryoshka) 嵌入模型概述

    在这篇博客中,我们将向你介绍俄罗斯套娃嵌入的概念,并解释为什么它们很有用.我们将讨论这些模型在理论上是如何训练的,以及你如何使用 Sentence Transformers 来训练它们. 除此之外,我 ...

  8. RabbitMQ 快速复习

    目录 RabbitMQ学习笔记 1.消息队列概述 1.1 为什么学习消息队列 1.2 什么是消息中间件 1.3 消息队列应用场景 1.3.1 异步处理 1.3.2 解耦服务 1.3.3 流量削峰 1. ...

  9. 快速复习JDBC(超详细)

    第一章  JDBC概述 之前我们学习了JavaSE,编写了Java程序,数据保存在变量.数组.集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系: 后来我们学 ...

  10. TLS原理与实践(三)tls1.3

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 tls1.2作为主流的网路安全协议,被广泛应用,但tls1.2仍 ...