作为与FCOS和FSAF同期的Anchor-free论文,FoveaBox在整体结构上也是基于DenseBox加FPN的策略,主要差别在于FoveaBox只使用目标中心区域进行预测且回归预测的是归一化后的偏移值,还有根据目标尺寸选择FPN的多层进行训练,大家可以学习下



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

论文: FoveaBox: Beyound Anchor-Based Object Detection

Introduction


  论文认为anchor的使用不一定是最优的搜索目标的方式,且受人眼视网膜中央凹(fovea)的启发:视觉区域的中部有最高的视觉敏锐度,所以提出了anchor-free目标检测方法FoveaBox。

  FoveaBox联合预测每个有效位置为目标中心的可能性及其对应目标的尺寸,输出类别置信度以及用以转化目标区域的尺寸信息。如果大家看过很多Anchor-free的检测方案,可能觉得论文的实现方案很常见,的确,其实这篇文章也是Anchor-free井喷初期的作品,整体思路很纯粹,也是很多大佬都想到的思路,在阅读时需要关注以下细节:

  • 以目标的中心区域进行分类预测与回归预测
  • 将回归预测的是归一化后的偏移值
  • 训练时可指定FPN多层同时训练
  • 提出特征对齐模块,使用回归的输出来调整分类的输入特征

FoveaBox


Object Occurrence Possibility

  给定GT目标框\((x_1, y_1, x_2, y_2)\),将其映射到特征金字塔层\(P_l\):

  \(s_l\)为特征层相对于输入的stride,正样本区域\(R^{pos}\)为大致为映射框的缩小版本:

  \(\sigma\)为人为设定缩放因子。在训练阶段,正样本区域内的特征点标记为对应的目标类别,其余的区域为负样本区域,特征金字塔每层的输出为\(C\times H\times W\),\(C\)为类别总数。

Scale Assignment

  网络的目标是预测目标的边界,直接预测是不稳定的,因为目标尺寸的跨度很大。为此,论文将目标尺寸归为多个区间,对应特征金字塔各层,各层负责特定尺寸范围的预测。给予特征金字塔\(P_3\)到\(P_7\)基础尺寸\(r_l=2^{l+2}\),则层\(l\)负责的目标尺寸范围为:

  \(\eta\)为人工设置的参数,用于控制特征金字塔每层的回归尺寸范围,不在该层尺寸范围内的训练目标则忽略。目标可能落到多个层的尺寸范围内,这时使用多层进行训练,多层训练有以下好处:

  • 邻接的特征金字塔层通常有类似的语义信息,可同时进行优化。
  • 大幅增加每层的训练样本数,使得训练过程更稳定。

Box Prediction

  在预测目标尺寸时,FoveaBox直接计算正样本区域\((x,y)\)到目标边界的归一化的偏移值:

  公式4先将特征金字塔层的像素映射回输入图片,再进行偏移值的计算,训练采用L1损失函数。

Network Architecture

  网络结构如图4所示,主干网络采用特征金字塔的形式,每层接一个预测Head,包含分类分支和回归分支。论文采用较简单的Head结构,使用更复杂的Head可以获得更好的性能。

Feature Alignment

  论文提出了特征对齐的trick,主要是对预测Head进行改造,结构如图7所示,

Experiment


  与SOTA方法进行对比。

Conclusion


  作为与FCOS和FSAF同期的Anchor-free论文,FoveaBox在整体结构上也是基于DenseBox加FPN的策略,主要差别在于FoveaBox只使用目标中心区域进行预测且回归预测的是归一化后的偏移值,还有根据目标尺寸选择FPN的多层进行训练。由于FoveaBox的整体实现方案太纯粹了,与其它Anchor-free方法很像,所以一直投稿到现在才中了,作者也是相当不容易。





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

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

