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

你可能感兴趣的文章
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
查看>>
mysql丢失更新问题
查看>>
MySQL两千万数据优化&迁移
查看>>
MySql中 delimiter 详解
查看>>