#目标检测- 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
所需硬件配置:
安装软件部分以 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
执行下面命令,下载PaddleLite代码
git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite
进入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
然后在build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/demo/cxx/mask_detection目录下继续执行
make
将手机通过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
进入安卓手机,执行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
回到电脑端,将结果取出,查看如下效果图。
adb pull /data/local/tmp/test_mask_detection_result.jpg ./
注:此教程在Paddle官方教程上修改而来:https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx