#long-distance-relationship
#突然很确信我们有些地方有点像蜘蛛侠与格温
三、具有尺度和位置敏感性的红外小目标检测Infrared Small Target Detection with Scale and Location Sensitivity
插曲
去了解一下特征融合-发现是深度学习里的
【极致中配】Stanford CS231N 计算机视觉中的深度学习 Deep Learning for Computer Vision I 2025_哔哩哔哩_bilibili
题外话:发现是CS国外网课,之前的我是绝对不可能看这个的,更倾向于看中文,
此处感谢一下曾经的一位朋友,希望你一切都好!
哈哈哈哈哈误入歧途

所以只要看345
lecture2
(1)边缘检测、角点

(2)损失函数Loss function
损失函数 = 衡量"模型预测的结果"和"真实正确答案"之间差距的一个数学公式。
差距越大,损失值越大;差距越小,损失值越小。训练网络的目标,就是通过不断调整参数,让这个损失值降到最低。
Lecture3
正则化在论文里的形态:
|----------------------------|----------|------------------------------------------------------------------------|
| 论文/代码里写的词 | 中文意思 | 你该怎么理解 |
| Weight Decay 权重衰减法 | 权重衰减 | 最常见的正则化。在优化器(如 Adam)里设置一个极小的数字(如 0.0005),表示"每走一步,就把权重磨掉 0.05%",防止权重爆炸。 |
| Dropout | 随机失活 | 训练时,随机让 50% 的神经元"装死"不工作。迫使网络不能依赖某几个特定的"尖子生",必须分散学习,提高抗干扰能力。 |
| Data Augmentation 数据增强 | 数据增强 | 把训练图片随机翻转、旋转、加噪点。相当于告诉模型:"同一张图,换个角度你也要认识我,别死记硬背原始角度。" |
-
数据损失(Data Loss):衡量"模型猜的"和"真实答案"差多远(就是上节课说的损失函数)。
-
正则化(Regularization):防止模型"死记硬背"训练集。如果模型把训练图片上的噪点都记住了,换一张新图就蒙了。正则化就是给模型"敲警钟",让它学通用的规律,别钻牛角尖。
-
权重(Weights / W):就是网络里那些无数的数字参数(卷积核里的数字、全连接层里的数字)。模型就是靠不断调整这些数字来学习的。
-
优化(Optimization) :寻找"最佳权重(最好的 W)"的过程。怎么找?通过梯度下降(Gradient Descent)------就像下山,每一步都往"损失值下降最快"的方向迈一小步。
-
你听到的"反向传播(Backpropagation)":就是计算"往哪个方向迈步"的数学工具。把最后的误差信号,一层一层往前传回每一层,告诉每一层的权重"你是该变大还是该变小"。
Lecture4
🧠 深度学习闭环(一句话版)
深度学习就是一个"猜答案→看差距→反推原因→修正手法→再猜"的万次循环:图片往前传得到预测(前向),用损失函数算出预测和真值的差距,再把差距信号原路往后传(反向传播)算出每个参数该调多少,最后优化器拿着指令更新参数,然后拿着新参数重复下一轮,直到差距小到满意为止。
你对深度学习现在只需要知道这 3 件事(你已经知道了):
1.前向传播:图片进去,经过一层层卷积、池化、激活函数,最后算出损失值。
2.反向传播(只记名字):计算机根据损失值,自动算梯度,回传更新权重。
3.更新(优化器):SGD 或 Adam 拿着梯度去调整权重。
回归解读论文
1.🧩 第一步:这篇论文解决了什么问题?

