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 和分类分数的使用不一致
    在这里插入图片描述
    图 1 图1 1论文中阐述,如图1a所示,在最近的密集检测器中,LQE和分类分数通常是独立训练的,但在推理过程中综合利用(例如乘法)。目前,LQE 的监督仅分配给正样本 [18]、[20]、[42],这是不可靠的(只有正样本计算box_loss),因为负样本可能有机会获得无法控制的更高质量的预测(图 2)。 这两个因素导致训练和测试之间存在差距,并可能降低检测性能,例如,在 NMS 期间,具有随机高质量分数的负实例可能排在具有较低质量预测的正实例之前。
    在这里插入图片描述 图 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 boxesboxes, scores = x[:, :4] + c, x[:, 4]  # boxes (offset by class), scores
    i = torchvision.ops.nms(boxes, scores, iou_thres)  # NMS
    
  • 边界框的不灵活表示
    广泛使用的边界框表示可以看作目标框坐标的狄拉克δ分布。 然而,它没有考虑数据集中的模糊性和不确定性(见图3中图形边界不清晰)。 尽管最近的一些工作]将框建模为高斯分布,但捕获边界框位置的真实分布过于简单。 事实上,真实分布可以更加任意和灵活,而不需要像高斯函数那样对称。
    在这里插入图片描述 图 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 的效率较低。
    在这里插入图片描述
    图 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
    在这里插入图片描述 图 5 图5 5
    如图5b所示,一般分布的统计量往往与其真实的定位质量有很强的相关性。更具体地来说,图5c和5d所示,边界框分布的形状(平坦度)可以清晰地反映预测结果的定位质量:分布越尖锐,预测的边界框越准确,反之亦然。 最后,由于输入(边界框的分布统计)和输出(LQE 分数)潜在地高度相关,因此通过分布信息的指导可能会更容易且非常有效地进行更好的 LQE。
    Convolution -> Distribution-Guided Quality Predictor.
    受分布统计和 LQE 分数之间可能存在的强相关性的启发,作者提出了一个非常轻量级的子网络,它只有几十个(例如 64 个)隐藏单元,在这些分布统计的基础上产生可靠的 LQE 分数,而不是隐式卷积特征。作者将这种轻量级子网络称为分布引导质量预测器(DGQP)。它将学习到的一般分布 P 的统计数据传送到一个微小的子网络中(见图6中的红色虚线框),从而获得预测的 LQE 分数。
    在这里插入图片描述 图 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中的平坦程度)在这里插入图片描述 图 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个类别的最初的分类表示。

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效果最好。
    在这里插入图片描述 图 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回归损失只有正样本参与)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MtimeMtimecmp

Mtime: 实时time计数器&#xff0c;可读可写&#xff1b;mtime必须按照一个固定的频率递增&#xff1b;如果count overflow了&#xff0c;则mtime的值需要卷绕&#xff1b;对于32/64的系统来说&#xff0c;mtime的值都是64bits的&#xff1b; 与mtime对应的&#xff0c;还有一…

项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法

iframe与外部之间传值 父组件 <iframeid"iframe"src"luckysheet/index.html"frameborder"0"scrolling"no"style"width: 100%; height: 60vh; border: 0"/>const frame document.getElementById(iframe);frame.onloa…

Python综合练习之图表

文章目录 文件目录如下图标效果timeline_bar_with_graphic.htmltable_base.html articles.jsonarticlesData.pyarticlesEchartsEntity.pyarticlesEntity.py Python学习了约一个月的时间&#xff0c;这是一篇综合练习的文章。主要做的内容是通过封装对象、实现抽象方法生成统计图…

不可预测的市场中,为何有人持续胜出?

为什么经济学家和证券分析师难以预测经济或股价走势&#xff0c;而少数投资大师却能几十年持续复利&#xff1f;这两个问题看似矛盾&#xff0c;既然无法预测&#xff0c;为何又能产生确定性的赚钱结果呢&#xff1f; 有人认为这是因为幸存者偏差。然而&#xff0c;三十年以上连…

优优嗨聚集团:债务逾期,如何应对与解决?

在现代社会&#xff0c;债务问题已成为越来越多人面临的难题。债务逾期不仅会给个人带来巨大的经济压力&#xff0c;还会影响个人信用记录&#xff0c;甚至可能引发法律纠纷。那么&#xff0c;当债务逾期时&#xff0c;我们应该如何应对与解决呢&#xff1f; 一、了解债务情况 …

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题&#xff0c;可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…

GZ075 云计算应用赛题第9套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷9 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

导轨式信号隔离变送器比例阀门线性驱动器4-20mA/0-5V/0-10V转0-165mA/0-80mA/0-1A/0-2A/0-4A

主要特性 精度、线性度误差等级&#xff1a; 0.1、0.2、0.5 级4-20mA/0-5V/0-10V 等标准信号输入0~100mA/0~500mA/0~1A/0-5A 等电流信号输出0~1V(max 2A)/0~10V/0-24V(max 5A) 等电压信号输出信号输入/信号输出 3000VDC 隔离辅助电源&#xff1a;12V、15V 或 24V 直流单电源供…

【微服务】日志搜集elasticsearch+kibana+filebeat(单机)

日志搜集eskibanafilebeat&#xff08;单机&#xff09; 日志直接输出到es中&#xff0c;适用于日志量小的项目 基于7.17.16版本 主要配置在于filebeat&#xff0c; es kibana配置改动不大 环境部署 es kibana单机环境部署 略 解压即可 常见报错&#xff0c;百度即可。 记录…

修改csdn的字体大小颜色

修改csdn的字体大小颜色 修改csdn的字体大小颜色 修改csdn的字体大小颜色一、设置字体与颜色格式二、修改字体格式三、修改字体颜色 一、设置字体与颜色格式 <font face"华文行楷" colorred size5>本字体是华文行楷&#xff0c;红色&#xff0c;5号大小</fo…

怎样获取power shell 的全部可用命令?2/5(篇幅有点长,分成5份)

在power shell 窗口中&#xff0c;有一个获取全部可用命令的命令&#xff1a;get-command&#xff0c;获取到的命令有1640多个&#xff0c;够学习了吧&#xff1f;那么&#xff0c;power shell 命令有哪些类别呢&#xff1f; PowerShell命令可以分为以下几类&#xff1a; Cmdl…

TS学习笔记二:基础类型及变量声明

本节介绍TypeScript中的基础类型及变量声明方式的说明。TypeScript支持与JavaScript几乎相同的数据类型&#xff0c;此外还提供了实用的枚举类型方便我们使用。基础类型包括&#xff1a;数字&#xff0c;字符串&#xff0c;结构体&#xff0c;布尔值等。 学习视频 TS学习笔记二…

java发送邮件(注:本章以163邮箱为例)

目录 前言 一邮件服务器与传输协议 二.发送邮件思路 2.1注册163邮箱: 2.2、打开邮箱服务获取授权码 三.代码实现邮件发送 3.1第三方jar包 3.2创建邮件工具类 3.3编写测试类 前言 电子邮件的应用非常广泛&#xff0c;例如在某网站注册了一个账户&#xff0c;自动发送一…

机器学习在什么场景下最常用-九五小庞

机器学习在多个场景中都有广泛的应用&#xff0c;下面是一些常见的应用场景&#xff1a; 自然语言处理&#xff08;NLP&#xff09;&#xff1a;如语音识别、自动翻译、情感分析、垃圾邮件过滤等。数据挖掘和分析&#xff1a;如市场分析、用户画像、推荐系统、欺诈检测等。智能…

你不得不知道的常用 Git 命令

最近在学习的时候发现 git 命令没有自己想象中那么简单&#xff0c;特此做一期 《 常用 Git 命令 》&#xff0c;不仅是给掘友分享&#xff0c;也能巩固自己学到的知识。 在此向大家推荐一个学习 git 指令的小游戏 Learn Git Branching&#xff0c;以通关的方式进行学习&#…

2024年【高处安装、维护、拆除】考试题及高处安装、维护、拆除模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 高处安装、维护、拆除考试题是安全生产模拟考试一点通总题库中生成的一套高处安装、维护、拆除模拟试题&#xff0c;安全生产模拟考试一点通上高处安装、维护、拆除作业手机同步练习。2024年【高处安装、维护、拆除】…

电脑的任务栏怎么恢复到底下?简单的4个方法帮你解决!

“我在使用电脑的时候突然发现电脑底部的任务栏不见了&#xff0c;有什么方法可以将任务栏恢复到底下吗&#xff1f;快给我出出主意吧&#xff01;” 在使用电脑时&#xff0c;我们可能会发现电脑的任务栏跑到屏幕顶部或消失的情况。这不仅影响了我们的使用体验&#xff0c;还可…

如何使用左移方法优化性能测试

开发周期早期阶段的性能测试&#xff08;左移方法&#xff09;可以让产品提供更好的性能和更高的投资回报率。查看如何使用左移方法优化性能测试。 每一次冲刺都至关重要&#xff0c;并且做出的决策速度快如闪电。为了促进快速反馈过程&#xff0c;测试团队必须在很短的时间内…

JS逆向实战案例1——某房地产url动态生成

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、 反爬分析 url&#xff1a;aHR0cHM6Ly9uZXdob3VzZS4wNTU3ZmRjLmNvbQ 该站点项目url通过点击JS生成&#xff0c;project_id与生成后…

mysql清空并重置自动递增初始值

需求&#xff1a;当上新项目时&#xff0c;测试环境数据库导出来的表id字段一般都有很大的初始递增值了&#xff0c;需要重置一下 先上代码&#xff1a; -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引&#xff08;可选&#xff09; ALTER TABLE t…