深度学习
  • 前言
  • 第一章:经典网络
    • ImageNet Classification with Deep Convolutional Neural Network
    • Very Deep Convolutional Networks for Large-Scale Image Recognition
    • Going Deeper with Convolutions
    • Deep Residual Learning for Image Recognition
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
    • Squeeze-and-Excitation Networks
    • Densely Connected Convolutional Networks
    • SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE
    • MobileNet v1 and MobileNet v2
    • Xception: Deep Learning with Depthwise Separable Convolutions
    • Aggregated Residual Transformations for Deep Neural Networks
    • ShuffleNet v1 and ShuffleNet v2
    • CondenseNet: An Efficient DenseNet using Learned Group Convolution
    • Neural Architecture Search with Reinforecement Learning
    • Learning Transferable Architectures for Scalable Image Recognition
    • Progressive Neural Architecture Search
    • Regularized Evolution for Image Classifier Architecture Search
    • 实例解析:12306验证码破解
  • 第二章:自然语言处理
    • Recurrent Neural Network based Language Model
    • Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
    • Neural Machine Translation by Jointly Learning to Align and Translate
    • Hierarchical Attention Networks for Document Classification
    • Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne
    • About Long Short Term Memory
    • Attention Is All you Need
    • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 第三章:语音识别
    • Speech Recognition with Deep Recurrent Neural Network
  • 第四章:物体检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • R-FCN: Object Detection via Region-based Fully Convolutuional Networks
    • Mask R-CNN
    • You Only Look Once: Unified, Real-Time Object Detection
    • SSD: Single Shot MultiBox Detector
    • YOLO9000: Better, Faster, Stronger
    • Focal Loss for Dense Object Detection
    • YOLOv3: An Incremental Improvement
    • Learning to Segment Every Thing
    • SNIPER: Efficient Multi-Scale Training
  • 第五章:光学字符识别
    • 场景文字检测
      • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
      • Detecting Text in Natural Image with Connectionist Text Proposal Network
      • Scene Text Detection via Holistic, Multi-Channel Prediction
      • Arbitrary-Oriented Scene Text Detection via Rotation Proposals
      • PixelLink: Detecting Scene Text via Instance Segmentation
    • 文字识别
      • Spatial Transform Networks
      • Robust Scene Text Recognition with Automatic Rectification
      • Bidirectional Scene Text Recognition with a Single Decoder
      • multi-task learning for text recognition with joint CTC-attention
    • 端到端文字检测与识别
      • Reading Text in the Wild with Convolutional Neural Networks
      • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    • 实例解析:字符验证码破解
    • 二维信息识别
      • 基于Seq2Seq的公式识别引擎
      • Show and Tell: A Neural Image Caption Generator
      • Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  • 第六章:语义分割
    • U-Net: Convolutional Networks for Biomedical Image Segmentation
  • 第七章:人脸识别
    • 人脸检测
      • DenseBox: Unifying Landmark Localization with End to End Object Detection
      • UnitBox: An Advanced Object Detection Network
  • 第八章:网络优化
    • Batch Normalization
    • Layer Normalization
    • Weight Normalization
    • Instance Normalization
    • Group Normalization
    • Switchable Normalization
  • 第九章:生成对抗网络
    • Generative Adversarial Nets
  • 其它应用
    • Holistically-Nested Edge Detection
    • Image Style Transfer Using Convolutional Nerual Networks
    • Background Matting: The World is Your Green Screen
  • Tags
  • References
由 GitBook 提供支持
在本页
  • 前言
  • 1. Focal Loss
  • 1.1 :解决正负样本不平衡
  • 1.2 :解决难易样本不平衡
  • 1.3 FL的最终形式
  • 2. RetinaNet
  • 3. 测试
  • 4. 总结

这有帮助吗?

  1. 第四章:物体检测

Focal Loss for Dense Object Detection

上一页YOLO9000: Better, Faster, Stronger下一页YOLOv3: An Incremental Improvement

最后更新于4年前

这有帮助吗?

