码迷,mamicode.com
首页 > Web开发 > 详细

RetinaNet

时间:2019-07-30 00:16:50      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:总结   sam   algo   sub   parameter   错误   网络构建   另一个   prope   

论文信息

Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár, Focal Loss for Dense Object Detection, ICCV 2017.

https://arxiv.org/abs/1708.02002

历史的发展

我们重点关注神经网络重新崛起之后的内容, 先前的内容以后也许会简单提一下.

两大门派

两大门派主要是one stage与two stage, 二者在accuracy与speed各有侧重, 但最终还是trade-off.

one stage two stage
algorithms YOLO, YOLT R-CNN, SPPnet
accuracy Low(30% mAP) High(60%+ mAP)
speed Fast(100+ FPS) Slow(5 FPS)

two stage

其主要特点是先使用某种算法(selective search, RPN, etc.)产生一系列proposal, 将这些proposal喂到某个预训练神经网络(VGG-16, ResNet, etc.)中, 之后对输出进行分类.

特别的, RPN会预分类(background vs foreground)

one stage

大多数模型会采用一系列类似于滑窗分类器的"anchor"直接进行分类.

RetinaNet

本文中的模型是基于one stage, 目的也显而易见便是为了提升accuracy.

主要贡献

提出观点: 导致one stage精确度不足的重要原因有class imbalance.

class imbalance

所谓class imbalance便是由于two stage模型大多会对bg与fg预分类, 因此bg数量不会远大于fg数量, 而one stage模型为了提升速度舍弃了proposal过程, 因此大多数模型也谈不上预分类问题, 这样就会导致数量的极不均衡, 往往相差2 order.

此前的一些解决方案

OHEM直接舍弃部分easy example, 毫无疑问会导致数据残缺, 进而影响结果

本文的解决方案

提出了一个新的loss func:
$$
CE(p_t) = -log(p_t)\
FL(p_t) = -\alpha_t(1-p_t)^\gamma CE(p_t)
$$
其中
$$
p_t=\left{
\begin{aligned}
p && y = 1\
1-p && otherwise
\end{aligned}
\right.\
\alpha_t=\left{
\begin{aligned}
\alpha && y = 1\
1-\alpha && otherwise
\end{aligned}
\right.
$$
特别的**, $ CE $是交叉熵. 在作者的实验中发现$ \gamma = 2, \alpha = 0.25 $时取得最好结果.

技术图片

通过仿真图我们可以发现, 对于相对有把握的类别(easy sample ,e.g. bg), loss设置较小, 而对于较没有把握的类别(hard sample, e.g. fg), loss较大, 这样就防止出现把握较大的类别因为数量优势统治loss.

我们从四种情况分析loss函数:

  1. 正确分类 & 目标项容易分类 - $ y = 1, p ~ 1 $

    此时$ p_t = p ~ 1 $, 而$ \gamma > 1 $, 因此$FL(p_t) << CE(p_t)$

  2. 正确分类 & 目标项不易分类 - $ y = 1, p ~ 0 $

    此时$ p_t = p ~ 0 $, 而$ \gamma > 1 $, 因此$FL(p_t) ~ CE(p_t)$

  3. 错误分类 & 目标项容易分类 - $ y = -1, p ~ 1 $

    此时$ p_t = 1 - p ~ 0 $, 而$ \gamma > 1 $, 因此$FL(p_t) ~ CE(p_t)$

  4. 错误分类 & 目标项不易分类 - $ y = -1, p ~ 0 $

    此时$ p_t = 1 - p ~ 1 $, 而$ \gamma > 1 $, 因此$ FL(p_t) << CE(p_t) $

以一言蔽之, 易分类未出错的影响大量减小.

特别的, 易分类出错影响基本不减小也很合理.

额外的 - 网络构建

技术图片

该网络很容易看出左半部分就是FPN, 而对于右半部分就是他们独创的, 很容易看出(论文中也提到了)他们分了上下两个parameter not shared卷积网络, 一个是用来classifying另一个是用来anchor box regressing(4 dims).

Initialization

Bias initialization for classification subnet:
$$
b = -log(1 - \pi/\pi)
$$
$ \pi $是指所有初始化时所有anchor都有$ \pi $的把握被当作fg, 实践证明$ \pi = 0.01$较为合适.

实验结果

技术图片

这里要补充的时OHEM 1 : 3指舍弃low probability后fg : bg.

技术图片

这张图的结果来看, RetinaNet也可以称得上名副其实的state-of-the-art.

Appendix

A

首先定义了:
$$
x_t = yx, y\in{\pm1}
$$
其中$ x $表示数量.

尝试了一个Focal Loss的变体, 得出的结论用原文总结就是:

More generally, we expect any loss function with similar properties as FL or FL* to be equally effective.

B

$$
\frac{dCE}{dx} = y(p_t - 1)\
\frac{FL}{dx} = y(1 - p_t)^\gamma(\gamma p_t log(p_t) + p_t - 1)\
\frac{dFL^}{dx} = y(p_t^ - 1)
$$

技术图片

得出结论, 当$ x_t > 0 $时, FL导数比CE更接近于零.

总结

要善于发现问题的本质 - 从当时流行的方法中看one stage algorithms比不上two stage algorithms的一个重要原因.

RetinaNet

标签:总结   sam   algo   sub   parameter   错误   网络构建   另一个   prope   

原文地址:https://www.cnblogs.com/edbean/p/11267242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!