本文是对FCOS的小修小改,最终性能达到了50.4AP,可谓相当强劲了,大家在工程上可以参考其中的改进以及提升方法



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

论文: FCOS: A Simple and Strong Anchor-freeObject Detector

Introduction


  论文由FCOS原团队重新修改后发表,作者管这篇为FCOS的扩展版本而不是FCOSv2,但为了好分辨,我们就管他叫FCOSv2吧。FCOSv2的整体思想基本与FCOS一致,但性能出色很多。对比FCOS,基础主干ResNet-101-FPN上的性能从41.5AP提升了43.2AP,而最高版本的性能则是达到了50.4AP。

  本文主要探讨FCOSv2其中的一些改进与提升方法,具体的其它实现可参考之前的FCOS文章。

FCOSv2


FCOS

  FCOSv2在思想上与FCOS基本一致,在特征图的每个位置预测目标的类别、尺寸信息以及Center-ness,Center-ness用来表示当前位置与目标中心点的距离,目标的最终分数由分类分数和Center-ness分数结合所得。尺寸信息跟以往的bbox回归方法不同,预测的是特征位置到目标的四个边界的距离。

  图2为FCOSv2中的主干网络结构,主干网络依然采用FPN,每层特征使用共同的head预测类别信息、尺寸信息以及Center-ness,具体的可以看看之前的文章。

Change

  下面列举了一些FCOSv2相对于FCOS的修改,由于论文没有与原版进行对比,所以不知道各部分带来的收益具体是多少:

  1. 正样本点指定的修改,FCOS要求该特征点位于目标内部,以及该特征点到目标边界的距离满足所处的FPN层的约束,而FCOSv2则要求特征点位于目标的中心区域\((c_x-rs, c_y-rs, c_x + rs, c_y+rs)\),\(s\)为当前层的stride,\(r=1.5\)为超参数。
  2. 回归目标修改,FCOS的回归目标直接是特征点到目标边界的距离,由于Head是共用的,所以在预测时为每个level预设一个可学习的scale因子,而FCOSv2则加入stride,变得更适应FPN的尺寸,可学习的scale因子依然使用。

  1. center-ness预测的位置,FCOS的center-ness预测与分类预测放到了一起,而FCOSv2则将其与回归预测放到了一起。
  2. 回归损失函数修改,FCOS使用IoU损失进行回归的学习,而FCOSv2则采用了GIoU损失进行回归的学习。
  3. 最终分数的计算,FCOS采用分类分数以及center-ness之积,FCOSv2则采用分类分数以及center-ness之积的平方根:

Improvement

  为了获得更好的性能,除了更换更强的主干网络外,论文还将FCOSv2进行了如下扩展:

  1. 使用BiFPN代替普通FPN,注意没有采用深度分离卷积,这部分能带来约2AP提升。
  2. 测试阶段的数据增强,将图片依次缩放至\([400,1200]\),每次步长为100,每个尺寸使用原图以及垂直翻转图片进行推理,这部分能带来约2.5AP提升。
  3. 增加可变形卷积,分别替换主干网络的第三和第四阶段的卷积,以及Head的两个分支的前四个卷积,这部分带来约1.5AP提升。

Experiment


  与SOTA方法对比。

  推理性能对比。

Conclusion


  本文是对FCOS的小修小改,最终性能达到了50.4AP,可谓相当强劲了,大家在工程上可以参考其中的改进以及提升方法。





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

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

