1、正负样本的定义
1.1、正样本
正样本是指那些与真实目标(Ground Truth, GT)有很高关联性的样本,其作用是让模型学习目标的位置和类别特征。举个例子:
Anchor-based中,如果一个候选框(Anchor)与目标框的重叠程度(IoU,交并比)大于一定阈值,可以被认为是正样本。
Anchor-free中,如果某个像素点或者区域落在目标框内且符合预定条件,则被认为是正样本。
1.2、负样本
负样本是指那些与真实目标没有强关联的样本,其作用是帮助模型区分背景和目标,减少误报。举个例子:
Anchor-based中,如果一个候选框与目标框的IoU小于某个阈值,就被认为是负样本。
Anchor-free中,如果某个像素点或区域不在目标框内或未被标记为正样本,则是负样本。
2、正负样本在检测中到底是怎么起作用的
目标检测损失函数通常由三部分组成:
置信度损失(Objectness Loss):用于区分正样本(框住了目标)和背景(负样本)。
边界框回归损失(Localization Loss):优化正样本预测框的位置和大小。
分类损失(Classification Loss):预测正样本的目标类别。
如果一个检测框被认为是正样本,那么该检测框会参与检测中的目标分类、置信度预测以及边界框回归。
而如果该检测框被认为是负样本,也就是模型认为该检测框没有框中感兴趣的目标,仅仅是包含了一些背景,那么该框仅仅会进行置信度的预测。
以二分类交叉熵置信度损失函数为例:
N表示总样本数,pi表示检测框的预测置信度值,yi表示检测框是正样本(1)还是负样本(0)
对于一个检测框,如果被认为是正样本(有目标),则yi=1,那么等式右边的第二项就为0了,此时变成了 Lobj = -log(pi),预测置信度越接近大,则Lobj越小。
对于一个检测框,如果被认为是负样本(纯背景),则yi=0,那么等式右边的第一项就为0了,此时变成了 Lobj = -log(1 - pi),预测置信度越接近大,则Lobj也越大。
通过多轮的训练,每次前向传播和反向传播后,梯度下降,模型参数会朝使损失函数减少的方向调整,损失不断降低。
正样本置信度逐渐接近 1,类别预测逐渐准确,边界框与真实框逐步重合。负样本置信度逐渐接近 0,减少对背景区域的误检测。