理解了损失函数,你就理解了神经网络是如何"学习"的。
一,损失函数
1. 损失函数(Loss Function)是用来干什么的?
损失函数就像是神经网络的**"严师"**。
在训练阶段,神经网络每看一张图片,就会给出一个预测结果(比如它认为目标在左上角)。但实际上,我们知道目标在中心(这是"真值"或"标签")。
- 计算差距 :损失函数通过数学公式计算"预测值"和"真值"之间的差距。
- 指引方向:神经网络的目标是让这个差距(即损失值)尽可能接近于 0。
- 反馈修正:模型通过一种叫"反向传播"的机制,根据损失函数给出的反馈,去调整自己内部的参数。如果损失很大,它就知道自己"错得厉害",需要大幅调整;如果损失很小,它就微调。
总结:损失函数是衡量模型错误程度的指标,也是驱动模型进化的唯一动力。
2. 为什么要叠加(相加)这些损失?
你可以把目标跟踪任务想象成一个**"多项全能比赛"**。要成为优秀的选手,模型必须同时做好以下几件事:
- 分类任务(找得到):模型得知道哪里是猫,哪里是背景。
- 回归任务(框得准):模型得精确画出猫的边界。
为什么要加在一起? 如果只用分类损失(L_{cls}),模型可能会告诉你"目标就在这一块区域",但它不在乎框画得圆不圆、正不正。 如果只用回归损失(L_1, L_{GIoU}),模型可能会把背景里的石头框得非常精美,因为它根本没去学怎么区分目标和背景。
通过加法叠加,我们是在告诉模型:
"我要求你不仅要找准目标的位置(分类对),还要把框画得严丝合缝(回归准)。这两项考核你都得及格,总分才高。"
3. 如何理解叠加后的权重?
公式是:L = L_{cls} + 5 L_1 + 2L_{GIoU}
这里的系数(5 和 2)代表了优先级。
- 如果你把 L_1$的系数设为 5,说明你觉得"框得准不准"比"分得对不对"重要 5 倍。
- 平衡量纲:不同的损失函数计算出来的数值级数可能不同(比如分类损失通常很小,回归损失可能很大)。加权系数可以平衡这些数值,防止某个损失项"霸凌"其他项,导致模型只顾着优化其中一个。
4. 形象的类比:学射箭
假设你正在教一个机器人学射箭,你要写一个"损失函数":
- 姿势损失 (L_{pose}):如果你姿势不对,扣 10 分。
- 环数损失 (L_{ring}):如果你没射中红心,差 1 环扣 50 分。
- 为什么要叠加? 因为你既希望它射得准,又希望它动作规范(有利于长期表现)。
- 损失函数的作用:机器人每射一箭,就根据总扣分去调整机械臂的角度。
- 结果:随着训练次数增加,扣分越来越少,机器人既掌握了标准姿势,又能百步穿杨。
二,FMTrack损失函数


(一)训练损失函数
损失函数前一项是分类损失,用于区分目标和背景;后两项代表回归损失,用于精确框选目标。

计算机视觉里面的Loss命名法则

回归函数分为两项,是为了能够让生成的预测框动态覆盖尺度不同的跟踪目标。


(二)目标粗定位


论文中介绍了三种M的尺寸。





(三)目标细定位

M的尺寸

x,y,w,h的含义

如何确定矩形框



w,h是相对于x,y往右下方拉取
