[论文理解]Focal Loss for Dense Object Detection(Retina Net)
Focal Loss for Dense Object Detection
Intro
这又是一篇与何凯明大神有关的作品,文章主要解决了one-stage网络识别率普遍低于two-stage网络的问题,其指出其根本原因是样本类别不均衡导致,一针见血,通过改变传统的loss(CE)变为focal loss,瞬间提升了one-stage网络的准确率。与此同时,为了测试该loss对网络改进的影响,文章还特地设计了一个网络,retina net,证明了其想法。
Problems
- 为啥one-stage网络的准确率普遍会低于two-stage呢?
文章指出,one-stage网络是在训练阶段,极度不平衡的类别数量导致准确率下降,一张图片里box为目标类别的样本就那么点,而是背景没有目标的样本却远远高于目标样本,这导致分类为背景的样本数目占据样本数目极大部分,因此,这种不平衡导致了模型会把更多的重心放在背景样本的学习上去。常规的做法可以是负样本挖掘,来维持正负样本1:3的比例,这似乎起到了点作用。但是,本文的做法是改变原有的loss,提出新的loss来解决。由于容易被分类的负样本的数量非常庞大,所以这些样本就会左右梯度的方向,继而使得模型更专注于分负样本而非具体的类别。
- 为啥two-stage的准确率不会受到样本类别不均衡的影响呢?
因为two-stage网络一般会经历类似rpn网络,第一个网络已经滤去了大多数背景样本,在第二个网络里负样本的数量大量减少,因此对分类的影响也会减少。但two-stage网络仍然有大量负样本,只是不均衡程度减轻了,所以,这是识别准确率不高的根本原因在于样本类别是否均衡。
Loss
一般的ce loss是这样的:

下面给一张图,来说明下作者到底是怎么想的。对于普通的ce loss,由于负样本数量巨大,因此有大量的简单样本(如置信度大于0.5)会占据loss的主导,尽管困难样本单个的loss非常大,但是其数量不如简单样本多,所以loss会由简单样本来主导。那么好的做法就是,尽量减小简单样本loss所占的比例,就是把置信度大于0.5以上的样本loss压低。于是本文的想法大致就成型了。

首先要让正负样本所占的比例均衡,没有使用负样本挖掘等手段,本文直接在ce loss前面乘以一个参数α,这样可以方便控制正负样本loss所占的比例:

随后呢,为了解决简单样本累积loss太大的问题,又提出下面这个loss:

由上面的图可以看出,当γ为5的时候,简单样本的loss占比已经非常小了,困难样本的loss依然很大,这样就能大幅减少简单样本的占比,算是解决了 这个问题吧。
然后,最终的loss长这个样子:

Trick
类别不平衡问题在训练最开始阶段会导致训练不是很稳定,这是因为我们一般初始化参数的时候都会认为参数其结果服从一个先验分布,一般我们就认为是正太分布,对于分类的最后一层,我们的初始化就是让每个类别的概率都相等,这样做的结果是在反向过程中会使得训练初期训练不稳定,因为负样本非常多,你让各种类别概率相等之后显然是增加了负样本分错的数目,也就是增加了负样本在训练时候的loss,所以好的做法是让最后一层的分布符合正样本相对负样本的分布,这样做能够保证训练初期的稳定性。
RetinaNet Detector
retinanet的网络结构是在FPN的每个特征层后面接两个子网络,分别是classification subnet 和 bbox regression subnet。
前者是先用四次C个3*3的卷积核卷积+relu激活,然后用KA个3*3的卷积核卷积,用sigmoid来激活最后一层,对每个特征层进行类别预测。KA是K种类别A个anchor的预测结果,实验中设置C = 256。
后者也差不多,也是接一个FCN(不含全连接的全卷积),最后预测的是4*A个量,这个与faster rcnn中的类似。
与RPN相比的话,retinanet并没有共享预测类别的网络权重和回归网络的权重,因为作者说他们这样不共享网络权重最终得到的准确率远比调整超参效果要好。
网络结构如图:

