<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multimodal Learning | 聂畅</title><link>https://changnie.top/zh/tags/multimodal-learning/</link><atom:link href="https://changnie.top/zh/tags/multimodal-learning/index.xml" rel="self" type="application/rss+xml"/><description>Multimodal Learning</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>zh-Hans</language><lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0000</lastBuildDate><image><url>https://changnie.top/media/icon_hu_3dd7560279821d57.png</url><title>Multimodal Learning</title><link>https://changnie.top/zh/tags/multimodal-learning/</link></image><item><title>MID：自监督多模态迭代去噪框架</title><link>https://changnie.top/zh/publications/mid/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://changnie.top/zh/publications/mid/</guid><description>&lt;h2 id="干净版本往往并不存在"&gt;干净版本往往并不存在&lt;/h2&gt;
&lt;p&gt;好数据是下游一切工作的前提，而采集噪声几乎无处不在：传感器本身的限制、传输错误、环境干扰，还有物理测量固有的随机性。常见的应对是先做去噪。&lt;/p&gt;
&lt;p&gt;有两个很实际的事实让这件事比听起来难得多，本文的思路也正是从这两点长出来的。&lt;/p&gt;
&lt;p&gt;第一，真正需要处理的噪声很少是高斯噪声。低照度成像中的泊松噪声、压缩伪影，以及我们称作结构化噪声的东西（例如一组并不对应场景中任何真实结构的线段），都违反了经典滤波器赖以成立的假设。第二点更根本：在我们关心的许多领域里，干净目标根本不存在。临床影像和遥感经常没有可供对照的无噪参考，也无从采集。论文里的 MRI 实验之所以用替代指标评分，正是因为那些数据集拿不到干净的 ground truth。&lt;/p&gt;
&lt;p&gt;训练信号只能从别处来，指望不上成对的干净样本。整个问题就落在这个约束上。&lt;/p&gt;
&lt;h2 id="已有方法为什么都是有条件的"&gt;已有方法为什么都是有条件的&lt;/h2&gt;
&lt;p&gt;经典的去噪方法，从滤波、变换域阈值到非局部均值，都针对特定的噪声模型和数据类型来设计。噪声统计一旦偏离当初的假设，效果就迅速下降。&lt;/p&gt;
&lt;p&gt;有监督深度去噪绕开了建模假设，但需要大量成对的干净与含噪样本。偏偏在去噪最重要的那些领域里，这类数据要么采集成本高昂，要么根本无法采集。&lt;/p&gt;
&lt;p&gt;自监督盲点方法（blind-spot methods）曾是顺理成章的答案。我们对它的批评是具体的，不是笼统地说它不好。这类方法不需要成对数据，却带着隐藏的模态假设。先把像素遮住、再由邻域把它预测回来的技巧，靠的是图像的空间相关性。点云是无序的，氨基酸序列离散且无结构。对数据不作任何断言的方法能走到这些场景；暗中假设空间平滑的方法走不过去，表现出来的症状就是过度平滑和细节丢失。&lt;/p&gt;
&lt;p&gt;特定领域的专用方法也各有各的条件依赖。Noise2Noise 会把细小的解剖结构抹平；Patch2Self 利用了体数据之间的冗余，却要为每个体数据单独训练一个模型，体数据之间的空间一致性容易出问题；DDM2 对初始噪声水平和模态相关的调参都很敏感。到了表面肌电（sEMG），高通滤波能滤掉 ECG 干扰，但信号里重要的低频成分会随之一起被滤掉，因为两者在频域上重叠；模板相减预设了固定的分布形式；神经网络方法常常训练不稳定。蛋白质序列筛选上，常用的按平均汉明距离做贪心选择只依赖一条准则，无法反映序列质量的更多侧面。&lt;/p&gt;
&lt;p&gt;我们没有用跑分表来定位，而是画了一张能力矩阵。要回答的问题是：哪些方法既自监督，又能同时处理图像、信号和点集。这个领域里的大多数方法只能做到三样中的两样。&lt;/p&gt;
&lt;h2 id="难点在哪里"&gt;难点在哪里&lt;/h2&gt;
&lt;p&gt;非线性退化的逆过程没有可用的闭合形式。直接反演泊松噪声、压缩伪影或具有集合结构的干扰都很困难，我们自己的消融实验给出了硬做的结果：单次前向的网络几乎不改变输入数据。网络很难一步学会从含噪到干净的巨大跳跃。这不是实现层面的失误，方法之所以长成现在这样，原因就在这里。&lt;/p&gt;
&lt;p&gt;输入的污染程度同样是未知的。含噪样本不会告诉你自己位于退化轨迹的哪一段，也就无从判断该去掉多少、该走几步。&lt;/p&gt;
&lt;p&gt;自监督信号只能自己造，捡不到现成的。没有成对样本，能用的标签全是自己生成的，而且它们要同时服务两件事：输入处在退化的哪个位置，以及下一个增量长什么样。&lt;/p&gt;
&lt;p&gt;有些时候，噪声根本不是数值。错误的对应关系、无效的线段、冗余的序列，都不是附加在某个量上的幅度，而是关于某个元素该不该留下的判断。要把这类东西减掉，先得把干扰改写成逐元素的属性，这些任务因此采用二分类目标，而不是对残差做回归。&lt;/p&gt;
&lt;p&gt;无序、离散的数据直接推翻了常规先验。点云没有顺序，多序列比对是一组离散字符串，按空间网格共享权重、做卷积这类手段在这里都用不上。&lt;/p&gt;
&lt;p&gt;方法里还内含着一种取舍。支撑它的一阶近似只在增量足够小时成立。小增量换来线性性，代价是推理时冗长的循环。&lt;/p&gt;
&lt;h2 id="继续加噪就是恢复局部线性化与数学形式推导"&gt;继续加噪，就是恢复：局部线性化与数学形式推导&lt;/h2&gt;
&lt;p&gt;我们的出发点足够反直觉，不妨直说：要学会去掉噪声，得先往里面加更多噪声。&lt;/p&gt;
&lt;p&gt;含噪观测不是放在一旁的干净样本的退化版本，它是退化轨迹上的一个状态，而这条轨迹你可以自己接着走。把含噪输入当作起点，一遍遍施加同一个退化过程，就得到一架带标签的梯子：每一级与下一级之间差了多少噪声，你心里清楚，因为差额是你自己加进去的。&lt;/p&gt;
&lt;p&gt;设未知的退化流由连续算子族 $\mathcal{D}_t$ 生成，对任意干净真实物理状态 $x \in \mathcal{X}$，在连续参数 $t \in [0, 1]$ 下形成退化轨迹 $s(t) = \mathcal{D}_t(x)$，其中 $s(0) = x$ 为理想无噪数据，而实际传感器捕获的含噪观测 $y$ 对应某个未知时刻的中间态 $s(t_0)$。因为真实物理逆向算子 $\mathcal{D}_t^{-1}$ 通常高度非凸且严重病态，直接求解全局逆映射 $x = \mathcal{D}_{t_0}^{-1}(y)$ 无法通过单次网络前向可靠收敛。&lt;/p&gt;
&lt;p&gt;MID 的关键洞察在于：尽管我们在无监督条件下无法直接求解终点 $s(0)$，但退化过程本身在局域具备可模拟性与增量延续性。定义一个步长为 $\Delta t$ 的增量退化算子 $\mathcal{T}_{\Delta t}$，满足：&lt;/p&gt;
$$
s(t + \Delta t) = \mathcal{T}_{\Delta t}(s(t)).
$$&lt;p&gt;对该算子在局部状态 $s(t)$ 处作一阶展开：&lt;/p&gt;
$$
s(t + \Delta t) \approx s(t) + \mathbf{J}_{\mathcal{T}}(s(t)) \cdot \Delta t + \mathcal{O}(\Delta t^2),
$$&lt;p&gt;其中一阶残差增量记为 $\Delta s_t \equiv s(t + \Delta t) - s(t)$。若将增量退化步长限制在局部微扰范围内，非线性算子的单步逆向操作即可近似表示为一阶残差的线性相减：&lt;/p&gt;
$$
s(t) \approx s(t + \Delta t) - \Delta s_t.
$$&lt;p&gt;这种局部一阶近似的核心前提，是假定局部雅可比矩阵在微小步长下接近单位阵，或者非线性形变的主导分量已可被紧邻状态的差分向量充分吸收。这使我们摆脱了对全局非线性反问题的强求，将其转化为一系列局域可逆的微小单步。从一级到下一级的这一步按加性处理，它的逆自然就是减法。噪声网络要预测的残差，就是我们自己生成的两个相邻状态之差。&lt;/p&gt;
&lt;h2 id="两个网络两个问题联合损失与自适应循环"&gt;两个网络，两个问题：联合损失与自适应循环&lt;/h2&gt;
&lt;p&gt;框架提出两个彼此独立的问题，正因为把它们分开，同一套做法才能搬到不同领域。&lt;/p&gt;
&lt;p&gt;第一个问题是：我现在在哪？阶段预测网络 $E_\phi(s)$ 回归输入在轨迹上的归一化位置 $t \in [0, 1]$。不确定这一点，就无从决定该减掉多少。&lt;/p&gt;
&lt;p&gt;第二个问题是：该去掉什么？噪声预测网络 $R_\theta(s, t)$ 接收当前状态和估计出的阶段，输出下一步要减掉的增量。两个网络联合训练，这种解耦是有意为之：一个决定往回走多远，另一个决定每一步卸下什么。&lt;/p&gt;
&lt;p&gt;在训练阶段，我们在含噪样本 $y = s_0$ 的基础上，自主施加 $K$ 步已知增量退化，构造级联状态序列：&lt;/p&gt;
$$
s_k = \mathcal{T}^{(k)}(y), \quad k \in \{0, 1, \dots, K\},
$$&lt;p&gt;对应的归一化退化阶段标签为 $t_k = \frac{k}{K}$。由于每一步的状态跃迁差值 $\Delta s_k = s_k - s_{k-1}$ 均为完全已知的自生成监督信号，阶段网络与残差网络的目标函数可分别显式写为：&lt;/p&gt;
$$
\mathcal{L}_{\text{stage}}(\phi) = \frac{1}{K} \sum_{k=1}^K \| E_\phi(s_k) - t_k \|_2^2,
$$$$
\mathcal{L}_{\text{res}}(\theta) = \frac{1}{K} \sum_{k=1}^K \| R_\theta(s_k, t_k) - (s_k - s_{k-1}) \|_2^2.
$$&lt;p&gt;在测试推理阶段，对于未知污染程度的初始输入 $y$，系统首先调用阶段估计器得到起始估计 $t^{(0)} = E_\phi(y)$。随后进入反向去噪迭代，在第 $m$ 步执行更新：&lt;/p&gt;
$$
s^{(m)} = s^{(m-1)} - R_\theta(s^{(m-1)}, t^{(m-1)}), \quad t^{(m)} = E_\phi(s^{(m)}).
$$&lt;p&gt;循环终止条件为 $t^{(m)} \le \epsilon$ 或步数达到上限。轻度污染的输入走的步数少于重度污染的输入，迭代次数随数据自适应，不需要预先设定调度。之所以一步步迭代，而不是一次把噪声全部拿掉，是因为多次小幅修正比一次大幅修正更能保住细节。单次前向被迫一次猜完整段距离，结果往往是过度平滑并丢失高频结构。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-阶段预测器和噪声预测器联合训练推理时按顺序使用"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="两个网络分别回答输入的污染程度和下一步该减掉什么。"
srcset="https://changnie.top/publications/mid/network-architectures_hu_1566b4edae827ea6.webp 320w, https://changnie.top/publications/mid/network-architectures_hu_3d6688501d42a2bc.webp 480w, https://changnie.top/publications/mid/network-architectures_hu_4cd67fbab398dbcf.webp 768w, https://changnie.top/publications/mid/network-architectures_hu_28438aab418e51ef.webp 1024w, https://changnie.top/publications/mid/network-architectures_hu_553f0d9f760b7cb3.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/mid/network-architectures_hu_1566b4edae827ea6.webp"
width="1080"
height="628"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/mid/network-architectures_hu_fa4ee4d0eff5ad1d.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;阶段预测器和噪声预测器联合训练，推理时按顺序使用。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-逆向自监督恢复循环沿着退化轨迹把含噪输入一步一个增量地带回更干净的状态"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="迭代相减能恢复单次前向完全没有触及的结构。"
srcset="https://changnie.top/publications/mid/image-denoising_hu_38c013594a842bfe.webp 320w, https://changnie.top/publications/mid/image-denoising_hu_d4013d48629c4df3.webp 480w, https://changnie.top/publications/mid/image-denoising_hu_a6f726418260f453.webp 768w, https://changnie.top/publications/mid/image-denoising_hu_c9f67438bb7be97e.webp 1024w, https://changnie.top/publications/mid/image-denoising_hu_1c90a075f53d86f0.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/mid/image-denoising_hu_38c013594a842bfe.webp"
width="1080"
height="259"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/mid/image-denoising_hu_64541d9ad19c83fc.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;逆向自监督恢复循环沿着退化轨迹，把含噪输入一步一个增量地带回更干净的状态。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="去噪是一种问题框定四维几何匹配与离散集合推广"&gt;去噪是一种问题框定：四维几何匹配与离散集合推广&lt;/h2&gt;
&lt;p&gt;对我们来说，这项工作最有意思的地方不是图像上的结果，而是把同一套形式指向那些没人会叫作去噪的问题时发生的事情。&lt;/p&gt;
&lt;p&gt;图像对应关系变成四维点云：一对匹配就是两幅视图中各取两个图像坐标所确定的点 $p_i = (u_i, v_i, u'_i, v'_i)$，汇聚为无序集合 $\mathcal{P} = \{p_1, \dots, p_N\}$。错误匹配是不属于几何对极约束的点。然而在无序集合中，常规加性相减失去了物理含义，因为一个错误的几何对应关系无法通过“在坐标上减去某个浮点向量”变成正确的对应关系。&lt;/p&gt;
&lt;p&gt;因此，MID 将算子推广为基于集合注意力的逐元素判定。噪声目标改写为逐元素的二元交叉熵损失：&lt;/p&gt;
$$
\mathcal{L}_{\text{set}}(\theta) = - \sum_{i=1}^N \left[ c_i \log \sigma(R_\theta(\mathcal{P})_i) + (1 - c_i) \log (1 - \sigma(R_\theta(\mathcal{P})_i)) \right],
$$&lt;p&gt;其中 $c_i \in \{0, 1\}$ 表示在自生成退化过程中注入的合成外点标签，$\sigma(\cdot)$ 为 Sigmoid 激活函数。网络不必回答该从错误对应里减去多少数值，它要判断的是这个元素该不该存在。用于消失点估计的线段同样变成无序点集，训练时把随机线段当作几何外点反复加入。&lt;/p&gt;
&lt;p&gt;多序列比对则把平均汉明距离偏低的冗余序列视为噪声。最后这个例子里，噪声是真实的氨基酸序列，这足以说明框架评估的是数据质量，而不是合成出来的假象。干扰一旦被表述成可移除的东西，几何估计中的外点剔除、对应关系筛选、线段过滤和序列抽样，就是同一个问题换了身衣服。乘性噪声在对数域可以变成加性，论文提到并用到了这一点。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-去除图像噪声的同一套形式也用来识别错误匹配"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="错误对应关系成为四维点集中的外点。"
srcset="https://changnie.top/publications/mid/correspondence-denoising_hu_384e7d642645887c.webp 320w, https://changnie.top/publications/mid/correspondence-denoising_hu_b86519a7e26fee12.webp 480w, https://changnie.top/publications/mid/correspondence-denoising_hu_48a0f8276de9c668.webp 768w, https://changnie.top/publications/mid/correspondence-denoising_hu_a5fdc047910ecfaa.webp 1024w, https://changnie.top/publications/mid/correspondence-denoising_hu_5b7e4b93230745b7.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/mid/correspondence-denoising_hu_384e7d642645887c.webp"
width="1080"
height="620"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/mid/correspondence-denoising_hu_c9d0cec14d99bfe6.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;去除图像噪声的同一套形式，也用来识别错误匹配。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="方法是怎么搭起来的"&gt;方法是怎么搭起来的&lt;/h2&gt;
&lt;p&gt;图像和医学体数据用 CNN 主干做阶段预测，上面接全连接层，增量由 CNN 编码器-解码器给出。点集和一维信号，包括对应关系、线段、氨基酸序列和表面肌电，两个网络都使用全连接层加 Transformer 编码器-解码器。理由前面已经说过：卷积假定数据有空间顺序，无序集合没有，所以是结构跟着数据走，而不是让数据迁就结构。&lt;/p&gt;
&lt;p&gt;没有一个领域拿到专门定制的公式，这正是这样搭建的目的。同一套方法用在图像散斑、MRI 噪声、肌肉信号污染、几何外点、错误对应、无效线段和冗余蛋白质序列上，变的只有主干。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-这里的干扰是真实序列而不是合成出来的假象"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="比对中的冗余序列被当作噪声处理。"
srcset="https://changnie.top/publications/mid/protein-results_hu_f9ab750505dcc426.webp 320w, https://changnie.top/publications/mid/protein-results_hu_8401d6fafd7bea6d.webp 480w, https://changnie.top/publications/mid/protein-results_hu_b1d1879395a11d07.webp 768w, https://changnie.top/publications/mid/protein-results_hu_bc71e08d021ad784.webp 1024w, https://changnie.top/publications/mid/protein-results_hu_5742a2f6db1c7cf5.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/mid/protein-results_hu_f9ab750505dcc426.webp"
width="1080"
height="512"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/mid/protein-results_hu_69bfd938f8834507.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;这里的干扰是真实序列，而不是合成出来的假象。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="我们从中学到了什么"&gt;我们从中学到了什么&lt;/h2&gt;
&lt;p&gt;监督信号不必来自干净终点，它可以由你自己继续施加一段可模拟的退化来制造。正是这一处替换，让框架在成对数据不存在的地方也能用。&lt;/p&gt;
&lt;p&gt;局部线性化加迭代，把一个无解的全局逆问题变成一串可解的局部逆问题，消融实验就是证据。单次前向的模型失败时，正确的反应不是把模型做大，而是分解。&lt;/p&gt;
&lt;p&gt;把“我在哪”和“该去掉什么”分开，是同一套框架能够迁移的原因。相比任何结构上的选择，这项解耦才是可复用的部分。自监督策略里藏着模态假设，值得逐个审视。对数据结构不作任何断言的表述，会比暗地里要求平滑性的表述走得更远。迭代是保住细节的机制，而不只是优化上的便利。&lt;/p&gt;
&lt;h2 id="它在哪里止步"&gt;它在哪里止步&lt;/h2&gt;
&lt;p&gt;极端噪声是论文明确指出的失效场景。信号结构几乎被完全淹没时，局部线性化展开的前提不复存在，迭代相减能依赖的部分结构太少，后续工作我们指向生成式先验这个方向。&lt;/p&gt;
&lt;p&gt;第二个代价是时间。迭代必然比单次去噪慢，对实时使用是瓶颈。我们建议的补救办法是知识蒸馏和更高效的采样。&lt;/p&gt;
&lt;p&gt;方法里还有两件事我们看得见却没有刻画清楚。加噪步数和每步增量的大小属于设计选择，不是推导出来的量，我们没有研究方法对它们的敏感性。阶段估计的误差还会在随后的每一次相减中累积，这种传播值得我们投入比现在更多的关注。&lt;/p&gt;
&lt;h2 id="这属于哪一类模型与扩散模型ddpm--score-sde的本质边界"&gt;这属于哪一类模型：与扩散模型（DDPM / Score-SDE）的本质边界&lt;/h2&gt;
&lt;p&gt;有一条边界值得说清楚，因为每次谈起这项工作都会碰到它。MID 不是生成模型。&lt;/p&gt;
&lt;p&gt;扩散模型基于随机微分方程（SDE）框架，其前向过程设计为一个显式的 Ornstein-Uhlenbeck 漂移扩散过程：&lt;/p&gt;
$$
\mathrm{d}x = f(x, t)\mathrm{d}t + g(t)\mathrm{d}w,
$$&lt;p&gt;其核心数学要求是当 $t \to T$ 时，边缘分布必须渐近收敛至已知的各向同性高斯先验 $p(x_T) \sim \mathcal{N}(0, \mathbf{I})$。这导致扩散模型本质上是在学习经验数据分布的分数函数（Score Function）$\nabla_x \log p_t(x)$，核心价值是从纯白噪声中随机采样出符合经验分布的新数据。&lt;/p&gt;
&lt;p&gt;MID 的定位与此存在本质差异：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先验分布假设不同&lt;/strong&gt;：MID 从未假设退化的终点是高斯分布。它的退化算子可以是物理传感器的暗电流截断、结构化几何外点插入或离散字符冗余。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目标函数不同&lt;/strong&gt;：MID 并不最小化数据分布与高斯先验之间的 KL 散度，它学习的是确定性或准确定性的局域退化位移向量场，目标是恢复特定观测实例在物理退化前的原生状态，而非采样新的可能态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出特性的确定性&lt;/strong&gt;：这也决定了 MID 不具备“无中生有”的生成能力。当输入信号被极端噪声完全破坏、拓扑结构荡然无存时，局域展开假设失效，MID 无法像生成模型那样基于模式先验凭空重构出看似逼真但未经测量的幻觉细节。这种保守性在科学计算与医学诊断等不可容忍虚假幻觉的场景中，反而是至关重要的安全属性。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它去掉的是训练中见过的噪声，输出是输入的更干净版本，不是新样本。这条界线让框架对自己能承诺什么保持诚实。&lt;/p&gt;</description></item><item><title>基于激光雷达–相机融合与 IMM-UKF 的高速公路三维目标检测与跟踪</title><link>https://changnie.top/zh/publications/dtfi/</link><pubDate>Tue, 04 Apr 2023 00:00:00 +0000</pubDate><guid>https://changnie.top/zh/publications/dtfi/</guid><description>&lt;h2 id="每两米就盲一次的感知"&gt;每两米就盲一次的感知&lt;/h2&gt;
&lt;p&gt;这项工作真正的设计约束是延迟，而不是精度。&lt;/p&gt;
&lt;p&gt;多数基于融合的三维检测算法在工作站上也只有不到 15 Hz，而开车的并不是工作站。车载计算平台算力更低，而且它并不专供感知：规划、控制以及整个系统的其他模块都要同时运行，同一份预算还要再被分走一块。&lt;/p&gt;
&lt;p&gt;把 15 Hz 的代价换成一个具体数字。高速行驶时，相邻两帧之间车辆前进约 1.94 米。在这段距离里，感知系统实际上看不到刚刚发生的变化，我们把这叫做时间盲区（time blind）。后果一点都不抽象：一个按两米之外那辆车的位置做反应的系统，反应的是一个已经不存在的场景。&lt;/p&gt;
&lt;p&gt;30 Hz 能大幅缩短这段盲区，也给其他模块留出运行空间。这个目标，以及它必须在可负担的硬件上、而不是在开发机上达成，决定了论文里的每一个选择。它还意味着我们做了一次有意的取舍：纯激光雷达方法的检测精度高于融合方法，我们从一开始就没打算在这一轴上赢过它们，目标是在它们达不到的频率下依然有竞争力。&lt;/p&gt;
&lt;h2 id="三类融合方案各自的代价"&gt;三类融合方案各自的代价&lt;/h2&gt;
&lt;p&gt;把图像和点云结合起来的路子有三种，每一种都要付出代价。&lt;/p&gt;
&lt;p&gt;先在二维上检测、再把框提升到点云里的视锥（frustum）方案，会让整个系统依赖那个二维检测器。图像分支一旦出错，误差就传到三维，没有挽回的余地。&lt;/p&gt;
&lt;p&gt;在特征层或候选框层融合、端到端训练，效果很强，代价是区域级融合的过程会丢掉原始信息。这类方法往往结构复杂、运行缓慢，而运行缓慢正是我们要解决的问题。&lt;/p&gt;
&lt;p&gt;第三类把点云投影到图像特征图上，用在那里找到的内容增强每个点。架构因此离纯激光雷达检测器很近，这正是我们想要的；柱状编码器又把运行时间压得很低。我们选这一类，理由就在这里。&lt;/p&gt;
&lt;p&gt;纯激光雷达检测这一支同样有谱系可循。基于体素的三维卷积精度好，速度慢。稀疏卷积提高了效率，还是不够快。柱状表示把问题降到二维卷积，在精度与速度之间取得了最好的平衡，我们就建在它上面。&lt;/p&gt;
&lt;p&gt;跟踪环节用经典滤波器而不是学习式滤波器，是有意为之，不是图稳妥。学习式跟踪器在实时条件下的表现很差，拿神经网络做数据关联又太耗时，匈牙利算法因此保留下来。批处理式跟踪被排除是另一个原因：它要用到全部数据，而行驶中的系统永远只有历史。二维跟踪也被排除，因为它给不出目标在三维中的位置和尺寸。&lt;/p&gt;
&lt;p&gt;滤波器方案里最接近的一个是知名的三维跟踪器，简单高效，只用一个匀速模型。匀速模型无法表示正在转弯的车辆，它的状态估计于是恰恰在预测最要紧的场合退化。还有一个单目跟踪器，在一台相机下使用扩展卡尔曼滤波。城市道路场景中也有一套 JPDA-IMM-UKF 系统，检测环节用传统聚类，跑出来的轨迹是碎的，下游跟踪因此受影响。&lt;/p&gt;
&lt;p&gt;IMM 本身在航空领域是标配，在车辆上却几乎见不到，原因很说明问题。飞机的机动幅度很大：速度变化大，航向变化快，切换模型值得那份复杂度。车辆运动要温和得多。再加上汽车场景里可供参考的工作很少，IMM 需要的那些参数很难设定。&lt;/p&gt;
&lt;h2 id="难在哪里"&gt;难在哪里&lt;/h2&gt;
&lt;p&gt;在完整图像分辨率下逐点融合，还要跑满 30 Hz，这首先是算力预算问题，其次才是精度问题。每个点挂多少图像通道，就是你手里那个旋钮；我们把它当作取舍来调，没有一味取最大值。&lt;/p&gt;
&lt;p&gt;数据层融合（data-layer fusion）还有一种安静而具体的脆弱之处。每个点都要对应到一个图像位置，标定一旦有误差，采样到的特征对每个点都落在错误的像素上，而由此得来的输入看上去完全合理。没有任何错误信号，系统并不知道自己拿到的是垃圾。&lt;/p&gt;
&lt;p&gt;如果非选一个运动模型不可，那就怎么选都吃亏。匀速模型简单，处理直线运动很强。恒转率恒速模型能处理旋转。单独用哪一个，在对方的场景里都会出错。答案是在两者之间切换，而切换又带出一组先验参数：状态切换矩阵、状态协方差、过程噪声与量测噪声协方差。按惯例这些参数凭经验设定，而经验值并不能保证适用于另一个场景。这是实打实的方法问题，不是调参上的小麻烦。&lt;/p&gt;
&lt;p&gt;非线性问题同样存在。匀速模型的转移对状态是线性的。恒转率模型的转移里，位置由速度、偏航角速度乘以航向的正弦与余弦表示，这是非线性的，滤波器因此需要 sigma 点，不能只做一次普通的卡尔曼更新。&lt;/p&gt;
&lt;p&gt;跟踪还得同时扛住中断、抵抗噪声。遮挡会让检测丢失，对新建轨迹过于宽松又会放进检测器的误检。这两种失效模式的方向正好相反。&lt;/p&gt;
&lt;p&gt;物理条件还给检测设了上限，与架构无关。在我们的一个例子里，三辆很远的车各自只返回三到五个激光点。点太少，检测就是不触发。&lt;/p&gt;
&lt;h2 id="附加邻域而非单个像素"&gt;附加邻域，而非单个像素&lt;/h2&gt;
&lt;p&gt;这个思路的前一半，针对的正是数据层融合的脆弱。我们不在投影位置上只采一个像素，而是在投影点周围取一个 5 × 5 的图像特征窗口，把整个邻域附加到这个点上。&lt;/p&gt;
&lt;p&gt;这样一来，网络学到的是两个模态之间的对应关系，而不是完全信任标定。一个点的投影偏了一两个像素，它仍能在自己的窗口里找到相关的外观特征。这是检测这一半里最有价值的一次概念上的改动，也正是它分开了两种融合：一种扛得住标定误差，另一种会无声地退化。&lt;/p&gt;
&lt;p&gt;特征取自一个全分辨率的提取器，理由与上面相关：点必须映射到精确的图像位置，这个窗口才有意义，而降采样的特征图会毁掉这份精度。编码器以 VGG 为基础，改了两处。我们把通道数压下来，让优化过程可控；又在网络中间截断，避免特征图缩得太小，缩得太小就没法用来生成融合数据。自顶向下的解码器做上采样，与同分辨率的编码器特征图合并，输出维度由 1 × 1 卷积控制。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-局部窗口学习两个模态之间的对应关系而不假设标定完全准确"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="图像特征在投影位置附近采样，而不是取自单个像素。"
srcset="https://changnie.top/publications/dtfi/image-features_hu_1e00f4c9f3efb140.webp 320w, https://changnie.top/publications/dtfi/image-features_hu_7809a7de87feb080.webp 460w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/dtfi/image-features_hu_1e00f4c9f3efb140.webp"
width="460"
height="382"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/dtfi/image-features_hu_64b0a2b840716456.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;局部窗口学习两个模态之间的对应关系，而不假设标定完全准确。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="压掉高度轴换来帧率"&gt;压掉高度轴，换来帧率&lt;/h2&gt;
&lt;p&gt;增强后的点随后进入柱状编码器。点被分配到鸟瞰图网格里，网格有单元尺寸，每个单元能留多少个点也有上限，超出上限的部分随机下采样。高度轴被压成一个单元，这就是把三维卷积变成二维卷积的那个技巧，帧率正是从这里来的。&lt;/p&gt;
&lt;p&gt;每个点带着自己的几何与外观，另外还有五个偏移特征，描述它相对于所在单元均值和体素中心的位置。一个 PointNet 层把这些特征扩展开，最大池化把每个单元压缩成一个代表，再把这些单元散布回一张伪图像。接着由二维卷积骨干和区域候选头预测带朝向的三维框。&lt;/p&gt;
&lt;p&gt;柱状表示的代价有两处：单元内部的高度结构被丢弃，检测范围被相机视场限制住，因为融合需要像素。这两点我们都接受，算作达成频率目标的代价。&lt;/p&gt;
&lt;p&gt;有一项损失值得单独说，它看起来多余，其实不然。偏航角残差取预测角与锚框角之差的正弦，而正弦是对称的。车头朝前和车头朝后的车给出的残差完全一样。只靠回归分不开这两种情况，损失里因此另设了一项方向分类。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-融合增强后的点云被编码成鸟瞰伪图像"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="柱状表示压掉高度轴，让二维检测器来完成工作。"
srcset="https://changnie.top/publications/dtfi/detector_hu_a8047e6092f1f063.webp 320w, https://changnie.top/publications/dtfi/detector_hu_d7725cd69cf9f508.webp 480w, https://changnie.top/publications/dtfi/detector_hu_b5ac6e6462c23396.webp 768w, https://changnie.top/publications/dtfi/detector_hu_a6c9308f064a74e1.webp 1024w, https://changnie.top/publications/dtfi/detector_hu_7f84c8e9b83b0f2a.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/dtfi/detector_hu_a8047e6092f1f063.webp"
width="1080"
height="413"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/dtfi/detector_hu_30f9ae057f913415.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;融合增强后的点云被编码成鸟瞰伪图像。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="两个运动模型以及一次对先验的搜索"&gt;两个运动模型，以及一次对先验的搜索&lt;/h2&gt;
&lt;p&gt;跟踪器先预测已有的每条轨迹，再按三维重叠度用匈牙利算法把预测与检测关联起来，更新匹配上的轨迹，并对所有未匹配的对象做新生与终止的维护。&lt;/p&gt;
&lt;p&gt;有意思的地方在更新这一步。两个模型并行运行，一个用匀速状态，一个用恒转率恒速状态。混合概率由上一时刻的模型权重和切换矩阵算出，为每个模型构造混合估计，各自的 sigma 点滤波向前预测，再把两者合成 IMM 的预测。关联完成后，每个模型用匹配到的检测做更新，模型概率由量测似然重新计算。这一对模型在构造上就是互补的：匀速模型以很低的代价把线性运动估计得很好，恒转率模型补上它处理不了的旋转情况。&lt;/p&gt;
&lt;p&gt;轨迹生命周期管理用两条护栏应对中断与噪声之间的张力。未匹配的轨迹会在有限帧数内继续预测，之后才终止，因为一条轨迹失去匹配通常意味着被遮挡，而不是车辆消失，重新起一条轨迹反而会把轨迹割碎。未匹配的检测必须连续多帧出现，才会生成新轨迹，偶尔的误检就被滤掉了。两条规则守的是相反的失效模式。&lt;/p&gt;
&lt;p&gt;先验参数是我们偏离惯例的地方。切换矩阵和各协方差没有凭经验设定，我们把它当成一个优化问题，用粒子群优化（PSO）拟合出来。这个名字容易招来误读，值得说清楚：粒子群优化是在参数空间里做无导数搜索，跟粒子滤波毫无关系，这项工作里也没有出现过任何粒子滤波。&lt;/p&gt;
&lt;p&gt;关于这次拟合有两点要讲，与其被人发现，我们宁愿自己说出来。优化是离线的，而且按数据集分别进行，所以它不是在线自适应；参数是对拟合所用的那批数据拟合出来的。另外，一个对称的切换矩阵本身并不能说明数据集里的车辆运动更偏向匀速模型，尽管很容易那样去读。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-跨过一次漏检往往比把它检测出来更划算"&gt;
&lt;div class="flex justify-center"&gt;
&lt;div class="w-full"&gt;&lt;img
alt="在检测器没有输出的帧上，跟踪轨迹依然延续。"
srcset="https://changnie.top/publications/dtfi/tracking-results_hu_f58947ba19f6872c.webp 320w, https://changnie.top/publications/dtfi/tracking-results_hu_f34224580476ee54.webp 480w, https://changnie.top/publications/dtfi/tracking-results_hu_4ca76579f06a126d.webp 768w, https://changnie.top/publications/dtfi/tracking-results_hu_d70df992b8c4d4a5.webp 1024w, https://changnie.top/publications/dtfi/tracking-results_hu_1e33be290f0a8458.webp 1080w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1279px) 88vw, 928px"
src="https://changnie.top/publications/dtfi/tracking-results_hu_f58947ba19f6872c.webp"
width="1080"
height="270"
loading="lazy"
data-zoomable&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a class="paper-image-original" href="https://changnie.top/publications/dtfi/tracking-results_hu_1ae2b4fed053dd32.webp" target="_blank" rel="noopener"&gt;查看原图 ↗&lt;/a&gt;
&lt;figcaption&gt;跨过一次漏检，往往比把它检测出来更划算。&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="我们从中得到什么"&gt;我们从中得到什么&lt;/h2&gt;
&lt;p&gt;延迟预算是设计的输入，不是事后测出来的指标。一旦跨过实时这条线，剩下的预算才轮到精度，架构就该围绕这个先后次序来组织。&lt;/p&gt;
&lt;p&gt;局部感受野是完美标定的廉价替代。两个传感器本来就对不齐，在邻域里学习对应关系，比假设某个像素就是对的好用。&lt;/p&gt;
&lt;p&gt;先给问题降维，再去优化网络。柱状化是让整件事成立的那个技巧，不是附带的处理。&lt;/p&gt;
&lt;p&gt;在这类问题里，混合表示胜过纯粹的单一路线：学到的外观特征、显式的几何投影、显式的状态估计器，各做各擅长的事。模块化在出问题时也有好处，每个组件都有明确的职责，也有各自的失效特征。&lt;/p&gt;
&lt;p&gt;互补胜过调参。两个在不同情况下失效的模型，好过一个在哪都不出彩的模型。&lt;/p&gt;
&lt;p&gt;先验一旦真的猜不出来，就去搜。承认 IMM 的经验值可能无法迁移，是这篇论文里最有价值的一句方法论表述。&lt;/p&gt;
&lt;h2 id="它做不到什么"&gt;它做不到什么&lt;/h2&gt;
&lt;p&gt;老实的总结是：这个系统在精度上有竞争力，但不领先。它在检测速度上有明显改善，精度上仍落后于最好的纯激光雷达方法，这正是我们选的取舍。&lt;/p&gt;
&lt;p&gt;IMM-UKF 对运动方向变化很小的目标处理得不好。一个在多种假设之间切换的滤波器，需要有可观测的机动，切换才划算。&lt;/p&gt;
&lt;p&gt;检测范围受相机视场限制，这是这种融合设计本身带来的。远处的稀疏目标会失败，前面三到五个点的例子已经说明这一点。跟踪器与检测器是两个分开的阶段，没有联合优化，这是我们在未来工作里指出的方向之一；另一个方向是在不牺牲帧率的前提下把精度做上去。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语&lt;/h2&gt;
&lt;p&gt;我们做出来的东西把三维检测与三维多目标跟踪整合成一条流水线，用高速公路行驶的实时要求来衡量：一个高效输出带朝向框的检测器，一个在运动不确定的情况下跟随目标的跟踪器，后者靠的是数据关联、交互式多模型滤波和拟合出来的参数。我们并不是说它是最准确的系统，而是说它的精度在融合方案达不到的频率上是实打实的；在高速公路上，落后世界两米，本身就是一种不准确。&lt;/p&gt;</description></item></channel></rss>