《Focal Loss for Dense ObjectDetection》阅读笔记

《Focal Loss for Dense Object Detection》阅读笔记

1、背景

在介绍Focal Loss之前先来说说目标检测算法。我们知道目标检测检测算法主要分为两种类别:One-stage和Two-stage。
One-stage算法是通过网络直接回归目标的位置与类别,也就是说图像输入网络后网络直接得到目标的类别和位置,代表性算法包括Yolo系列,Retina-Net等。这类算法最大的优势就是运行速度快,适合在移动端部署。但是相对于Two-stage算法来讲准确率较低。
Two-stage算法流程主要包括两步:
(1)由算法生成一系列作为样本的候选框,具体算法如R-CNN中的Slecetive Search、Faster R-CNN中的RPN等。(得到位置信息)
(2)通过图像分类网络对生成的候选框进行分类。(得到类别信息)
代表性算法包括R-CNN,Faster R-CNN等。这类算法优势在于准确率相对One-stage算法高,但运行速度较慢。
作者分析了造成One-stage算法准确率较低的主要原因:在我们的数据集中往往属于背景的样本数量远远大于属于前景(目标)的样本数量(数据总量往往在104-105数量级,前景只占一小部分)。对于Two-stage算法,在第一个stage就通过生成候选框的方式筛选掉了很大一部分的背景数据,而在第二个数据分类阶段又可以采用固定前后景数据比例(利用IoU判断前后景,前后景比例往往为1:3)或是OHEM等方式来控制前后景数据比例。而在One-stage算法中对数据比例的控制操作往往不够充分,这导致了数据集中前景与背景分类极不平衡的的问题。试想在这种情况下我们的网络哪怕只学到了将所有输入标记为背景也一样能够得到较高的分类准确率。为了缓解One-stage算法中数据不平衡的问题,作者提出了Focal loss并且专门设计了RetinaNet网络结构来验证Facol loss的作用。接下来我们具体来看看什么是Focal loss。

2、Focal loss

Focal loss是从交叉熵损失函数改进而来的,标准交叉熵函数如下图所示:
在这里插入图片描述
若将p与1-p写成分段函数的形式:
在这里插入图片描述
则标准交叉熵函数可以写为如下形式:
在这里插入图片描述
如何在标准交叉熵函数基础上改进,缓解类别不平衡问题呢?我们可以采用调节正负样本的系数来改善。例如:我们通过对正类数据(类别标签为1)损失函数前面加系数a∈[0,1],负类数据(类别标签为0)损失函数前面加系数1-a。通过调节参数a的大小来调节正负样本权重。但这样做也有一个很明显的问题:无法区分困难样本。在分类问题中网络一般输出候选区域属于特定类别的概率(当为多分类时一般采用softmax函数对网络输出进行归一化),当网络对候选区域ground truth类别的预测概率较低时,该候选区域便是困难样本。Focal loss通过在损失函数中降低简单样本的权重来使网络更加注意于对困难样本分类的学习,Focal loss表达式如下:
在这里插入图片描述
可见,Focal loss利用网络预测概率来做系数,使网络更加注重困难样本分类。表达式中的γ(γ≥0)用来调节简单样本损失函数的衰减比例。作者测试了几种不同γ取值下的loss函数随pt变化的图像,如下图:
在这里插入图片描述
当γ=0时Focal loss边退化成了标准交叉熵损失函数。在作者的实验中当γ=2时效果最好。

3、RetinaNet

RetinaNet主要是为了验证Focal loss的作用而提出的one-stage分类网络,它的结构如下图所示:
在这里插入图片描述
网络主干在ResNet的基础上加入FPN结构来生成多尺度的特征信息。之后每一个尺度的特征都连分支网络:类别分支与位置分支,对多尺度的目标进行检测与分类。作者故意将RetinaNet设计的较为简单以此来凸显Focal loss的作用。

4、小结

阅读这篇文章主要是为了了解一些loss函数设计的思路。Focal loss提出的思路很自然,想法也比较简单易懂。关键是要造成方法某些性能缺陷的主要原因,这样才能切中肯綮,对症下药,而这一点则需要对当前算法有很深的了解才能做到。这就好像一则故事里所说的那样,一个工程师靠敲一锤子修好一台昂贵的机器要收一万美元,敲一锤子1美元,知道在哪里敲9999美元。后续继续了解一些loss函数软化的知识,看看是否有多元函数的软化方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值