Title

s-LWSR: Super Lightweight Super-Resolution Network
代码:https://github.com/Sudo-Biao/s-LWSR
TIP 2020

Summary

作者借鉴UNet,将网络分为特征提取和特征融合两部分,借助辅助信息池、移除relu等操作实现轻量化的超分网络
论文质量还不错,但这些trick的有效性需要验证。

Contribution(s)

  • 基于UNet构造对称网络,移除所有pooling和BN,使用了辅助信息池(an assistant information pool)
  • 为了避免channel大时的信息重复,使用了压缩模块(基于MobileNet v2中的inverted residual block)
  • 移除一些激活层(Relu)

    Problem Statement

    在有限计算量和参数量的情况下获得较好的超分效果

    Method(s)

    网络结构分成五部分来讲:对称连接框架,基础残差结构,特征信息池,模型压缩,激活函数移除。

s-LWSR: Super Lightweight Super-Resolution Network - 图1

Symmetric Connection Framework

整个网络采用了类似UNet的对称结构(但其实区别很大),分成了特征提取和特征融合两个部分。整个网络除了最后的Upsampling(或者说Pixelshuffle)并没有使用任何的下采样(包括在SR任务中会导致checkerboard effect的pooling layer)、上采样操作,同时在蓝色块区域使用的通道数一直保持固定。
在特征提取阶段,选择了一些层的信息放入Information Pool,这儿的信息在特征融合模块会用到。
PS:图其实画的挺清楚了,和代码一致,但文中公式和代码有不一致的地方。

Basic Residual Block

image.png
和普通的ResBlock的区别有两点:激活函数和尺度因子。
关于激活函数后面会展开讲。

Information Pool

将Information Pool中的特征cat之后用一组1*1卷积保持和其它Residual Block一致。
image.png
获得这个数值后执行的操作:image.png
Ioutput对应conv1, 跳连的结果对应feat3_3,conv8是上一层的输出。

Model Compression

image.png
把mobileNet v2中的reverted residual重画了下图,这个结构本身没什么改进,作者在网络的某些部分使用了这个结构。后来看了下代码,下图中被我用绿色圈出来的地方作者用了这个结构:
image.png

Activation Removal

区别于检测和分割,SR作为生成任务需要尽可能多的信息,而激活函数如ReLU在达到非线性的同时限制了有用信息的可信度。同时,移除激活函数在模型被压缩的情况下更加有用。具体哪些激活函数可以被移除作者在IV-B中讲了。

Conclusion

  1. channel size的影响很大
  2. channel size = 32时将12/26的block采用mobileNet v2的inverted residual结构,能获得channel = 16的计算量并仍拥有近似channel=32的超分能力
  3. inverted residual不适合用在特征提取阶段
  4. 移除1/2的relu最权衡之后的最优解

Criticism

网络结构图中三个蓝色块一组的Local Resdual Block和代码中不一致
文中的公式
LBoutput = LB3( LB1 (LB_output上一个block) ) ) + LB2 ( LB1 ) )
代码里的公式和图中的一样:
LBoutput = LB3 ( LB2 ( LB1 ( LB_output上一个block) ) ) + LB1 ( LBoutput上一个block)

我对Conclusion中2的实验结果持怀疑态度
此外,将作者的网络用在去模糊中基本无效果,学到的颜色还非常奇怪。

总体感觉作者还是有自己的想法的,实验也很丰富,这些idea可能局限性比较大,在特定任务场景下有效果。