损失函数(以FMTrack频率感知交互与多专家模型的损失为例)

理解了损失函数,你就理解了神经网络是如何"学习"的。

一,损失函数

1. 损失函数(Loss Function)是用来干什么的?

损失函数就像是神经网络的**"严师"**。

在训练阶段,神经网络每看一张图片,就会给出一个预测结果(比如它认为目标在左上角)。但实际上,我们知道目标在中心(这是"真值"或"标签")。

  • 计算差距 :损失函数通过数学公式计算"预测值"和"真值"之间的差距
  • 指引方向:神经网络的目标是让这个差距(即损失值)尽可能接近于 0。
  • 反馈修正:模型通过一种叫"反向传播"的机制,根据损失函数给出的反馈,去调整自己内部的参数。如果损失很大,它就知道自己"错得厉害",需要大幅调整;如果损失很小,它就微调。

总结:损失函数是衡量模型错误程度的指标,也是驱动模型进化的唯一动力。

2. 为什么要叠加(相加)这些损失?

你可以把目标跟踪任务想象成一个**"多项全能比赛"**。要成为优秀的选手,模型必须同时做好以下几件事:

  1. 分类任务(找得到):模型得知道哪里是猫,哪里是背景。
  2. 回归任务(框得准):模型得精确画出猫的边界。

为什么要加在一起? 如果只用分类损失(L_{cls}),模型可能会告诉你"目标就在这一块区域",但它不在乎框画得圆不圆、正不正。 如果只用回归损失(L_1, L_{GIoU}),模型可能会把背景里的石头框得非常精美,因为它根本没去学怎么区分目标和背景。

通过加法叠加,我们是在告诉模型:

"我要求你不仅要找准目标的位置(分类对),还要把框画得严丝合缝(回归准)。这两项考核你都得及格,总分才高。"

3. 如何理解叠加后的权重?

公式是:L = L_{cls} + 5 L_1 + 2L_{GIoU}

这里的系数(5 和 2)代表了优先级

  • 如果你把 L_1$的系数设为 5,说明你觉得"框得准不准"比"分得对不对"重要 5 倍。
  • 平衡量纲:不同的损失函数计算出来的数值级数可能不同(比如分类损失通常很小,回归损失可能很大)。加权系数可以平衡这些数值,防止某个损失项"霸凌"其他项,导致模型只顾着优化其中一个。

4. 形象的类比:学射箭

假设你正在教一个机器人学射箭,你要写一个"损失函数":

  1. 姿势损失 (L_{pose}):如果你姿势不对,扣 10 分。
  2. 环数损失 (L_{ring}):如果你没射中红心,差 1 环扣 50 分。
  • 为什么要叠加? 因为你既希望它射得准,又希望它动作规范(有利于长期表现)。
  • 损失函数的作用:机器人每射一箭,就根据总扣分去调整机械臂的角度。
  • 结果:随着训练次数增加,扣分越来越少,机器人既掌握了标准姿势,又能百步穿杨。

二,FMTrack损失函数

(一)训练损失函数

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

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

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

(二)目标粗定位

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

(三)目标细定位

M的尺寸

x,y,w,h的含义

如何确定矩形框

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

相关推荐
ZhouDevin17 小时前
算法论文/模型微调1——CNN架构做lora微调训练
人工智能·深度学习·算法·架构·cnn
oier_Asad.Chen17 小时前
【OI学习笔记】Floyed-Warshall算法解决传递闭包问题
c++·笔记·学习·算法·图论·最短路·传递闭包
鱼听禅17 小时前
C#学习笔记-添加编译参数到程序集自动更新程序编译时间
笔记·学习·c#
LateFrames18 小时前
CT(DCM)外轮廓实时识别 → 逐层拼3D → 导出STL到Blender
图像处理·3d·可视化·医疗·ct重建
香菜TTT18 小时前
LangChain框架_学习笔记
笔记·学习·langchain
春水碧于天,画船听雨眠18 小时前
LangChain学习笔记(二)
笔记·学习·langchain
MartinYeung518 小时前
[论文学习]AdvWeb:针对VLM驱动的Web Agent的可控黑盒攻击
学习
colman wang18 小时前
vibe coding学习手册
学习
高洁0118 小时前
VLA:驱动具身智能迈向通用的关键引擎
人工智能·python·深度学习·transformer·知识图谱
210Brian19 小时前
STM32学习笔记(四)OLED显示屏与Keil调试
笔记·stm32·学习