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

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


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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第1张图片

相关资源

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第2张图片

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

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第3张图片

论文笔记

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第4张图片

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第5张图片

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第6张图片

(FCOS网络结构图)

01

全卷积单步检测器

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第7张图片

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

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

损失函数

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第8张图片

分类损失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 , ∞}

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第9张图片

利用多尺度策略,不同的特征层需要回归不同的尺寸范围(例如: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就有效地过滤了低质量的定位边框。

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第10张图片

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思想对小目标仍是有效的。

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第11张图片

(算法实验结果对比)

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第12张图片

(可视化实验结果)

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第13张图片

拿code搞事情

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第14张图片

论文开源了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.git
 cd 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

出现以下错误

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第15张图片

据说是不支持pytorch1.2.0

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第16张图片

重新配置虚拟环境安装:

# 创建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目标检测算法了解一下_第17张图片

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第18张图片

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第19张图片

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第20张图片

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第21张图片

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

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第22张图片

长按二维码关注我们

有趣的灵魂在等你

真正意义的Anchor-Free,FCOS目标检测算法了解一下_第23张图片


留言请摁

你可能感兴趣的:(卷积,计算机视觉,深度学习,人工智能,机器学习)