你之前已经理解了"损失函数"是什么------就是衡量"模型预测"和"真实答案"之间差距的数学公式。
这篇论文的核心洞察极其简单但有力:
现有的损失函数(IoU Loss、Dice Loss)有一个致命缺陷:它们对小目标的"尺度(Scale)"和"位置(Location)"不敏感。
看论文的 Figure 2(第2页),这张图是整篇论文的灵魂:
- 第一行(尺度问题):三个不同的目标(大小不同),但 IoU Loss 算出来都是 0.4,Dice Loss 都是 0.57。
- 第二行(位置问题):三个不同的目标(位置偏移不同),但 IoU Loss 算出来都是 0.3,Dice Loss 都是 0.43。
翻译成人话:
模型明明预测错了(目标大小差很多、位置偏很多),但损失函数告诉模型:"你做得还行,误差不大。"
模型收到这个信号后,就觉得"我干得不错,不用改"------ 结果就是模型永远学不会区分不同大小和不同位置的目标!
2.🧩 第二步:这篇论文怎么解决上面的问题?
🧠 先搞懂一件事:损失函数的"惩罚"本质是什么?
损失函数算出一个数字(比如
loss = 1.5)。这个数字会通过反向传播 ,告诉网络里的每一个权重参数 "你要变大还是变小" 。
所以,"惩罚更大" 在物理世界里的直接翻译就是:
如果预测值和真实值差距越大,损失函数算出来的数字就越大 → 反向传播时,权重参数调整的幅度就越大 → 下一轮预测时,模型会更拼命地修正这个错误。
论文提出了一个新的损失函数叫 SLS Loss(Scale and Location Sensitive Loss),由两部分组成:
📐 ① 尺度敏感部分(Scale Sensitive Loss)
-
解决什么:让模型对"目标大小"敏感。
-
怎么做 :如果预测的目标大小和真实目标大小差距越大 ,损失函数就给越大的惩罚。
-
直观理解:你预测大了或者预测小了,都要被重重地"打手板",而不是像 IoU 一样"差不多就行了"。
📍 ② 位置敏感部分(Location Sensitive Loss)
-
解决什么:让模型对"目标位置"敏感。
-
怎么做 :计算预测目标的中心点和真实目标的中心点之间的距离和角度差。
-
直观理解:你预测的位置偏了,就会被惩罚,而且不同的偏移方向会被区别对待,而不是像 L1/L2 距离一样"反正都是偏了那么多"。
有用的部分
1.SLS损失函数解决的是:"损失函数对目标大小和位置不敏感" 的问题------即 IoU/Dice 损失对尺度偏差和位置偏移"反应迟钝",SLS 通过尺度权重惩罚和中心点极坐标约束,让模型对目标尺寸和位置偏差更"较真"。
2.多尺度深度监督策略解决的是:"浅层特征图不参与目标预测"的问题------即传统网络只在最后一层输出结果,浅层(大尺寸特征图)缺乏直接监督信号,多尺度监督迫使每一层都独立学习预测,迫使浅层也必须学会识别小目标,提升小目标召回率。
🧩 积木一:SLS 损失函数(最核心的资产)
- 这是什么 :一个全新的损失函数计算公式,由尺度敏感部分 和位置敏感部分组成。
- 它在论文里的代号 :
SLS Loss(Scale and Location Sensitive Loss) - 它能解决你模型里的什么问题:如果你只用普通的 IoU 或 Dice 损失,你的模型会对"目标大小"和"位置偏移"很麻木。换上它,模型会自动盯着"大目标"和"小目标"区别对待,而且会死死咬住目标的中心点。
- 怎么用在你论文里 :直接替换掉基础 U-Net 或 YOLO 自带的损失函数。你在写论文"Method"部分时,直接写"本文将原始的 IoU 损失替换为 SLS 损失,以增强模型对多尺度目标的感知能力"。
- 复用难度 :⭐(极低)。这只是一个数学公式(公式 3 和 5),你只需要在训练代码的
loss.py文件里照着敲一遍就行,不需要改动网络结构。
🧩 积木二:多尺度深度监督策略(Multi-Scale Deep Supervision)
- 这是什么 :一种训练策略 。在 U-Net 解码器的 4 个不同尺寸的特征图 上,各接一个 1x1 卷积预测头,并且每个头都单独计算一次损失,最后把所有损失加起来反向传播。
- 它在论文里的代号 :
MSHNet的核心机制(图 4 的连线方式)。 - 它能解决你模型里的什么问题 :如果只监督最后一层,浅层(大尺寸特征图)会觉得"反正最后有人兜底,我随便提取点特征就行"。加了多尺度监督后,每一个尺度的特征图都被逼着去独立预测目标,这迫使浅层也必须学会精准识别小目标,极大地提升小目标召回率。
- 怎么用在你论文里 :这是极其加分的写法!无论你最后选 U-Net 还是 YOLO 作为骨架,你都可以在中间层引出几个分支,挂上辅助损失。这在学术上叫"Deep Supervision"(深度监督),能让你的论文瞬间显得很专业。
- 复用难度 :⭐⭐(中等)。你需要修改模型的
forward函数,让它返回多个中间层的输出,并在训练循环中分别计算 loss。
🧩 积木三:论文写作的黄金范式(叙事逻辑)
- 这是什么:这篇文章的**"套路"**------即"打弱点、给解药、简化结构"。
- 具体逻辑链 (直接抄下来,将来写引言用):
- 痛点攻击 :"现有的方法(MLP-Net等)都在疯狂设计复杂的模型结构(打空间/频域牌),导致计算量巨大,且严重忽略了损失函数这个关键部件。"(直击痛点)
- 揭露旧方案的无能 :"你看,常用损失函数(IoU/Dice)对小目标的大小(尺度)和位置(中心点)根本不敏感,同一个损失值可能对应完全不同的预测结果。"(甩出 Figure 2 作为证据)
- 亮出新解药 :"我们不需要复杂的结构,我们只需要重新设计一个对尺度和位置敏感的损失函数,再加一个轻量级的多尺度头,就能用最少的算力打败所有复杂模型。"(展示优越性)
- 对你的价值 :你将来写自己的论文时,直接套用这个框架。你可以说:"现有的 MLP-Net 和 FDDBA-NET 虽然考虑了结构和频域,但它们的损失函数依然用的是过时的 IoU/Dice。因此,我们将 SLS 损失引入到这些先进网络中,进一步释放其性能潜力。"
四、EFLNet: Enhancing Feature Learning Network for Infrared Small Target Detection EFLNet:改进用于红外小目标检测的特征学习网络
🧩积木 A:ATFL(自适应阈值Focal Loss)
-
它解决什么问题?
-
红外图像里,背景像素占99%,目标只占1%。普通损失函数(交叉熵)会被"背景"带偏,模型觉得"反正大部分都是背景,我闭着眼猜背景都能赢"。
-
即使Focal Loss(你之前听过的)解决了部分问题,但它把"容易样本"和"困难样本"的损失都降低了------连目标的损失也被降低了,不利于学习小目标。
-
-
它怎么做?
-
设定阈值(0.5):预测概率 > 0.5 → 算"容易样本"(主要是背景);预测概率 ≤ 0.5 → 算"困难样本"(主要是目标)。
-
对容易样本:降低其损失权重(让模型不要学太多背景)。
-
对困难样本 :增加其损失权重(让模型死磕目标)。
-
自适应机制 :训练过程中,
γ和η这两个超参数自动调整,不需要人工反复调参。
-
-
在损失函数里怎么体现?
-
公式(9):
-
当
pt > 0.5(容易样本/背景)→ 损失被压低。 -
当
pt ≤ 0.5(困难样本/目标)→ 损失被拉高。
-
-
直观理解:相当于给目标区域"开小灶"------只要模型对目标的预测置信度≤0.5,就狠狠惩罚它,逼它"必须学会识别目标"。
-
-
位置:损失函数层(训练阶段使用)。
-
潜力判断 :✅ 完全可以替换你YOLO框架里原本的Focal Loss或BCE Loss。你写论文时可以说"本文采用ATFL替代传统Focal Loss,以增强模型对红外小目标的注意力"。
🧩积木 B:NWD(归一化高斯瓦瑟斯坦距离)
-
它解决什么问题?
-
看图4(第5页):一个10×10的小目标,预测框偏移了2个像素,IoU从0.47暴跌到0.08。
-
而一个100×100的大目标,同样偏移2个像素,IoU从0.80只降到0.51。
-
结果:小目标的IoU对偏移极其敏感,导致训练时正负样本"难以区分",模型难以收敛。
-
-
它怎么做?
-
把每个边界框
(cx, cy, w, h)建模成一个2D高斯分布N(μ, Σ)(一个椭圆形概率云)。 -
用 Wasserstein距离 (推土机距离)来衡量两个"高斯分布"之间的相似度------这个距离不依赖框的大小,对小目标和大目标都公平。
-
最后归一化到0~1之间,得到 NWD。
-
-
在损失函数里怎么体现?
-
公式(16):
NWD = exp(-sqrt(W2²)/C) -
训练时,用 NWD 替代传统的 IoU 来计算边框回归损失。
-
-
潜力判断 :✅ 一个可以直接"替换"的度量。你写论文时可以说"本文采用NWD替代传统IoU作为边框回归的度量标准,以缓解小目标对IoU的敏感性问题"。
🧩积木 C:Dynamic Head(动态头)
-
它解决什么问题?
-
特征金字塔(FPN/PAN)会生成多个层级的特征图(浅层保留细节,深层保留语义)。
-
但小目标经过多次下采样后,在深层特征里容易"消失",浅层特征(含有更多细节)却没有被充分重视。
-
传统方法是"固定权重"融合(比如直接相加),不会根据输入动态调整。
-
-
它怎么做?
-
在检测头(Head)里加入了三个并行的注意力机制(公式17-20):
-
尺度感知(Scale-aware):动态决定每一层特征图的重要性。
-
空间感知(Spatial-aware):用可变形卷积,动态调整采样位置,让模型聚焦在目标区域。
-
任务感知(Task-aware):动态开关某些通道,适配不同的检测任务。
-
-
结果 :网络能根据输入图像的特点,自适应地调整每一层特征的权重,更关注富含目标细节的浅层特征。
-
-
位置:检测头(Head)部分,替换掉YOLO原本的检测头。
-
潜力判断 :✅ 可以用在你的检测头设计里。你写论文时可以说"本文引入Dynamic Head机制,以自适应学习不同语义层的重要性,缓解小目标信息在深层丢失的问题"。