Skip to main content
  1. Posts/

Focal Loss for Dense Object Detection(RetinaNet) 学习笔记

Table of Contents
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

先写个简略版的笔记..看之后的情况要不要读得更精细一点..

背景
#

two stage的检测比one stage的检测效果好,原因是啥?

作者认为是正负样本不平衡导致的. two stage的方法在proposal 的时候干掉了大部分负样本,所以效果好.

因为作者提出了一种新的loss,称为Focal Loss 是对交叉熵loss的改进,作用是提高没有正确分类的样本的权重,降低正确分类的样本的权重.

然后设计了个retinaNet 来验证效果. 主要是用了Focal Loss 作为损失函数,以及backbone比起之前的one stage的检测用上了FPN.

Focal Loss
#

一图胜千言

Focal Loss(根据正文上下文重绘的示例图,并非遗失原图)

Focal loss是在交叉熵loss的基础上增加了一个指数衰减. 对正确分类的样本影响很小,对错误分类的样本影响很大.

从图上我们可以看出,CE对正确分类的样本仍然有不小的loss,这样的样本数很多的话,就会被训练的时候模型被带歪… 因此需要减少这些正确分类的样本对loss的影响.

RetinaNet
#

单阶段检测,主要在于使用Focal Loss训练,以及backbone用上了FPN

RetinaNet(根据正文上下文重绘的示例图,并非遗失原图)

Related

SSD: Single Shot MultiBox Detector 学习笔记

概述 # SSD是一种单阶段目标检测算法.所谓单阶段,是指只使用了一个deep neural network,而不是像faster-rcnn这种两阶段网络. 为什么有了faster-rcnn还要使用SSD? 最主要是慢… 两阶段网络虽然准确率高,但是在嵌入式等算力不足的设备上做inference速度非常感人,很难达到real time的要求. (实际业务上也是这样,公有云上的检测模型几乎都是faster-rcnn,而到了一些盒子之类的硬件设备,检测模型就全是SSD等single stage 模型了)