文章目录[隐藏]
Feature Selective Anchor-Free Module for Single-Shot Object Detection 论文解读
前言
之前搭建的 HEXO 博客,年久失修,且经常不被百度爬虫收录,遂将之前写的一些文章迁移到 CSDN 来。
时间:2019年6月
[1] 引言FPN
以 retinanet 为例。ResNet 用作特征提取器,会产生 编号为
1
,
2
,
3
1,2,3
1,2,3 的 feature map。底层的特征图具有丰富的空间信息,高层的特征图具有高阶的语义信息。FPN 就是为了将两者结合起来并在不同尺度的特征图上做预测。
N
o
.
3
No.3
No.3 的feature map,具有最高层的语义信息和最大的感受野,却由于卷积的特性,一些 small object 在此特征图上信息不足,我们对它 分配较大的 anchor,主要用来检测较大的目标。
接着我们对
N
o
.
3
No.3
No.3 上采样与
N
o
.
2
No.2
No.2 经
1
∗
1
1*1
1∗1 卷积后进行 element-sum 操作,对
N
o
.
3
+
2
No. 3+2
No.3+2 这层 feature map 分配中等的 anchor,主要用来检测中等大小的目标。
同样的,
N
o
.
3
+
2
+
1
No. 3+2+1
No.3+2+1 分配较小的 anchor 用来检测 small object,由于是具有高阶语义信息和更大分辨率的 feature map 上做预测,FPN 能够很好的处理小目标。
[2] FPN的不足
FPN 它对每层特征图分配人为设定的 anchor,并设置 GT 与 Anchor的 IOU 以筛选 “目标应该分到哪一层去学习”。但是这种启发式的策略看似合理却存在一些问题。
可以看到 基于 anchor 的分配,60*60 的卡车分配到 最小的特征图上检测,40* 40 的汽车分配到了最大的特征图上检测。但是没人知道这种分配是否合理,于是作者想到 模型自动分配目标到合适的 feature 层
[3] Ground-truth 和 loss 的重新设计
[4] ANCHOR-FREE 的分配方式
- 对于一个 instance , 类别为
k
k
b
=
[
x
,
y
,
w
,
h
]
b = [x,y,w,h]
l
l
b
p
l
=
[
x
p
l
,
y
p
l
,
w
p
l
,
h
p
l
]
b_p^l=[x_p^l,y_p^l,w_p^l,h_p^l]
- 定义一个 有效区域 有效区域
b
e
l
=
ϵ
e
∗
b
p
l
=
0.2
∗
b
p
l
b_e^l=ϵ_e∗b_p^l=0.2∗b_p^l
b
i
l
=
0.5
∗
b
p
l
b_i^l=0.5∗b_p^l
- 这时候 class output 是一个
W
∗
H
∗
K
W*H*K
- Box output 分支,在有效区域内中的像素点 整体与
b
p
l
b_p^l
我们在所有的 feature level 中选择 loss 最小的 做 梯度回传。
看到这,我们用个简单的示意图表示这篇论文到底在做什么:中间的狗代表 卷积后的 feature map, 我们想让模型自己选择这条狗 去哪一个 level 层预测,就丢弃了anchor。用白色的区域(一定是该物体)去回归 红色框(GT)。每一层都做此操作,哪一层loss最小,就选择该层预测。
实验结果不再展示,仅使用 anchor-free 的分配方式效果不佳,作者把基于anchor free 和 基于anchor 结合起来有了很大提升。
版权声明:本文为CSDN博主「勤奋的懒猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xhw205/article/details/121422913
暂无评论