无监督粗对齐
1.基于消融的策略
主要是为了找到重叠区,去除无效区
2.拼接域的Transformer Layer
无监督图像重建
1.低分辨率变形
单应性变换仅能表示同一深度的空间变换,在实际的图像拼接任务中,由于输入图像的多样性和复杂性,经过第一阶段的粗对齐后,图像往往无法完全对齐。为了让网络能够感知到这些错位区域,特别是在高分辨率和大视差的情况下,设计了低分辨率变形分支,先在低分辨率下对图像进行处理和学习。
图像下采样
将第一阶段得到的变形图像下采样到低分辨率,论文中设定为 \(256×256\)。下采样的目的是降低计算复杂度,同时减少图像中的细节信息,使得网络能够更专注于学习图像的整体变形规则。
2.2 编码器 - 解码器网络结构
使用由 3 个池化层和 3 个反卷积层组成的编码器 - 解码器网络进行重建。具体结构如下:
- 编码器部分:通过池化层逐步降低特征图的分辨率,提取图像的高层次语义特征。池化操作可以减少特征图的尺寸,同时保留重要的特征信息。
- 解码器部分:使用反卷积层将低分辨率的特征图逐步上采样到原始图像的分辨率,重建出与输入图像相似的输出。反卷积操作可以增加特征图的尺寸,恢复图像的细节信息。
卷积层的滤波器数量依次设置为 \(64, 64, 128, 128, 256, 256, 512, 512, 256, 256, 128, 128, 64, 64, 3\),并采用跳跃连接来连接相同分辨率的低级和高级特征。跳跃连接的作用是将编码器阶段的低级特征信息传递到解码器阶段,帮助解码器更好地恢复图像的细节信息。
内容掩码(Content Mask)
1. 作用
内容掩码的主要作用是确保重建图像在整体内容上与变形图像保持一致。它的核心思想是引导模型关注图像中实际存在内容的区域,而忽略那些可能是填充或无效的区域,从而使重建图像能够尽可能准确地还原变形图像的内容。
2. 推导与生成
内容掩码是通过将参考图像 \(I^{A}\) 和目标图像 \(I^{B}\) 替换为全一矩阵 \(E_{H × W}\) 得到的。这里的 H 和 W 分别表示图像的高度和宽度。
设 \(I^{A}\) 和 \(I^{B}\) 是经过单应性变换后的变形图像,在图像拼接任务中,我们关心的是这两幅图像所覆盖的实际内容区域。为了生成内容掩码 \(M_{C}\),我们将 \(I^{A}\) 和 \(I^{B}\) 对应的位置都设为 1,表示这些区域是有实际内容的,而其他区域则保持为 0。
例如,假设 \(I^{A}\) 和 \(I^{B}\) 是二维图像矩阵,对于 \(I^{A}\) 中像素值不为 0 的位置 \((i, j)\),以及 \(I^{B}\) 中像素值不为 0 的位置 \((i, j)\),在内容掩码 \(M_{C}\) 中对应的位置 \((i, j)\) 都设为 1。可以用以下公式表示:
\(M_{C}(i, j) = \begin{cases} 1, & \text{if } I^{A}(i, j) \neq 0 \text{ or } I^{B}(i, j) \neq 0 \\ 0, & \text{otherwise} \end{cases}\)
3. 在损失函数中的应用
内容损失 \(\mathcal{L}_{Content }^{l}\) 用于衡量重建图像 \(S_{LR}\) 与变形图像 \(I_{LR}\) 在内容上的差异,其计算公式为:
\(\mathcal{L}_{Content }^{l} = \left\| M_{C} \odot (S_{LR} - I_{LR}) \right\|_1\)
其中,\(\odot\) 表示逐元素相乘,\(\left\| \cdot \right\|_1\) 表示 \(L_1\) 范数。通过内容掩码 \(M_{C}\) 与 \((S_{LR} - I_{LR})\) 逐元素相乘,我们只计算了实际有内容区域的差异,忽略了那些可能是填充或无效的区域,从而使损失函数更聚焦于图像的实际内容。
接缝掩码(Seam Mask)
1. 作用
接缝掩码的主要作用是约束重叠区域的边缘,使重建图像在重叠区域的边缘过渡更加自然连续。在图像拼接过程中,重叠区域的处理是一个关键问题,如果处理不当,会在拼接处出现明显的接缝,影响图像的整体质量。接缝掩码通过对重叠区域的边缘赋予不同的权重,引导模型在重建过程中更加关注这些边缘区域,从而使拼接处的过渡更加平滑。
2. 推导与生成
接缝掩码的生成相对复杂一些,它通常基于图像的重叠区域来计算。首先,需要确定参考图像 \(I^{A}\) 和目标图像 \(I^{B}\) 的重叠区域。
假设我们已经知道了重叠区域的边界,对于重叠区域内的像素,根据其到边界的距离来确定其在接缝掩码中的权重。一般来说,离边界越近的像素,其权重越大,这样可以使模型更加关注边缘区域的重建。
一种常见的计算方法是,对于重叠区域内的每个像素 \((i, j)\),计算其到重叠区域边界的最小距离 \(d(i, j)\),然后根据这个距离来确定权重 \(w(i, j)\)。例如,可以使用以下公式:
\(w(i, j) = \frac{d_{max} - d(i, j)}{d_{max}}\)
其中,\(d_{max}\) 是重叠区域内像素到边界的最大距离。这样,离边界越近的像素,\(d(i, j)\) 越小,权重 \(w(i, j)\) 越大。
将这些权重组合成一个矩阵,就得到了接缝掩码 \(M_{S}\)。对于重叠区域外的像素,其权重设为 0。
3. 在损失函数中的应用
接缝损失 \(\mathcal{L}_{Seam }^{l}\) 用于衡量重建图像在重叠区域边缘的连续性,其计算公式为:
\(\mathcal{L}_{Seam }^{l} = \left\| M_{S} \odot \nabla(S_{LR}) \right\|_1\)
其中,\(\nabla(S_{LR})\) 表示重建图像 \(S_{LR}\) 的梯度,它反映了图像在各个位置的变化情况。通过接缝掩码 \(M_{S}\) 与 \(\nabla(S_{LR})\) 逐元素相乘,我们只计算了重叠区域边缘的梯度差异,从而使模型更加关注这些区域的连续性。
2.高分辨率细化
高分辨率细化分支是无监督图像重建阶段的核心组成部分,其目标是在低分辨率变形分支的基础上,进一步提升图像分辨率并消除伪影。
1. 设计背景与目标
低分辨率变形分支通过下采样和编码器 - 解码器结构学习了图像的变形规则,但输出的低分辨率图像(如 256×256)无法满足实际应用需求。高分辨率细化分支的作用是:
- 提升分辨率:将低分辨率图像恢复到原始或更高分辨率。
- 细化细节:通过更深层次的特征学习,消除残留的伪影并增强图像清晰度。
2. 网络结构与实现
2.1 输入处理
- 输入来源:低分辨率分支的输出 \(S_{LR}\) 被上采样到变形图像的分辨率(如 512×512),并与变形图像 \(I_{W}\) 拼接作为高分辨率分支的输入。
- 拼接操作:将上采样后的 \(S_{LR}\) 与 \(I_{W}\) 在通道维度上拼接,形成多通道输入(如 3 通道→6 通道),以融合重建特征和原始变形信息。
2.2 网络架构
- 全卷积层设计:
- 3 个独立卷积层:初步提取特征。
- 8 个残差块(ResBlocks):每个残差块包含两个卷积层和一个跳跃连接,用于缓解梯度消失并学习复杂特征。
- 最终卷积层:输出 3 通道的高分辨率图像 \(S_{HR}\)。
- 跳跃连接:将第一层的特征与倒数第二层的特征相加,保留浅层细节信息。
2.3 残差块(ResBlock)结构
\(\text{ResBlock}(x) = \text{ReLU}(\text{Conv}(x)) + x\)
- 作用:允许网络学习残差,避免深层网络的退化问题。
3. 损失函数推导
3.1 内容损失(Content Loss)
\(\mathcal{L}_{Content}^{h} = \left\| M_{C}^{h} \odot (S_{HR} - I_{HR}) \right\|_1\
- 与低分辨率分支的区别:使用高分辨率的内容掩码 \(M_{C}^{h}\),约束高分辨率下的内容一致性。
3.2 接缝损失(Seam Loss)
\(\mathcal{L}_{Seam}^{h} = \left\| M_{S}^{h} \odot \nabla(S_{HR}) \right\|_1\)
- 作用:通过高分辨率的接缝掩码 \(M_{S}^{h}\),确保重叠区域的边缘连续性。
3.3 总损失函数
\(\mathcal{L}_{HR} = \lambda_{c} \mathcal{L}_{Content}^{h} + \lambda_{s} \mathcal{L}_{Seam}^{h}\)
- 权重设置:\(\lambda_{c}\) 和 \(\lambda_{s}\) 平衡内容与接缝约束的重要性。
4. 关键创新点
4.1 分辨率提升机制
- 上采样与拼接:通过双线性插值或反卷积将 \(S_{LR}\) 上采样,与原始变形图像拼接后输入网络,利用原始图像的高频信息辅助重建。
- 残差块的作用:通过残差学习,逐步恢复细节并消除伪影。
4.2 内容一致性损失(CS Loss)
\(\mathcal{L}_{CS} = \left\| S_{HR}^{256×256} - S_{LR} \right\|_1\)
- 作用:确保高分辨率图像与低分辨率重建结果在内容上一致,避免因分辨率提升引入的伪影。
5. 通俗理解示例
假设低分辨率分支输出一张模糊的猫脸图像(256×256),高分辨率分支的处理过程如下:
- 上采样:将模糊猫脸放大到 512×512,但细节仍模糊。
- 特征提取:通过卷积层和残差块学习猫脸的胡须、瞳孔等细节。
- 跳跃连接:浅层特征(如边缘)与深层特征(如纹理)结合,增强细节重建。
- 损失约束:确保重建的高分辨率猫脸与原始变形图像在内容和边缘上一致。
高分辨率细化分支通过全卷积网络、残差块和跳跃连接,将低分辨率重建结果提升为高分辨率图像。其核心优势在于:
- 分层处理:低分辨率分支处理变形,高分辨率分支专注细节。
- 损失约束:通过内容和接缝损失保证重建质量。
- 一致性保证:内容一致性损失避免分辨率提升导致的伪影。
3.目标函数
高分辨率细化分支虽然能提升图像分辨率,但可能会引入新的伪影。目标函数的设计旨在平衡低分辨率和高分辨率分支的损失,同时确保高分辨率重建结果与低分辨率结果在内容上保持一致,从而消除视差伪影,得到高质量的拼接图像。
低分辨率分支损失 \(\mathcal{L}_{LR}\)
低分辨率分支的损失函数在前面已经介绍过,它由内容损失 \(\mathcal{L}_{Content }^{l}\) 和接缝损失 \(\mathcal{L}_{Seam }^{l}\) 加权求和得到: \(\mathcal{L}_{LR}=\lambda_{c} \mathcal{L}_{Content }^{l}+\lambda_{s} \mathcal{L}_{Seam }^{l}\) 其中,\(\lambda_{c}\) 和 \(\lambda_{s}\) 分别是内容损失和接缝损失的权重,用于权衡内容约束和接缝约束的贡献。内容损失 \(\mathcal{L}_{Content }^{l}\) 衡量了重建图像与变形图像在内容上的差异,接缝损失 \(\mathcal{L}_{Seam }^{l}\) 衡量了重建图像在重叠区域边缘的连续性。
高分辨率分支损失 \(\mathcal{L}_{HR}\)
高分辨率分支的损失函数同样由内容损失 \(\mathcal{L}_{Content}^{h}\) 和接缝损失 \(\mathcal{L}_{Seam}^{h}\) 加权求和得到: \(\mathcal{L}_{HR} = \lambda_{c} \mathcal{L}_{Content}^{h} + \lambda_{s} \mathcal{L}_{Seam}^{h}\) 这里的内容损失 \(\mathcal{L}_{Content}^{h}\) 和接缝损失 \(\mathcal{L}_{Seam}^{h}\) 是在高分辨率下计算的,分别用于约束高分辨率重建图像的内容一致性和重叠区域边缘的连续性。
内容一致性损失 \(\mathcal{L}_{CS}\)
为了使高分辨率重建结果与低分辨率结果在内容上保持一致,引入了内容一致性损失: \(\mathcal{L}_{CS}=\left\| S_{HR}^{256 × 256}-S_{LR}\right\| _{1}\) 其中,\(S_{HR}^{256 ×256}\) 是将高分辨率拼接图像 \(S_{HR}\) 调整为低分辨率分支输出分辨率(256×256)后的结果。通过计算两者的 \(L_1\) 范数,确保高分辨率重建图像在降低分辨率后与低分辨率重建图像尽可能接近,从而避免高分辨率分支引入的伪影。
总目标函数 \(\mathcal{L}_{R}\)
综合考虑低分辨率分支损失、高分辨率分支损失和内容一致性损失,得到图像重建阶段的总目标函数: \(\mathcal{L}_{R}=\omega_{LR} \mathcal{L}_{LR}+\omega_{HR} \mathcal{L}_{HR}+\omega_{CS} \mathcal{L}_{CS}\) 其中,\(\omega_{LR}\)、\(\omega_{HR}\) 和 \(\omega_{CS}\) 分别是低分辨率分支损失、高分辨率分支损失和内容一致性损失的权重,用于平衡不同损失在优化过程中的重要性。通过调整这些权重,可以使模型在不同的约束条件下达到最佳的重建效果。