| |
|
开发:
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
0 前言在之前讲的一些目标检测网络中,比如
1 FCOS网络结构下面这幅图是原论文中给的FCOS网络结构,还是非常清晰的。注意:这张图是2020年发表的版本,和2019年发表的版本有些不同。区别在于Center-ness分支的位置,在2019年论文的图中是将Center-ness分支和Classification分支放在一起的,但在2020年论文的图中是将Center-ness分支和Regression分支放在一起。论文中也有解释,将Center-ness分支和Regression分支放在一起能够得到更好的结果:
首先看上图左边的部分,Backbone是以ResNet50为例的,FPN是在Backbone输出的C3、C4和C5上先生成P3、P4和P5,接着在P5的基础上通过一个卷积核大小为 对于Classification分支,在预测特征图的每个位置上都会预测80个score参数(MS COCO数据集目标检测任务的类别数为80)。 对于Regression分支,在预测特征图的每个位置上都会预测4个距离参数(距离目标左侧距离 对于Center-ness分支,在预测特征图的每个位置上都会预测1个参数, 2 正负样本的匹配在计算损失之前,我们需要进行正负样本的匹配。在基于Anchor的目标检测网络中,一般会通过计算每个Anchor Box与每个GT的IoU配合事先设定的IoU阈值去匹配。比如某个Anchor Box与某个GT的IoU大于0.7,那么我们就将该Anchor Box设置为正样本。但对于Anchor-Free的网络根本没有Anchor,那该如何匹配正负样本呢。在2020年版本的论文
最开始的一句话是说,对于特征图上的某一点
(
x
,
y
)
(x,y)
(x,y),只要它落入GT box中心区域,那么它就被视为正样本(其实在2019年的文章中,最开始说的是只要落入GT内就算正样本)。对应的参考文献[42]就是2019年发表的FCOS版本。但在2020年发表的FCOS版本中,新加了一条规则,在满足以上条件外,还需要满足点
(
x
,
y
)
(x,y)
(x,y)在
(
c
x
?
r
s
,
c
y
?
r
s
,
c
x
+
r
s
,
c
y
+
r
s
)
(c_x - rs, c_y - rs, c_x + rs, c_y + rs)
(cx??rs,cy??rs,cx?+rs,cy?+rs)这个 为了方便大家理解我画了下面这幅图,假设上面两个feature map对应的是同一个特征图,将特征图上的每个点映射回原图就是下面图片中黑色的圆点。根据2019年发表论文的匹配准则,只要落入GT box就算正样本,所以左侧的feature map中打勾的位置都被视为正样本。根据2020年的版本,不仅要落入GT Box还要在
(
c
x
?
r
s
,
c
y
?
r
s
,
c
x
+
r
s
,
c
y
+
r
s
)
(c_x - rs, c_y - rs, c_x + rs, c_y + rs)
(cx??rs,cy??rs,cx?+rs,cy?+rs)这个 这里肯定有人会问,如果feature map上的某个点同时落入两个GT Box内(即两个GT Box相交区域),那该点到底分配给哪个GT Box,这就是论文中提到的Ambiguity问题。如下图所示,橙色圆圈对应的点同时落入 3 损失计算在前面讲FCOS网络结构中有提到,Head总共有三个输出分支:
对于分类损失
L
c
l
s
L_{cls}
Lcls?采用 在匹配正负样本过程中,对于特征图
(
x
,
y
)
(x,y)
(x,y)点处对应的GT信息
c
x
,
y
?
c^*_{x,y}
cx,y??和
t
x
,
y
?
t^*_{x,y}
tx,y??比较好得到,只要匹配到某一GT目标则
c
x
,
y
?
c^*_{x,y}
cx,y??对应GT的类别,
t
x
,
y
?
t^*_{x,y}
tx,y??对应GT的bbox。而获取真实的 为了方便大家理解,同样画了一幅图,如下图所示。假设对于特征图上的某一个点(图中用蓝色填充的 4 其他4.1 Ambiguity问题在论文中专门有一部分内容用来分析ambiguous samples问题,即在匹配正样本时当特征图上的某一点同时落入多个GT Box内时,到底应该分配给哪一个GT的问题:
前面在讲正负样本匹配内容时,有提到过当特征图上的某一点同时落入多个GT Box内时,默认将该点分配给面积Area最小的GT Box,当然这并不是一个很好的解决办法。ambiguous samples的存在始终会对网络的学习以及预测产生干扰。作者在COCO2017的val数据上进行了分析,作者发现如果不使用FPN结构时(仅在P4特征层上进行预测)会存在大量的ambiguous samples(大概占23.16%),如果启用FPN结构ambiguous samples会大幅降低(大概占7.24%)。因为在FPN中会采用多个预测特征图,不同尺度的特征图负责预测不同尺度的目标。比如P3负责预测小型目标,P5负责预测中等目标,P7负责预测大型目标。下面我也画了一幅示意图,比如对于小型目标
4.2 Assigning objects to FPN这部分内容只在2020版的论文中有进行讨论。在上面已经讨论了使用FPN结构能够降低ambiguous samples的比例。那么按照怎样的准则将目标划分到对应尺度的特征图上呢?在FPN中是采用如下计算公式分配的,之前在讲FPN时有详细讲过,这里不在赘述,如果有不了解的可以翻看之前的视频,https://b23.tv/Qhn6xA k = ? k 0 + l o g 2 ( w h / 224 ) ? k = \left \lfloor {k_0 + log_2(\sqrt{wh} / 224)} \right \rfloor k=?k0?+log2?(wh?/224)? 但在FCOS中,作者发现直接套用FPN中的公式效果并不是很好。作者猜测是因为按照FPN中的分配准则,不能确保目标在对应感受野范围内。比如对于某个特征层,每个
接着作者自己也尝试了其他的一些匹配策略,如下表7: 关于原文中的介绍如下,这里就不再进一步讲解了,大家自己看看就知道了。 到此,有关FCOS的内容就基本讲完了。如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 5:58:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |