点击上方“AI搞事情”关注我们


2019年目标检测领域比较火的一个方向就是Anchor-Free,比如:CornerNet、ExtremeNet、CenterNet、FoveaBox等方法,所谓Anchor-Free,就是去掉了原来来目标检测算法的Anchor机制,由region-level的视觉任务转变为了pixel-level的类似于语义分割的任务。

相关资源

论文:https://arxiv.org/pdf/1904.01355.pdf

开源:https://github.com/tianzhi0549/FCOS

论文笔记

如网络结构图所示,FCOS由主干网(Backbone) + 特征金字塔(Feature Pyramid)+ 预测三分支Classification + Center-ness + Regression)三部分组成。

(FCOS网络结构图)

01

全卷积单步检测器

网络前向同语义分割网络FCN类似,以像素点为训练样本,每个像素被标上类别或者背景标签,用以分类分支的训练。

由于没有了Anchor,回归分支便不能使用偏移量作为回归的目标,作者以目标框中每个像素点到目标框四条边的距离作为目标值进行边框回归分支的训练。

因此,网络的输出包含80维(COCO类别数)分类张量px,y 和4维的回归张量tx,y 推理时, px,y > 0.05判别为正样本,将tx,y 逆处理得到目标边框。从以上结构图可以看出,作者在两个分支上分别使用4层CNN进行两个任务的学习。参照RetinaNet,作者运用多个二分类代替了多分类。

损失函数

分类损失Lcls 采用  Focal Loss,回归损失Lreg  采用 IOU Loss,Npos 表示正样本数量,论文中,回归权重λ值为1。

回归目标

02

FPN多尺度预测

作者使用了基于FPN的多尺度策略,主要是为了解决由于大步长下采样导致的低召回率的问题。在Anchor-Based方法中,可以通过调整IOU的阈值做到召回率的平衡。

如结构图所示,FCOS算法使用了{P3, P4, P5, P6, P7}这五个尺度的特征映射进行了分类与回归。其中,P3、P4、 P5由backbone不同层特征图 C3、C4、C5经1 * 1卷积和反向链接而得,而P6、P7则是接着P5进行了步长为2的卷积操作得到的(相当于池化),最终P3, P4, P5, P6, P7的步长分别为:8, 16, 32, 64 和 128。

为了更好地利用多尺度特征,每一个尺度的特征层需要回归的边界框范围的都进行了限定,让每个尺度特征各司其职,不同特征层预测不同大小范围的目标。具体地:

a:计算所有层当前层级中的回归目标:l, t, r 、b

b:判断是否满足条件:max(l, t, r, b) > mi 或者 max(l, t, r, b) < mi -1

c:若满足,设为负样本,不对此边界框进行回归预测。

其中,mi是作为第i尺度特征层的最大回归距离,

{m2, m3, m4, m5, m6, m7} 分别对应: {0, 64, 128, 256, 512 , ∞}

通过多尺度预测策略还能够很好地解决不同大小目标重叠的情况,若一个像素点即使通过多尺度预测策略还是被分配到了多个目标框中(同一尺度上),选用区域面积最小的目标进行回归训练。