OHEM
(Online Hard Example Mining)OHEM是来帮助two-stage网路训练的方法,OHEM作用是在NMS之前,先将各个样本的loss排序,只留下loss较大的样本继续NMS,这样做也可以更加专注于错分样本的训练,但是其也有缺点,其直接扔掉了简单样本,显然会导致简单样本的训练出现问题。作者通过实验说明了FL比OHEM更加有效。

[论文理解]Focal Loss for Dense Object Detection(Retina Net)的更多相关文章
- 目标检测 | RetinaNet:Focal Loss for Dense Object Detection
论文分析了one-stage网络训练存在的类别不平衡问题,提出能根据loss大小自动调节权重的focal loss,使得模型的训练更专注于困难样本.同时,基于FPN设计了RetinaNet,在精度和速 ...
- focal loss for dense object detection
温故知新 focal loss for dense object detection,知乎上一人的评论很经典.hard negative sampling, 就是只挑出来男神(还是最难追的),而foc ...
- 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)
论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...
- Focal Loss for Dense Object Detection 论文阅读
何凯明大佬 ICCV 2017 best student paper 作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确 ...
- [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...
- 技术干货 | 基于MindSpore更好的理解Focal Loss
[本期推荐专题]物联网从业人员必读:华为云专家为你详细解读LiteOS各模块开发及其实现原理. 摘要:Focal Loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失 ...
- 论文阅读|Focal loss
原文标题:Focal Loss for Dense Object Detection 概要 目标检测主要有两种主流框架,一级检测器(one-stage)和二级检测器(two-stage),一级检测器, ...
- Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection
目录 Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Generalized Focal L ...
- 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection
论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...
随机推荐
- CAS客户端整合(三) Otrs
OTRS 是用Perl写的一个工单邮件系统,非常强大. 登录流程 流程图略过 otrs没有像 discuz 和 zabbix 类似的游客登录状态,这样处理起来逻辑分支少一些. 不过还是考虑用 otrs ...
- [Xcode 实际操作]四、常用控件-(6)UISwitch开关控件的使用
目录:[Swift]Xcode实际操作 本文将演示开关控件的基本用法. 开关控件有两个互斥的选项,它是用来打开或关闭选项的控件. 在项目导航区,打开视图控制器的代码文件[ViewController. ...
- nginx丢弃http包体处理
http框架丢弃http请求包体和上一篇文章http框架接收包体, 都是由http框架提供的两个方法,供http各个模块调用,从而决定对包体做什么处理.是选择丢弃还是接收,都是由模块决定的.例如静态资 ...
- react native ios打包到真机,即生产包
参考文章:http://www.devio.org/2017/02/09/React-Native%E5%8F%91%E5%B8%83APP%E4%B9%8B%E6%89%93%E5%8C%85iOS ...
- POJ1009 Edge Detection
题目来源:http://poj.org/problem?id=1009 题目大意: 某图像公司用run length encoding(RLE)的方式记录和存储了大量的图像.程序的目标是读入压缩后的图 ...
- php与MySQL与echart综合使用
http://www.yinghualuowu.com/php/echart.html 创建table sex 有name num <?php ini_set('disp ...
- 强制更新客户端Silverlight XAP 文件
在发布小程序更新的时候访问的总是原来的程序,猜想应该是缓存的原因.在网上查找方法 <div id="silverlightControlHost"> <objec ...
- 打印BroadcastReceiver的所有接受者
Android中收到短信等事件都是通过广播发送给应用程序的,手机卫士等程序都是通过注册高优先级的BroadcastReceiver来实现短信防火墙等功能.对于我们来说很想知道系统中都有哪些程序注册了B ...
- UVA 5986 - Wizarding Duel 超级脑洞题
给出n个人,每个人两两比赛一场,一共有C(n,2)场比赛,现在给出一个榜,问其是否合法.不合法的话,就改成合法,输出最小需要改的变化. 分数一定是C(n,2)的了, 不和法的情况,比如0,0,2,是不 ...
- asp.net mvc里面竟然也可以用eval()
刚才在项目里面看到了一个牛逼的用法: style="display:<%# Eval("IsSharingPlatformDisplay") %>" ...