博客
关于我
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 作者:孙杨威

你可能感兴趣的文章
Nacos心跳机制实现快速上下线
查看>>
nacos报错com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
查看>>
nacos服务提供和发现及客户端负载均衡配置
查看>>
Nacos服务注册与发现demo
查看>>
Nacos服务注册与发现的2种实现方法!
查看>>
nacos服务注册和发现原理简单实现案例
查看>>
Nacos服务注册总流程(源码分析)
查看>>
nacos服务注册流程
查看>>
Nacos服务部署安装
查看>>
nacos本地可以,上服务器报错
查看>>
Nacos注册Dubbo(2.7.x)以及namespace配置
查看>>
Nacos注册中心有几种调用方式?
查看>>
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>