阅读:2019.8.7-8.14
期刊:ICCV 2017
引用:Lin T Y , Goyal P , Girshick R , et al. Focal Loss for Dense Object Detection[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, PP(99):2999-3007.


RetinaNet: Focal Loss for Dense Object Detection - 图1
图7.1 RefinaNet结构[1]

1 RetinaNet概述


本文主要目的是解决“one-stage”检测算法中正负样本不均衡的问题。
1. “two-stage”检测算法的正负样本不均衡问题
“two-stage”检测算法由两个步骤的级联完成检测任务,第一阶段提取候选框,能够初步的将候选框筛选到1~2k个,从而过滤掉大部分的“背景样本”;第二阶段利用“启发式采样(sampling heuristics)”,从第一阶段筛选的框中按“1:3(正样本:负样本)”采样得到第二阶段训练样本,从而保持正负样本的均衡性。这是“two-stage”算法速度慢,但精度高的原因。
2. “one-stage”检测算法的正负样本不均衡问题
“one-stage”检测算法是基于整张图片做检测的,将整张图片分成若干个cell,每个cell生成若干个bbox,则整张图片各个位置都覆盖了不同大小、宽高比(aspect ratio)的bbox(>100k)。负样本占据大部分(1:1000),负样本易于分类,对训练贡献很小,一旦数量过多就会主导训练过程(导致模型退化),会影响网络对正样本的分类性能,从而影响检测精度。此时,虽然也可运用sampling heuristics方法,但效率较低,因为训练仍然由易分类的负样本主导。经典的样本均衡策略:boostrapping、hard example mining等,在这类情况下的效率也较低。这是“one-stage”算法速度快,但精度低的原因。
3. Focal loss
基于上述问题,本文从损失函数的角度着手,提出新的损失函数(Focal loss)用于正负样本均衡方法。在标准交叉熵的基础上添加了“调节因子(modulating factor)”、“权重因子(weighting factor)”和“聚焦参数(focusing factor)”,使得其成为一个动态缩放的交叉熵损失(dynamically scaled cross entropy loss),促使网络训练时自动减小负样本的损失权重,提高正样本的损失权重,更侧重于训练正样本。
4. RetinaNet
为了验证Focal loss的有效性,在FPN基础上提出了RetinaNet单步(one stage)检测算法,其检测、分类两个分支采用相同的主体结构设计,只有输出张量的维度不同,如图7.1所示。

2 RetinaNet创新点


  1. 提出focal loss用于解决正负样本不均衡问题。
    2. 在FPN基础上提出RetinaNet检测算法。

    3 Focal Loss


用于二元分类的交叉熵函数(cross entroy,CE)如图7.2所示,Focal loss就是在该函数基础上提出的。CE当样本易于分类时(RetinaNet: Focal Loss for Dense Object Detection - 图2),其损失值仍然较高(non-trivial magnitude),如图7.3中蓝色曲线(当RetinaNet: Focal Loss for Dense Object Detection - 图3时,为CE函数的分类性能曲线),如果这类易分类样本占了多数,将会主导训练过程,无法训练正样本的分类。
RetinaNet: Focal Loss for Dense Object Detection - 图4
图7.2 交叉熵函数(cross entroy, CE)
RetinaNet: Focal Loss for Dense Object Detection - 图5
图7.3 不同参数的focal loss分类性能

3.1 Balanced CrossEntropy

解决正负样均衡的常见方法之一时是在CE基础上添加一个权重因子(weighting factor),如公式7.1所示。对于正样本,权重因子为,对于负样本,权重因子为。实际应用中,可以为超参数,也可以由类别的比例倒数决定
RetinaNet: Focal Loss for Dense Object Detection - 图6(公式7.1)
该方法解决了正负样本的比例失衡问题,但没有区分“易分类样本”和“难分类样本”。

3.2 Focal Loss Definition

“one-stage”检测算法是基于整张图片做检测的,整张图片各个位置都覆盖了不同大小、宽高比(aspect ratio)的bbox(>100k)。负样本占据大部分(1:1000),负样本易于分类,对训练贡献很小,一旦数量过多就会主导训练过程(导致模型退化),影响网络对正样本的分类性能。7.3.1节的方法虽然能够解决正负样本的比例失衡问题,但无法区别“易分类样本”和“难分类样本”。故本文以7.3.1小节的算法为baseline,添加了调节因子“modulating factor ”(RetinaNet: Focal Loss for Dense Object Detection - 图7)、聚焦参数RetinaNet: Focal Loss for Dense Object Detection - 图8(focusing factor),两者以“RetinaNet: Focal Loss for Dense Object Detection - 图9”形式添加到损失函数中。同时,使用sigmoid函数处理RetinaNet: Focal Loss for Dense Object Detection - 图10,增加模型的数值稳定性。
1. 调节因子RetinaNet: Focal Loss for Dense Object Detection - 图11
通过调节因子,降低易分类样本在损失中的权重,增加难分类样本在损失中的权重。
(1)易分类样本的分类概率值比较RetinaNet: Focal Loss for Dense Object Detection - 图12),RetinaNet: Focal Loss for Dense Object Detection - 图13,使该样本对损失的贡献较小。
(2)难分类样本的分类概率值比较RetinaNet: Focal Loss for Dense Object Detection - 图14),RetinaNet: Focal Loss for Dense Object Detection - 图15,使该样本对损失的贡献较大。
2. 聚焦参数
通过调整大小RetinaNet: Focal Loss for Dense Object Detection - 图16(本文取RetinaNet: Focal Loss for Dense Object Detection - 图17),控制调节因子的对损失函数的影响程度。当时,focal loss相当于普通的CE loss;RetinaNet: Focal Loss for Dense Object Detection - 图18越大,调节因子对损失函数的影响越大。如图7.4所示,对于一个收敛模型(converged model),RetinaNet: Focal Loss for Dense Object Detection - 图19的变化对正样本的损失分布影响较小,对负样本的损失分布影响较大,这样促使训练损失中,正样本损失占更大的比例,整个训练过程有利于正样本的分类训练。
RetinaNet: Focal Loss for Dense Object Detection - 图20,易分类样本(RetinaNet: Focal Loss for Dense Object Detection - 图21)的损失相比于CE,小了100倍;当RetinaNet: Focal Loss for Dense Object Detection - 图22,小1000+倍。难分类样本(RetinaNet: Focal Loss for Dense Object Detection - 图23),损失最多小4倍。可见难分类样本的权重相对提升了许多。
RetinaNet: Focal Loss for Dense Object Detection - 图24
图7.4 不同RetinaNet: Focal Loss for Dense Object Detection - 图25对损失值得影响,左图为对正样本的影响,右图为对负样本的
3. Focal loss的影响
如表7.1所示。
表7.1 Focal loss对样本分布的影响

