| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> FCOS 论文笔记 -> 正文阅读 |
|
[人工智能]FCOS 论文笔记 |
FCOS: Fully Convolutional One-Stage Object Detection论文链接: https://arxiv.org/abs/1904.01355 一、 Problem Statement目前的目标检测网络大多数依赖于anchor。而anchor存在着以下几个缺点的:
因此,作者提出一个问题,是否我们的目标检测器可以和语义分割的FCN一样,是一个neat per-pixel prediction fashion。也就是说,FCN-based的检测器在特殊的位置上预测出一个4D的向量和一个类别。 二、 Direction提出一个proposal free 和 anchor free的FCN-based one-stage的检测器。 三、 Method先来看一下FCOS的整体结构: 可以看到整体分为三个部分,Backbone, FPN 和 Prediction Head。而prediction head 不再是FC层,而是FCN。Backbone 论文使用的是ResNet-50。 1. network input and output网络的输入为一张图像,图像经过了Backbone,得到了每一层的feature map, 我们用
F
i
∈
R
H
×
W
×
C
F_i \in \R^{H \times W \times C}
Fi?∈RH×W×C表示Backbone的第
i
i
i层,和用
s
s
s表示从输入到
F
i
F_i
Fi?的total stride。而ground-truth bounding box用
{
B
i
}
\{B_i\}
{Bi?}表示。
B
i
=
(
x
0
(
i
)
,
y
0
(
i
)
,
x
1
(
i
)
,
y
1
(
i
)
,
c
(
i
)
)
∈
R
4
×
{
1
,
2
,
.
.
.
C
}
B_i = (x_0^{(i)},y_0^{(i)},x_1^{(i)},y_1^{(i)},c^{(i)}) \in \R^4 \times \{1,2,...C\}
Bi?=(x0(i)?,y0(i)?,x1(i)?,y1(i)?,c(i))∈R4×{1,2,...C}。也就是bounding box的左上角和右下角顶点的坐标,
c
(
i
)
c^{(i)}
c(i)代表的是目标类别。 作者直接回归在(x,y)位置上的目标框: 所以这个与ground-truth bounding box的联系为: l ? = x ? x 0 ( i ) , t ? = y ? y 0 ( i ) r ? = x 1 ( i ) ? x , b ? = y 1 ( i ) ? y l^* = x - x_0^{(i)}, \quad t^*=y-y_0^{(i)} \\ r^*=x_1^{(i)}-x, \quad b^*=y_1^{(i)} - y l?=x?x0(i)?,t?=y?y0(i)?r?=x1(i)??x,b?=y1(i)??y 值得注意的是: 如果(x,y)同时落在多个bounding box里面,作者简单地选择最小的bounding box进行回归训练,因为通过实验表明,在multi-level上进行预测,这些模糊的样本极大的减少,因此也不会很严重的影响检测性能。 而对于网络的输出,会有 一个80-Dimension (MS-COCO数据集类别数)向量用于分类,和 一个4-Dimension 的向量用于bounding box。 2. Loss function整体的loss function 为: 而在预测的时候,选择分类置信度 p x , y > 0.05 p_{x,y} \gt 0.05 px,y?>0.05的作为正样本,然后根据式子將每一特征层 F i F_i Fi?预测出来的 t x , y t_{x,y} tx,y?转换为bounding box。 3. Multi-level Prediction with FPN for FCOS上文的绿色字也提到过,FCOS潜在的问题:
而上面两个问题,都可以通过multi-level prediction 解决。 所以作者使用了FPN,利用了5个feature maps { P 3 , P 4 , P 5 , P 6 , P 7 } \{P_3, P_4, P_5, P_6, P_7\} {P3?,P4?,P5?,P6?,P7?}。不像anchor-based 检测器那样,在不同的特征层用不同大小和比例的anchor进行对齐,作者直接在每一层限制了bounding box的回归范围。 ,下面为具体的步骤:
不同大小的目标会对齐于不同的feature levels,因此可以解决大部分的overlapping的问题。尽管还是会发生模糊样本的问题,就选择最小的bounding box进行回归,影响不大。 对于如何理解shared head 参数,个人认为:在FPN论文中,提到过shared head和 不shared head的性能是相近的,没有多大差别。因此为了减少参数量,提升速度,不同head都使用同一套权重。也就是说,上图中五个head,每一个head都只有一套权重。 [1]: we note that the parameters of the heads are shared across all feature pyramid levels; we have also evaluated the alternative without sharing parameters and observed similar accuracy。 但也有其他的理解,可以参考[2]。 4. Centerness for FCOS由于低质量的bounding boxes 远离目标的中心,这会导致FCOS的性能始终和anchor-based 的检测器有差距。作者就提出了一个分支: centerness branch, 用来预测
(
x
,
y
)
(x,y)
(x,y)的中心度,centerness 真值由以下计算: centerness的训练使用BCE loss, 范围是(0, 1)。所以centerness 可以使得远离中心的bounding box的权重减小,最后再通过NMS处理,提高性能。 四、 Conclusion是一个proposal free 和 anchor free的一个one-stage检测器。 五、 Reference[1] Feature Pyramid Networks for Object Detection |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 15:41:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |