【cvpr2022】TransWeather: Transformer-based Restoration of Images Degraded by Adverse Weather Conditio

参考资料

        在这项工作中,我们提出了一个称为 TransWeather 的单编码器-单解码器变压器网络,以一次性解决所有恶劣天气去除问题。我们没有使用多个编码器,而是在转换器解码器中引入天气类型查询来学习任务(图 1 (c))。

在这里,多头自注意力机制将天气类型查询作为输入,并将其与从 transformer 编码器提取的特征中获取的键和值相匹配。这些天气类型嵌入与网络一起学习,以理解和调整图像中出现的天气退化类型。

使用卷积块将解码后的特征和从编码器获得的分层特征融合并投影到图像空间。因此,TransWeather 只需一个编码器和一个解码器来学习天气类型并生成清晰的图像。

与 CNN 相比,Transformers 擅长提取丰富的全局信息 [9]。然而,我们认为当补丁像 ViT [9] 中的那样大时,我们无法过多地关注补丁中的信息。像雨条、雨滴和雪这样的天气退化通常规模很小,因此在一个补丁中可能会出现多个伪影。

为此,我们提出了一种带有补丁内变换器(Intra-PT)块的新型变换器编码器。 Intra-PT 处理从原始补丁创建的子补丁,并挖掘较小补丁的特征和细节。因此,Intra-PT 专注于主要补丁内部的注意力,以有效消除天气退化。我们使用高效的自注意力机制来计算子补丁之间的注意力以保持低计算复杂度。

  Intra-PT 块有助于提取精细细节,有助于在我们对较小的补丁进行操作时消除较小的退化。请注意,除了在图像级别完成的第一阶段外,Intra-PT 块在特征级别创建补丁。 Intra-PT 块的输出自注意特征被添加到同一阶段主块的自注意特征。

我们定义天气类型查询来解码任务,预测任务特征向量并使用它来恢复干净的图像。这些天气类型查询是可学习的嵌入,它们与我们网络的其他参数一起学习。这些查询涉及变压器编码器的特征输出。这里的转换器解码器在单级运行,但有多个块。

 

我们在图 3 中说明了转换器解码器块。这些转换器块类似于编码器解码器转换器块 [50]。与 Q、K 和 V 从同一输入中获取的自注意力变换器块不同,这里的 Q 是天气类型可学习嵌入,而 K 和 V 是从变换器编码器的最后阶段获取的特征。输出的解码特征表示任务特征向量,并与在每个阶段通过 transformer 编码器提取的特征融合。所有这些特征都被转发到卷积尾以重建干净的图像。

天气查询能学到什么?

天气查询是嵌入,它了解图像中存在哪种类型的退化。这些查询有助于预测相应的任务向量,这有助于注入任务信息以获得更好的预测。

代码中self.task_query = nn.Parameter(torch.randn(1,48,dim))

 TransWeather 在一些受强降雨影响的真实世界图像中表现不佳。这可以理解为有时真实的雨水在条纹大小和强度方面有很大差异并且难以建模。此外,如果雨的强度很大,当它打在场景中的物体或人的表面时会产生飞溅效果。消除这种飞溅效果仍然是包括 TransWeather 在内的所有方法的一个限制。

 

### 基于 Transformer 的序列推荐系统 (TSR) 实现与概述 基于 Transformer 的序列推荐系统(Transformer-based Sequential Recommendation System, TSR)是一种利用自注意力机制来捕捉用户行为序列中长期依赖关系的方法。这种方法通过建模用户的动态兴趣,能够更有效地预测用户可能感兴趣的商品或服务。 #### 1. Transformer 架构的核心概念 Transformer 是一种由 Vaswani 等人在论文《Attention is All You Need》中提出的神经网络架构[^3]。它主要依靠自注意力机制(Self-Attention Mechanism),能够在处理长序列数据时捕获全局上下文信息。相比于传统的 RNN 或 LSTM 模型,Transformer 不仅能并行化训练过程,还能更好地学习远距离依赖关系。 在推荐系统的背景下,Transformer 被用来分析用户的历史交互记录,从而推断其未来的偏好。具体来说: - **输入表示**:用户的行为历史被编码为一系列嵌入向量 \( \{e_1, e_2, ..., e_n\} \),其中每个向量代表一项商品或者一次互动。 - **位置编码**:为了保留时间顺序信息,通常会加入绝对或相对的位置编码 \( PE_{pos} \)[^4]。 - **自注意力层**:该层允许模型关注整个序列中的重要部分,而不仅仅是最近的几个项目。 以下是 Transformer 推荐模型的一个简化版本实现示例: ```python import torch.nn as nn class TransformerLayer(nn.Module): def __init__(self, d_model=512, nhead=8, num_layers=6): super(TransformerLayer, self).__init__() encoder_layer = nn.TransformerEncoderLayer(d_model=d_model, nhead=nhead) self.transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=num_layers) def forward(self, src): output = self.transformer_encoder(src.permute(1, 0, 2)) return output[-1] class SequenceRecommendationModel(nn.Module): def __init__(self, vocab_size, embedding_dim=512, nhead=8, num_layers=6): super(SequenceRecommendationModel, self).__init__() self.embedding = nn.Embedding(vocab_size, embedding_dim) self.positional_encoding = PositionalEncoding(embedding_dim) self.transformer = TransformerLayer(d_model=embedding_dim, nhead=nhead, num_layers=num_layers) self.fc_out = nn.Linear(embedding_dim, vocab_size) def forward(self, input_seq): embedded = self.embedding(input_seq) encoded_input = self.positional_encoding(embedded) transformer_output = self.transformer(encoded_input) prediction_scores = self.fc_out(transformer_output) return prediction_scores ``` 上述代码定义了一个简单的基于 Transformer 的推荐模型框架,其中包括嵌入层、位置编码以及最终的全连接输出层用于生成评分矩阵。 #### 2. 多行为推荐中的应用 对于多行为场景下的推荐问题,可以扩展基础的 Transformer 结构以适应不同的行为类型。例如,在给定多种行为模式的情况下,可以通过引入额外的行为特征维度或将每种行为视为独立子任务的方式增强表达能力[^1]。此外,还可以借鉴图卷积网络的思想构建隐含的关系结构[^2],进一步提升性能表现。 #### 3. 总结 综上所述,基于 Transformer 的序列推荐技术凭借强大的上下文理解能力和灵活的设计空间成为当前研究热点之一。然而值得注意的是,实际部署过程中还需要考虑计算资源消耗等因素的影响。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值