Paddle Lite——树莓派端部署实现实时视频流目标检测demo

文章目录

    • Paddle Lite环境准备
      • 硬件准备
      • 基本软件环境准备
        • 摄像头准备
        • 编译库准备
    • Paddle Lite(demo)的安装
      • 模型和预测库下载
      • 模型的编译(根据你需要实现的功能进行选择)
        • (1)图像分类模型的编译(单图片预测分类)
          • Paddle Lite的配置和预测的输入和输出的图片路径的设置(可选操作)
          • 执行预测命令
        • (2)目标检测模型的编译(单图片检测)
          • Paddle Lite的配置和预测的输入和输出的图片路径的设置(与图片分类模型配置完全相同)
        • (3)目标检测模型的编译(视频流检测)
          • Paddle Lite的配置和视频流监测的设置
          • 执行预测命令
          • 效果展示

参考:Paddle Lite官方文档

Paddle Lite环境准备

硬件准备

  • 树莓派4B
  • usb摄像头
  • 装好Buster的镜像源的SD卡

基本软件环境准备

摄像头准备

参考文章:树莓派摄像头的安装、配置与验证

编译库准备

完成gcc、g++、opencv、cmake的安装:

sudo apt-get update
sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
#下载cmake
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz

在这一步如果下载很慢,这里我也提供了cmake-3.10.3.tar.gz的包,需要的可以自行下载。

#解压
tar -zxvf cmake-3.10.3.tar.gz
#进入文件夹
cd cmake-3.10.3
#环境配置
sudo ./configure
#make
sudo make

Paddle Lite——树莓派端部署实现实时视频流目标检测demo_第1张图片

sudo make install

Paddle Lite——树莓派端部署实现实时视频流目标检测demo_第2张图片
到这里就完成了所有的环境准备。

Paddle Lite(demo)的安装

Paddle Lite安装和demo相同

#下载Paddle Lite
git clone https://github.com/PaddlePaddle/Paddle-Lite-Demo
#博主已经将Paddle-Lite-Demo上传到码云上,读者可以选择用博主的码云地址下载,下载速度飞快
#git clone https://gitee.com/irving_gao/Paddle-Lite-Demo.git

模型和预测库下载

cd Paddle-Lite-Demo/PaddleLite-armlinux-demo
./download_models_and_libs.sh # 下载模型和预测库

模型的编译(根据你需要实现的功能进行选择)

(1)图像分类模型的编译(单图片预测分类)

进入image_classification_demo文件夹
cd Paddle-Lite-Demo/PaddleLite-armlinux-demo/image_classification_demo
Paddle Lite的配置和预测的输入和输出的图片路径的设置(可选操作)
  • 注释掉第四行的TARGET_ARCH_ABI=armv8,打开第五行的,取消第5行TARGET_ARCH_ABI=armv7hf
    的注释。
  • 需要对run.sh文件进行修改:
sudo nano run.sh

在#run代码段找到参数../images/2001.jpg./result.jpg,进行自定义设置即可,此处建议设置为:

#!/bin/bash

# configure
#TARGET_ARCH_ABI=armv8 # for RK3399, set to default arch abi
TARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3B
PADDLE_LITE_DIR=../Paddle-Lite
if [ "x$1" != "x" ]; then
    TARGET_ARCH_ABI=$1
fi

# build
rm -rf build
mkdir build
cd build
cmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..
make

#注意,这里为run代码段!!!!!!
#run
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PADDLE_LITE_DIR}/libs/${TARGET_ARCH_ABI} ./object_detection_demo ../models/model.nb ../labels/pascalvoc_label_list ../images/2001.jpg ./result.jpg

执行预测命令
sudo ./run.sh 

在终端即可看到打印出的预测结果和性能数据,在build目录中可以看到生成的result.jpg。

(2)目标检测模型的编译(单图片检测)

cd Paddle-Lite-Demo/PaddleLite-armlinux-demo/object_detection_demo
Paddle Lite的配置和预测的输入和输出的图片路径的设置(与图片分类模型配置完全相同)
  • 注释掉第四行的TARGET_ARCH_ABI=armv8,打开第五行的,取消第5行TARGET_ARCH_ABI=armv7hf
    的注释。
  • 需要对run.sh文件进行修改:
sudo nano run.sh

在#run代码段找到参数../images/2001.jpg./result.jpg,进行自定义设置即可,此处建议设置为:

#!/bin/bash

# configure
#TARGET_ARCH_ABI=armv8 # for RK3399, set to default arch abi
TARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3B
PADDLE_LITE_DIR=../Paddle-Lite
if [ "x$1" != "x" ]; then
    TARGET_ARCH_ABI=$1
fi

# build
rm -rf build
mkdir build
cd build
cmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..
make

#注意,这里为run代码段!!!!!!
#run
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PADDLE_LITE_DIR}/libs/${TARGET_ARCH_ABI} ./object_detection_demo ../models/ssd_mobilenet_v1_pascalvoc_for_cpu/model.nb ../labels/pascalvoc_label_list ../images/2001.jpg ./result.jpg

(3)目标检测模型的编译(视频流检测)

cd Paddle-Lite-Demo/PaddleLite-armlinux-demo/object_detection_demo
Paddle Lite的配置和视频流监测的设置
  • 注释掉第四行的TARGET_ARCH_ABI=armv8,打开第五行的,取消第5行TARGET_ARCH_ABI=armv7hf
    的注释。
  • 需要对run.sh文件进行修改,设置为视频流检测:
sudo nano run.sh

将run.sh中的#run修改参数,即该文件的最后一行参数,去掉../images/2001.jpg./result.jpg后缀,取消图片预测模式,即可完成对run.sh的视频流配置。

#!/bin/bash

# configure
#TARGET_ARCH_ABI=armv8 # for RK3399, set to default arch abi
TARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3B
PADDLE_LITE_DIR=../Paddle-Lite
if [ "x$1" != "x" ]; then
    TARGET_ARCH_ABI=$1
fi

# build
rm -rf build
mkdir build
cd build
cmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..
make

#注意,这里为run代码段!!!!!!
#run
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PADDLE_LITE_DIR}/libs/${TARGET_ARCH_ABI} ./object_detection_demo ../models/ssd_mobilenet_v1_pascalvoc_for_cpu/model.nb ../labels/pascalvoc_label_list ../images/2001.jpg ./result.jpg

修改后的#run代码段:

#run
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PADDLE_LITE_DIR}/libs/${TARGET_ARCH_ABI} ./object_detection_demo ../models/model.nb ../labels/pascalvoc_label_list 
执行预测命令
./run.sh armv7hf 

在终端即可看到打印出来的预测结果和性能数据,并且执行后会自动弹出实时视频预测画面。

效果展示

为了避免尴尬,博主机智的戴上了(帅气的)口罩(:
好啦,到这里就结束了,如果你也跟着博主做出了项目,记得点个小赞赞哦~ ^ _ ^

你可能感兴趣的:(Paddle Lite——树莓派端部署实现实时视频流目标检测demo)