con 1:NNAPI HAL碎片化现象严重
- 生态很差,各种driver和版本各行其道(api难对齐;可能有bug;结果不一致)
con 2:只支持一定数量的TFLite op - TensorFlow Lite Delegate:
- 本质上是vendor给不同soc提供的lib?
- pros:
- 使用便捷,只需要把binary lib粘到proj(还是其他什么地方)里?
- 独立于Android OS sys (version),能在任何支持OpenCL的GPU上加速推理,对于一些古老机型也能有用
- 大多数架构都能加速,能支持大模型(上GB的ram)
- Pytorch Mobile:
- op覆盖广;CPU加速效果明显;依赖于NNAPI;不太推荐
- 推理类型
- FP32
- balabala…1符号位+8指数位+23分数位;NPU不支持FP32
- FP16
- 1符号位+5指数位+10分数位;在所有mobile lib中FP32->FP16自动发生;
- Int8
- 几乎对所有硬件都能加速推理,减少RAM消耗,提高能效;许多mobile NPU只支持Int 推理;
- 在图像分类任务中works well
- 在SR这类简单的图像处理任务重works so-so
- 在ISP&NLP中不work
- 一些Int8类型
- Dynamic range quantization: 精度高,没加速效果
- Full integer quantization: 精度高,没加速效果
- Integer only:精度最低但是能在所有INT8的NPU上跑
- Int16
- FP16的良好替代,尺寸不变但是可以整数推理;
- 没有显著的精度问题,适合图像处理;
- 许多NPU不支持,TFLite不支持;
- 一些chipset
- Qualcomm Chipsets
- Classic Hexagon DSPs
- Hexagon Tensor Processor(HTP)
- Hexagon Tensor Processor(HTP)v2
- Qualcomm Hexagon TFLite Delegate
- 支持所有含有classic NN-Compatible Hexagon DSP的Qualcomm SoC
- op支持覆盖比NNAPI好
- 任务性能好
- 一些厂商不允许外部调用Hexagon DSP;即将被弃用;
- (看起来是升级版)Qualcomm QNN TFLite Delegate
- 支持带Hexagon HTP的Qualcomm SoC;支持Qualcomm Adreno GPU的推理;
- op支持和覆盖好;runtime result好;有很多performance & power consumption 的trade-off选项;
- 但是经典Hexagon DSP的支持还不到位,即将不支持老版的Hexagon DSP
- MediaTek Chipsets
- MediaTek Neuron TFLite Delegate
- Samsung Chipsets
- Huawei Chipsets
- Google Chipsets
- 总结:
- Benchmark
- IOS 生态
- 计算资源(TOPs/TFLOPS, etc.)
- 支持不同推理类型(FP16, INT8, …)
- 支持op
* TensorFlow Lite CoreML Delegate
- Burnout
by Allen Lu, Jimmy Chiang from Mediatek
Talk4:SyNAP framework: Optimizing the AI model inference on the Edge
by Abdel Younes from Synaptics
Talk6: Denoising as a Building Block for Imaging, Inverse Problems, and Machine Learning
by Peyman Milanfar from Google Research
Paper2: RenderSR: A Lightweight Super-Resolution Model for Mobile Gaming Upscaling
- 对于超分任务,单独Y通道训练要比RGB三通道训练差(理所应当?)
- 在游戏渲染中可以获得depth数据,补充为RGBD数据后训练效果会更好:
- 在游戏渲染中,边缘锐化可能会让PSNR数值下降,但是视觉效果会更好:
- 一些take home message:
Paper3: An Efficient Hybrid Model for Low-light Image Enhancement in Mobile Devices
-
提供了一些效率数字,内存开销小于500MB,1440*1080的图像帧率应大于15:
-
老生常谈:传统方法速度快(?)效果差,NN-based方法效果好速度慢需要采集数据:
-
提出的策略:混合传统方法 + NN-based方法:
-
一些在端侧部署LLCV模型的经验:
- 普通Conv2d和可分离Conv2d有性能效率trade-off;
- loss func上讲的什么没听清(大意是metric不够有效?);
- 双线性上采样和Deconv效果差异不大;
- 在低光增强任务上,用max pooling可能会有过曝;
- 可分离Conv2d + padding可能会在边缘出现artifact(用reflect padding能缓解这个问题);
- 如何利用Raw数据(Y,U,V通道,结合其中的语义信息)还需要研究;
-
IQA仍然是个关键问题:
2021-2024, UCaiJun Revision
af8e214 Kaleido's Personal Page
master