admin管理员组文章数量:1650772
目录
- 写在前面
- 摘要部分
- Introduction部分
- Method部分
- Head
- Body
- CNN 分支
- Transformer分支
- Fusion Block
- Tail
- 实验部分
- 结
写在前面
之前一直都是在总结算法和Unity的内容,一直是想往unity游戏开发方向发展的,甚至想着去开发galgame,和扶她自对线(bushi,但准备读研后还是和现实妥协了,悲
应导师要求开始读论文并进行总结整理。因为要读很多篇然后写博客也比较花时间,所以博客中方法不会去详细到各个公式去介绍,只会简单介绍思路,总的来说还是写给自己看的,如果大佬们看到有什么问题也可以随便锐评(
摘要部分
本文提出了一个用于超分辨率(SR)任务的有效的混合架构,它用CNN的获取局部特征,用Transformer进行长距离建模,并通过一个模块将两部分特征进行融合,从而进一步改善SR结果。
这个架构是一个双路结构,由Transformer和卷积分支组成,通过将两个分支各阶段获取到的特征相互融合实现特征表示的互补。此外,本文还提出了一个跨尺度的Token注意模块。这使得Transformer能够有效地利用不同尺度的Token之间的信息关系。该方法在多个超分辨率数据集上取得了最好的结果。
Introduction部分
超分辨率(SR):从给定的低分辨率(LR)图像中恢复一个高分辨率(HR)图像
文章动机:比较好理解的想法。以前基于CNN架构在获取长距离(全局)的依赖关系以及恢复弱的纹理细节方面有一定的局限性。近来大火的Vision Transformer利用了Transformer对长距离信息建模的能力,将其迁移到了CV领域,但是Vision Transformer直接用在超分辨率上肯定是效果不好的,ViT缺少变化长度的token,缺少层级的结构,难以获取多个尺度的特征(尤其是细粒度的特征),在需要精确到像素的密集预测任务上的效果不好。于是本文提出一个将CNN和ViT的优点结合起来的架构,融合CNN提取的Local Feature和Transformer获取到的长距离依赖,从而获得更加丰富完备的特征。
文章贡献:
- 提出一个结合CNN和ViT的方法(ACT)
- 提出一个跨尺度的注意力机制以进行多尺度交互
- 进行了多个实验,在各Benchmark上的效果优秀
Method部分
整体架构如上图所示。首先,输入为低分辨率(LR)图片,经过Head提取到浅层特征,浅层特征通过两条路径:CNN分支和Transformer分支。在进Transformer branch之前进行tokenize,获得embedding。接下来,每一个阶段获得的特征会经过Fusion Block进行融合,最后一个Fusion block的输出与原本的浅层特征相加得到最终的深层特征,通过Tail部分来进行高分辨率还原。
Head
Head部分由两个带残差连接的卷积块构成,用于提取浅层特征,得到的是浅层特征 F 0 F_0 F0
Body
Body部分用于获得深层的特征,包含CNN分支和Transformer分支,这一部分用的都是stride为1的卷积,每一个阶段特征大小应该是不会变的,最终输出作为残差和和 F 0 F_0 F0进行相加
CNN 分支
CNN分支的Block用的是RCAN《Image Super-Resolution Using Very Deep Residual Channel Attention Networks》中的卷积块RCAB。这篇文章提出了一个Channel Attention去给予重要的通道更大的权重,想了解具体的细节可以去读一下这篇文章
CNN分支的第i个阶段在文中表示为:
Transformer分支
Transformer分支由堆叠的Transformer Block构成,其中每个Transformer Block含有两种Attention模块,MHSA和Cross-Scale Token Attention(CSTA)。MHSA和一般的ViT相同,而CSTA如图所示。在CSTA模块中,输入的Token在通道维被平均分为两部分,文章中记为:
其中
T
a
T^a
Ta直接送到注意力模块,记为
T
s
T^s
Ts,而
T
b
T^b
Tb要经过rearrange操作构成有overlap的大token,记为
T
l
T^l
Tl,为了之后进行交叉注意力,
T
l
T^l
Tl先用MLP层处理,将通道数调为d/2。之后,使用交叉注意力来将不同尺度的token进行融合,在
T
s
T^s
Ts的分支
T
s
T^s
Ts形成Query矩阵,而Key和Value矩阵来自
T
l
T^l
Tl,在
T
l
T^l
Tl分支则相反。总的来说,两个Cross-Attention分别接受
(
Q
s
,
K
l
,
V
l
)
(Q^s,K^l,V^l)
(Qs,Kl,Vl),
(
Q
l
,
K
s
,
V
s
)
(Q^l,K^s,V^s)
(Ql,Ks,Vs)两个三元组进行注意力计算。计算的结果
T
l
T^l
Tl分支需要再用MLP层将通道数调回
d
′
d'
d′,再进行与一开始rearrange相反的操作,得到的结果与
T
s
T^s
Ts分支计算注意力的结果进行拼接,得到输出的token。
每一个Transformer Block中Token的处理表示如下:
Fusion Block
同一层的Transformer feature和CNN feature会经过Fusion Block进行特征融合,对于Transformer分支的特征,要先用rearrange将其Token形式转换为一般的特征形式
c
×
h
×
w
c \times h \times w
c×h×w ,在通道维和CNN feature进行拼接,然后通过Channel-wise fusion(由
1
×
1
1\times1
1×1卷积,relu函数,以及残差连接构成),得到混合后的特征
M
i
M_i
Mi,从通道维对
M
i
M_i
Mi进行切分,两部分特征分别经过Conv层/MLP层作为下一个CNN/Transformer Block的输入。(对于Transformer Block,要先重新rearrange到token的形式)
Tail
Tail部分使用PixelShuffle和单层的卷积进行上采样操作,生成高分辨率的图像。PixelShuffle的细节可以参考这篇文章《Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network》(这个操作已经整合在了pytorch里)
实验部分
在Set5, Set14, B100, Urban100, 和 Manga109 上进行了测试,在指标PSNR和SSIM上几乎都是最高的,超过了之前的SwinIR。
作者也将中间Block产生的特征图进行了可视化,将所有通道取绝对值再平均,再进行标准化,得到输出的可视化结果(第二排为Transformer Branch的输出,第三排为CNN Branch的输出)。Transformer更关注高频的纹理,材质细节,但是会有模糊的的地方;而CNN更关注边缘部分。两者的信息可以相互补充。
结
可以参考贡献部分。
感觉CNN和Transformer结合的架构很适合这种图像重建任务,还是要想一想怎么更好的把这两部分结合起来。
本文标签: 笔记论文CNNRichTransformer
版权声明:本文标题:【论文笔记】Rich CNN-Transformer Feature Aggregation Networks for Super-Resolution 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729531282a1204838.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论