目标检测-PaddleLite口罩识别的移动端部署实战

#目标检测- PaddleLite口罩识别的移动端部署实战

文章目录

    • 1.准备编译环境
      • 1.1 Linux开发环境
        • Android交叉编译环境要求
        • 配置环境具体步骤
    • 2.下载Paddlelite代码
    • 3.编译预测库
    • 4.将文件保存到手机
    • 5.在手机执行Demo
    • 6.查看结果

  • 其他配置框架可参考以下:

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


  • 框架配置及使用流程如下图!
    目标检测-PaddleLite口罩识别的移动端部署实战_第1张图片

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 ./

目标检测-PaddleLite口罩识别的移动端部署实战_第2张图片

注:此教程在Paddle官方教程上修改而来:https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx

你可能感兴趣的:(AI实践)