Generalized Focal Loss论文个人理解

这篇具有很好参考价值的文章主要介绍了Generalized Focal Loss论文个人理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

论文地址:Generalized Focal Loss: Towards Efficient Representation Learning for Dense Object Detection

论文解决问题

研究人员最近更加关注边界框的表示(representation)及其定位质量估计(LQE,本论文中指的是IoU score),导致该领域取得了令人鼓舞的进展。具体来说,边界框表示被建模为简单的狄拉克δ分布,该分布在过去几年中被广泛使用。在 FCOS 中,当 LQE 与分类置信度相结合(通常是相乘)作为Non_max_suppression中排序的最终分数时,预测额外的定位质量(例如IoU score或Centerness score)会带来检测精度的持续提高。尽管取得了巨大的成功,但我们在密集检测器的现有实践中观察到这些表示(分类、定位和 LQE)存在以下三个问题:

  • 训练和推理之间 LQE 和分类分数的使用不一致
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习
    图 1 图1 1论文中阐述,如图1a所示,在最近的密集检测器中,LQE和分类分数通常是独立训练的,但在推理过程中综合利用(例如乘法)。目前,LQE 的监督仅分配给正样本 [18]、[20]、[42],这是不可靠的(只有正样本计算box_loss),因为负样本可能有机会获得无法控制的更高质量的预测(图 2)。 这两个因素导致训练和测试之间存在差距,并可能降低检测性能,例如,在 NMS 期间,具有随机高质量分数的负实例可能排在具有较低质量预测的正实例之前。
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 2 图2 2注意yolov8中的是NMS排序分数是conf,conf是cls中最大的那个,并不是conf * iou。

    conf, j = cls.max(1, keepdim=True)
    x = torch.cat((box, conf, j.float(), mask), 1)[conf.view(-1) > conf_thres]
    
    x = x[x[:, 4].argsort(descending=True)[:max_nms]]  # sort by confidence and remove excess boxes
    
    boxes, scores = x[:, :4] + c, x[:, 4]  # boxes (offset by class), scores
    i = torchvision.ops.nms(boxes, scores, iou_thres)  # NMS
    
  • 边界框的不灵活表示
    广泛使用的边界框表示可以看作目标框坐标的狄拉克δ分布。 然而,它没有考虑数据集中的模糊性和不确定性(见图3中图形边界不清晰)。 尽管最近的一些工作]将框建模为高斯分布,但捕获边界框位置的真实分布过于简单。 事实上,真实分布可以更加任意和灵活,而不需要像高斯函数那样对称。
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 3 图3 3

  • 缺乏可靠 LQE 的明确指导
    许多先前的作品探索了LQE。 例如,YOLO家族首先采用Objectness来描述定位质量,其定义为预测框和真实框之间的交并集(IoU)。 此后,IoU在IoU-Net、IoU-aware、PAA、GFL和VFNet中被进一步探索并证明是有效的。 最近,FCOS和ATSS引入了Centerness,即到物体中心的距离程度,以抑制低质量的检测结果。 一般来说,上述方法都有一个共同的特点,即它们都是基于普通的卷积特征,例如点、边界或区域的特征(见图4a、4b、4c、4d、4e、4f和4g)来估计定位质量。 不幸的是,这些抽象的卷积特征无法具有推断 LQE scores的明确含义,而只是由定位质量信号隐式监督,从而使其可靠 LQE 的效率较低。
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习
    图 4 图4 4

论文解决方案(因为yolov8中使用了DFL,会结合介绍一下)

