RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习。虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验上看提升不少



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

论文: RepPoints V2: Verification Meets Regression for Object Detection

Introduction


  神经网络预测的两种方法分别为验证(verification)与回归(regression),当前的一些目标定位方法结合了这两种方法来取得SOTA性能,先对预设的anchor box进行验证从而初步定位,然后回归box的偏移值进行调整。最近一些目标定位方法仅使用回归也取得了不错的性能,比如RepPoints。

  为此,论文研究是否可以在纯回归的定位算法中加入验证任务来增强性能,具体的实现方法是在原网络上加入辅助分支(auxiliary side-branches)的形式,有监督地进行学习,优化中间特征以及最终的检测结果。

A Brief Review of a Pure Regression Method: RepPoints


  RepPoints使用了纯回归的方法,具体的可以看看之前发的文章,从特征图位置\(p=(x,y)\)开始,直接回归一组点\(\mathcal{R}^{'}=\{p^{'}_i=(x^{'}_i, y^{'}_i)\}\)来表达目标的空间位置,共有两个连续的步骤:

  \(\mathcal{R}=\{p_i=(x_i, y_i)\}^{n}_{i=1}\)为中间的点集,\(F_p\)为位置\(p\)的特征向量,\(g_i\)和\(g^{'}_i\)为2-d的回归函数,最终的bbox通过转化函数\(\mathcal{T}\)从点集\(\mathcal{R}\)和\(\mathcal{R}^{'}\)得到。尽管RepPoints使用了纯回归方法,没有anchor验证步骤,其性能并不比anchor-based方法差。

Corner Point Verification


  角点验证由CornerNet提出,是论文采用的其中一种验证方法,在很多keypoint-based检测算法中有应用。角点验证给每个特征图位置预测一个分数,用来判断该特征点是否为目标的左上角点或右下角点,再预测两个偏移值来分别对角点进行调整,弥补下采样导致的精度问题。

  论文的实现跟原版的类似,使用corner pooling进行特征提取,使用focal loss训练角点分数预测以及smooth L1 loss训练偏移值。若GT角点位于该特征点的bin中,则认为该特征点为正样本,其它均为负样本。在计算损失时,越靠近正样本点的负样本点会根据距离给一个高斯分数,可进行更平滑的学习。

  当然,论文进行了一些改进,GT角点直接对应到FPN各层,不需要根据目标的大小决定对应哪层。

Within-box foreground verification


  另一个验证任务是验证特征点是否在物体的内部,这种前景验证的信息均匀地存在于物体内部区域,不像角点那样集中于物体的极点。使用一个类别热图进行训练,对于\(C\)个物体类别,类别热图共有\(C\)维特征,每个维度表示该特征点属于该类别的概率。同样点,GT直接对应到FPN各层。

  需要注意的是,经典的focal loss可能会使大物体相对于小物体得到更多的关注。为此,论文提出正则化focal loss,对于正样本点,根据其对应的物体包含的特征点数进行损失值的正则化,而对于负样本点,使用正样本点总数进行损失值的正则化。

A General Fusion Method


  由于上述的两种验证任务都是相对物体的局部而言的,而纯回归的目标检测方法通常是直接检测目标的整体,所以论文采用辅助分支的形式接入,如图1所示,分别优化中间特征以及最终的检测结果。基于辅助分支,检测器可以得到以下收益:

  • Better features by multi-task learning,辅助的验证任务能够在训练的时候提供更丰富的监督,从而得到能够提升检测准确率的更强大特征。相对于Mask R-CNN,论文的验证任务不需要额外标注。
  • Feature enhancement for better regression,验证任务输出特征图包含角点位置以及前景区域,且特征图大小与回归使用的FPN特征图大小一致,所以将其进行\(1\times 1\)卷积(embed conv)处理后相加融合到FPN特征中。需要注意,主干回归任务的反向传播梯度仅传到embed conv层,避免影响验证任务的学习。
  • Joint inference by both methodologies,特征的融合隐式地帮助目标定位,而论文也显式地利用角点验证任务的输出来进行联合推理。角点任务善于角点的定位,但不善于分辨是否为真的角点,而主干回归任务的功能则相反。为此,论文提出调整主干回归任务输出的预测框的角点\(p_t\):



    \(t\)为角点类型(左上或右下),\(q^t\)为预测的角点位置,\(s(q^t)\)为验证分数,\(r\)为领域阈值,默认为1。

RepPoints v2: Fusing Verification into RepPoints


  为了让RepPoints与辅助验证任务分支有更好的兼容性,显式地将点集的前两个点定义为左上角点和右下角点(explicit-corners),并根据这两个点将预测的点集转化为预测框。

  验证模块取定位子网(详情取看看RepPoints的文章)的第三个卷积层的输出作为验证任务的输入,验证模块的结构如图2所示,完整训练损失函数为:

Experiments


  explicit-corners与原先方法的的效果对比。

  两种验证任务的效果对比。

  3种融合方法的效果对比。

  与SOTA性能对比。

Conclusion


  RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习。虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验上看提升不少。





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

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

