论文笔记—Focal Loss for Dense Object Detection

1. 介绍

当前最先进的目标检测网络都是两级的,基于推荐区域的。第一级产生推荐区域的坐标,第二级进行分类和检测。这一架构的网络主要有R-CNN,Fast R-CNN,Faster R-CNN等。

现在的一些采用一级的网络,如YOLO,SSD等,与最先进的采用两级的网络相比,速度更快,但是准确度可能就稍微差一些。因此本文作者提出一种采用一级架构的网络,该网络具有一级网络的速度,同时具有二级网络的准确度。作者意识到,影响一级网络架构准确度的原因主要是训练过程中,前景和背景类别的样本数量不平衡,也即正负样本的数量不平衡,往往负样本的数量要远远多于正样本。

对于正负样本不平衡问题:
·二级网络:通过第一级的推荐区域生成网络生成推荐区域,减少负样本的数量,同时在第二级中固定候选目标中正负样本的比例,如(1 : 3)。
·一级网络:没有筛选出推荐区域,需要处理大量的候选目标。其中,背景样本(负样本)占有很大的比例。这种不平衡会导致两个问题:一是网络训练了大量的无有效目标的负样本,造成很大的计算浪费;二是训练后的模型对于正样本的检测效果不好。

注:本文中,作者将背景样本(负样本)定义为easy examples,意为容易分类的样本;将目标样本(正样本)定义为hard examples,意为难分类的样本。

为了处理上述一级网络中存在的正负样本不平衡问题,作者提出了一种新的损失函数:
这里写图片描述
作者基于Focal Loss,设计了一种新的一级网络架构,RetinaNet。
这里写图片描述

2. Focal Loss

传统的二分类交叉熵损失为:
这里写图片描述
y指定了ground-truth class,y=1为正例,y=-1为负例。p在0-1之间,为神经网络输出的输入属于正例的概率,为了解释方便,作者将p_t定义如下:
这里写图片描述
重新表述如下:
这里写图片描述
在Figure 1中我们可以看到,尽管容易分类的负样本具有很小的损失,但是当负样本的数量很多时,累加起来的总的损失也会远远超过正样本的损失。因此作者提出了平衡两者损失的方法。

首先作者想到为正负样本分别加一个在0-1之间的权重因子,其中正样本的权重因子为a,负样本为(1-a)。参考p_t的定义方式,定义了a_t,损失函数变为:
这里写图片描述

正如上文分析的那样,易于分类的负样本占据了loss中的大部分比例。a虽然平衡了正负样本的重要性,但是它并没有区分正负样本。因此作者进一步提出了下面的损失函数:
这里写图片描述
其中r为可调节的参数因子。

由Figure 1可以看出,Focal loss显著降低了易分类样本的损失,同时拓宽了低损失区域。举例来说,当r=2时,p_t=0.9的样本损失比使用传统损失计算方法计算得到的损失减小100倍,当p_t=0.968时,可以减小1000倍。

在具体实践中,作者再一次进行了升级,采用下式:
这里写图片描述
作者在实验中发现,采用(5)比采用(4)增加了模型的准确度。

3. RetinaNet Detector

这里写图片描述

3.1 Feature Pyramid Network Backbone

RetinaNet采用了FPN网络的P3-P7层,其中P3-P5是由C3-C5和测量连接计算出来的。P6是在C5的基础上采用kernel为3*3 ,stride=2的卷积得到。P7是在P6的基础上采用kernel为3*3,stride=2的卷积,然后再relu得到。作者没有使用原来的FPN的P2。增加P6和P7主要是为了增加网络对于大的对象的检测精度。

3.2 Anchors

从P3-P7层,作者采用的anchor的面积为32*32到512*512。在每一层上,采用三种长宽比的anchors,{1:2,1:1,2:1}。为了进行更密集的检测,作者对于每一层的anchor面积,分别乘以{2^0, 2^1/3, 2^2/3},因此在每层上共有三种面积的anchor,每种面积的anchor有三种长宽比,因此,在每一层上,共有A=9个anchors。

每一个anchor由k维的one-hot向量和四个边框坐标组成。边界框坐标与之前的RPN网络相同,采用anchor box与ground truth box的坐标补偿得到。当anchor与ground truth box的IoU大于0.5时,该anchor被划分为正例,当anchor与ground truth box的IoU小于0.4时,该anchor被划分为负例。当anchor与ground truth box的IoU在[0.4, 0.5]之间时,该anchor被舍弃。

3.3 Classification Subnet and Box Regression Subnet

如Figure 3 (c)和(d)。在实验中,作者将A设为9。

4. Inference and Training

作者对每一层预测出来的bbox,只选择分数在前1k的bbox。然后采用阈值为0.5的非极大值抑制,来确定最终的bbox。

训练网络采用的损失函数就是上文介绍的Focal Loss,作者发现在r=2时,RetinaNet的表现最好。作者在ResNet-50-FPN和ResNet-101-FPN的架构上进行了实验。两种架构都在ImageNet1k上进行了预训练。作者在8个GPU上进行训练,每个GPU训练2张图像。

5. Experiments

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值