Improved Representations

  • For object classification representation,我们建议将其与 LQE 分数合并为单个统一的表示:
    Classification -> Classification-IoU Joint Representation
    下面的 J \mathbf{J} J就是预测框标签的分类分数, y \mathbf{y} y就是真实框标签的分类分数
    为了解决上述训练和测试阶段之间的不一致问题,我们提出了联合表示 J = [ J 1 , J 2 , … , J m ] \mathbf{J}=[J_1,J_2,\ldots,J_m] J=[J1,J2,,Jm](m 表示类别总数)的定位质量(即 IoU 分数)和分类分数(称为“Classification-IoU Joint Representation”),其supervision软化了标准的one-hot类别标签,并且导致可能的浮点向量 y = [ y 1 , y 2 , … , y m ] \mathbf{y}=[y_1,y_2,\ldots,y_m] y=[y1,y2,,ym]。 给定一个对象类别标签 c ∈ { 1 , 2 , … , m } c\in\{1,2,\ldots,m\} c{1,2,,m}, y 满足
    y i = { I o U ( B p r e d , B g t ) , if  i = c ; 0 , otherwise , \left.y_i=\left\{\begin{array}{ll}\mathrm{IoU}(B_{pred},B_{gt}),&\text{if }i=c;\\0,&\text{otherwise},\end{array}\right.\right. yi={IoU(Bpred,Bgt),0,if i=c;otherwise,其中 I o U ( B p r e d , B g t ) \mathrm{IoU}(B_{pred},B_{gt}) IoU(Bpred,Bgt)表示预测边界框 B p r e d B_{pred} Bpred和真实框 B g t B_{gt} Bgt之间的 IoU。 具体来说, y = 0 y=0 y=0表示负样本的质量分数为0, 0 < y ≤ 1 0<y\leq1 0<y1表示正样本的质量分数为IoU分数 y y y。(原先的真实标签的分类分数一般是{0, 1}, 现在将正样本的对应的真实标签的分类分数变为 I o U ( B p r e d , B g t ) \mathrm{IoU}(B_{pred},B_{gt}) IoU(Bpred,Bgt),负样本的对应的真实标签的分类分数变为0。这个yolov8介绍的跟这个差不多,yolov8中的在经过TAA正负样本标签分配后,原始的target_scores正样本的真实标签的分类分数乘以weights,负样本的真实标签的分类分数是0(可以见yolov8下面截取代码)) 。对于多类别,作者采用带有 sigmoid 运算符 σ ( ⋅ ) \sigma(\cdot) σ()的多重二元分类。 为了简单起见,将 sigmoid 的输出标记为 σ \sigma σ。 请注意,如图1b所示,训练时,J 受到质量焦点损失(QFL)的监督,推理时,直接作为NMS 分数,这大大减少了训练和推理之间的 LQE 和对象分类的不一致。

    # Normalize
    # 设定一个动态权重,更加关注那些与真实目标对齐良好且重叠程度较高的预测框
    # 这个动态权重由overlaps和align_metric决定,那些align_metric和overlaps小的预测框,它们对应的target_scores也小
    # 这样求解bce_loss(分类损失)的时候相对来说会变小,这样模型在训练过程中就不会过多关注那些align_metric和overlaps小的预测框了
    # 注意align_metric是跟预测分类分数和ciou都有关,这样模型在预测的时候,分类分数和iou会保持一致性,尽可能的不会存在分类分数低,而iou高的情况。
    align_metric *= mask_pos
    pos_align_metrics = align_metric.amax(axis=-1, keepdim=True)  # b, max_num_obj
    pos_overlaps = (overlaps * mask_pos).amax(axis=-1, keepdim=True)  # b, max_num_obj
    norm_align_metric = (align_metric * pos_overlaps / (pos_align_metrics + self.eps)).amax(-2).unsqueeze(-1)
    target_scores = target_scores * norm_align_metric
    
  • For bounding box representation,我们建议通过直接学习连续空间上的离散概率分布来表示框位置的任意分布(在本文中表示为“一般分布”),而不引入任何其他更强的先验(例如,高斯):学习到的任意分布提供了对真实数据本质的复杂性进行建模的灵活性,不仅可以预测精确的边界框回归,还可以反映信息丰富的潜在不确定性估计
    Dirac delta -> General Distribution Representation
    作者采用该位置(在yolov8中是anchor points)到边界框四个边的相对偏移量(anchor points到bbox的距离)作为回归目标。 边界框回归的传统操作将回归标签 y y y建模为 δ ( x − y ) \delta(x-y) δ(xy)狄拉克分布,其中满足 ∫ − ∞ + ∞ δ ( x − y ) d x = 1 \int_{-\infty}^{+\infty}\delta(x-y)\mathrm{d}x=1 +δ(xy)dx=1,并且通常通过全连接层实现。更正式地说,恢复 y y y 的积分形式如下(不好意思,高数还给老师了,忘记怎么推的):
    y = ∫ − ∞ + ∞ δ ( x − y ) x d x y=\int_{-\infty}^{+\infty}\delta(x-y)x\mathrm{d}x y=+δ(xy)xdx作者提出直接学习没有先验知识的基础一般分布 P ( x ) P(x) P(x)。给定标签 y y y 的范围,其中最小 y 0 y_0 y0 和最大 y n y_n yn ( y 0 ≤ y ≤ y n , n ∈ N + ) (y_0\leq y\leq y_n,n\in\mathbb{N}^+) (y0yyn,nN+),我们可以通过下面的计算公式从模型( y ^ \hat{y} y^也满足 y 0 ≤ y ^ ≤ y n y_0\leq \hat{y}\leq y_n y0y^yn)中获得估计值 y ^ \hat{y} y^。(这个 P ( x ) P(x) P(x)就是 y 0 y_0 y0~ y n y_n yn之间的概率分布)。
    y ^ = ∫ − ∞ + ∞ P ( x ) x d x = ∫ y 0 y n P ( x ) x d x . \hat{y}=\int_{-\infty}^{+\infty}P(x)x\mathrm{d}x=\int_{y_0}^{y_n}P(x)x\mathrm{d}x. y^=+P(x)xdx=y0ynP(x)xdx.为了与卷积神经网络保持一致,作者将连续域上的积分转换为离散表示,通过将范围 [ y 0 , y n ] [y_0,y_n] [y0,yn]离散化为间隔 Δ \Delta Δ的集合 { y 0 , y 1 , … , y i , y i + 1 , … , y n − 1 , y n } \{y_0,y_1,\ldots,y_i,y_{i+1},\ldots,y_{n-1},y_n\} {y0,y1,,yi,yi+1,,yn1,yn} Δ = y i + 1 − y i , ∀ i ∈ [ 0 , n − 1 ] \Delta=y_{i+1}-y_i,\forall i\in[0,n-1] Δ=yi+1yi,i[0,n1](为了简单,作者在后续的实验直接使用 Δ = 1 \Delta=1 Δ=1)。因此,给定离散分布特性 ∑ i = 0 n P ( y i ) = 1 \sum_{i=0}^nP(y_i)=1 i=0nP(yi)=1,估计回归值 y ^ \hat{y} y^可以表示为
    y ^ = ∑ i = 0 n P ( y i ) y i \hat{y}=\sum_{i=0}^nP(y_i)y_i y^=i=0nP(yi)yi P ( y i ) P(y_i) P(yi)可以通过由n + 1个单元组成的 softmax S ( ⋅ ) \mathcal{S}(\cdot) S()层轻松实现。 请注意, y ^ \hat{y} y^可以使用任何传统损失目标(例如 SmoothL1、IoU Loss或 GIoU Loss)以端到端方式进行训练。 为了促进其有效优化,我们进一步引入分布焦点损失(DFL)。
    为了方便理解,现举例yolov8使用的方法
    yolov8中bbox分支回归的是 4 ∗ r e g _ m a x = 4 ∗ 16 = 64 4 * reg\_{max} = 4 * 16=64 4reg_max=416=64(bbox分支最终结果: [bs, num_anchor, 64]),也就是 { y 0 , y 1 , … , y i , y i + 1 , … , y n − 1 , y n } = { 0 , 1 , . . . , 7 , 8 , . . . , 14 , 15 } \{y_0,y_1,\ldots,y_i,y_{i+1},\ldots,y_{n-1},y_n\}=\{0, 1, ...,7,8,...,14, 15\} {y0,y1,,yi,yi+1,,yn1,yn}={0,1,...,7,8,...,14,15},因为有上、下、左、右四条边,所以是 4 ∗ 16 4 * 16 416。这个 { 0 , 1 , . . . , 7 , 8 , . . . , 14 , 15 } \{0, 1, ...,7,8,...,14, 15\} {0,1,...,7,8,...,14,15}的value是softmax输出,因此是一个概率分布,这个anchor points对于边界框四条边偏移量 y ^ \hat{y} y^由下面公式可得出:( ( P ( y 0 ) , P ( y 1 ) , … , P ( y 7 ) , P ( y 8 ) , … , P ( y 15 ) ) ({P(y_0)}, {P(y_1)}, \dots, {P(y_7)}, {P(y_8)}, \dots,{P(y_{15})}) (P(y0),P(y1),,P(y7),P(y8),,P(y15))分别是 ( 0 , 1 , … , 7 , 8 , … , 15 ) 一一对应处的概率 (0, 1, \dots, 7, 8, \dots,15)一一对应处的概率 (0,1,,7,8,,15)一一对应处的概率)(其实 { 0 , 1 , . . . , 7 , 8 , . . . , 14 , 15 } \{0, 1, ...,7,8,...,14, 15\} {0,1,...,7,8,...,14,15}就是anchor points到bbox边的距离,模型输出的就是这些距离对应的概率,最终得到 y ^ \hat{y} y^就是求距离离散概率分布的期望,即最终的anchor points到bbox边的距离,这个期望最大是15,也就是说模型预测出的anchor points到bbox边的距离最大是15)
    y ^ = ∑ i = 0 n P ( y i ) y i = ∑ i = 0 15 P ( y i ) y i = 0 × P ( y 0 ) + 1 × P ( y 1 ) + ⋯ + 7 × P ( y 7 ) + 8 × P ( y 8 ) + ⋯ + 15 × P ( y 15 ) \hat{y}=\sum_{i=0}^nP(y_i)y_i=\sum_{i=0}^{15}P(y_i)y_i=0\times{P(y_0)}+1\times{P(y_1)+\dots +7\times{P(y_7)}+8\times{P(y_8)}+\dots+15\times{P(y_{15})}} y^=i=0nP(yi)yi=i=015P(yi)yi=0×P(y0)+1×P(y1)++7×P(y7)+8×P(y8)++15×P(y15)然后yolov8会使用dist2box函数将偏移量(anchor points到bbox四条边的距离)转化为xywh

  • For localization quality representation
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 5 图5 5
    如图5b所示,一般分布的统计量往往与其真实的定位质量有很强的相关性。更具体地来说,图5c和5d所示,边界框分布的形状(平坦度)可以清晰地反映预测结果的定位质量:分布越尖锐,预测的边界框越准确,反之亦然。 最后,由于输入(边界框的分布统计)和输出(LQE 分数)潜在地高度相关,因此通过分布信息的指导可能会更容易且非常有效地进行更好的 LQE。
    Convolution -> Distribution-Guided Quality Predictor.
    受分布统计和 LQE 分数之间可能存在的强相关性的启发,作者提出了一个非常轻量级的子网络,它只有几十个(例如 64 个)隐藏单元,在这些分布统计的基础上产生可靠的 LQE 分数,而不是隐式卷积特征。作者将这种轻量级子网络称为分布引导质量预测器(DGQP)。它将学习到的一般分布 P 的统计数据传送到一个微小的子网络中(见图6中的红色虚线框),从而获得预测的 LQE 分数。
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 6 图6 6
    首先会从bbox分支中的分布中选择Top-k个values和它们的mean,图中的k=4,将Top-K和m进行concat,并且bbox有上、下、左、右四条边,这样就由 H × W × 4 n H\times W\times4n H×W×4n变为 H × W × 20 H\times W\times20 H×W×20( 20 = 4 × 5 20 = 4 \times 5 20=4×5)。
    F = C o n c a t ( { T o p k m ( P w ) ∣ w ∈ { l , r , t , b } } ) , \mathbf{F}=\mathrm{Concat}(\{\mathrm{Topkm}(\mathbf{P}^w)\mid w\in\{l,r,t,b\}\}), F=Concat({Topkm(Pw)w{l,r,t,b}}),选择Top-k个values和它们的mean有一下两个好处:
    1、 因为 P w \mathbf{P}^{w} Pw的和是固定值1(softmax的输出,概率和为1),Top-k个values和它们的mean可以基本的反映分布的平坦程度:值越大,分布越尖锐,IoU越大;值越小,分布越扁平,IoU越小。
    2、 Top-k values和mean可以使统计特征对其在分布域中的相对偏移不敏感(见图7),从而产生不受对象尺度影响的稳健表示。(就是不管gt的尺度大小,Top-k values和mean的大小都反映的是1中的平坦程度)Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 7 图7 7
    然后就是下面的公式,因为全连接层就相当于乘上一个矩阵, W 1 ∈ R d × 4 ( k + 1 ) \mathbf{W}_1\in\mathbb{R}^{d\times4(k+1)} W1Rd×4(k+1) W 2 ∈ R 1 × d \mathbf{W}_{2}\in\mathbb{R}^{1\times d} W2R1×d σ \sigma σ δ \delta δ分别是sigmoid和relu。
    I = F ( F ) = σ ( W 2 δ ( W 1 F ) ) , I=\mathcal{F}(\mathbf{F})=\sigma(\mathbf{W}_2\delta(\mathbf{W}_1\mathbf{F})), I=F(F)=σ(W2δ(W1F)),最终的 J \mathbf{J} J通过下面的公式得出
    J = C × I \mathbf{J}=\mathbf{C}\times I J=C×I其中的 C = [ C 1 , C 2 , … , C m ] , C i ∈ [ 0 , 1 ] \mathbf{C}=[C_1,C_2,\ldots,C_m],C_i\in[0,1] C=[C1,C2,,Cm],Ci[0,1]就是分类分支的输出,m个类别的最初的分类表示。文章来源地址https://www.toymoban.com/news/detail-790019.html

Generalized Focal Loss

  • 原始的Focal Loss (FL)
    F L ( p ) = − ( 1 − p ι ) γ log ⁡ ( p ι ) , p ι = { p , w h e n   y = 1 1 − p , w h e n   y = 0 \left.\mathbf{FL}(p)=-(1-p_{\iota})^{\gamma}{\log{(p_{\iota})},p_{\iota}}=\left\{\begin{array}{cc}p,&\mathrm{when~}y=1\\1-p,&\mathrm{when~}y=0\end{array}\right.\right. FL(p)=(1pι)γlog(pι),pι={p,1p,when y=1when y=0缩放因子 ( 1 − p t ) γ (1-p_{t})^{\gamma} (1pt)γ在训练期间自动降低简单示例的贡献,并快速将模型集中在困难示例上。
  • Quality Focal Loss (QFL)
    然而目前的FL形式仅支持 { 1 , 0 } \{1,0\} {1,0}离散标签,但我们的新标签 y y y 包含小数。 因此,作者扩展 FL 的两个部分,以实现分类-IoU 联合表示情况下的成功训练:
    1、 交叉熵部分 ( 1 − p t ) γ (1-p_{t})^{\gamma} (1pt)γ扩展为其完整版本 − ( ( 1 − y ) l o g ( 1 − σ ) + y l o g ( σ ) ) -((1-y)\mathrm{log}\left(1-\sigma\right)+y\mathrm{log}\left(\sigma\right)) ((1y)log(1σ)+ylog(σ))
    2、 缩放因子部分 ( 1 − p t ) γ (1-p_{t})^{\gamma} (1pt)γ被推广为估计 σ \sigma σ与其连续标签 y y y之间的绝对距离,即 ∣ y − σ ∣ β ( β ≥ 0 ) |y-\sigma|^{\beta}\left(\beta\geq0\right) yσβ(β0),这里 ∣ ⋅ ∣ \left|\cdot\right| 保证非负性。
    Q F L ( σ ) = − ∣ y − σ ∣ β ( ( 1 − y ) l o g ( 1 − σ ) + y l o g ( σ ) ) \mathbf{QFL}(\sigma)=-|y-\sigma|^{\beta}((1-y)\mathrm{log}\left(1-\sigma\right)+y\mathrm{log}\left(\sigma\right)) QFL(σ)=yσβ((1y)log(1σ)+ylog(σ)) σ = y \sigma=y σ=y是 QFL 的全局最小解。图8是当label y = 0.5 y=0.5 y=0.5时,几种 β \beta β值得QFL可视化。可以看到当一个例子的质量估计不准确并且偏离标签 y y y时,调制因子相对较大,因此模型将更关注于学习难学习得样本;随着质量估计变得准确,即 σ → y \sigma\rightarrow y σy,该调制因子趋于0,并且对经过良好估计的示例的损失进行降权变小。实验中 β = 2 \beta=2 β=2的QFL效果最好。
    Generalized Focal Loss论文个人理解,论文解读,人工智能,深度学习 图 8 : l a b e l y = 0.5 图8:label y=0.5 8:labely=0.5
  • Distribution Focal Loss (DFL)
    虽然 y ^ = ∑ i = 0 n P ( y i ) y i \hat{y}=\sum_{i=0}^nP(y_i)y_i y^=i=0nP(yi)yi已经可以使用传统损失目标以端到端的方式进行训练,例如 GIoU Loss,但 P ( y i ) P(y_i) P(yi)的值有无限种组合可以得到最终的积分结果 y ^ \hat{y} y^,可能会存在扁平 P ( y i ) P(y_i) P(yi)分布(LQE小),可能会降低学习效率。作者提出了Distribution Focal Loss (DFL)让网络迅速关注标签 y y y附近的值,主要是通过扩大 y i y_i yi y i + 1 y_{i+1} yi+1的概率( y y y附近最近的两个数, y i ≤ y ≤ y i + 1 y_{i}\leq y\leq y_{i+1} yiyyi+1,举个例子, y = 1.2 y=1.2 y=1.2,则 y i = 1 y_{i}=1 yi=1 y i + 1 = 2 y_{i+1}=2 yi+1=2)。
    D F L ( P i , P i + 1 ) = − ( ( y i + 1 − y ) l o g ( P i ) + ( y − y i ) l o g ( P i + 1 ) ) \mathbf{DFL}(P_i,P_{i+1})=-((y_{i+1}-y)\mathrm{log}(P_i)+(y-y_i)\mathrm{log}(P_{i+1})) DFL(Pi,Pi+1)=((yi+1y)log(Pi)+(yyi)log(Pi+1))DFL的全局最小解,即 i . e , P i = y i + 1 − y y i + 1 − y i , P i + 1 = y − y i y i + 1 − y i \mathrm{i.e},P_i=\frac{y_{i+1}-y}{y_{i+1}-y_i},P_{i+1}=\frac{y-y_i}{y_{i+1}-y_i} i.e,Pi=yi+1yiyi+1y,Pi+1=yi+1yiyyi,可以保证估计的回归目标 y ^ \hat{y} y^无限接近对应的标签 y y y,即 y ^ = ∑ j = 0 n P ( y j ) y j = P i y i + P i + 1 y i + 1 = y i + 1 − y y i + 1 − y i y i + y − y i y i + 1 − y i y i + 1 = y \hat{y}=\sum_{j=0}^nP(y_j)y_j=P_iy_i+P_{i+1}y_{i+1}=\frac{y_{i+1}-y}{y_{i+1}-y_i}y_i+\frac{y-y_i}{y_{i+1}-y_i}y_{i+1}=y y^=j=0nP(yj)yj=Piyi+Pi+1yi+1=yi+1yiyi+1yyi+yi+1yiyyiyi+1=y
    yolov8中的DFL loss代码
    '''
    target相当于y=1.2
    tl = 1 = y(i)
    tr = 2 = y(i+1)
    wl = y(i+1) - y = 2 - 1.2 = 0.8
    wr = y - y(i) =1.2 - 1 = 0.2 = 1 - wl = 1 - 0.8
    # F.cross_entropy的详细介绍可参考https://blog.csdn.net/wuliBob/article/details/104119616
    # pred_dist: [bs*n*4, reg_max](n是正样本对应的数量,reg_max一般为16)
    # tl.view(-1): [bs*n*4, ]
    F.cross_entropy(pred_dist, tl.view(-1), reduction='none').view(tl.shape): log(P(i))
    F.cross_entropy(pred_dist, tr.view(-1), reduction='none').view(tl.shape): log(P(i+1))
    '''
    tl = target.long()  # target left
    tr = tl + 1  # target right
    wl = tr - target  # weight left
    wr = 1 - wl  # weight right
    return (F.cross_entropy(pred_dist, tl.view(-1), reduction='none').view(tl.shape) * wl +
            F.cross_entropy(pred_dist, tr.view(-1), reduction='none').view(tl.shape) * wr).mean(-1, keepdim=True)
    
  • Generalized Focal Loss (GFocal)
    注意,QFL和DFL可以统一为通用形式,论文中将其称为Generalized Focal Loss (GFocal)。假设模型将两个变量 y l , y r ( y l ≤ y r ) y_{l},y_{r}\left ( y_l\leq y_r \right ) yl,yr(ylyr)的概率估计为 p y l , p y r ( p y l ≥ 0 , p y r ≥ 0 , p y l + p y r = 1 ) p_{y_l},p_{y_r}\text{(}p_{y_l}\geq0,p_{y_r}\geq0,p_{y_l}+p_{y_r}=1) pyl,pyr(pyl0,pyr0,pyl+pyr=1),其线性组合的最终预测为 y ^ = y l p y l + y r p y r ( y l ≤ y ^ ≤ y r ) \hat{y}=y_lp_{y_l}+y_{r}p_{y_{r}}(y_{l}\leq\hat{y}\leq y_{r}) y^=ylpyl+yrpyr(yly^yr)。 预测 y ^ \hat{y} y^对应的连续标签 y y y也满足 y l ≤ y ≤ y r y_{l}\leq y\leq y_{r} ylyyr。 以绝对距离 ∣ y − y ^ ∣ β ( β ≥ 0 ) |y-\hat{y}|^{\boldsymbol{\beta}}(\beta\geq0) yy^β(β0)作为调制因子,GFocal 的具体公式可写为
    G F o c a l ( p y l , p y r ) = − ∣ y − ( y l p y l + y r p y r ) ∣ β ( ( y r − y ) l o g ( p y l ) ) + ( y − y l ) l o g ( p y r ) ) \begin{gathered} \mathbf{GFocal}(p_{y_{l}},p_{y_{r}}) =-\big|y-(y_{l}p_{y_{l}}+y_{r}p_{y_{r}})\big|^{\beta}\big((y_{r}-y)\mathrm{log}(p_{y_{l}})\big) +(y-y_{l})\mathrm{log}\left(p_{y_{r}}\right)) \end{gathered} GFocal(pyl,pyr)= y(ylpyl+yrpyr) β((yry)log(pyl))+(yyl)log(pyr))

Training Dense Detectors With GFocal

  1. 在推理过程中,我们直接将Classification-IoU Joint Representation作为 NMS 分数,而不需要乘以任何单独的质量预测(如果存在)。
  2. 用于预测边界框每个位置的回归分支的最后一层现在有n + 1个输出,而不是1个输出,其中最终位置是通过对这n + 1个单元进行简单离散积分获得的,这带来的额外计算可以忽略不计。
    训练损失定义如下:
    L = 1 N p o s ∑ z L Q + 1 N p o s ∑ z 1 { c z ∗ > 0 } ( λ 0 L B + λ 1 L D ) \mathcal{L}=\frac1{N_{pos}}\sum_{z}\mathcal{L}_{Q}+\frac1{N_{pos}}\sum_{z}\mathbb{1}_{\{c_{z}^{*}>0\}}(\lambda_{0}\mathcal{L}_{\mathcal{B}}+\lambda_{1}\mathcal{L}_{\mathcal{D}}) L=Npos1zLQ+Npos1z1{cz>0}(λ0LB+λ1LD)其中 L Q {L}_{Q} LQ是 QFL, L D {L}_{D} LD是 DFL。 通常, L B {L}_{B} LB表示GIoU Loss。 N p o s {N}_{pos} Npos代表正样本数量。 λ 0 {\lambda}_{0} λ0(通常默认为 2)和 λ 1 {\lambda}_{1} λ1(实际上是 1 4 \frac{1}{4} 41 ,在四个方向上平均)分别是 L Q {L}_{Q} LQ L D {L}_{D} LD的平衡权重。 总和是在金字塔特征图上的所有位置 z z z上计算的。 1 { c z ∗ > 0 } 1_{\{c_{z}^{*}>0\}} 1{cz>0}是指示函数,如果 c z ∗ > 0 c_{z}^{*}>0 cz>0则为1,否则为0(这个应该是正样本为1,负样本为0,计算bbox回归损失只有正样本参与)。

到了这里,关于Generalized Focal Loss论文个人理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • quality focal loss & distribute focal loss 详解(paper, 代码)

    参见generalized focal loss paper 其中包含有 Quality Focal Loss 和 Distribution Focal Loss 。 dense detectors逐渐引领了目标检测领域的潮流。 目标框的表达方法,localization quality估计方法的改进引起了目标检测的逐渐进步。 其中,目标框表达(坐标或(l,r,t,b))目前被建模为一个简单的Dirac de

    2024年02月06日
    浏览(42)
  • MTN模型LOSS均衡相关论文解读

    目录 一、综述 二、依据任务不确定性加权多任务损失  三、依据不同任务的梯度大小来动态修正其loss权重GradNorm 四、根据LOSS变化动态均衡任务权重Dynamic Weight Average(DWA) 五、Reference  MTN模型主要用于两个方面,1.将多个模型合为一个显著降低车载芯片负载。2.将多个任务模

    2024年02月04日
    浏览(41)
  • Focal Loss介绍

      在目标检测算法中,我们会经常遇到Focal Loss这个东西,今天我们就来简单的分下下这个损失。   在深度学习训练的时候,在遇到目标类别不平衡时,如果直接计算损失函数,那么最终计算的结果可能会偏向于常见类别,低召回率,模型过拟合等问题。为了应对这个问

    2024年02月09日
    浏览(37)
  • pytorch如何使用Focal Loss

    Focal loss 是 文章 Focal Loss for Dense Object Detection 中提出对简单样本的进行 decay 的一种损失函数。是对标准的 Cross Entropy Loss 的一种改进。 FL 对于简单样本(p比较大)回应较小的loss。 如论文中的图1, 在p=0.6时, 标准的 CE 然后又较大的 loss , 但是对于FL就有相对较小的loss回应

    2024年02月10日
    浏览(39)
  • Focal Loss:类别不平衡的解决方案

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 (封面图由ERNIE-ViLG AI 作画大模型生成) 在目标检测领域,常常使用交叉熵

    2024年02月06日
    浏览(69)
  • 交叉熵、Focal Loss以及其Pytorch实现

    本文参考链接:https://towardsdatascience.com/focal-loss-a-better-alternative-for-cross-entropy-1d073d92d075 损失是通过梯度回传用来更新网络参数是之产生的预测结果和真实值之间相似。不同损失函数有着不同的约束作用,不同的数据对损失函数有着不同的影响。 交叉熵是常见的损失函数,常

    2024年02月11日
    浏览(60)
  • EIoU和Focal-EIoU Loss

    论文题目:《Focal and Efficient IOU Loss for Accurate Bounding Box Regression》 CIoU Loss虽然考虑了边界框回归的重叠面积、中心点距离、高宽比。但是其公式中的v反映的是高宽的差异,而不是高宽分别与其置信度的真实差异。因此,有时会阻碍模型有效的优化相似性。针对这一问题,本文

    2024年03月27日
    浏览(49)
  • 论文解读《EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monocular Object Pose 》

    论文:《EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Points for Monocular Object Pose Estimation》 Code:https://github.com/tjiiv-cprg/epro-pnp (909 star) 作者的视频简单介绍:https://www.bilibili.com/video/BV13T411E7kb 摘要: 解决问题: 对于6D位姿估计,基于几何(PnP)的方法性能要好一些,但以前

    2024年02月03日
    浏览(60)
  • 图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

    声明:此翻译仅为个人学习记录 文章信息 标题: RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018) 作者: Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár 文章链接:https://arxiv.org/pdf/1708.02002.pdf 文章代码:https://github.com/facebookresearch/Detectron (推荐:亦可参考 图像 处理 - 开

    2024年02月14日
    浏览(37)
  • Perceptual Loss(感知损失)&Perceptual Losses for Real-Time Style Transferand Super-Resolution论文解读

    由于传统的L1,L2 loss是针对于像素级的损失计算,且L2 loss与人眼感知的图像质量并不匹配,单一使用L1或L2 loss对于超分等任务来说恢复出来的图像往往细节表现都不好。 现在的研究中,L2 loss逐步被人眼感知loss所取代。人眼感知loss也被称为perceptual loss(感知损失),它与MSE(

    2023年04月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包