背景
超分(Super-Resolution),本文简称为SR,指的是通过深度学习模型让低分辨率的图像变成高分辨率。超分这个概念其实由来已久,今天主要介绍下端侧超分,重点讲的是手机端的超分。主要是参考了《MobiSR: Efficient On-Device Super-Resolution through Heterogeneous Mobile Processors》这篇文章。
超分模型的理论基础,这件事为什么能做其实很关键。CNN模型如下图可以构建出一套数学模型,使得在以PSNR、SSIM等指标作为评估的时候,构建出输入低分辨率图片并产出高分辨率图片的一个通路,这使得超分这个概念在逻辑上是成立的。
端侧部署模型的收益
既然SR可以做成一个模型的预测过程,一定是受限于计算资源的,为什么一定要做到端侧。
收益主要是几点:
- 1.时延性,端侧时延会很低,近乎于0
- 2.数据隐私性,应用不用把数据上传到服务器,而直接在端侧做预测
- 3.计算资源的节约,把云端服务器的成本转嫁到计算力越来越突出的手机端
在端侧部署模型,主要解决的问题有两个:
- 模型的尺寸,不会有APP允许一个超大规模的模型的嵌入
- 模型inference的资源限制,端侧不像服务侧那样有充分的资源,所以如何保证端侧模型的运行效率是个挑战
如何解决端侧模型的问题
解决方案就是减少模型的计算复杂度并且充分利用端侧的资源。在减少计算复杂度方面,可以在端侧模型多用一些轻量的残差网络模块(lightweight residual blocks)。
另外一个模式就是将channels分割,是得总的模型参数不变的情况下学习更多的内容,如下图:
详细方案可以看以下这篇论文《SplitSR:An End-to-End Approach to Super-Resolution on Mobile Devices》。
另外如何更有效的利用手机侧的资源也是提升端侧模型性能的方案。一个比较简单的思路是提升手机端GPU和DSP的利用率,因为相比于CPU计算资源,GPU和DSP的计算资源更为宝贵,一个做法就是将简单的工作尽可能交给CPU去执行,将复杂的计算逻辑交给GPU和DSP去执行。