Linux(ARM) 工程示例
多种应用场景
我们提供Paddle-Lite示例工程Paddle-Lite-Demo,其中包含Android、iOS和Armlinux平台的示例工程。Linux(ARM) demo涵盖图像分类、目标检测2个应用场景。
1. 图像分类
Paddle-Lite提供的图像分类demo ,在移动端上提供了实时的物体识别能力,可以应用到生产线自动分拣或质检、识别医疗图像、辅助医生肉眼诊断等场景。在移动端预测的效果图如下:

2. 物体检测
Paddle-Lite提供的物体检测demo ,在移动端上提供了检测多个物体的位置、名称、位置及数量的能力。可以应用到视频监控(是否有违规物体或行为)、工业质检(微小瑕疵的数量和位置)、医疗诊断(细胞计数、中药识别)等场景。在移动端预测的效果图如下:

Linux(ARM) demo部署方法
下面我们以目标检测(object_detection_demo) 为例讲解如何部署Linux(ARM)工程。
目的:将基于Paddle-Lite的预测库部署到Linux(ARM)设备,实现物体检测的目标。
需要的环境:Linux(ARM)设备、下载到本地的Paddle-Lite-Demo工程
部署步骤:
1、 目标检测的Linux(ARM)示例位于 Paddle-Lite-Demo\PaddleLite-armlinux-demo\object_detection_demo
2、终端中执行 download_models_and_libs.sh 脚本自动下载模型和Paddle-Lite预测库
cd PaddleLite-armlinux-demo # 1. 终端中进入 Paddle-Lite-Demo\PaddleLite-armlinux-demosh download_models_and_libs.sh # 2. 执行脚本下载依赖项 (需要联网)
下载完成后会出现提示: Download successful!
3、执行用例(保证linux_arm环境准备完成,参考Paddle-Lite-Demo 要求-ARMLinux小节)
cd object_detection_demo # 1. 终端中进入sh run.sh # 2. 执行脚本编译并执行物体检测demo,输出预测数据和运行时间
demo结果如下: 
使用C++接口预测
Linux(ARM) demo 示例基于C++ API 开发,调用Paddle-Lite C++ API包括以下五步。更详细的API 描述参考: Paddle-Lite C++ API。
#include <iostream>// 引入C++ API#include "paddle_lite/paddle_api.h"#include "paddle_lite/paddle_use_ops.h"#include "paddle_lite/paddle_use_kernels.h"// 1. 设置MobileConfigMobileConfig config;config.set_model_from_file(<modelPath>); // 设置NaiveBuffer格式模型路径config.set_power_mode(LITE_POWER_NO_BIND); // 设置CPU运行模式config.set_threads(4); // 设置工作线程数// 2. 创建PaddlePredictorstd::shared_ptr<PaddlePredictor> predictor = CreatePaddlePredictor<MobileConfig>(config);// 3. 设置输入数据std::unique_ptr<Tensor> input_tensor(std::move(predictor->GetInput(0)));input_tensor->Resize({1, 3, 224, 224});auto* data = input_tensor->mutable_data<float>();for (int i = 0; i < ShapeProduction(input_tensor->shape()); ++i) {data[i] = 1;}// 4. 执行预测predictor->run();// 5. 获取输出数据std::unique_ptr<const Tensor> output_tensor(std::move(predictor->GetOutput(0)));std::cout << "Output shape " << output_tensor->shape()[1] << std::endl;for (int i = 0; i < ShapeProduction(output_tensor->shape()); i += 100) {std::cout << "Output[" << i << "]: " << output_tensor->data<float>()[i]<< std::endl;}
使用Python接口预测
Python预测库编译参考编译Linux,建议在开发版上编译。
代码参考,Python完整示例