目标检测——RetinaNet(十)
简介:
这篇paper《RetinaNet:Focal Loss for Dense Object Detection》获得了ICCV 2017的Best,创新点就是Focal Loss了,其主要贡献就是解决了one-stage算法中正负样本的比例严重失衡的问题,不需要改变网络结构,只需要改变损失函数就可以获得很好的效果。
原论文地址:https://arxiv.org/pdf/1708.02002.pdf
网络结构:
由上图可以看出结构比较简单,基础网络使用的是Resnet,然后在不同尺度的feature map建立金字塔,也就是FPN网络,这样就获得了丰富且多尺度的卷积特征金字塔,并且在FPN的每个level连接一个subnet用于回归和分类预测,这些subnet的参数是共享的,它相当于一个小型的FCN结构。
Focal Loss:
RetinaNet的出发点,其实是想为YOLO、SSD等前辈找回牌面,毕竟这些one stage算法在速度上是达到实时了,但是精度上依然被Faster rcnn等two stage检测器吊打。既然痛点在精度上,论文的重点也在于此,作者认为精度差在于单阶段检测器中样本的失衡,负样本比例远远大于正样本,占据样本中多数,影响网络的优化;而两阶段检测器这种问题小很多,因为第一阶段会剔除掉大量负样本,所以在第二阶段训练时候,正负样本比例失衡并不严重,尽管第一阶段也会面临这样的问题。
- 首先看一个二分类交叉熵可以表示为:
-
平衡交叉熵的提出是为了解决正负样本不平衡的问题的:
-
Focal Loss中 r 的引入是为了解决难易样本不平衡的问题的:
可以看出,蓝色的线为CE loss, 随着 r 的增加,那些容易分类的样本所贡献的loss就越小,所以可以使模型的优化方向更加关注那些难分类的样本,这样就可以提高模型的精度,同时兼顾了速度。
总结:
优点:
1、分析了One-Stage算法和Two Stage算法的差距,实现了一个精度可以媲美Two Stage算法的One Stage算法模型——RetinaNet;
2、Focal Loss对解决正负样本与难易样本不均衡的问题非常有效,几乎可以应用到很多imbalance数据的领域,非常有实用价值。