tags: FPN, ResNet, Focal Loss, RetinaNet

前言

何凯明,RBG等人一直是Two-Stage方向的领军人,在这篇论文中,他们也开始涉足One-Stage的物体检测算法。大牛就是牛,一次就刷新了精度。下面我们就来分析这几个大牛的作品。

目前主流的检测算法分为两个方向:(1)以系列为代表的two-stage方向;(2)以系列为代表的one-stage方向。虽然one-stage方向的速度更快,但是其精度往往比较低。究其原因,有两个方面:

  1. 正样本(Positive Example)和负样本(Negative Example)的不平衡;

  2. 难样本(Hard Example)和易样本(Easy Example)的不平衡。

这些不平衡造成模型的效果不准确的原因如下:

  1. Negative example的数量过多,导致Postive example的loss被覆盖,就算Postive example的loss非常大也会被数量庞大的 negative example中和掉,这这些positive example往往是我们要检测的前景区域;

  2. Hard example往往是前景和背景区域的过渡部分,因为这些样本很难区分,所以叫做Hard Example。剩下的那些Easy example往往很好计算,导致模型非常容易就收敛了。但是损失函数收敛了并不代表模型效果好,因为我们其实更需要把那些hard example训练好。

四种example的情况见图1。

图1:物体检测中的四种Example

Faster R-CNN之所以能解决两个不平衡问题是因为其采用了下面两个策略:

  1. 根据IoU采样候选区域,并将正负样本的比例设置成1:1。这样就解决了正负样本不平衡的问题;

  2. 根据score过滤掉easy example,避免了训练loss被easy example所支配的问题。

而在这篇论文中他们采用的解决方案是基于交叉熵提出了一个新的损失函数Focal Loss(FL)。

FL(pt)=−αt(1−pt)γlog(pt)\text{FL}(p_t) = - \alpha_t (1-p_t)^{\gamma}\text{log}(p_t)FL(pt​)=−αt​(1−pt​)γlog(pt​)

FL是一个尺度动态可调的交叉熵损失函数,在FL中有两个参数αt\alpha_tαt​和γ\gammaγ,其中αt\alpha_tαt​主要作用是解决正负样本的不平衡,γ\gammaγ主要是解决难易样本的不平衡。

1. Focal Loss

Focal Loss是交叉熵损失的改进版本,一个二分类交叉熵可以表示为:

