计算机视觉算法比较
1. 难分样本和易分样本
在目标检测和图像分割任务中,"易分样本"和"难分样本"的定义主要基于模型对这些样本的预测准确性和置信度。
易分样本(Easy Samples)
易分样本是指那些模型能够轻松正确分类或定位的样本。这类样本通常具有以下特征:
- 高置信度预测:模型对这些样本的预测概率接近真实标签。例如,在二分类问题中,正样本的真实标签为1,模型预测的概率 Y ^ x y c \hat{Y}_{xyc} Y^xyc 接近1;负样本的真实标签为0,模型预测的概率 Y ^ x y c \hat{Y}_{xyc} Y^xyc 接近0。
- 低损失值:由于模型已经很好地拟合了这些样本,因此它们对应的损失函数值较低。这意味着这些样本对总损失的贡献较小。
示例:
假设你正在训练一个目标检测模型,并且有一个边界框的中心点位置非常明确,背景简单且没有干扰物。模型能够很容易地将该中心点的位置预测出来,并且预测的概率非常高。这就是一个典型的易分样本。
难分样本(Hard Samples)
难分样本是指那些模型难以正确分类或定位的样本。这类样本通常具有以下特征:
- 低置信度预测:模型对这些样本的预测概率远离真实标签。例如,在二分类问题中,正样本的真实标签为1,但模型预测的概率 Y ^ x y c \hat{Y}_{xyc} Y^xyc 接近0;负样本的真实标签为0,但模型预测的概率 Y ^ x y c \hat{Y}_{xyc} Y^xyc 接近1。
- 高损失值:由于模型未能很好地拟合这些样本,因此它们对应的损失函数值较高。这意味着这些样本对总损失的贡献较大。
示例:
假设你正在训练一个目标检测模型,并且有一个目标物体部分被遮挡,或者目标物体与背景颜色非常相似,导致模型难以准确预测该目标的位置和类别。这就是一个典型的难分样本。
Focal Loss中的处理
Focal Loss是一种常用的损失函数,旨在解决类别不平衡问题,并通过动态调整样本权重来提高模型的性能。它特别关注难分样本,同时减少易分样本的影响。
Focal Loss的基本形式
对于每个样本 ( x , y , c ) (x, y, c) (x,y,c),其损失函数可以表示为:
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) FL(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
其中:
- p t p_t pt 是模型对样本的预测概率。
- α t \alpha_t αt 是平衡因子,通常用于加权正负样本。
- γ \gamma γ 是焦点参数,调节简单样本和困难样本之间的权重。
易分样本 vs 难分样本的具体表现
-
易分样本:当 p t p_t pt 接近1时, ( 1 − p t ) γ (1 - p_t)^\gamma (1−pt)γ 的值很小,损失函数数值较小。这意味着易分样本对总损失的贡献较小。
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) ≈ 0 FL(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t) \approx 0 FL(pt)=−αt(1−pt)γlog(pt)≈0
-
难分样本:当 p t p_t pt 接近0时, ( 1 − p t ) γ (1 - p_t)^\gamma (1−pt)γ 的值较大,损失函数数值较大。这意味着难分样本对总损失的贡献较大。
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) ≫ 0 FL(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t) \gg 0 FL(pt)=−αt(1−pt)γlog(pt)≫0
2. CenterNet和Yolox确定正样本区别
CenterNet
基本原理
Heatmap-based
方法通常用于基于关键点的目标检测,例如CenterNet
。这类方法通过生成热图(heatmap
)来表示目标的中心位置,并根据这些热图进行目标检测。
热图生成:
对于每个类别,生成一个热图(heatmap
),热图上的每个像素值表示该位置是某个目标中心的概率。在训练过程中,真实目标的中心位置会在热图上标记为高响应值(通常是1),周围的像素则通过高斯分布逐渐降低响应值。
Focal loss
heatmap
中变种的Focal loss
上图展示了Heatmap
损失函数,该函数是在Focal Loss
的基础上进行了改进,其中的
α
\alpha
α与
β
\beta
β是两个超参数,用来均衡难易样本。
Y
x
y
c
Y_{xyc}
Yxyc表示GT值(Ground Truth
值),
Y
^
x
y
c
\hat{Y}_{xyc}
Y^xyc表示预测值;
N
N
N表示关键点的个数。
- Y ^ x y c \hat{Y}_{xyc} Y^xyc = 1 时,易分类样本的预测值接近为1,此时 ( 1 − Y ^ x y c ) α (1 - \hat{Y}_{xyc})^\alpha (1−Y^xyc)α就是一个很小的数值,此时损失函数的数值就比较小,起到了降低该样本权重的作用。
- Y ^ x y c \hat{Y}_{xyc} Y^xyc = 1 时,难分类样本的预测值接近为0,此时 ( 1 − Y ^ x y c ) α (1 - \hat{Y}_{xyc})^\alpha (1−Y^xyc)α就是一个很大的数值,此时损失函数的数值就比较小,起到了增加该样本权重的作用。
-
Y
^
x
y
c
\hat{Y}_{xyc}
Y^xyc= 1 时, 为了防止
Y
^
x
y
c
\hat{Y}_{xyc}
Y^xyc过高接近于1,利用W来充当惩罚项。当
Y
x
y
c
Y_{xyc}
Yxyc越接近中心点,
W
的数值就会越小,用来进一步减轻惩罚力度。
offeset损失函数
正样本确定:
- 中心点: 对于每个真实目标,其边界框的中心点被标记为正样本。
- 邻近区域: 除了中心点外,周围一定范围内的像素也被视为正样本,但响应值较低(通过高斯分布衰减)。这个范围通常由超参数控制。
损失函数:
使用Focal Loss或类似的损失函数来优化热图预测结果,使得模型能够准确地预测出目标的中心位置及其邻近区域。
YOLOX
锚框分配(Anchor-based vs Anchor-free
):
Anchor-based
:传统的YOLO
版本使用预定义的锚框(anchors
)来匹配目标。每个锚框负责预测一个目标,根据IoU(Intersection over Union)
来分配正负样本。Anchor-free
:YOLOX
采用anchor-free
的方式,不需要预定义的锚框,而是直接在特征图的每个位置预测目标。
正样本确定:
中心采样: YOLOX
使用了一种称为“中心采样”的方法来确定正样本。具体来说,对于每个真实目标的边界框,计算其中心区域(通常是边长为d
的小方形区域,d
是一个超参数)。在这个区域内,所有特征图位置都被认为是正样本。
动态标签分配: YOLOX
引入了SimOTA(Simple Online and Realtime Tracking Algorithm)
,这是一种动态标签分配策略。它根据预测结果和真实目标之间的匹配度(如IoU
)动态分配正负样本,从而提高了模型的鲁棒性和准确性。
损失函数:
使用分类损失(如BCE Loss
)、定位损失(如GIoU Loss
)等来优化模型输出。YOLOX
还使用了一些额外的技巧,如多正样本分配策略和在线硬样本挖掘(Online Hard Example Mining, OHEM
),进一步提升性能。
3. CenterNet比Yolox进行关键点检测的优势有哪些
高斯分布衰减
CenterNet
:在热图上对目标中心点及其邻近区域进行高斯分布衰减,使得中心点周围的像素也能参与到损失计算中,从而提高了模型的鲁棒性和准确性。
YOLOX
:通常不使用这种高斯分布衰减机制,而是依赖于IoU(Intersection over Union)
或其他相似度度量来进行正负样本分配。这在某些情况下可能不如高斯分布那样精细。
4. YoloV5
正样本匹配
正样本匹配的目的:对于图像中的每一个bbox
,找出:
(1)它由输出特征图中的那些grid cell
来负责预测
(2)以及又那些尺寸的anchor
来负责预测。
基于 这些负责预测的grid cells
中负责预测的anchors
,得到的预测bbox
就是正样本,否则就是负样本。
也可以简单理解为: 负责预测gt box
的 anchor
就是正样本,不负责预测的anchor 就是负样本。
a. 选择
gt bbox
中心点与grid cell
的规则.
b. 选择适合anchors
用于预测gt box
的规则
predicted bbox的坐标计算
选择负责预测的grid cell
选择负责预测的anchor
实际上:就是gt box
落在 anchor box
宽高的1/4
和 anchor box
宽高的4
倍之间,则该anchor
用于预测gt box
。
4. Yolov8
DFL (Distribution Focal Loss)
DFL预测输出形式
DFL_LOSS结构形式
其中
t
l
tl
tl、
t
r
tr
tr、
w
l
wl
wl、
w
r
wr
wr获得的示例: