博客
关于我
FSAF 让网络自己决定实例输出层
阅读量:260 次
发布时间:2019-03-01

本文共 1766 字,大约阅读时间需要 5 分钟。

目标检测系列文章

yolo v1原理:https://blog.csdn.net/cjnewstar111/article/details/94035842
yolo v2原理:https://blog.csdn.net/cjnewstar111/article/details/94037110
yolo v3原理:https://blog.csdn.net/cjnewstar111/article/details/94037828
SSD原理:https://blog.csdn.net/cjnewstar111/article/details/94038536
FoveaBox:https://blog.csdn.net/cjnewstar111/article/details/94203397
FCOS:https://blog.csdn.net/cjnewstar111/article/details/94021688
FSAF: https://blog.csdn.net/cjnewstar111/article/details/94019687

1.FSAF简介

全称为:Feature Selective Anchor-Free Module。为包含FPN的单阶段检测框架增加一个FSAF模块,从而由网络自己选择哪个层来预测哪个实例。

 

2.传统一阶段检测框架(含FPN)是如何进行实例选择的?

如下图所示,样本输入到检测框架之后,会根据样本中的bounding box和FPN中每一个层的anchors求IOU,与哪个anchor的IOU最大,那么那个anchor所在的层用来预测该实例。下图中的汽车实例和P4层的第一个anchor的IOU最大(红色实线框),那么就由P4来负责汽车实例的输出。

由于每一层的anchor是预先根据经验设置的,然后通过与anchor的IOU决定哪一层来预测实例,实际上也是根据经验来决定由哪一层来预测该实例,所以是基于启发式的。那么这种基于启发式的,经验性的选择是最优的吗?能否使用网络自己来决定哪个实例由哪个层来输出?

 

3.FSAF模块架构图

为了让网络自己决定由哪一层来输出实例,引入了FSAF模块,结构如下图所示:

这是论文中的原图,可能不是很清晰,下面这个是我根据自己的理解绘制的FSAF模块的架构图。以P4特征输出为例,两个蓝色的子网络为原来的anchor based的子网络,一个负责输出类别,维度是H*W*K*A(K是类别数,A是anchor数),另一个负责输出四个点的位置偏移。FSAF模块在原来的两个分支结构中各增加一个小的分支,同样的,一个输出类别,一个输出位置偏移信息。由于没有使用anchor,所以输出的类别维度为H*W*K。

 

4.FSAF模块如何选择实例?

通过上面的讲解,FASF模块实际上也是一个完整的物体框预测子网络,它能输出实例的类别和偏移量,本质上就是一个检测子网络。但是它的特点是非常轻量级。那么FSAF模块是如何根据这两个新增加的分支来决定某个实例由哪个feature map来负责输出呢?答案是根据loss值的大小。同样先看论文中的图:

下面是我根据理解绘制的图:

当一个训练样本输入到网络的时候,首先通过各个特征图的FSAF模块求出该特征图下对应的ground truth实例分类loss以及回归loss,并对两个loss求和,作为最终的loss。然后判断哪个loss最小,例如上图中的P3层的FSAF模块的loss最小,那么就由P3层来负责对该训练样本中汽车实例的训练。

 

5.总结:

FSAF实际上是增加了一个非常轻量级的检测子网络来辅助重量级的anchor based检测模块来决定目标实例由哪个特征图来预测。由于FSAF模块是anchor free的,所以它的选择完全是自发的,是根据网络学习到的。效果也比原来的anchor求IOU这种启发式的方式要好。

6.参考资料:

csdn: 作者:冷夏LX

知乎:CVPR2019 | 目标检测 FSAF:为金字塔网络的每一层带去最好的样本 作者:ChenJoya

知乎:[CVPR2019]:FSAF for Single-Shot Object Detection 作者:孙杨威

你可能感兴趣的文章
ndk特定版本下载
查看>>
NDK编译错误expected specifier-qualifier-list before...
查看>>
Neat Stuff to Do in List Controls Using Custom Draw
查看>>
Necurs僵尸网络攻击美国金融机构 利用Trickbot银行木马窃取账户信息和欺诈
查看>>
Needle in a haystack: efficient storage of billions of photos 【转】
查看>>
NeHe OpenGL教程 07 纹理过滤、应用光照
查看>>
NeHe OpenGL教程 第四十四课:3D光晕
查看>>
Neighbor2Neighbor 开源项目教程
查看>>
neo4j图形数据库Java应用
查看>>
Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013
查看>>
Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001
查看>>
Neo4j图数据库的数据模型_包括节点_属性_数据_关系---Neo4j图数据库工作笔记0002
查看>>
Neo4j安装部署及使用
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(1):图数据库Neo4j介绍
查看>>
Neo4j(2):环境搭建
查看>>
Neo4j(3):Neo4j Desktop安装
查看>>
Neo4j(4):Neo4j - CQL使用
查看>>
Neo图数据库与python交互
查看>>