基于Transformer的图像阴影检测与去除算法:Shadow Transformer
题目描述
在计算机视觉中,图像中的阴影会降低许多下游任务(如目标检测、分割、识别)的性能,并影响视觉效果。阴影检测旨在定位图像中的阴影区域,而阴影去除则旨在消除阴影,恢复出无阴影的图像。传统方法多依赖颜色、纹理等手工特征,鲁棒性差。基于深度学习的方法虽然取得了进展,但往往难以建模阴影与背景间的长程依赖关系,且对阴影边界的处理不够精细。Shadow Transformer是一种基于Transformer架构的端到端网络,它通过引入局部-全局双分支注意力机制,有效地建模阴影区域的局部细节与全局上下文,从而实现更精准的阴影检测与去除。你将了解其核心思想、网络结构、关键模块及工作流程。
解题过程循序渐进讲解
1. 问题定义与核心挑战
- 输入:一张包含阴影的RGB图像 \(I \in \mathbb{R}^{H \times W \times 3}\)。
- 输出:
- 阴影检测:二值阴影掩码 \(M \in \{0,1\}^{H \times W}\)(1表示阴影区域)。
- 阴影去除:无阴影图像 \(J \in \mathbb{R}^{H \times W \times 3}\)。
- 核心挑战:
- 阴影与背景颜色、纹理高度耦合,局部相似度高。
- 阴影形状、大小、强度变化大,需建模长程依赖以理解全局光照和场景结构。
- 阴影边界通常柔和,需精细处理以避免伪影。
2. Shadow Transformer的整体架构
Shadow Transformer采用编码器-解码器结构,分为三个主要部分:
- 特征提取编码器:使用卷积神经网络(如ResNet)提取多尺度特征图。
- Shadow Transformer模块:核心创新,插入在编码器与解码器之间,包含局部注意力分支和全局注意力分支。
- 特征融合解码器:逐步上采样并融合特征,输出阴影掩码和去阴影图像。
整体流程为:输入图像 → 编码器提取特征 → Transformer模块增强特征 → 解码器生成结果。
3. 特征提取编码器
- 使用预训练的ResNet(如ResNet-50)作为主干,移除全连接层。
- 输入图像经过多个残差块,得到四个层级的特征图 \(\{F_1, F_2, F_3, F_4\}\),分辨率依次减半,通道数增加(如256、512、1024、2048)。
- 这些特征捕获了从低层边缘/纹理到高层语义的信息,为后续Transformer提供多尺度表示。
4. Shadow Transformer模块(核心创新)
该模块对高层特征(如\(F_4\))进行处理,设计双分支注意力以同时捕捉局部细节和全局上下文。
- 输入准备:将特征图 \(F_4 \in \mathbb{R}^{H' \times W' \times C}\) 展平为序列 \(X \in \mathbb{R}^{N \times C}\),其中 \(N = H' \times W'\) 是patch数量,每个patch对应一个空间位置。
- 局部注意力分支:
- 目标:增强阴影边界的局部细节。
- 方法:对每个patch,只计算其相邻 \(k \times k\) 窗口内patch的注意力。
- 操作:将序列 \(X\) 重塑为2D网格,用滑动窗口划分局部区域,在每个窗口内计算自注意力。公式为:
\[ \text{Attention}(Q,K,V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]
其中 $Q,K,V$ 是查询、键、值矩阵,通过线性变换从 $X$ 得到。
- 效果:使网络聚焦于局部阴影-非阴影过渡区域,增强边界准确性。
- 全局注意力分支:
- 目标:建模整个图像的长程依赖,以理解全局光照和阴影分布。
- 方法:计算所有patch之间的全局自注意力。
- 操作:直接在整个序列 \(X\) 上计算标准Transformer的自注意力。
- 效果:使网络能区分距离较远但外观相似的区域(如阴影和暗物体),减少误检。
- 双分支融合:将局部注意力输出 \(X_{\text{local}}\) 和全局注意力输出 \(X_{\text{global}}\) 相加,再通过前馈网络(FFN,包含两层线性层和激活函数)进行非线性融合,得到增强特征 \(X_{\text{enhanced}}\)。
- 位置编码:在输入序列 \(X\) 中加入可学习的位置编码,以保留空间信息。
5. 特征融合解码器
- 解码器采用渐进上采样结构,逐步融合多尺度特征。
- 步骤:
a. 将Transformer增强特征 \(X_{\text{enhanced}}\) 重塑回特征图 \(F_{\text{enhanced}}\)。
b. 从高层到低层,通过跳跃连接(skip connection)融合编码器对应层的特征(如 \(F_3, F_2, F_1\))。
c. 每个融合阶段包含:上采样 → 与编码器特征拼接 → 卷积层细化。 - 最终,解码器输出两个头:
- 阴影掩码头:通过卷积和sigmoid函数生成掩码 \(M\)。
- 去阴影头:通过卷积和tanh函数生成残差图像 \(\Delta I\),与原图相加得到去阴影图像 \(J = I + \Delta I\)。
6. 损失函数与训练
- 使用多任务损失联合优化检测和去除:
\[ \mathcal{L} = \lambda_1 \mathcal{L}_{\text{det}} + \lambda_2 \mathcal{L}_{\text{removal}} \]
- 检测损失 \(\mathcal{L}_{\text{det}}\):二元交叉熵损失(BCE),监督阴影掩码与真实掩码。
- 去除损失 \(\mathcal{L}_{\text{removal}}\):包括:
- L1损失:约束去阴影图像与真实无阴影图像的像素级差异。
- 感知损失:使用预训练VGG网络提取特征,比较高级语义差异。
- 对抗损失(可选):加入判别器使结果更逼真。
- 训练时,用阴影数据集(如ISTD、SBU)进行端到端训练,编码器可微调。
7. 关键优势与总结
- 局部-全局双分支注意力:同时处理边界细节和长程依赖,优于纯CNN或标准Transformer。
- 端到端多任务学习:检测与去除相互促进,提升整体性能。
- 效果:在公开数据集上,Shadow Transformer在阴影检测(如IoU指标)和去除(如PSNR、SSIM指标)上达到先进水平,尤其擅长处理复杂阴影和柔和边界。
通过以上步骤,Shadow Transformer将Transformer的全局建模能力与CNN的局部感知结合,为图像阴影处理提供了高效解决方案。