Recurrent+Transformer 视频恢复领域的‘德艺双馨’

本文介绍了一种新的视频恢复方法——RVRT,结合了循环网络和Transformer的优点,通过片段对齐和引导变形注意力机制实现高效视频恢复。在多个数据集上达到SOTA性能,同时在模型大小和效率之间取得平衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注公众号,发现CV技术之美

本文分享论文『Recurrent Video Restoration Transformer with Guided Deformable Attention』,是 Jingyun 大佬继SwinIR,VRT之后的又一篇力作,在Transformer结构中套用了循环架构(笔者最近也在research这个点,奈何大佬太猛了)并从帧级对齐扩展到片段对齐。RVRT在VID4上超过了VRT,在REDS4上超过了Basicvsr++!

详细信息如下:

bce5434bea47eafa5aa39bcc2f68c8d2.png

  • 作者单位:苏黎世联邦理工、Meta、维尔茨堡大学 

  • 论文链接:https://arxiv.org/pdf/2206.02146.pdf

  • 项目链接:https://github.com/JingyunLiang/RVRT

      01      

看点

现有的视频恢复方法主要有两种 :

  1. 并行恢复所有帧,它具有时间信息融合的优势,但是模型尺寸大,

### 结合BiGRU和Transformer模型的信息与实现 #### BiGRU简介 双向门控循环单元(Bidirectional Gated Recurrent Unit, BiGRU)是一种改进型的循环神经网络结构,它通过前向和反向两个方向分别捕捉序列中的上下文信息。这种设计使得模型能够在任意时间步获取到完整的前后依赖关系。 #### Transformer架构概述 Transformers基于自注意力机制构建而成,在处理长距离依赖方面表现出色,并且摒弃了传统的RNN/LSTM/GRU所必需的时间顺序计算特性。其核心组件包括多头自注意层、位置编码以及残差连接等[^3]。 #### 融合策略 为了充分利用两者优势,可以考虑如下几种方式: 1. **混合输入表示** 将经过BiGRU提取特征后的隐藏状态作为额外维度附加至原始词嵌入之上再送入Transformer中继续加工。 2. **级联组合** 首先利用BiGRU完成初步语义解析任务;随后把得到的结果传递给后续阶段——即由若干个标准transformer block构成的深层堆叠模块来进行更深层次的理解工作。 3. **并行双路径** 同时运行两套独立但平行运作的不同类型的子网路(一个是bi-gru另一个则是纯正版transformer),最后汇聚它们各自的输出形成最终预测结果。 以下是Python代码片段展示如何创建一个简单的结合BiGRU和Transformer的PyTorch模型: ```python import torch.nn as nn from transformers import BertModel class BiGRU_Transformer(nn.Module): def __init__(self, vocab_size, embed_dim=768, hidden_dim=512, num_layers=2, nhead=8): super(BiGRU_Transformer, self).__init__() # Embedding Layer self.embedding = nn.Embedding(vocab_size, embed_dim) # Bidirectional GRU Layers self.bigru = nn.GRU(input_size=embed_dim, hidden_size=hidden_dim//2, bidirectional=True, batch_first=True, num_layers=num_layers) # Positional Encoding & Transformer Encoder self.transformer_encoder_layer = nn.TransformerEncoderLayer(d_model=hidden_dim, nhead=nhead) self.transformer_encoder = nn.TransformerEncoder(self.transformer_encoder_layer, num_layers=num_layers) # Output Layer self.fc_out = nn.Linear(hidden_dim, vocab_size) def forward(self, src): embedded = self.embedding(src) gru_output, _ = self.bigru(embedded) trans_input = gru_output.permute(1,0,2) # Adjust dimensions for transformer encoded_seq = self.transformer_encoder(trans_input) out = self.fc_out(encoded_seq.mean(dim=0)) return out ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值