[论文理解]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. ...
随机推荐
- cogs 2123. [HZOI 2015] Glass Beads
2123. [HZOI 2015] Glass Beads ★★★ 输入文件:MinRepresentations.in 输出文件:MinRepresentations.out 简单对比时 ...
- UVA12230 过河 Crossing Rivers
题目描述 一个人每天需要从家去往公司,然后家与公司的道路是条直线,长度为 \(D\). 同时路上有 \(N\)条河,给出起点和宽度\(W_i\) , 过河需要乘坐速度为\(V_i\) 的渡船; 船在河 ...
- Linux--6 redis订阅发布、持久化、集群cluster、nginx入门
一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...
- win10卸载更新+关闭自动更新的方法
卸载更新方法: 左下角->设置->更新和安全->windows更新->高级选项->查看更新历史记录->卸载更新 关闭自动更新的方法:win+r 输入service ...
- /sbin/int的启动及后续进程的启动_3
转载自: http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 半年前,我写了<计算机是如何启动的?>,探讨BIOS ...
- docker~aspnetcore2.0镜像安装软件的加速器
一般对于安装软件加速时,我们大多数会选择阿里云,而对于aspnetcore2.0这个进项来说,由于使用的是Debian操作系统,所有我们要找到它对应的mirror列表,下面是我整理的一个sources ...
- 网络爬虫之记一次js逆向解密经历
1 引言 数月前写过某网站(请原谅我的掩耳盗铃)的爬虫,这两天需要重新采集一次,用的是scrapy-redis框架,本以为二次爬取可以轻松完成的,可没想到爬虫启动没几秒,出现了大堆的重试提示,心里顿时 ...
- 让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
通常我们的网站里面会加载一些js代码,统计啊,google广告啊,百度同盟啊,阿里妈妈广告代码啊,一堆,最后弄得页面加载速度很慢,很慢. 解决办法:换一个js包含的方式,让javascript加载速度 ...
- 有趣的 验证JS只能输入正整数
<html> <head> <title>只能输入正整数</title> </head> <body> 兑换数量:<inp ...
- Poj 1743——Musical Theme——————【后缀数组,求最长不重叠重复子串长度】
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22499 Accepted: 7679 De ...