Loss量级 数量多的类别 数量少的类别
易分类样本的loss 大幅减少 稍微减少
难分类样本的loss 适当减小 几乎保持不变

3.3 Class Imbalance and Model Initialization

通常来讲,二分类模型初始化后,预测结果(y=1 or y=-1)的机会是均等的(随机猜想,等概率),即都是0.5的概率。但是在正负样本比例严重不均衡的情况下,这种设定会使占多数的类别能够主导训练走向,并导致早期训练的不稳定性。
故本文提出初始化模型参数的一种方法,使得模型对稀有类别的预测概率变小(如小0.01倍),即在训练开始时,模型为稀有类(正样本)估计Π值,以定义先验,并使模型为稀有类别样本估计的Π值较小,如0.01。通过设置Π,稀有类的概率P值会更小,从而在loss中占更大的权重。
实验表明该方法对CE和focal loss的性能提升都有帮助这是模型初始化的改变,不是损失函数的改变。具体操作参考7.5.6。

3.4 Class Imbalance and Two-stage Detectors

“two-stage”检测算法由两个步骤的级联完成检测任务。
第一阶段提取候选框,能够初步的将候选框筛选到1~2k个,从而过滤掉大部分的“背景样本”;
第二阶段利用“启发式采样(sampling heuristics)”,从第一阶段筛选的框中按“1:3(正样本:负样本)”采样得到第二阶段训练样本,从而保持正负样本的均衡性。

