Focal Loss
预科知识点
本处使用英文更加准确,中文过于简洁精炼不利于初学者理解。其实各类专业术语的翻译,只要我们理解其本质,不同的表述都不会影响我们对问题的掌控。有些翻译为晦涩绕口的中文,其实就是这群人过度包装欺骗麻瓜,并以此来显得自己更专业。
1. 目标检测情况下的一些术语
- Positive examples 目标分类或者前景信息,如ground-truth。
- Negative examples 非目标类或者背景信息,如与ground-truth的IOU值小于给定阈值的anchors。
- Easy positive/negative 正确分类为正或负的样本。
- Hard positive/negative 错误分类为正或负的样本。
2. 分类不平衡问题
- 当与数据集中或训练中使用的小批量中的一个类相关的信息比其他类表示得更多时,就会观察到这一点。
- 在不平衡的数据集上训练网络将使网络偏向于学习更多的数据主导类的表示,而其他类将被忽略。
- 在目标检测的情况下,预测两个置信值。一个是Objectness score(目标是否在方框中),另一个是Class score(检测到的目标所属的类)。
- 因此,在训练过程中保持前景-背景与前景-前景类之间的平衡就显得尤为重要。如果不处理,前者会在训练期间创建一个框置信错误(是否存在一个对象),而后者会创建类置信错误(如果框中存在一个对象,那么它代表哪个类)。
- 图1:(左)背景和前景之间的不平衡。(右)前景/前景之间的不平衡。这些数字是RetinaNet在COCO数据集(80类)[5]上的数据。
- Two-Stage的检测器有区域建议提取器,给出许多建议(正负样本两者都有)。而[1]中提到的一些采样技术(如Online Hard Example Mining and IoU/Objectness Thresholding)则进一步缓解了这些问题。
- 相反,One-Shot检测器不包含区域建议架构。它们直接从特征图中进行全局回归/分类,并在每个位置生成固定数量的锚。应用这些启发式抽样法来去除不需要的负样本有些困难。
- 甚至,如果应用,网络也会偏向于学习毫无用处的背景信息。下面给出的代码片段对此进行了说明。
- 图2:(左)网格位置。(右)的建议。蓝色:Ground Truth Boxes,红色:Negative proposal,绿色:Positive proposal。
#Configuration set for YOLO Network:::IoU Thresholding Applied.
Image Size = (400, 400) # 图像输入维度
Output Feature Map Size = (50, 50) # 等价于Stride=8.
Anchor Boxes = [(45, 90), (90, 90), (90, 45)]
Ground Truth = [[50, 100, 150, 150], [250, 210,300, 310]]
1. Total Anchors present at each location: 7500(50X50X3)
2. After removing invalid anchors, total remaining anchors: 5301.
3. Total number of Positive RoIs(IoU > 0.5): 5259
4. Total number of Negative RoIs(IoU <= 0.5): 42
-
从上面的图2和代码片段可以看出,阳性和阴性样本之间存在巨大的差异,说明在这些类型的检测器中前景和背景之间存在适当的不平衡(YOLOv3 在特征图上以特定比例每个位置有3个锚点)。
-
在训练中由于数据集的不平衡而面临的一些挑战是:
-
训练变得低效,因为大多数样本是easy negative的,没有贡献有用的信号。这种偏差使得网络很难从图像中学习丰富的语义关系。
-
累积的easy negative损失超过了总损失,这使模型退化。
-
为了解决上述问题,Facebook AI 提出了一个新的改进的方法,通过增加一个加权交叉熵损失。
Focal 损失
用外行人的话来说什么是Focal损失
让我们考虑一个足球比赛的场景。你正在电视上看到你最喜欢的对手皇家马德里对巴塞罗那。场内挤满了为各队高喊口号的观众,共有7万人。突然间皇马进球了,整个体育场都爆发出进球的呐喊声!!. 没有人能听到任何东西,除了圣歌,圣歌,圣歌。评论员正在分析这些电视记者想要在电视上播放的比赛。那么他们会怎么做呢?他们更重视解说,而不太重视唱词,这样电视观众就可以听到解说和现场比赛分析。是的,你会在观看的时候听到圣歌,但是评论的声音会越来越大。现在记住这个类比的例子。我们将看到这个例子与Focal Loss的关系
- 下面我们一步一步地推导Focal Loss 方程:
CE(p,y)={ −log(p),y=1−log(1−p),otherwise CE(p,y)=\left\{ \begin{aligned} & -log(p) ,y= 1 \\ & -log(1-p),otherwise \end{aligned} \right. CE(p,y)={ −log(p),y=1−