利用多尺度策略,不同的特征层需要回归不同的尺寸范围(例如:P3的尺寸范围为[0, 64],P4的尺寸范围为[64,128],因此,不同特征层使用相同的输出激活是不合理的,所以,作者将标准的exp(x)替换为了带有可训练标量si的exp(si,x),通过si来调整第i层指数函数的基数。

03

Center-ness

在分类的分支上引入了center-ness的概念,主要是用来衡量中心点位置的好坏,限制产生一些低质量(偏离目标)的检测框,提升定位的效果。

center-ness的值位于0~1之间,像素点越远离目标中心center-ness值越小,通过交叉熵损失进行训练。测试时,将center-ness得分与对应分类得分相乘,作为最后得分,这样每个位置便有了边框权重的得分,远离目标中心的边框就被削弱了,通过NMS就有效地过滤了低质量的定位边框。

04

实验

训练数据采用COCO数据集,主干网:ResNet-50(ImageNet预训练),超参数同RetinaNet一致:使用SGD迭代90K次,初始学习率:0.01,batch size为16,迭代60K和80K时,学习率除以10, 权重衰减(Weight decay):0.0001,动量(momentum):0.9,输入图像被缩放到最小边为800,最大边小于等于1333。

同其他模型对比,Anchor-Free思想对小目标仍是有效的。

(算法实验结果对比)

通过实验结果可以看出,FCOS在各类场景,包括拥挤、遮挡、重叠,大目标和小目标等都有很好的检测效果。

(可视化实验结果)

拿code搞事情

论文开源了pytorch代码,基于maskrcnn-benchmark进行改进,因此它的安装与原始的Mask R-CNN一致,源码仓库INSTALL.md有详细安装介绍。

配置环境:win10 + Anaconda3 + pytorch1.2.0 pytorch1.1.0+ CUDA10.0

安装依赖库:

pip install ninja yacs cython matplotlib tqdm opencv-python

安装C++编译环境: cl.exe

安装cocoapi

cd $INSTALL_DIR
git clone https://github.com/cocodataset/cocoapi.gitcd cocoapi/PythonAPI
python setup.py build_ext install # 需要编译
# 失败的话,通过以下方式安装
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

进入FCOS目录,编译fcos和fcos_core

python setup.py build develop --no-deps

出现以下错误

据说是不支持pytorch1.2.0

重新配置虚拟环境安装:

# 创建FCOS环境
conda create --name FCOS python=3.6
conda activate FCOS
# 安装pytorch 1.1.0 & torchvision
pip install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp36m-win_amd64.whl
pip install torchvision==0.2.1
# 重新上述步骤

下载模型,执行demo

# assume that you are under the root directory of this project,
# and you have activated your virtual environment if needed.
wget https://cloudstor.aarnet.edu.au/plus/s/ZSAqNJB96hA71Yf/download -O FCOS_imprv_R_50_FPN_1x.pth
python demo/fcos_demo.py

Bingo,demo检测结果如下:

接下来,就开始训练自己的数据吧……

长按二维码关注我们

有趣的灵魂在等你

留言请摁

真正意义的Anchor-Free,FCOS目标检测算法了解一下相关推荐

  1. YOLOv1——YOLOX系列及FCOS目标检测算法详解

    文章目录 一. 开山之作:YOLOv1 1.1. YOLOv1简介 1.2 YOLOv1 检测原理 1.3 YOLOv1网络结构 1.4 YOLOv1 损失函数 1.5 YOLOv1优缺点 二. YO ...

  2. 病虫害模型算法_基于深度学习的目标检测算法综述

    sigai 基于深度学习的目标检测算法综述 导言 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像 ...

  3. AI综述专栏 | 基于深度学习的目标检测算法综述

    https://www.toutiao.com/a6685618909275488780/ 2019-04-30 17:35:53 关注微信公众号:人工智能前沿讲习, 重磅干货,第一时间送达 AI综述 ...

  4. 基于深度学习的目标检测算法综述

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 导言 目 ...

  5. python成绩统计及格学平成_基于深度学习的目标检测算法综述

    导言目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是机器视 ...

  6. 最新目标检测算法回顾2022笔记

    目标检测算法回顾2022笔记[附PPT] 总目录 篇章1:目标检测的应用与需求 篇章2:目标检测的定义与挑战 篇章3:目标检测损失函数的进展 篇章4:目标检测IOU的发展历程 篇章5:目标检测评价指标 ...

  7. 目标检测算法——anchor free

    一.anchor free 概述 1.先要知道anchor 是什么(这需要先了解二阶段如faster rcnn,一阶检测器如YOLO V2以后或SSD等). 在过去,目标检测通常被建模为对候选框的分类 ...

  8. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

  9. 计算机视觉算法——基于Anchor Free的目标检测网络总结

    计算机视觉算法--基于Anchor Free的目标检测网络总结 计算机视觉算法--基于Anchor Free的目标检测网络总结 1. CornerNet 1.1 关键知识点--网络结构及特点 1.2 ...

最新文章

  1. 导出toolStrip1中的图标
  2. 数字图像处理:第八章 形态学运算
  3. 详记一次MySQL千万级大表优化过程!
  4. opencv国际象棋_国际象棋是的
  5. @Value@PropertySource@ConfigurationProperties注解使用
  6. 动画理解Dijkstra算法过程
  7. 路径规划之 A* 算法
  8. fortran 读整行_我整周读过的最有趣的东西
  9. 开源 TiDB Operator 让 TiDB 成为真正的 Cloud-Native 数据库
  10. 最小树形图(bzoj 4349: 最小树形图 2260: 商店购物)
  11. ASP.NET 实现PDF文件下载[转]
  12. 关于微信隐藏分享按钮的心得
  13. 【转】从CSDN的趣味题学C# 3.0
  14. Word2003及Excel2003打开速度慢,如何解决?
  15. 系统集成项目管理工程师题型分析及章节占分比
  16. Linux-lsof
  17. 桑佛德大学计算机科学,美国桑佛德大学专业都有哪些?每个专业都有什么优势?一起来了解下吧?...
  18. 使用Graphics在鼠标点击画圆圈扩散效果
  19. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)...
  20. Banner在线制作网站介绍以及如何Springboot中使用

热门文章

  1. tiny cc在云服务centos上运行
  2. 基于python的FFT频率和振幅处理
  3. 用C语言写一个球的程序,12个球的程序.....
  4. servlet post 返回值是一个对象_Servlet第二天
  5. python学习系列day3-python基础
  6. vb.net机器学习-手写和本机数字识别-K均值和欧氏距离
  7. 【小白学习PyTorch教程】十、基于大型电影评论数据集训练第一个LSTM模型
  8. 推荐!入门人工智能必看的45篇论文(文末下载)
  9. 【机器学习基础】你应该知道的LightGBM各种操作!
  10. 【机器学习基础】一文说透正则项与模型复杂度