Title

SplitSR: An End-to-End Approach to Super-Resolution on Mobile Devices
https://arxiv.org/pdf/2101.07996.pdf

有的文章标签比较多,用语雀的目录无法准确分类,所以我依照当前我的目的(实现网络的轻量化)将其放入轻量化章节。

Summary

实现了手机上的实时超分

Contribution(s)

  1. 提出结构SplitSR,结合了传统卷积和轻量化残差模块
  2. 提出了轻量化残差模块SplitSRBlock
  3. 用TVM(深度学习编译器)实现提出的网络和系统
  4. 根据这个模型实现了一个APP:ZoomSR

    Problem Statement

    在超分问题上平衡效率和精度

    Method(s)

    SplitSRBlock

    image.png
    channel splitting能实现类似channel attention的作用
    N个通道依据拆分因子alpha分成了两个分支,前alphaN的通道用来做普通卷积(不推荐使用深度/点卷积,对生成网络而言,空间信息是非常重要的),剩下的通道闲置,最后将两个分支的输出倒置concat。倒置后前alphaN个通道成为后alpha*N个通道。
  • channel splitting的作用是在同样的计算量下,网络能有更多的层。
  • 其中一个分支使用普通卷积而非深度/点卷积是为了保留更多的空间信息
  • 倒置concat是为了让所有的通道都尽可能多地参与计算
  • 普通卷积计算量HWNNkk,SplitSRBlock计算量HWNalphaNalphakk,计算量是原来的alpha^2

SplitSR

image.png
SplitSR主要基于RCAN修改,网络分为四个部分,一个由普通卷积构成的输入阶段,feature extraction阶段,upsampler阶段和输出阶段。SplitSRBlock可以用在特征提取阶段和输出阶段。

Evaluation

实现

用TVM将网络从TensorFlow转换为Relay representation。与TVM类似的还有Halide

超参选择

channel-split ratio

即上文的alpha选择。alpha=0.25时时延和0.125差不多但效果更好。
image.png

Hybrid Index(HI)

多少层的普通卷积被替换为轻量化残差结构
这个值越大说明有越多的轻量化残差结构。HI=3和HI=4的精度差距大于HI=2和HI=3,最后选择HI=3
image.png

Hybrid Mode

普通卷积和轻量化残差模块的组成方式,包括三种:

  • Front: 前HI个普通卷积被替换
  • End: 后HI个普通卷积被替换
  • Mixed: 以一定的间隔替换HI个普通卷积

image.png

Replacement Location

哪个阶段去替换

  • 特征提取阶段
  • 特征提取阶段+上采样阶段
  • 贯穿全部(特征提取阶段+上采样阶段+每个residual block的末尾+特征提取阶段的输出)

exactly,大概是由于商业原因,作者在文章中隐藏了很多信息,这部分的实验我没有很具体的概念,和Hybrid Mode部分的实验结论无法联起来理解。
image.png

Lightweight Residual Block Type

证明channel splitting的优越性。
idleBlock效果最差,GhostBlock效率最差

image.png

手机运行

image.png
image.png
和MobiSR的比较,对手机端CPU概念不是很了解,就贴个截图

Code

做了个复现,之后来补一下结论