#目标检测- PaddleLite口罩识别的移动端部署实战
文章目录
- 其他配置框架可参考以下:
B站观看:https://www.bilibili.com/video/av88817410#reply2370693975
AI Studio观看:https://aistudio.baidu.com/aistudio/course/introduce/1022
GitHub项目地址:https://github.com/PaddlePaddle/Paddle-Lite/
此教程在Paddle官方教程上修改而来:https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx
- 框架配置及使用流程如下图!
1.准备编译环境
所需硬件配置:
- 一台可以编译PaddleLite的电脑(linux系统)
- 一台armv7或armv8架构的安卓手机
1.1 Linux开发环境
Android交叉编译环境要求
- gcc、g++、git、make、wget、python、adb
- Java environment
- cmake(建议使用3.10或以上版本)
- Android NDK (建议ndk-r17c)
配置环境具体步骤
安装软件部分以 Ubuntu 为例,打开终端,依次按照1234步骤准备编译环境即可
1.Install basic software
apt update
apt-get install -y --no-install-recommends \
gcc g++ git make wget python unzip adb curl
apt-get install openjdk-8-jdk
wget -c https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \
tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \
mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \
ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \
ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake
#Download Android NDK for linux-x86_64
#Note: Skip this step if NDK installed
#recommand android-ndk-r17c-darwin-x86_64
#ref: https://developer.android.com/ndk/downloads
cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
cd /opt && unzip /tmp/android-ndk-r17c-linux-x86_64.zip
2.下载Paddlelite代码
执行下面命令,下载PaddleLite代码
git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite
3.编译预测库
进入PaddleLite根目录,编译预测库
./lite/tools/build.sh \
--arm_os=android \
--arm_abi=armv8 \
--arm_lang=gcc \
--android_stl=c++_static \
--build_extra=ON \
--shutdown_log=OFF \
tiny_publish
进入编译目录,下载模型和图片的压缩包,编译可执行文件
cd build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/demo/cxx/mask_detection
wget https://paddle-inference-dist.bj.bcebos.com/mask_detection.tar.gz
tar zxvf mask_detection.tar.gz
- 这里要注意下解压出来的是个目录:mask_detection,与上级目录重名。所以需将此目录里的三个文件需提出来放在当前的demo/cxx/mask_detection目录下,然后删除多余的这个mask_detection目录,否则提示编译失败。
然后在build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/demo/cxx/mask_detection目录下继续执行
make
4.将文件保存到手机
将手机通过usb线连到电脑上,在设置里打开手机开发者选项,部分手机还需打开usb连接选项。
电脑连接安卓手机,将可执行文件、测试图片、模型文件、预测库push到安卓手机上。测试图片可更换
adb push mask_detection /data/local/tmp/
adb push test.jpg /data/local/tmp/
adb push face_detection /data/local/tmp
adb push mask_classification /data/local/tmp
adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/
adb shell chmod +x /data/local/tmp/mask_detection
-
提示:如若成功执行检测代码生成被检测图的图片则略过此步。在运行adb push face_detection /data/local/tmp;adb push mask_classification /data/local/tmp命令后,后续运行检测命令可能会报找不到"model",或者未找到“face_detection”,因为部分手机(华为)运行以上命令时可能只将文件夹里的文件传输进来,不能将传进单个文件夹。这里需在/data/local/tmp路径下用ls查看传进来的文件夹是否齐全。
-
解决办法:在手机端/data/local/tmp路径下新建所需文件夹,把对应的文件放在新建的文件夹里,首先删除刚刚手机/data/local/tmp/Lu路径下所有文件,然后再新建所需目录。
cd /data/local/tmp/ rm -fr * mkdir face_detection mkdir mask_classification adb push mask_detection /data/local/tmp/ adb push test.jpg /data/local/tmp/ adb push face_detection /data/local/tmp/face_detection adb push mask_classification /data/local/tmp/mask_classification adb push ../../../cxx/lib/libpaddle_light_api_shared.so /data/local/tmp/ adb shell chmod +x /data/local/tmp/mask_detection
5.在手机执行Demo
进入安卓手机,执行demo。
adb shell
cd /data/local/tmp
export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH
./mask_detection face_detection mask_classification test.jpg
6.查看结果
回到电脑端,将结果取出,查看如下效果图。
adb pull /data/local/tmp/test_mask_detection_result.jpg ./
注:此教程在Paddle官方教程上修改而来:https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx