基于深度学习的图像处理方案
深度学习模型格式根据不同框架有各自的格式,而针对于端侧设备,各厂商又推出了各自的轻量级推理框架来达到降低模型大小和利用设备上的加速器来加速推断的目的,比如谷歌Tensorflow提供的TensorflowLite和百度提供的PaddleLite框架
TensorflowLite框架
TFlite主要由Converter(左)和Interpreter(右)组成。Converter负责把TensorFlow训练好的模型转化,并输出为.tflite文件(FlatBuffer格式)。转化的同时,还完成了对网络的优化,如量化。Interpreter则负责把.tflite部署到移动端,嵌入式(embedded linux device)和microcontroller,并高效地执行推理过程,同时提供API接口给Python,Objective-C,Swift,Java等多种语言。简单来说,Converter负责打包优化模型,Interpreter负责高效易用地执行推理。
image.png
从上图可以看出,server端将模型训练过程中的一些中间过程和文件最终通过TFLite Converter转换为TFLite模型以便客户端使用更加轻量级的.tflite文件来执行推断,端侧扮演client的角色
PaddleLite框架
image.png百度的PaddleLite框架同样提供类似Tensorflow的训练过程,最终通过X2Paddle可以将模型转换为最终的nb模型,之后客户端处理流程大体上和tflite处理流程大同小异
通用轻量级深度学习框架的图像处理流程
mix支持TFLite和PaddleLite两种格式的模型,通用的使用深度学习步骤如下:
- 创建配置对象,用于配置模型路径,设备运行环境等信息
- 模型加载
- 创建推断器对象:PaddleLite创建predictor对象,TFLite创建Interpreter对象
- 输入数据:根据输入Tensor的格式,将模版图像的像素内容填充到Tensor指针中
- 执行推理:使用推断器对象执行模型推理
- 输出数据:通过输出Tensor指针内存和格式,将输出像素取出并执行后续处理
-
画面渲染:渲染后处理过后的像素数据
其流程图如下:
image.png
参考文档
https://xhzy.yuque.com/engineer-1/ag1g0d/xrx909
https://xhzy.yuque.com/engineer-1/ag1g0d/gbtr2u
基于Tensorflow模型实现图片样式迁移
image.pngimage.png
人脸动漫化
缺点:速度特别慢,只针对图片
image.png