CE(p,y)={−log(p)ify=1−log(1−p)otherwise\text{CE}(p,y) = \left\{ \begin{array}{} -\text{log}(p) & \text{if}\quad y=1\\ -\text{log}(1-p) & \text{otherwise} \end{array} \right.CE(p,y)={−log(p)−log(1−p)​ify=1otherwise​

上面公式可以简写成:

CE(p,y)=CE(pt)=−log(pt)\text{CE}(p,y) = \text{CE}(p_t) = -\text{log}(p_t)CE(p,y)=CE(pt​)=−log(pt​)

其中:

pt={pify=11−potherwisep_t = \left\{ \begin{array}{} p & \text{if}\quad y=1\\ 1-p & \text{otherwise} \end{array} \right.pt​={p1−p​ify=1otherwise​

1.1 α\alphaα:解决正负样本不平衡

平衡交叉熵的提出是为了解决正负样本不平衡的问题的。它的原理很简单,为正负样本分配不同的权重比值α∈[0,1]\alpha \in [0,1]α∈[0,1],当y=1y=1y=1时取α\alphaα,为−1-1−1时取1−α1-\alpha1−α。我们使用和ptp_tpt​类似的方法将上面α\alphaα的情况表示为ata_tat​,即:

αt={αify=11−αotherwise\alpha_t = \left\{ \begin{array}{} \alpha & \text{if}\quad y=1\\ 1-\alpha & \text{otherwise} \end{array} \right.αt​={α1−α​ify=1otherwise​

那么这个α−balanced\alpha-\text{balanced}α−balanced交叉熵损失可以表示为式(6)。

CE(pt)=−αtlog(pt)\text{CE}(p_t) = -\alpha_t \text{log} (p_t)CE(pt​)=−αt​log(pt​)

α\alphaα的值往往需要根据验证集进行调整,论文中给出的是0.25。

1.2 γ\gammaγ:解决难易样本不平衡

FL中γ\gammaγ的引入是为了解决难易样本不平衡的问题的。图2是FL中example预测概率和loss值之间的关系。其中蓝色曲线是交叉熵(γ=0\gamma=0γ=0时Focal Loss退化为交叉熵损失)的曲线。

从图2的曲线中我们可以看出对于一些well-classified examples (easy examples)虽然它们单个example的loss可以收敛到很小,但是由于它们的数量过于庞大,把一些hard example的loss覆盖掉。导致求和之后他们依然会支配整个批次样本的收敛方向。

一个非常简单的策略是继续缩小easy examples的训练比重。作者的思路很简单,给每个乘以(1−pt)γ(1-p_t)^\gamma(1−pt​)γ。因为easy example的score ptp_tpt​往往接近1,那么(1−pt)γ(1-p_t)^\gamma(1−pt​)γ值会比较小,因此example得到了抑制,相对的hard example得到了放大,例如图2中γ>0\gamma>0γ>0的那四条曲线。

FL的求导结果如公式(7):

dFLdx=y(1−pt)γ(γptlog(pt)+pt−1)\frac{d\text{FL}}{dx} = y(1-p_t)^\gamma(\gamma p_t\text{log}(p_t) + p_t - 1)dxdFL​=y(1−pt​)γ(γpt​log(pt​)+pt​−1)

γ\gammaγ的值也可以根据验证集来调整,论文中给出的值是2。

1.3 FL的最终形式

结合1.1的α\alphaα和1.2的γ\gammaγ,我们便有了公式(1)中FL的最终形式。作者也通过实验验证了结合两个策略的实验效果最好。

Focal Loss的最终形式并不是一定要严格的是(1)的情况,但是它应满前文的分析,即能缩小easy example的比重。例如在论文附录A中给出的另外一种Focal Loss:FL⋆\text{FL}^\starFL⋆,曲线见图3。它能取得和FL类似的效果。

FL⋆=−log(σ(γyx+β))γ\text{FL}^\star = -\frac{\text{log}(\sigma(\gamma yx + \beta))}{\gamma}FL⋆=−γlog(σ(γyx+β))​

最后作者指出如果将单标签softmax换成多标签的sigmoid效果会更好,这里应该和我们在YOLOv3中分析的情况类似。

2. RetinaNet

算法使用的检测框架RetinaNet并没有特别大的创新点,基本上是残差网络+FPN的最state-of-the-art的方法,如图4。

对于残差网络和FPN不清楚的参考论文或者我之前的分析。这里我们列出RetinaNet的几个重点:

  1. 融合的特征层是P3-P7;

  2. 每个尺度的Feature Map有一组锚点(3*3=9);

  3. 分类任务和预测任务的FPN部分的参数共享,其它参数不共享。

3. 测试

测试的时候计算所有锚点的score,再从其中选出top-1000个进行NMS,NMS的阈值是0.5。

4. 总结

Focal Loss的论文非常简单有效,非常符合何凯明等人的风格。FL中引入的两个参数α\alphaα和γ\gammaγ分别用于抑制正负样本和难易样本的不平衡,动机明确。

Focal Loss几乎可以应用到很多imbalance数据的领域,还是非常有实用价值的。

最后,作者基于,搭建了检测网络RetinaNet,该网络使用的策略都是他们自己提出的而且目前效果非常好的基础结构,再结合Focal Loss,刷新检测算法的精度也不意外。

图2:CE损失和FL损失曲线图

图3:CE损失和FL*损失曲线图

图4:RetinaNet网络结构图

残差网络
FPN
R-CNN
YOLO
图3:CE损失和FL*损失曲线图
图1:物体检测中的四种Example
图2:CE损失和FL损失曲线图
图4:RetinaNet网络结构图