论文阅读:Semi-Supervised Image Dehazing

论文标题及作者
论文及代码:https://sites.google.com/view/lerenhanli/homepage/semi_su_dehazing
作者主页
代码:https://github.com/yunlongdong/semi-dehazing

1. 摘要

本文提出了一种有效的半监督学习算法用于单幅图像去雾。该算法采用一个包含监督学习分支和一个无监督学习分支的深度卷积神经网络(CNN)。在监督分支中,深层神经网络受监督损失函数(均方损失、感知损失和对抗损失)的约束。在无监督分支中,我们利用干净图像的稀疏性和梯度先验来约束网络。我们以端到端的方式在合成数据和真实世界图像上训练所提出的网络。实验结果表明,所提出的半监督学习算法不仅适用于合成训练数据集,而且可以很好地推广到实际图像中。大量的实验结果表明,该算法在基准数据集和真实图像上均优于现有的单幅图像去雾算法。

2. 半监督方法

现有的基于深度CNN的图像去雾算法通常是在有监督学习框架内进行的,其局限于特定的合成训练数据。本文提出了用半监督学习方法来解决这个问题。
文中使用带标签数据集 { I i , J ^ i } i = 1 N l \{I_i, \hat{J}_i\}^{N_l}_{i=1} {Ii,J^i}i=1Nl和无标签数据集 { I i } i = 1 N u \{I_i\}^{N_u}_{i=1} {Ii}i=1Nu来训练提出的深度CNN。其中 N l N_l Nl N u N_u Nu表示带标签和无标签训练图像的数量。 I i I_i Ii ( ^ J ) i \hat(J)_i (^J)i分别表示第 i i i张雾图和相应的ground truth。

2.1 网络结构

网络框架如下:
网络框架
网络结构:
网络结构
残差块结构:
残差块结构

2.2 损失函数

2.2.1 监督损失

1) Mean Squared Loss

均方误差定义为:
L c = 1 N l ∑ i = 1 N l ∣ ∣ J i − J ^ i ∣ ∣ 2 L_c = \frac{1}{N_l} \sum^{N_l}_{i=1}{||J_i-\hat{J}_i||}_2 Lc=Nl1i=1NlJiJ^i2

2) Perceptual Loss

本文使用在ImageNet进行预训练的VGG-19网络的Conv3-3层提取的特征图,求感知损失。基于VGG-19的感知损失定义为:
L p = 1 N l ∑ i = 1 N l ∣ ∣ F J i − F J ^ i ∣ ∣ 2 L_p = \frac{1}{N_l} \sum^{N_l}_{i=1} {||F_{J_i} - F_{\hat{J}_i}||}_2 Lp=Nl1i=1NlFJiFJ^i2

其中 F J i F_{J_i} FJi F J ^ i F_{\hat{J}_i} FJ^i分别表示去雾图 J J J和其相应的ground-truth J ^ \hat{J} J^的特征图。

3) Adversarial Loss

本文加入了GAN模型中的判别器 D i s D_{is} Dis,来获得相应的对抗损失。 D i s D_{is} Dis的结果如下:
判别器结构
对抗损失定义为:
L a = E J ^ [ l o g D i s ( J ^ ) ] + E J [ l o g ( 1 − D i s ( J ) ) ] L_a = \mathbb{E}_{\hat{J}}[logD_{is}(\hat{J})] + \mathbb{E}_J[log(1-D_{is}(J))] La=EJ^[logDis(J^)]+EJ[log(1Dis(J))]

2.2.2 无监督损失

无监督损失采用总变差损失和暗通道损失,以生成与ground truth具有相同统计特性的图像。

1) Total Variation Loss

总变差损失,即无监督分支预测图像的 l 1 l_1 l1-正则化梯度,用于保存结构和细节。损失定义如下:
L t = 1 N u ∑ i = 1 N u ( ∣ ∣ ∇ h J i ∣ ∣ 1 + ∣ ∣ ∇ v J i ∣ ∣ 1 ) L_t = \frac{1}{N_u} \sum^{N_u}_{i=1}({||\nabla_h J_i||}_1 + {||\nabla_v J_i||}_1) Lt=Nu1i=1Nu(hJi1+vJi1)

其中, ∇ h \nabla_h h ∇ v \nabla_v v代表水平和竖直梯度运算操作。

2) Dark Channel Loss

清晰图像的暗通道已经被证明比雾图的暗通道稀疏。暗通道表示为:
D ( I ) = min ⁡ y ∈ N ( x ) [ min ⁡ c ∈ { r , g , b } I c ( y ) ] D(I) = \underset{y \in N(x)}{\min} [\underset{c \in \{r,g,b\}}{\min} I^c(y)] D(I)=yN(x)min[c{r,g,b}minIc(y)]