FCOSv2:原作的扩展版本,小修小改,性能高达50.4AP | IEEE T-PAMI 2020的更多相关文章

  1. Jaxb对xml报文头的小修小改

    前言: 也是在实际工作中, 借助jaxb来实现xml到java对象的映射转换. 在实际应用中, 也遇到了一些有趣好玩的东西, 权当记录下来. 本文主要讲解jaxb如何生成约定的xml报文头的实现思路, ...

  2. 最近做了一个通达OA的大料:20170905最新版本破解可改单位名称,无限制安装

    最近做了一个通达OA的大料:20170905最新版本破解可改单位名称,无限制安装 用户约七十家,总体不错,修改了两次注册授权文件,完美使用中 可联系麦枫http://www.mfsun.com管理员Q ...

  3. 测试与发布(Alpha版本)——小谷围驻广东某工业719电竞大队

    测试与发布(Alpha版本)--小谷围驻广东某工业719电竞大队 一.引言 1.需求规格说明书: https://www.cnblogs.com/TaoTaoLV1/p/9819913.html 2. ...

  4. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  5. ZanUI-WeApp -- 一个颜值高、好用、易扩展的微信小程序 UI 库

    ZanUI-WeApp -- 一个颜值高.好用.易扩展的微信小程序 UI 库:https://cnodejs.org/topic/589d625a5c8036f7019e7a4a 微信小程序之官方UI ...

  6. 微信小程序性能优化技巧

    摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...

  7. ZR.Admin小改和VUE3版本体验

    前言 孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说:"对呀,对呀!......回字有四样写法,你知道么?" 大家好,我是44岁的大龄程序员码农阿峰.阿峰从事编程二十年 ...

  8. Kuhn-Munkres算法。带权二分图匹配模板 (bin神小改版本)

    /****************************************************** 二分图最佳匹配 (kuhn munkras 算法 O(m*m*n)). 邻接矩阵形式 . ...

  9. 记录近期小改K-Means至MapReduce上的心得

    背景: 在所有聚类算法中KMeans算是表面上最简单的一种,没有过多恼人的古希腊符号公式,没有过分繁杂的公式嵌套.对于一个初学矩阵或者仅有向量概念的非专业人士的来说,不可不畏是一把踹门利器.这个世界上 ...

  10. 干货 | 把Flutter扩展到微信小程序端的探索

    Google Flutter是一个非常优秀的跨端框架,不仅可以运行在Android. iOS平台,而且可以支持Web和桌面应用.在国内小程序是非常重要的技术平台,我们也一直思考能否把Flutter扩展 ...

随机推荐

  1. image could not be accessed on a registry to record its digest

    问题说明: 在管理节点执行docker stack xxx 方式运行服务,报如题错误. 问题原因: docker swarm运行需要一个镜像仓库才行,所有节点都去这个仓库统一镜像. 来看下官方的解释: ...

  2. Javascript之Object、Array

    Object.keys 对象的键转化为数组 Object.values 对象的属性值转化为数组 Object.assign 对象的合并   Array.from() 伪数组对象的属性值转化为数组.类似 ...

  3. 【Azure App Service for Linux】Linux Web App如何安装系统未安装的包

    问题描述 Linux Web App中如何安装系统默认未安装的包,如何来执行如 apt install XXX命令呢?现在遇见的问题时,通过Azure App Service门户中的SSH登录后,执行 ...

  4. [C++/QT] 获取进程完整路径

    气哭我了,我不就获取一下进程路径嘛,,,绕了好大一圈 主要是用到了GetModuleFileNameEx() 函数 食用方式如下 HANDLE hProcess = OpenProcess(PROCE ...

  5. 使用Order By NULL 解决 group by后自动排序,优化Sql性能

    使用Order By NULL 解决 group by后自动排序,优化Sql性能 对于 Group by 后的结果,Mysql搜索引擎会将结果按照Group by 的字段按照升序,自动排序,例如: t ...

  6. 在anaconda中为jupyter安装代码自动补全或代码自动提示功能,jupyter nbextensions不显示拓展,另附格式化代码插件的安装方法

    操作步骤 进入命令行环境.我使用的是conda.有两种方式进入命令行. 方法1:通过anconda navigator界面,选择environments,选择对应环境名,选择open terminal ...

  7. nginx rewrite 语法

    nginx rewrite 语法 一 定义 Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服 务器的地址重新定向到其他URL的过程. 二 语法格式 reweite fia ...

  8. Zabbix“专家坐诊”第186期问答汇总

    问题一 Q:这两个键值vm.memory.size[pused]和vm.memory.util监控内存使用率有什么区别,使用那个监控使用率更好,支持windows系统和Linux系统么,对agent端 ...

  9. vitepress 发布到 gitee上的build命令 自动设置base

    docs.vitepress\config.js const argv = require('minimist')(process.argv.slice(2)) const build = argv. ...

  10. vue-cli-service build 时间戳 方便查看bug发布时间和项目发布时间对比

    vue.config.js let ret = '' const date = new Date() ret += date.getFullYear() ret += '-'+ (date.getMo ...