# C++ Demo
这些C++ Demo是通过shell端在安卓手机上执行,可以快速验证模型的正确性。验证模型正确性后,可以在安卓APP中使用PaddleLite部署模型。
> 欢迎加入PaddleLite百度官方QQ群(696965088),会有专业同学解答您的疑问与困惑。
## 1. 简介
准备:
* 一台可以编译PaddleLite的电脑,具体环境配置,请参考[文档](https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html),推荐使用docker。
* 一台armv7或armv8架构的安卓手机,安装adb,确保电脑和手机可以通过adb连接。
可以参考[文档](https://paddle-lite.readthedocs.io/zh/latest/quick_start/cpp_demo.html)了解下述demo的执行步骤。
可以参考[文档](https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_andriod.html)编译PaddleLite或者在[链接](https://paddle-lite.readthedocs.io/zh/latest/quick_start/release_lib.html)下载编译好的文件。
下述demo:
* 编译并运行轻量级api的demo
* 编译并运行全量api的demo
* 编译并运行物体分类的demo
* 编译并运行ssd目标检测的demo
* 编译并运行yolov3目标检测的demo
* 人脸识别和佩戴口罩判断的demo
* 编译含CV预处理库模型单测demo
## 2. 编译并运行轻量级api的demo
编译得到mobilenetv1_light_api可执行文件。注意,测试文件中设置的输入数据是全1,实际部署时,请设置实际的输入数据。
```shell
cd inference_lite_lib.android.armv8/demo/cxx/mobile_light
make -j
```
下载模型。
```
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxf mobilenet_v1.tar.gz
```
使用opt工具进行模型转换,具体参考[文档](https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html)。推荐从PaddleLite release界面下载opt工具(注意opt工具版本和预测库版本相同),然后进行模型转换。假定转换后的模型是mobilenet_v1.nb。
执行测试。如果是在docker中编译,但是docker中无法连接到手机,可以将测试需要的文件和库拷贝到docker外部,进行测试。
```
adb push mobilenetv1_light_api /data/local/tmp/
adb push mobilenet_v1.nb /data/local/tmp/
adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/
adb shell chmod +x /data/local/tmp/mobilenetv1_light_api
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/mobilenetv1_light_api /data/local/tmp/mobilenet_v1.nb"
```
运行成功将在控制台输出预测结果的前10个类别的预测概率。
## 3. 编译并运行全量api的demo(注:当编译模式为tiny_pubish时将不存在该demo)
全量api会在线对模型进行转化,然后加载转换后的模型进行预测。因为在线转换耗时较久,所以PaddleLite推荐首先使用opt工具对模型进行转化,然后使用轻量api加载转换后的模型,进行预测部署。
```shell
cd inference_lite_lib.android.armv8/demo/cxx/mobile_full
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxvf mobilenet_v1.tar.gz
make
adb push mobilenet_v1 /data/local/tmp/
adb push mobilenetv1_full_api /data/local/tmp/
adb push ../../../cxx/lib/libpaddle_full_api_shared.so /data/local/tmp/
adb shell chmod +x /data/local/tmp/mobilenetv1_full_api
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/mobilenetv1_full_api --model_dir=/data/local/tmp/mobilenet_v1 --optimized_model_dir=/data/local/tmp/mobilenet_v1.opt"
```
运行成功将在控制台输出预测结果的前10个类别的预测概率。注意,测试文件中设置的输入数据是全1,实际部署时,请设置实际的输入数据。
如果是在docker中编译,但是docker中无法连接到手机,可以将测试需要的文件和库拷贝到docker外部,进行测试。
## 4. 编译并运行物体分类的demo
编译得到mobilenetv1_light_api可执行文件。
```shell
cd inference_lite_lib.android.armv8/demo/cxx/mobile_classify
make
```
下载模型、测试数据。
```
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxf mobilenet_v1.tar.gz
wget https://paddle-inference-dist.cdn.bcebos.com/PaddleLite/cxx_demo/test_data.tgz
tar zxf test_data.tgz
```
使用opt工具进行模型转换,具体参考[文档](https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html)。推荐从PaddleLite release界面下载opt工具(注意opt工具版本和预测库版本相同),然后进行模型转换。
```
./opt --model_dir=mobilenet_v1 --optimize_out_type=naive_buffer --optimize_out=mobilenet_v1
# 优化后模型为 mobilenet_v1.nb
```
执行测试。如果是在docker中编译,但是docker中无法连接到手机,可以将测试需要的文件和库拷贝到docker外部,进行测试。
```
adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/
adb push mobile_classify /data/local/tmp/
adb shell chmod +x /data/local/tmp/mobile_classify
adb push test_data /data/local/tmp/
adb push mobilenet_v1.nb /data/local/tmp/
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/mobile_classify /data/local/tmp/mobilenet_v1.nb /data/local/tmp/test_data/test.jpg /data/local/tmp/test_data/label.txt"
```
运行成功将在控制台输出预测结果的前5个类别的预测概率。
- 如若想看前10个类别的预测概率,在运行命令输入topk的值即可
eg:
```shell
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/mobile_classify /data/local/tmp/mobilenet_v1.nb /data/local/tmp/test_data/test.jpg /data/local/tmp/test_data/label.txt 10"
```
- 如若想看其他模型的分类结果, 在运行命令输入model_dir 及其model的输入大小即可
eg:
```shell
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/mobile_classify /data/local/tmp/mobilenet_v1.nb /data/local/tmp/test_data/test.jpg /data/local/tmp/test_data/label.txt 10 224 224"
```
## 5. 编译并运行ssd目标检测的demo
```shell
cd inference_lite_lib.android.armv8/demo/cxx/ssd_detection
make -j
adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/
adb push ssd_detection /data/local/tmp/
adb shell chmod +x /data/local/tmp/ssd_detection
wget https://paddle-inference-dist.bj.bcebos.com/mobilenetv1-ssd.tar.gz
tar zxvf mobilenetv1-ssd.tar.gz
adb push mobilenetv1-ssd /data/local/tmp
adb push test.jpg /data/local/tmp/ # 请自己准备ssd模型的测试图片
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/ssd_detection /data/local/tmp/mobilenetv1-ssd /data/local/tmp/test.jpg"
adb pull /data/local/tmp/test_ssd_detection_result.jpg ./
```
运行成功将在ssd_detection目录下看到生成的目标检测结果图像: test_ssd_detection_result.jpg
## 6. 编译并运行yolov3目标检测的demo
```shell
cd inference_lite_lib.android.armv8/demo/cxx/yolov3_detection
make -j
adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/
adb push yolov3_detection /data/local/tmp/
adb shell chmod +x /data/local/tmp/yolov3_detection
wget https://paddle-inference-dist.bj.bcebos.com/mobilenetv1-yolov3.tar.gz
tar zxvf mobilenetv1-yolov3.tar.gz
adb push mobilenetv1-yolov3 /data/local/tmp
adb push test.jpg /data/local/tmp/ # 请自己准备yolov3模型的测试图片
adb shell "export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH &&
/data/local/tmp/yolov3_detection /data/local/tmp/mobilenetv1-yolov3 /data/local/tmp/test.jpg"
adb pull /data/local/tmp/test_yolov3_detection_result.jpg ./
```
运行成功将在yolov3_detection目录下看到生成的目标检测结果图像: test_yolov3_detection_result.jpg
## 7. 人脸识别和佩戴口罩判断的demo
目前,PaddleLite提供了shell端的人脸识别和佩戴口罩判断的Demo,首先�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Paddle Lite深度学习框架 v2.12.zip (2000个子文件)
gather_image_compute_test.cpp 8KB
gather_image_compute.cpp 8KB
elementwise_arm_math.cpp 6KB
conv_block_utils.h 201KB
nnadapter.h 96KB
nnapi_implementation.h 78KB
op_params.h 57KB
packed_sgemm_a35.h 55KB
convolution_configs.h 55KB
conv_block_utils_fp16.h 38KB
__gemm_sdot_meta__.h 32KB
NeuralNetworksTypes.h 31KB
gemm_configs.h 29KB
naive_math_impl.h 28KB
precision_profiler.h 27KB
cv_basic.h 27KB
elementwise_op_function.h 26KB
cl_wrapper.h 26KB
elementwise_common_broadcast_config.h 25KB
all.h 25KB
paddle_api.h 23KB
conv_depthwise.h 23KB
blas_impl.h 22KB
gru_cpu_kernel.h 22KB
gru_utils_fp16.h 21KB
float16.h 21KB
gru_utils.h 20KB
conv_ut.h 19KB
cpu_vec.h 18KB
metal_converter.h 18KB
rnn.h 18KB
type_system.h 17KB
refer.h 16KB
variable_place_inference_pass.h 16KB
context.h 15KB
conv_impl.h 15KB
nnadapter_wrapper.h 15KB
funcs.h 15KB
benchmark.h 15KB
neuron_adapter_wrapper.h 15KB
pattern_matcher.h 14KB
gru.h 14KB
utility.h 14KB
cxx_api.h 14KB
context_project.h 14KB
lstm_cpu_kernel.h 13KB
slice_compute.h 13KB
dot_toolchain_support.h 13KB
tensor_utils.h 13KB
prior_box.h 13KB
deformable_conv_compute_test.h 13KB
charconv.h 12KB
naive_buffer.h 12KB
common_preprocess.h 12KB
modeling.h 12KB
utility.h 12KB
float16.h 12KB
__xpu__static_kernel_pick_pass.h 12KB
act.h 12KB
conv_direct.h 12KB
activation_compute.h 12KB
debug_utils.h 11KB
pool_ut.h 11KB
lstm.h 11KB
all.h 11KB
static_kernel_pick_pass.h 11KB
op_registry.h 11KB
utility.h 11KB
blas.h 10KB
cl_runtime.h 10KB
elementwise.h 10KB
conv_op.h 10KB
conv2d_transpose.h 10KB
program.h 10KB
op_desc.h 10KB
converter.h 10KB
funcs_sve.h 10KB
tensor.h 10KB
elementwise.h 10KB
op_lite.h 10KB
kernel_base.h 10KB
pool2d.h 10KB
softmax_impl.h 10KB
conv2d.h 9KB
helper.h 9KB
op_desc.h 9KB
saturate.h 9KB
saturate.h 9KB
im2col_cfo_cpu.h 9KB
lstm_kernel.h 9KB
reduce_min.h 9KB
framework.h 9KB
elementwise_common_broadcast.h 9KB
convert_util_jni.h 9KB
reduce_max.h 9KB
registry.h 9KB
pooling.h 9KB
pool2d.h 8KB
paddle_image_preprocess.h 8KB
conv_image_compute.h 8KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
小小姑娘很大
- 粉丝: 4105
- 资源: 2348
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功