Paddle Lite新增ARM端影像預處理庫

PaddlePaddle發表於2019-12-24

Paddle Lite 是飛槳的端側推理引擎,具有高效能、多硬體、輕量級的特點,它支援飛槳/TensorFlow/Caffe/ONNX等模型在ARM CPU, Mali GPU, Adreno GPU, Huawei NPU 等多種硬體上的推理部署,效能達到業內領先。

目前Paddle Lite保持快速的迭代優化升級,距離正式版2.0.0釋出僅一個月,Paddle Lite又一次釋出了2.1.0版本。

Paddle Lite的Github連結:

https://github.com/PaddlePaddle/Paddle-Lite

01 Paddle Lite v2.1.0的重點功能

1.新增ARM端影像預處理庫,用於影像預處理,它可以

  • 支援多種顏色空間轉換,如NV12_To_RGB、GRAR_To_RGB等

  • 支援多種影像預處理操作,如影像旋轉、翻轉等

  • 支援影像資料到Tensor的轉換,如RGB_To_NCHW(Tensor)等

  • 相關功能效能優於OpenCV。對1920x 1080的BGR影像,做如下操作:

o   Resize:1920x 1080 --540x960

o   Rotate:1920x 1080 旋轉90度

o   Flip:沿xy軸對角線翻轉

OpenCV在ARM v7 4執行緒下的效能對比資料如下圖所示:

Paddle Lite新增ARM端影像預處理庫

2.新增按模型集合裁剪預測庫的功能。開發者可以通過該功能只保留給定多個模型線上預測所需要的op和kernel,從而壓縮預測庫體積。

3.優化報錯資訊,在Android中支援原生系統報錯。

02 Paddle Lite v2.1.0更多新特性一覽

1.基礎功能升級

a.新增op

  • x86 tanh, gelu

  • x86 stack

b.op升級,與飛槳 v1.6對齊

  • reshape支援輸入用std::vector<Tensor<int32>>描述shape資訊

  • slice支援starts、ends用Tensor、TensorList描述

  • lookup_table 去除最後一維必須為1的限制,保留原op,新增op為lookup_table_v2

  • resize_bilinear和resize_nearest,增加用TensorList和Tensor描述resize的shape資訊

c.新增模型

  • x86增加MobileNetV1, MobileNetV2支援


d.API對齊

Python、Java、C++三種 API核心介面對齊:

  • MobileConfig模式下,Python , Java,C++介面完整對齊,適用於移動端的輕量級部署場景 

  • CxxConfig 模式下,Python,C++介面完整對齊,適用於非輕量級部署場景

e.升級量化模型支援

  • 支援飛槳訓練後量化方法產出的量化模型,比如MobileNetV1、 MobileNetV2、ReseNt50

  • 支援飛槳量化訓練方法產出權重量化方式為channel_wise_abs_max的量化模型

f.預測庫整理

重新整理核心庫包含的(basic) op&kernel,使基礎預測庫(build_extra=OFF)支援CV類9個經典模型(包括飛槳原生模型和對應的 X2Paddle第三方轉化模型)和3個量化模型,且tiny_publish下預測動態庫體積不變。支援模型如下:

  • 9個經典模型及其飛槳轉化模型:MobileNetV1、MobileNetV2、MnasNet、ResNet50、YOLOv3、SSD_MobileNetV1、 U-Net、SqueezeNet_v1.1、ShuffleNet_v2

  • 3個int8量化模型:MobileNetV1、MobileNetV2、ResNet50

2.效能優化

主流模型的效能優化持續迭代。以MobileNetV1為例,效能保持領先,如下圖所示:

Paddle Lite新增ARM端影像預處理庫

改進ARM CPU conv3x3實現方式,ResNet、SqueezeNet等模型效能提升。ResNet50效能如下圖所示:

Paddle Lite新增ARM端影像預處理庫

3.編譯

  • X86與CUDA編譯時第三方庫下載加速 (X86編譯相關的第三方庫Eigen、MKLML、xxHash改為從百度雲地址下載,加速編譯過程)

  • NPU的編譯支援華為官方最新版HiAI DDK 310

 4.文件

  • 新增Pass介紹與註冊方法文件:

    https://paddlepaddle.github.io/Paddle-Lite/v2.1.0/add_new_pass/

  • 補齊了 Cxx API文件:

    https://paddlepaddle.github.io/Paddle-Lite/v2.1.0/cxx_api_doc/

  • 新增CV影像預處理庫API介面介紹文件:

    https://paddlepaddle.github.io/Paddle-Lite/v2.1.0/cv/

  • 新增部署訓練後量化模型的使用示例文件:

    https://paddlepaddle.github.io/Paddle-Lite/v2.1.0/model_quantization/#%E8%AE%AD%E7%BB%83%E5%90%8E%E9%87%8F%E5%8C%96

5.Bug修復

修補了一些上個版本中存在的Bug。 

如果您想了解更多關於Paddle Lite的相關內容,請參閱以下文件:

  • Paddle Lite的Github連結:

    https://github.com/PaddlePaddle/Paddle-Lite

  • Paddle Lite的文件連結:

    https://paddlepaddle.github.io/Paddle-Lite/

  • Paddle Lite Demo的連結:

    https://github.com/PaddlePaddle/Paddle-Lite-Demo

  • 飛槳的Github連結:

    https://github.com/paddlepaddle

如果使用過程中遇到任何問題,大家可通過Paddle Lite官方QQ群與開發人員進行技術交流及問題反饋,群號:696965088。

相關文章