图像拼接-USID++精读-Parallax-Tolerant Unsupervised Deep Image Stitching
图像拼接的经典算法UDIS++精度和逐步推导
解决了什么问题
- 解决传统图像拼接方法的局限性
- 复杂几何特征适应性差:传统方法依赖复杂几何特征(点、线、边等)来提升拼接性能,但这些手工制作的特征仅适用于具有足够几何结构的特定自然场景。在医学图像、工业图像以及低纹理、低光照或低分辨率的自然图像等缺乏足够几何结构的场景中,传统方法的拼接质量会变差,甚至拼接失败。而 UDIS++ 通过自适应学习语义特征,对各种场景具有自然的鲁棒性,不受场景几何结构的限制。
- 计算成本高:在具有丰富几何结构的场景中,传统方法计算复杂几何特征的成本极高,运行速度难以满足实际应用需求 。相比之下,UDIS++ 借助 GPU 加速,在速度上远超传统方法,能够更高效地处理图像拼接任务。
- 克服深度学习图像拼接方法的不足
- 大视差处理能力欠缺:深度学习拼接方法通过学习语义特征能应对多种不利条件,但受基于单应性的对齐模型限制,无法有效处理大视差情况,后续重建还会在视差区域引入模糊。UDIS++ 提出结合全局单应性和局部薄板样条运动的鲁棒灵活变形模型,通过联合优化对齐和变形,实现了重叠区域的精准对齐和非重叠区域的形状保持,有效解决了大视差问题,且避免了模糊现象的出现。
- 泛化能力不佳:现有深度学习拼接方法在跨数据集和跨分辨率条件下,泛化能力表现不理想 。UDIS++ 设计了简单有效的迭代策略,增强了变形在不同数据集和分辨率下的适应性,提升了模型的泛化能力,能更好地适应不同来源和质量的图像。
无监督变形构建(Unsupervised Warp Construction)
1、变形参数化(Warp Parameterization)
采用单应性变换和薄板样条(TPS)变换统一表示的方式。单应性变换是一个具有 8 个自由度的可逆映射,通常参数化为四个顶点的运动,用 DLT 方法求解为 3×3 矩阵,用于提供全局线性变换。但在非平面场景下,单应性变换难以实现准确对齐。而 TPS 变换是一种非线性、灵活的变换,通过最小化由数据项和失真项组成的能量函数,可实现高效的局部变形。具体通过确定两组控制点(在平面图像和变形图像上一一对应),求解相关参数实现。在实际操作中,先回归单应性变换得到控制点的初始运动,再预测残差运动,为进一步的灵活变形提供支持。
TPS的解释
通俗解释:
TPS 可以理解为在图像上放置一些控制点,然后根据这些点的移动来调整整个图像的形状。比如,想象在一张弹性膜上钉几个钉子,拉动这些钉子时,膜会自然弯曲,而 TPS 就是模拟这种弯曲过程,使得变形后的图像尽可能平滑,同时保持控制点的位置正确。
理论解释:
TPS(Thin Plate Spline,薄板样条变换)是一种非刚性几何变换模型,其核心思想是将图像变形视为弹性薄板在控制点约束下的最小弯曲能量变形。具体原理如下:
- 数学公式:
- 对于输入图像中的任意点 p,其变换后的坐标 \(p'\) 由以下公式计算: \(p' = \mathcal{T}(p) = C + Mp + \sum_{i=1}^N w_i O(\|p - p_i\|_2)\)
- 参数说明:
- \(C \in \mathbb{R}^{2 \times 1}\) 和 \(M \in \mathbb{R}^{2 \times 2}\) 表示全局仿射变换(平移、旋转、缩放)。
- \(w_i \in \mathbb{R}^{2 \times 1}\) 是控制点 \(p_i\) 的权重。
- \(O(r) = r^2 \log r^2\) 是径向基函数,用于计算每个控制点对周围点的影响范围。
- 能量最小化:
- TPS 通过最小化薄板的弯曲能量来求解参数: \(\min \left( \sum_{i=1}^N \| \mathcal{T}(p_i) - p'_i \|^2 + \lambda \iint \left( \nabla^2 \mathcal{T} \right)^2 dxdy \right)\)
- 第一项是数据项,保证控制点对齐;第二项是正则化项,约束薄板的平滑性。
为什么用TPS
- 处理大视差场景:
- 单应性变换假设场景是平面的,无法处理不同深度物体的视差(如近景树与远景山的错位)。
- TPS 的局部非线性变形能力允许不同区域独立调整,解决大视差问题(如图 1a 中树的位置差异)。
- 形状保持与平滑性:
- 通过正则化项约束,TPS 变形后的图像非重叠区域保持原有结构,避免传统多单应性方法的网格扭曲(如图 5 中 APAP 的网格变形 vs UDIS++ 的平滑过渡)。
2、变形流程(Pipeline of Warp)
2.1 特征提取
采用预训练的 ResNet50 作为骨干网络,对参考图像\(I_{r}\)和目标图像\(I_{t}\)进行处理。ResNet50 将 3 通道的图像映射为高维语义特征,同时把图像分辨率缩放为原始的 1/16。
参考图像被提取为(\(F_{r}^{1 / 16}\),目标图像被提取为\(F_{t}^{1 / 16}\))
目的:提取图像中的关键语义信息,为后续计算图像间的相关性以及估计变换参数做准备。这些语义特征包含了图像的重要内容信息,有助于理解图像的结构和特征分布。
2.2 计算特征相关性并估计单应性变换
上下文相关层Contextual Correlation Layer
是一种特殊的网络层结构,能捕捉特征图中各元素间的上下文关系,即元素与周围元素的关联。在处理图像特征时,不仅关注单个像素或特征点,还考虑其周围区域的信息,这对理解图像内容和结构很重要。在图像拼接中,能帮助找到不同图像中相似或对应的区域。
处理特征图\(F_{r}^{1 / 16}\)和\(F_{t}^{1 / 16}\)
\(F_{r}^{1 / 16}\)和\(F_{t}^{1 / 16}\)是从参考图像和目标图像提取的分辨率为原始 1/16 的特征图,包含图像的语义信息。上下文相关层对它们处理时,会计算特征图中每个位置的特征与另一特征图对应位置及周围特征的相似度或相关性。例如,若参考图像特征图某区域是树的特征,上下文相关层会在目标图像特征图中找相似特征区域,可能是同一棵树在不同视角下的特征,从而确定这两个区域的相关性。
聚合成 2 通道特征流
上下文相关层处理后,把\(F_{r}^{1 / 16}\)和\(F_{t}^{1 / 16}\)间的相关性信息聚合成 2 通道特征流。一个通道可能表示相关性的强度,另一通道表示相关性的方向或其他相关属性。
这种特征流包含了两张图像间丰富的关联信息,后续回归网络可据此估计单应性变换参数,确定图像间的全局变换关系,实现图像的初步对齐。
估计单应性矩阵H
通过回归网络根据这些特征流来估计单应性变换的 4 点参数化。
-
训练回归网络:训练阶段,会有大量的图像对样本,每个样本都包含一对参考图像和目标图像,以及它们之间真实的单应性变换矩阵(这是已知的标签信息)。将这些样本的特征图经过上下文相关层处理后得到的 2 通道特征流输入回归网络,网络会输出一个预测的单应性变换矩阵。通过比较预测的单应性变换矩阵和真实的单应性变换矩阵之间的差异(通常使用损失函数来衡量这种差异,如均方误差损失函数),然后利用反向传播算法来调整回归网络中各层的权重,使得网络的预测结果越来越接近真实的单应性变换矩阵。
-
估计单应性变换:经过训练好的回归网络,对于新的图像对,将它们的特征图经过上下文相关层处理后的 2 通道特征流输入网络,网络就会输出一个估计的单应性变换矩阵。这个矩阵包含了平移、旋转、缩放等变换信息,通过这个矩阵可以对目标图像进行变换,使其在全局上与参考图像有一个初步的对齐。例如,根据这个单应性变换矩阵,可以将目标图像进行旋转和平移,使得它与参考图像在整体的位置和方向上更加接近。
2.3 高分辨率特征图变形与 TPS 变换预测
higher resolution
利用前面估计得到的单应性变换,对更高分辨率(\(F_{t}^{1 / 8}\))的特征图进行变形,使得特征图中的内容在全局层面上有一个大致的对齐。这就像是给后续更精细的局部调整确定了一个整体的框架
TPS变换预测
-
预测准备:经过高分辨率特征图变形后,再次使用上下文相关层和回归网络。此时上下文相关层会对变形后的高分辨率特征图进行处理,进一步挖掘其中的特征相关性信息。
-
残差运动预测:回归网络基于上下文相关层处理后的信息,预测控制点的残差运动。这里的残差运动是相对于之前单应性变换所产生的初始运动而言的。也就是说,单应性变换给出了一个初始的全局运动估计,而残差运动则是在此基础上,对控制点的运动进行更精细的调整,以适应局部的变形需求。
-
TPS 变换生成:根据预测得到的控制点残差运动,最终得到 TPS 变换。TPS 变换具有局部非线性变形的能力,它能够根据这些残差运动,对图像进行局部的灵活调整。比如在图像拼接中,如果有部分区域因为视角差异等原因出现局部的错位,TPS 变换就可以通过控制点的调整,对这些区域进行局部的变形,使得它们能够准确对齐,同时又不会影响到其他区域的形状,从而实现既保证局部区域的精准对齐,又能维持整体图像形状的效果。
3、变形优化(Optimization of Warp)
为实现内容对齐和形状保持,设计了包含两方面的目标函数\(L^{w}\),即\(\mathcal{L}^{w}=\mathcal{L}_{alignment }^{w}+\omega \mathcal{L}_{distortion }^{w}\) 。
在对齐方面,通过定义对齐损失,鼓励重叠区域在像素级保持一致;
在失真方面,通过引入网格内约束和网格间约束来减少投影失真。
网格内约束通过惩罚网格边缘向量幅度超过阈值的情况,防止网格形状过度缩放;
网格间约束通过鼓励相邻网格边缘共线,来保持非重叠区域的几何结构 。
无监督无缝合成(Unsupervised Seamless Composition)
在经过前面的无监督变形构建步骤,得到对齐后的参考图像 \(I_r\) 和目标图像 \(I_t\) 后,需要将它们进行合成。这部分的核心思想是通过学习一个合成掩码(composite mask),来融合两幅图像,使得拼接处过渡自然,同时保证合成图像的内容完整性和视觉一致性。
1.合成掩码的学习
- 掩码生成网络:使用一个神经网络(通常是卷积神经网络)来生成合成掩码 M。这个掩码是一个与图像相同尺寸的矩阵,其值在 0 到 1 之间。掩码中的每个像素值表示在该位置参考图像和目标图像的融合比例。例如,值为 0 表示完全使用目标图像的像素,值为 1 表示完全使用参考图像的像素,介于 0 和 1 之间的值表示按比例融合。
- 学习过程:网络以对齐后的图像 \(I_r\) 和 \(I_t\) 作为输入,通过一系列的卷积层、池化层和激活函数等操作,输出合成掩码 M。在训练过程中,网络的参数会不断调整,以优化后续定义的目标函数。
2.优化目标
为了得到高质量的合成结果,设计了包含多个部分的目标函数 \(L^c\),主要由以下几个损失项组成:
(1)内容损失(Content Loss)
- 目的:确保合成图像保留原始图像的内容信息。
- 公式:\(\mathcal{L}_{content}^c = \| M \odot I_r + (1 - M) \odot I_t - I_{gt} \|_1\) 其中,\(\odot\) 表示逐元素相乘,\(I_{gt}\) 是一个理想的合成图像(在无监督学习中,通常通过一些启发式方法或假设来近似)。这个损失项衡量了合成图像与理想合成图像之间的差异,通过最小化该损失,使得合成图像尽可能接近我们期望的内容。
(2)接缝损失(Seam Loss)
- 目的:消除拼接处的明显接缝,使拼接过渡自然。
- 公式:\(\mathcal{L}_{seam}^c = \| \nabla(M \odot I_r + (1 - M) \odot I_t) \|_1\) 其中,\(\nabla\) 表示梯度算子。该损失项计算了合成图像在梯度上的差异,因为接缝处往往会出现明显的梯度变化。通过最小化这个损失,可以使拼接处的梯度变化尽可能平滑,从而减少接缝的可见性。
(3)平滑损失(Smoothness Loss)
- 目的:保证合成掩码的平滑性,避免出现突然的过渡。
- 公式:\(\mathcal{L}_{smooth}^c = \| \nabla M \|_1\) 该损失项计算了合成掩码的梯度,通过最小化它,可以使掩码在空间上变化更加平滑,进而使得图像的融合过渡更加自然。
(4)总损失函数
- 综合以上三个损失项,得到总损失函数:\(\mathcal{L}^c = \alpha \mathcal{L}_{content}^c + \beta \mathcal{L}_{seam}^c + \gamma \mathcal{L}_{smooth}^c\) 其中,\(\alpha\)、\(\beta\) 和 \(\gamma\) 是超参数,用于平衡各个损失项的相对重要性。在训练过程中,通过不断调整这些超参数和网络的参数,使得总损失函数最小化,从而得到最优的合成掩码。
3. 合成过程
- 在得到最优的合成掩码 M 后,最终的合成图像 \(I_{comp}\) 可以通过以下公式计算:\(I_{comp} = M \odot I_r + (1 - M) \odot I_t\) 即根据掩码的值,将参考图像和目标图像按比例进行融合,得到无缝拼接的合成图像。
迭代变形自适应(Iterative Warp Adaption)
为了将预训练模型应用到其他数据集(跨场景和跨分辨率),提出了迭代变形自适应策略。设定一个无监督优化目标\(\mathcal{L}_{adaption }^{w}=\left\| I_{r} \cdot \varphi(1, \mathcal{T} \mathcal{P} \mathcal{S})-\varphi\left(I_{t}, \mathcal{T} \mathcal{P} \mathcal{S}\right)\right\| _{1}\) ,去除预训练模型已学习的单应性对齐损失和失真损失,只调整局部对齐。在新数据集只有一个样本时也能稳定优化,通过设置阈值\(\tau\)和最大迭代次数T控制迭代过程。每次迭代时,根据优化目标调整模型,直到满足停止条件。在这个过程中,图像始终是参考图像\(I_{r}\)和目标图像\(I_{t}\),通过不断调整 TPS 变换来更好地适应新数据集,减少拼接误差,提升拼接效果
更多推荐
所有评论(0)