4 RetinaNet Detector


RetinaNet是一个“one-stage”算法,由一个骨干网络(backbone)和两个特定任务子网络(task-specific subnetworks)构成,如图7.1所示。骨干网络对整张图片进行特征提取,第一个子网络负责分类,第二个子网络负责回归定位。

4.1 Feature Pyramid Network Backbone

主要参考了FPN的特征金字塔结构,如图7.5所示。在提升速度,且保持准确率的同时,本文的设计与原始FPN有几点不同:
(1)考虑到计算开销,未使用P2的特征图(采用了P3~P7)。
(2)采用s=2的conv进行下采样,而非池化操作。
(3)为提升对大物体的检测性能,使用P7的特征图。
RetinaNet: Focal Loss for Dense Object Detection - 图26
图7.5 FPN特征金字塔结构

4.2 Anchors

(1)FPN的每层都有9种anchor box
3种aspect ratio:{1:2, 1:1, 2:1}
3种scale:{2^0, 2^1/3, 2^2/3}
(2)类别与bbox坐标
长度为k的one-hot表示所属类别,共k类
4维tensor表示bbox的坐标
(3)利用IoU对分类anchor box
IoU >= 0.5 anchor box 为目标框/正样本/前景(foreground)
0 <= IoU < 0.4 anchor box 为背景框
0.4 <= IOU < 0.5 anchor box 丢弃,不用于下一步预测

4.3 Classification Subnet

该分类分支对特征金字塔生成所有的anchor box进行分类,所有分类分支的参数都共享
(1)输出
每个cell生成A(9)个anchor box,K个类别,特征图为WxH,则总的输出为WxHxKA,由3x3conv + sigmoid计算得到。
(2)结构设计
4个3x3 conv,通道数为C(C=256),激活函数为ReLU,如图7.6红框部分所示。
RetinaNet: Focal Loss for Dense Object Detection - 图27
图7.6 RefinaNet分类分支

4.4 Box Regression Subnet

该分类分支对特征金字塔生成所有的anchor box进行回归定位,所有分类分支的参数都共享与分类分支具有一样的隐藏层设计,但是参数不共享。将分类与回归定位分布用两个分支完成,实现了分类、回归定位的解耦。如图7.6所示。

4.5 Initialization

(1)采用ResNet-50-FPN、ResNet-101-FPN作为骨干网络。在ImageNet上进行分类预训练。
(2)从ImageNet预训练得到的basenet不做调整,新加入的卷积层权重初始化为的高斯分布,偏置项置0。
(3)分类网络的最后一个卷积层,将偏置项置为,为超参数,每个anchor被分类为前景的概率,文中=0.01。

4.6 Optimization

RefinaNet的优化策略如表7.2所示。
表7.2 RefinaNet的优化策略

Optimizer SGD
Minibatch 16
Iterations 90k
Initial learning rate 0.01,在60k时除以10;在80k时再除以10
Date augmentation 水平翻转(horizontal image flipping)
Loss Focal loss用于分类,smooth L1 loss用回归定位

5 RefinaNet思维导图


以思维导图的方式,将RefinaNet各个知识点串联起,有利于构建RefinaNet的知识树。如图7.6所示。
RetinaNet: Focal Loss for Dense Object Detection - 图28
图7.6 RefinaNet思维导图

6 未理解的点


(1)7.3.3小节,不了解是怎么对“难分类样本”添加一个先验值的,是怎么确定其为“难分类样本”的。
(2)7.5节的内容待深入理解。

7 参考文献


[1] Lin T Y , Goyal P , Girshick R , et al. Focal Loss for Dense Object Detection[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, PP(99):2999-3007.
[2] Focal Loss论文阅读 - Focal Loss for Dense Object Detection
https://xmfbit.github.io/2017/08/14/focal-loss-paper/