Title
SplitSR: An End-to-End Approach to Super-Resolution on Mobile Devices
https://arxiv.org/pdf/2101.07996.pdf
有的文章标签比较多,用语雀的目录无法准确分类,所以我依照当前我的目的(实现网络的轻量化)将其放入轻量化章节。
Summary
Contribution(s)
- 提出结构SplitSR,结合了传统卷积和轻量化残差模块
- 提出了轻量化残差模块SplitSRBlock
- 用TVM(深度学习编译器)实现提出的网络和系统
- 根据这个模型实现了一个APP:ZoomSR
Problem Statement
在超分问题上平衡效率和精度Method(s)
SplitSRBlock
channel splitting能实现类似channel attention的作用
N个通道依据拆分因子alpha分成了两个分支,前alphaN的通道用来做普通卷积(不推荐使用深度/点卷积,对生成网络而言,空间信息是非常重要的),剩下的通道闲置,最后将两个分支的输出倒置concat。倒置后前alphaN个通道成为后alpha*N个通道。
- channel splitting的作用是在同样的计算量下,网络能有更多的层。
- 其中一个分支使用普通卷积而非深度/点卷积是为了保留更多的空间信息
- 倒置concat是为了让所有的通道都尽可能多地参与计算
- 普通卷积计算量HWNNkk,SplitSRBlock计算量HWNalphaNalphakk,计算量是原来的alpha^2
SplitSR
SplitSR主要基于RCAN修改,网络分为四个部分,一个由普通卷积构成的输入阶段,feature extraction阶段,upsampler阶段和输出阶段。SplitSRBlock可以用在特征提取阶段和输出阶段。
Evaluation
实现
用TVM将网络从TensorFlow转换为Relay representation。与TVM类似的还有Halide
超参选择
channel-split ratio
即上文的alpha选择。alpha=0.25时时延和0.125差不多但效果更好。
Hybrid Index(HI)
多少层的普通卷积被替换为轻量化残差结构
这个值越大说明有越多的轻量化残差结构。HI=3和HI=4的精度差距大于HI=2和HI=3,最后选择HI=3
Hybrid Mode
普通卷积和轻量化残差模块的组成方式,包括三种:
- Front: 前HI个普通卷积被替换
- End: 后HI个普通卷积被替换
- Mixed: 以一定的间隔替换HI个普通卷积
Replacement Location
哪个阶段去替换
- 特征提取阶段
- 特征提取阶段+上采样阶段
- 贯穿全部(特征提取阶段+上采样阶段+每个residual block的末尾+特征提取阶段的输出)
exactly,大概是由于商业原因,作者在文章中隐藏了很多信息,这部分的实验我没有很具体的概念,和Hybrid Mode部分的实验结论无法联起来理解。
Lightweight Residual Block Type
证明channel splitting的优越性。
idleBlock效果最差,GhostBlock效率最差
手机运行
和MobiSR的比较,对手机端CPU概念不是很了解,就贴个截图
Code
做了个复现,之后来补一下结论