Feature Selective Anchor-Free Module for Single-Shot Object Detection

Feature Selective Anchor-Free Module for Single-Shot Object Detection 论文解读

前言

之前搭建的 HEXO 博客,年久失修,且经常不被百度爬虫收录,遂将之前写的一些文章迁移到 CSDN 来。


时间:2019年6月

[1] 引言FPN

FPN
以 retinanet 为例。ResNet 用作特征提取器,会产生 编号为

1

,

2

,

3

1,2,3

1,2,3 的 feature map。底层的特征图具有丰富的空间信息,高层的特征图具有高阶的语义信息。FPN 就是为了将两者结合起来并在不同尺度的特征图上做预测。

N

o

.

3

No.3

No.3 的feature map,具有最高层的语义信息和最大的感受野,却由于卷积的特性,一些 small object 在此特征图上信息不足,我们对它 分配较大的 anchor,主要用来检测较大的目标。
接着我们对

N

o

.

3

No.3

No.3 上采样与

N

o

.

2

No.2

No.2

1

1

1*1

11 卷积后进行 element-sum 操作,对

N

o

.

3

+

2

No. 3+2

No.3+2 这层 feature map 分配中等的 anchor,主要用来检测中等大小的目标。
同样的,

N

o

.

3

+

2

+

1

No. 3+2+1

No.3+2+1 分配较小的 anchor 用来检测 small object,由于是具有高阶语义信息和更大分辨率的 feature map 上做预测,FPN 能够很好的处理小目标。

[2] FPN的不足

FPN 它对每层特征图分配人为设定的 anchor,并设置 GT 与 Anchor的 IOU 以筛选 “目标应该分到哪一层去学习”。但是这种启发式的策略看似合理却存在一些问题。
FPN不足
可以看到 基于 anchor 的分配,60*60 的卡车分配到 最小的特征图上检测,40* 40 的汽车分配到了最大的特征图上检测。但是没人知道这种分配是否合理,于是作者想到 模型自动分配目标到合适的 feature 层

[3] Ground-truth 和 loss 的重新设计

请添加图片描述

[4] ANCHOR-FREE 的分配方式

  • 对于一个 instance , 类别为

    k

    k​

    k , bbox 的坐标为

    b

    =

    [

    x

    ,

    y

    ,

    w

    ,

    h

    ]

    b = [x,y,w,h]​

    b=[x,y,w,h] ,映射到第

    l

    l​

    l 层 feature map 上

    b

    p

    l

    =

    [

    x

    p

    l

    ,

    y

    p

    l

    ,

    w

    p

    l

    ,

    h

    p

    l

    ]

    b_p^l=[x_p^l,y_p^l,w_p^l,h_p^l]​

    bpl=[xpl,ypl,wpl,hpl]

  • 定义一个 有效区域 有效区域

    b

    e

    l

    =

    ϵ

    e

    b

    p

    l

    =

    0.2

    b

    p

    l

    b_e^l=ϵ_e∗b_p^l=0.2∗b_p^l

    bel=ϵebpl=0.2bpl,忽略区域

    b

    i

    l

    =

    0.5

    b

    p

    l

    b_i^l=0.5∗b_p^l

    bil=0.5bpl

  • 这时候 class output 是一个

    W

    H

    K

    W*H*K

    WHK 大小的 feature map。上图中的白色区域就是有效的,灰色的忽略,黑色的负样本。Focal loss训练

  • Box output 分支,在有效区域内中的像素点 整体与

    b

    p

    l

    b_p^l

    bpl 四个边界做回归。
    请添加图片描述
    我们在所有的 feature level 中选择 loss 最小的 做 梯度回传。
    看到这,我们用个简单的示意图表示这篇论文到底在做什么:请添加图片描述中间的狗代表 卷积后的 feature map, 我们想让模型自己选择这条狗 去哪一个 level 层预测,就丢弃了anchor。用白色的区域(一定是该物体)去回归 红色框(GT)。每一层都做此操作,哪一层loss最小,就选择该层预测。
    在这里插入图片描述
    实验结果不再展示,仅使用 anchor-free 的分配方式效果不佳,作者把基于anchor free 和 基于anchor 结合起来有了很大提升。

版权声明:本文为CSDN博主「勤奋的懒猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xhw205/article/details/121422913

勤奋的懒猫

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