RepPointsV2:更多的监督任务,更强的性能 | NIPS 2020的更多相关文章

  1. 价格更低、SLA 更强的全新 Azure SQL 数据库服务等级将于 9 月正式发布

    继上周公告之后,很高兴向大家宣布更多好消息,作为我们更广泛的数据平台的一部分, 我们将在 Azure 上提供丰富的在线数据服务.9 月,我们将针对 Azure SQL 数据库推出新的服务等级.Azur ...

  2. SOLOv 2:实例分割(动态、更快、更强)

    SOLOv 2:实例分割(动态.更快.更强) SOLOv2:  Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152. ...

  3. 【论文学习】YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)

    原文下载:https://arxiv.org/pdf/1612.08242v1.pdf 工程代码:http://pjreddie.com/darknet/yolo/ 目录 目录 摘要 简介 BETTE ...

  4. 更强、更稳、更高效:解读 etcd 技术升级的三驾马车

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 陈星宇(宇慕 ...

  5. C# 数据操作系列 - 18 让Dapper更强的插件

    0. 前言 在前一篇中我们讲到了Dapper的应用,但是给我们的感觉Dapper不像个ORM更像一个IDbConnection的扩展.是的,没错.在实际开发中我们经常用Dapper作为对EF Core ...

  6. 一个比 Redis 性能更强的数据库

    给大家推荐一个比Redis性能更强的数据:KeyDB KeyDB是Redis的高性能分支,侧重于多线程.内存效率和高吞吐量.除了性能改进外,KeyDB还提供主动复制.闪存和子密钥过期等功能.KeyDB ...

  7. 利用pyinotify监控文件内容,像tailf命令但比它更强

    Linux的tail/tailf命令使用了内核提供的inotify功能,下面的Python例子也使用inotify实现比tail/tailf更强的监控文件功能. watchfile.py #!/usr ...

  8. Delphi属性比对象的域有更强的功能

    8.4 Delphi自定义组件(3) http://tech.163.com 2006-04-29 11:49:34 来源: 清华大学出版社 网友评论0 条 论坛   3. 测试未安装的组件 在将新组 ...

  9. 更强的 JsonPath 兼容性及性能测试

    更强的 JsonPath 兼容性及性能测试 最近给自己的json框架snack3添加了json path支持.搞好之后,找了两个市面上流行框架比较性测试,以助自己改进框架的性能和兼容性. 测了一圈之后 ...

  10. Python装饰器:套层壳我变得更强了

    Python装饰器:套层壳我变得更强了 Python装饰器:套层壳我变得更强了 关于作用域和闭包可以聊点什么? 什么是作用域 什么是闭包 装饰器:套层壳我变得更强了 参考资料 昨天阅读了<Pyt ...

随机推荐

  1. Ubuntu20.04下的ESP8266环境

    硬件说明 ESP8266使用的是3.3V供电, 和Arduino不一样, ESP8266的I/O脚是不能防5V的, 连上就烧. 其输出只有12mA, 而Arduino是20-40mA. ESP8266 ...

  2. python中两个不同shape的数组间运算规则

    1 前言 声明:本博客讨论的数组间运算是指四则运算,如:a+b.a-b.a*b.a/b,不包括 a.dot(b) 等运算,由于 numpy 和 tensorflow 中都遵循相同的规则,本博客以 nu ...

  3. Dockerfile和docker-compose详解

    Dockerfile镜像制作 docker/podman中, 镜像是容器的基础,每次执行docker run的时候都会指定哪个基本镜像作为容器运行的基础.我们之前的docker的操作都是使用来自doc ...

  4. 【Azure 媒体服务】使用编码预设文件(Preset.json)来自定义编码任务 -- 创建视频缩略图

    问题描述 在Azure门户上创建Transform Encoding时候,只能选择 Built-in Preset 编码方式(如:H265ContentAwareEncoding) 在创建编码任务时, ...

  5. 【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?

    问题描述 当Windows发布新的安全漏洞后,会根据安全漏洞的级别分类来确定是紧急打补丁升级,还是每一月的补丁日( 每月第二周的星期二)来统一推送补丁. 比如最近的一个安全漏洞(9月13号发布)  C ...

  6. stm32f103ve+光电传感器使用教程+oled(HAL库)

    最近想做一个物联网农业监控系统,第一步就是能够学会使用相关的外设,比如温湿度检测,光照强度检测,还有CO2检测等. 这次讲一下光电传感器的使用和代码实现. 1.知识储备:串口使用,ADC采集(此处用的 ...

  7. 2.UML类图基本介绍

    1. UML 基本介绍 UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 U ...

  8. pycharm/Intellij idea双击打不开,没有反应,下列方法亲测有用!

    第一种方法: 看看你的微软C++运行库是不是误删了.....我就这么干过...以前有个软件捆绑这个 安装了 结果我后来给删了 ,导致我pycharm 和intellij idea全都打不开 !!!各位 ...

  9. 菜单导航tab切换样式的小技巧

    1.最终效果 2.HTML结构 <div class="licaiMenu"> <ul class="navi"> <li> ...

  10. vite启动dev的项目,在nginx做代理的时候,二级目录尾要加/

    vite启动dev的项目,在nginx做代理的时候,二级目录尾要加/ vite dev开发启动的时候, url最后不加/,系统不能使用,所以代理的时候,没加/,代理跳转过去,就回导致页面加载不出来,j ...