本文应用 l 1 l_1 l1-正则化来约束预测图像暗通道的稀疏性:
L d = 1 N u ∑ i = 1 N u ∣ ∣ D J i ∣ ∣ 1 L_d = \frac{1}{N_u} \sum^{N_u}_{i=1} {||D_{J_i}||}_1 Ld=Nu1i=1NuDJi1

虽然暗色通道已经被证明通过增加对清晰图像的约束来去雾,但是由于其高度的非凸性和非线性,将其嵌入到学习网络中是一个挑战。我们应用the look-up table scheme(2016CVPR: Blind Image Deblurring Using Dark Channel Prior)来实现暗通道操作的前向和后向传播。
前向传播的公式如下:
D ( I ) = min ⁡ y ∈ N ( x ) [ I ( y ) ] D(I) = \underset{y \in N(x)}{\min}[I(y)] D(I)=yN(x)min[I(y)]

例如,在5×5的矩阵上,设置 N y N{y} Ny的大小为3×3,结果如下(采取了填充):
暗通道损失的前向传播
经过网络的训练之后,权值改变。反向传播就是回收前向传播时,由该点扩散出去的所有点的权值之和。例如,前向传播时,图像(2,0)的点的值扩散到了(1,0)-(3,1)的矩阵,反向传播时,将(1,0)-(3,1)这个矩阵的权值求和,赋值到(2,0)即可。如果某个点为扩散,那么反向传播时,该点赋0值。反向传播结果如下:
暗通道损失的反向传播

2.2.3 Overall Loss

总的损失定义如下:
L = L c + λ L p + γ L t + μ L d + η L a L = L_c + \lambda L_p + \gamma L_t + \mu L_d + \eta L_a L=Lc+λLp+γLt+μLd+ηLa

其中 λ = 1 0 − 2 \lambda = 10^{-2} λ=102 γ = 1 0 − 5 \gamma = 10^{-5} γ=105 μ = 1 0 − 5 \mu= 10^{-5} μ=105 η = 1 0 − 3 \eta= 10^{-3} η=103

3. 实验结果

实验结果

4. 结论

本文针对合成图像和真实图像的特征域不同,提出了一种新的半监督学习算法。一方面,我们使用标签损失函数来训练监督分支对具有ground-truth标签的合成数据进行训练。另一方面,我们基于常用的图像先验,包括暗通道和总变差,用真实数据和无标签的损失函数训练无监督分支。大量的实验结果表明,该算法对合成图像和真实的有雾图像都具有良好的去雾效果。

### STiL 方法概述 Semi-supervised Tabular-Image Learning (STiL) 是一种用于处理多模态数据的半监督学习方法[^1]。该方法旨在通过结合表格数据和图像数据来提升模型性能,特别是在标注数据有限的情况下。STiL 的核心目标是从不同模态的数据中提取任务相关信息并加以融合。 #### 多模态分类中的任务相关信息探索 在多模态分类场景下,任务相关信息通常分布在不同的数据源之间。STiL 方法通过设计特定机制,在训练过程中逐步识别哪些特征对于当前任务最为重要[^2]。具体而言: - **跨模态关联建模**:STiL 利用注意力机制捕获表格数据与图像数据之间的潜在关系。这种机制能够动态调整各模态的重要性权重,从而聚焦于最相关的部分[^3]。 - **自监督信号增强**:为了充分利用未标记样本的信息,STiL 引入了自监督学习策略。这些策略可以通过预测旋转角度、对比学习等方式生成额外的学习信号,进一步优化模型参数[^4]。 - **联合表示空间构建**:通过对齐两种模态的嵌入向量,STiL 创建了一个统一的任务相关表示空间。这使得即使某些模态缺失或质量较差时,模型仍能保持较高的鲁棒性和准确性[^5]。 以下是实现上述功能的一个简化代码框架: ```python import torch.nn as nn class STILModel(nn.Module): def __init__(self, tabular_dim, image_channels): super(STILModel, self).__init__() # 图像编码器初始化 self.image_encoder = ImageEncoder(image_channels) # 表格数据编码器初始化 self.tabular_encoder = TabularEncoder(tabular_dim) # 跨模态注意层 self.cross_modal_attention = CrossModalAttention() # 输出层定义 self.classifier = Classifier() def forward(self, table_data, image_data): img_features = self.image_encoder(image_data) tab_features = self.tabular_encoder(table_data) combined_features = self.cross_modal_attention(img_features, tab_features) output = self.classifier(combined_features) return output ``` 此代码展示了如何分别对图像和表格数据进行编码,并利用 `CrossModalAttention` 层完成两者间的交互操作[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值