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)
网络结构分成五部分来讲:对称连接框架,基础残差结构,特征信息池,模型压缩,激活函数移除。
Symmetric Connection Framework
整个网络采用了类似UNet的对称结构(但其实区别很大),分成了特征提取和特征融合两个部分。整个网络除了最后的Upsampling(或者说Pixelshuffle)并没有使用任何的下采样(包括在SR任务中会导致checkerboard effect的pooling layer)、上采样操作,同时在蓝色块区域使用的通道数一直保持固定。
在特征提取阶段,选择了一些层的信息放入Information Pool,这儿的信息在特征融合模块会用到。
PS:图其实画的挺清楚了,和代码一致,但文中公式和代码有不一致的地方。
Basic Residual Block
和普通的ResBlock的区别有两点:激活函数和尺度因子。
关于激活函数后面会展开讲。
Information Pool
将Information Pool中的特征cat之后用一组1*1卷积保持和其它Residual Block一致。
获得这个数值后执行的操作:
Ioutput对应conv1, 跳连的结果对应feat3_3,conv8是上一层的输出。
Model Compression
把mobileNet v2中的reverted residual重画了下图,这个结构本身没什么改进,作者在网络的某些部分使用了这个结构。后来看了下代码,下图中被我用绿色圈出来的地方作者用了这个结构:
Activation Removal
区别于检测和分割,SR作为生成任务需要尽可能多的信息,而激活函数如ReLU在达到非线性的同时限制了有用信息的可信度。同时,移除激活函数在模型被压缩的情况下更加有用。具体哪些激活函数可以被移除作者在IV-B中讲了。
Conclusion
- channel size的影响很大
- channel size = 32时将12/26的block采用mobileNet v2的inverted residual结构,能获得channel = 16的计算量并仍拥有近似channel=32的超分能力
- inverted residual不适合用在特征提取阶段
- 移除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可能局限性比较大,在特定任务场景下有效果。