Release Note
模型、算子及多硬件、多框架支持
- 加强多框架支持(通过 X2Paddle)
- 新增onnx 模型支持
- 扩展tensorlfow模型支持
- 扩展caffe模型支持
- 官方测试过的模型及框架支持如下
模型 | paddle fluid | caffe | tensorflow | onnx |
---|---|---|---|---|
mobilenetv1 | Y | Y | Y | |
mobilenetv2 | Y | Y | Y | Y |
resnet18 | Y | Y | Y | |
resnet50 | Y | Y | Y | Y |
mnasnet | Y | Y | Y | |
efficientnet | Y | Y | Y | Y |
squeezenetv1.1 | Y | Y | Y | |
shufflenet | Y | Y | Y | |
mobilenet_ssd | Y | Y | Y | |
mobilenet_yolov3 | Y | Y | ||
inceptionv4 | Y | |||
mtcnn | Y | Y | Y | |
facedetection | Y | Y | ||
unet | Y | Y | Y | |
ocr_attention | Y | |||
vgg16 | Y |
-
IN8模型,增加支持Resnet50-INT8
-
ARM CPU 新增验证模型 5 个
- 新增支持 Faster RCNN 模型
- 新增支持 FaceDetection 模型
- 新增支持 SSD_ShufflenetV2_FPN 模型
- 新增支持 SSD_MobilenetV3_FPN 模型
- 新增支持Yolov3_Int8模型
-
华为NPU新增验证模型3个
- 新增MobileNet V2, ShuffleNet V2和Unet模型的支持
- 新增pad2d Op支持
-
验证支持 树莓派 3B和RK3399开发板
-
新增算子 36 个,以更好地支持更广模型及多种框架
- affine_channel
- anchor_generator
- assign
- assign_value
- box_clip
- elementwise_div
- equal
- expand
- fake_quantize_range_abs_max
- fill_constant_batch_size_like
- flatten
- flatten2
- floor
- fusion_elementwise_div_activation
- generate_proposals
- greater_equal
- greater_than
- hard_sigmoid
- less_equal
- logical_not
- logical_or
- matmul
- mean
- notequal
- range
- reduce_mean
- relu6
- roi_align
- sequence_expand_as
- squeeze
- squeeze2
- stack
- uniform_random
- unsqueeze
- unsqueeze2
基础功能
-
model_optimize_tool
改成在 host 上执行——现在无需在 ARM (手机)上执行,直接在编译机上执行便可;功能和命令行参数不变 -
新增支持 INT8 模型以 INT8 格式存储和载入,显著降低 APP 中模型体积
优化前 optimize tool保存为INT8 格式后 MobileNetV1_quant 17M 5.3M MobileNetV2_quant 15M 5.1M ResNet50_quant 100M 27M -
新增内存优化能力
- 原理:在模型预测期间,Op的输出Tenso若在生存期上没有重叠,可复用一块内存,从而可以降低模型预测期间的整体内存占用。
- 效果:batch 为1 的情况下对模型的的内存占用测试如下
模型 内存复用效果(memory/original) Mobilentev1 78% Mobilenetv2 67% Resnet50 82% Mobilenetv1_int8 82% Mobillenet_SSD 71% -
新增版本信息输出功能
- 增加接口
- C++ API在PaddlePredictor中增加
std::string GetVersion()
接口用于返回当前lib使用的代码版本。 - Java API在PaddlePredictor中增加
public String getVersion()
接口用于返回当前lib使用的代码版本。 - 详细信息可以参考 C++ API 文档 和 Java API文档
- C++ API在PaddlePredictor中增加
- 返回值说明
- 若编译当前lib的代码有相关tag,则返回
tag
- 若编译当前lib的代码没有相关tag,则返回
branch(commitid)
- 若编译当前lib的代码有相关tag,则返回
- 增加接口
编译
- 新增
tiny_publish
编译模式下输出 Android C++ 动态链接库- 编译时选择
--arm_os=android
可编译出Android C++动态链接库文件 - 动态链接库位置(以armv8为例):
Paddle-Lit/build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/cxx/lib
- 动态链接库文件:
- libpaddle_light_api_shared.so : 只包含包含light_api接口
- libpaddle_full_api_shared.so : 包含所有功能, light_api接口和full_api接口
- 编译说明:
- tiny_publish只编译出 libpaddle_light_api_shared.so 文件
- full_publish编译出 libpaddle_light_api_shared.so和libpaddle_full_api_shared.so
- 编译时选择
- 支持编译发布 FPGA 预测包
- 修复ARM Linux编译问题,新增Ubuntu Host端交叉编译和开发板本地编译,具体参见源码编译指南
文档
- 文档改为使用 github pages,新文档地址 https://paddlepaddle.github.io/Paddle-Lite/
- 完善了 源码编译指南,增加ARM Linux设备端本地编译;
- 增加了C++ API文档 和 Java API文档 ,详细列举了所有用户API 及描述
DEMO
- Paddle-Lite-Demo仓库: https://github.com/PaddlePaddle/Paddle-Lite-Demo
- 新增ios/Android mobilenetv1-ssd 检测demo
- Android新增支持NPU的、基于Light API的图像分类demo,并提供预编译的、支持NPU和CPU的Light API jni库
Bugfix
- 修复
model_optimize_tool
优化 attention 模型出错及优化后不能运行的问题 - 修复 clang编译bug
- 修复PriorBox op中存在的bug
- 修复编译脚本,取消默认编译单测
- 修改kernel的相关冗余代码及计算bug
附件
有 with_extra
和 build_extra
后缀的表示全量算子(一百多个,体积稍大),否则表示核心库,只包含核心模型所需算子,部署体积更小。
android
- inference_lite_lib.android.armv7.tar.gz
- inference_lite_lib.android.armv7.with_extra.tar.gz
- inference_lite_lib.android.armv8.tar.gz
- inference_lite_lib.android.armv8.with_extra.tar.gz
ios
- inference_lite_lib.ios.armv7.tar.gz
- inference_lite_lib.ios.armv8.build_extra.tar.gz
- inference_lite_lib.ios.armv8.tar.gz
- inference_lite_lib.ios.armv8.build_extra.tar.gz
- inference_lite_lib.ios64.armv8.tar.gz
- inference_lite_lib.ios64.armv8.build_extra.tar.gz