论文地址:https://arxiv.org/abs/2105.07825
论文小结
这是2021年的一个移动端超分算法的比赛,其要求的目标平台有只能运行INT8的电视等,所以要求模型是全量化的。模型算法的目标是3倍超分,到1080P分辨率,即
640
∗
360
640*360
640∗360到
1920
∗
1080
1920*1080
1920∗1080,目标时间是
40
40
40-
60
60
60ms之内完成。模型的运行时间是在Synaptics VS680 Smart Home board with a dedicated NPU上完成的。训练数据集为DIV2K,表现结果如下图所示。
同时期的其他比赛:
- Learned Smartphone ISP on Mobile NPUs [18]
- Real Image Denoising on Mobile GPUs [17]
- Quantized Image Super-Resolution on Edge SoC NPUs
- Real-Time Video Super-Resolution on Mobile GPUs [25]
- Single-Image Depth Estimation on Mobile Devices [21]
- Quantized Camera Scene Detection on Smartphones [22]
- High Dynamic Range Image Processing on Mobile NPUs
论文简介
最新的移动NPU和中档桌面GPU性能相近了,但还存在两个问题:(1)受限的RAM;(2)不够通用的深度学习Layers和算子(即有些算子不支持)。
比赛使用DIV2K作为训练集,使用AI Benchmark作为测试工具,可以记载所有常用的TFlist模型。该测试工具有最新的安卓NNAPI,TFlite GPU,Hexagon NN,Samsung Eden和MediaTek Neuron delegates,所以支持所有现在的移动平台,可以提供测试智能手机NPUs/APUs/GPUs和CPUs的能力。在AI Benchmark上测试自己模型的步骤如下图所示:
目标平台
In this challenge, we use the Synaptics VS680 Edge AI SoC [35] Evaluation Kit as our target runtime evaluation platform. The VS680 Edge AI SoC is integrated into Smart Home solution and it features a powerful NPU designed by VeriSilicon and capable of accelerating quantized models (up to 7 TOPS). It supports Android and can perform NN inference through NNAPI, demonstrating INT8 AI Benchmark scores that are close to the ones of mid-range smartphone chipsets.(不懂这个硬件啥等级和配置,反正大概意思就是中等智能手机芯片组左右)
结果
比赛的结果如下图所示,冠军是Aselsan Research团队,MCG的效果更好,但量化模型提交太晚了。一共180个注册参与,12个到最终阶段,提交了结果。如表所示,只有6组的结果比双线性差值的baseline摇号。其他模型,INT8的损失都特别大。最简单减少量化损失的方式就是在网络尾端增加Clipped ReLU。
分数计算公式如下所示:
F
i
n
a
l
S
c
o
r
e
=
2
2
∗
P
S
N
R
C
∗
r
u
n
t
i
m
e
Final Score = \frac{2^{2*PSNR}}{C*runtime}
FinalScore=C∗runtime22∗PSNR
各参赛网络结构
Aselsan Research
网络结构如下图所示,是基于Group Conv设计的网络,将输入分为了四份,分别进行卷积,用以减少RAM的使用。同时,使用一个额外的Skip Connection来提高效果。学习策略为:使用
32
∗
32
32*32
32∗32的patch作为输入,batchSize为16,使用Charbonnier Loss损失,优化器使用Adam,使用动态学习率从
25
e
−
4
25e-4
25e−4到
1
e
−
4
1e-4
1e−4。
MCG
网络架构如下图所示,设计的思路是从残差结构出发的,就是学习的是与原始像素的残差,灵感来源于超分的大分辨率应该和邻近像素有较为接近。作者将这种方式成为Anchor-based CNN。训练策略为:使用
64
∗
64
64*64
64∗64的patch作为输入,batchSize为16,L1 Loss作为损失,Adam作为优化器,训练1000个epochs,每200个epoch学习率减半。在训练量化模型的时候增加Clipped ReLU。
NoahTerminalVision
网络结构如下图所示,网络命名为TinySRNet,使用3个残差块,每个残差块使用2个卷积,使用space-to-depth,depth-to-space和一个残差卷积层。作者强调残差模块对于模型量化后维持精度很重要。训练策略为:L1 Loss作为损失,Adam作为优化器,训练1 million次迭代,使用循环学习率,从每200K次迭代下降一次,从
5
e
−
4
5e-4
5e−4降到
1
e
−
6
1e-6
1e−6。
ALONG
网络结构如下图所示,只在原尺寸上操作,用最近邻上采样作为残差,而没用使用卷积。训练策略为:先用L1 Loss训练,再用L2 Loss进行finetune,使用
128
∗
128
128*128
128∗128的patch作为训练,Adam作为优化器,初始学习率为
2
e
−
4
2e-4
2e−4,每200K次迭代学习率下降一半。
EmbededAI
网络结构如下图所示,是采用重参数卷积的策略,多个卷积合成一个朴素的卷积。为了速度,整个网络结构没有设计Skip Connect和上采样,甚至连加法操作也没有。激活函数使用ReLU。训练策略:
64
∗
64
64*64
64∗64的patch作为输入,batchSize设为32,L1 Loss作为损失,训练600个epoch,Adam作为优化器,初始学习率为
5
e
−
4
5e-4
5e−4,每200个epoch下降一半学习率。
mju_gogogo
网络结构如下图所示,