FoveaBox:细节差别,另一种DenseBox+FPN的Anchor-free方案 | IEEE TIP 2020的更多相关文章

  1. 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  2. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  3. 三种主流的Web服务实现方案(REST+SOAP+XML-RPC)简述及比较

    目前知道的三种主流的Web服务实现方案为:REST:表象化状态转变 (软件架构风格)SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 下面分别作简单介绍: REST:表征状态转移(Repr ...

  4. 一种高兼容性的JavaBean序列化方案

    在对JavaBean做序列化时,我们可能在某些场景希望前后兼容性好一些.比如所有的javaBean都序列化后保存在数据库,用的时候需要反序列化创建.随着业务的发展,数据模型可能会进行变更,那么原来的数 ...

  5. Swift 函数做参数和闭包做参数的一个细节差别

    函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...

  6. HttpClient三种不同的服务器认证客户端方案

    http://blog.csdn.net/i_lovefish/article/details/9816783 HttpClient三种不同的认证方案: Basic, Digest and NTLM. ...

  7. 分库分表的 9种分布式主键ID 生成方案,挺全乎的

    <sharding-jdbc 分库分表的 4种分片策略> 中我们介绍了 sharding-jdbc 4种分片策略的使用场景,可以满足基础的分片功能开发,这篇我们来看看分库分表后,应该如何为 ...

  8. 几种移动app API调用认证方案浅析

    最近做的金融项目,app调用的接口需要做一个身份认证,所以找了下目前API services验证的几种方式.之前翻译的一篇文章--[译]移动API安全终极指南中,主要提出了API服务调用验证的问题,通 ...

  9. 一种client同步server数据的方案

    场景 clientA不定时地把本地数据同步到server上,然后还有一个clientB(app)从server把数据同步下来,汇总展示 clientA数据结构 原始的数据(来自clientA).每条都 ...

随机推荐

  1. python input函数

    函数 input() 让程序暂停运行,等待用户输入值,之后再把值赋给变量,输出.

  2. 关于一键提取QQ群成员信息的记录

    问题情境 昨天晚上回宿舍看到舍友在吐槽:天哪,我要把70多个人的QQ号全统计出来,只能一个一个地在咱们学院的学院群里找.吐了. 当时我第一反应是用python写个脚本之类的去做,因此查阅了一下资料,找 ...

  3. Hadoop支持LZO

    0. 环境准备 maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)gcc-c++zlib-develautoconfautomakelibtool通过yum安装即可 yum ...

  4. CSS实现事件穿透与背景图不跟随滚动条

    1. 事件穿透属性:pointer-events: none  // auto默认值.none:不捕捉target事件(实现穿透) 用途:当需要使用透明遮罩并且允许点击遮罩下方元素时,或需要使用背景容 ...

  5. ES6之async与await

    · async - await 是 Promise 和 Generator 的语法糖,目的只是为了让我们书写代码时更加流畅,增强代码的可读性. · async - await 是建立在Promise机 ...

  6. js 用 void 0 替代 undefined

    underscore 源码没有出现 undefined,而用 void 0 代替之.为什么要这么做?我们可以从两部分解读,其一是 undefined 哪里不好了,你非得找个替代品?其二就是替代品为毛要 ...

  7. JMeter压力测试简单使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11915535.html JMeter压力测试简单使用: 我们可以使用JMeter来测试一下自己 ...

  8. python基础——生成器与迭代器

    生成器 def func(): print("111") yield 1 print("222") yield 3 print("333") ...

  9. 《PHP程序员面试笔试宝典》——如果面试问题曾经遇见过,是否要告知面试官?

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 面试中,大多数题目都不是凭空想象出来的,而是有章可循,只要求职者肯花时间,耐得住寂寞,复习得当,基本上在面试前都会见过相 ...

  10. Solution -「AGC 004E」「AT 2045」Salvage Robots

    \(\mathcal{Description}\)   Link.   有一个 \(n\times m\) 的网格.每个格子要么是空的,要么有一个机器人,要么是一个出口(仅有一个).每次可以命令所有机 ...