[深度学习]Object detection物体检测之Retinanet(12)

论文全称:《Focal Loss for Dense Object Detection》

论文地址:https://arxiv.org/pdf/1708.02002.pdf

论文代码:https://github.com/facebookresearch/Detectron

目录

综述

Focal Loss

cross entropy(CE)loss

Balanced Cross Entropy

Focal Loss Definition

RetinaNet Detector

Result


综述

目前one-stage的检测算法速度非常快,但是在精准度上表现的不如two-stage的算法,然后two-stage的算法的速度方面又不能达到实时性的要求。论文发现这两者之间的鸿沟主要是由于前景和背景之间的严重的类别不平衡是该问题的核心,为了解决这个办法,重新构造标准交叉熵损失focal loss,使其降低分配给分类良好例子的损失权重。在训练的时候更关注那些有争议的negative的数据而不是那些非常容易辨别的eacy的negative的数据,避免后者对detector的影响过大。

为了评估损失的有效性,作者设计和训练了一个简单的致密探测器,称之为RetinaNet。结果表明,当使用focal loss进行训练时,RetinaNet能够与之前one-stage的detector的速度相匹配,同时超过了现有所有最先进的two-stage detector的精度。

Focal Loss

cross entropy(CE)loss

focal loss就是为了减低在训练期间前景和背景类别不平衡所带来的精度损失的问题所设计的。传统的cross entropy(CE)loss是下面这样的:

这种loss function有一个显著的特征就是对于很容易分类的example(pt概率比较大的)都会有比较大的loss,对应于下图的蓝色曲线。当训练很多这样的例子,就会覆盖那些rare的example(难以辨别的例子)。

Balanced Cross Entropy

作为本论文focal loss比较的一个baseline,先引入一个常见的方法解决类失衡是引入权重因子α。在实践中,α可以根据类别之间的频率设置,也可以当做一个超参数,使用交叉验证方法来设定。

Focal Loss Definition

上面提到的引入α只是简单地平衡positive/negative example的频率,它不区分easy/hard的例子。所以focal loss使negative 中eacy的例子权重降低,从而将训练集中在hard的例子。

那么是怎么做的呢?

首先,添加一个调制因子,其中,focal loss的公式:

根据上面的曲线图,注意到焦点损失的两个性质。

  1. 1.当样本分类错误且pt值较小时,调制因子接近1,loss不受影响。当pt→1,调制因子趋于0,对于很容易分辨的example,他们的对于loss的权重降低。
  2. 2.focusing 参数 γ平稳调整了easy examples对loss的权重。当γ= 0,FL相当于CE。当γ增加,调制因子也同样增加了。

在实践中,作者使用一个α-balanced加上focal loss的变体:

RetinaNet Detector

  • RetinaNet = FPN + sub-network + FL

RetinaNet是由一个backbone网络和两个特定于任务的子网络组成的单一、统一的网络。backbone网路负责计算整个输入图像的卷积特征映射,是一个自卷积网络。第一个子网络使用backbone的输出作为输入进行分类,第二个子网络则负责bounding box regression。下图就是它的结构图。

backbone网络使用了Feature Pyramid Network(FPN),它的主要特点是top-down pathway 自顶向下通路和 lateral connections 侧向连接。可以参考https://blog.csdn.net/sinat_33487968/article/details/84328272

这里值得注意:

  • 两个子网络的结构相同,但是他们各自的权重参数都是独立的。
  • 采用了无分类的bbox regressior(Faster R-CNN是每个类各一个bbox regressor),减低的参数的数量。

Result

猜你喜欢

转载自blog.csdn.net/sinat_33487968/article/details/84335409
今日推荐