Paddle Lite——树莓派端部署实现实时视频流目标检测demo
01
Paddle Lite环境准备
1.1硬件准备
树莓派4B
usb摄像头
装好Buster的镜像源的SD卡
1.2基本软件环境准备
1.2.1摄像头准备
参考文章:树莓派摄像头的安装、配置与验证
1.2.2编译库准备
完成gcc、g++、opencv、cmake的安装:
sudo apt-get update
sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
#下载cmakewget 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
#makesudo make
sudo make install
到这里就完成了所有的环境准备。
02
Paddle Lite(demo)的安装
Paddle Lite安装和demo相同。
#下载Paddle Litegit clone https://github.com/PaddlePaddle/Paddle-Lite-Demo
2.1模型和预测库下载
cd Paddle-Lite-Demo/PaddleLite-armlinux-demo
cd Paddle-Lite-Demo/PaddleLite-armlinux-demo
2.2模型的编译(根据你需要实现的功能进行选择)
a.图像分类模型的编译(单图片预测分类)
b.目标检测模型的编译(单图片检测)
c.目标检测模型的编译(视频流检测)
读者需根据自己的需求进行特定的编译。
2.2.1图像分类模型的编译(单图片预测分类)
进入image_classification_demo文件夹cd Paddle-Lite-Demo/PaddleLite-armlinux-demo/image_classification_demo
(1)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 abiTARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3BPADDLE_LITE_DIR=../Paddle-Liteif [ "x$1" != "x" ]; then TARGET_ARCH_ABI=$1fi# buildrm -rf buildmkdir buildcd buildcmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..make#注意,这里为run代码段!!!!!!#runLD_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
(2)执行预测命令
sudo ./run.sh
在终端即可看到打印出的预测结果和性能数据,在build目录中可以看到生成的result.jpg。
2.2.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 abiTARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3BPADDLE_LITE_DIR=../Paddle-Liteif [ "x$1" != "x" ]; then TARGET_ARCH_ABI=$1fi# buildrm -rf buildmkdir buildcd buildcmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..make#注意,这里为run代码段!!!!!!#runLD_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
2.2.3目标检测模型的编译(视频流检测)
cd Paddle-Lite-Demo/PaddleLite-armlinux-demo/object_detection_demo
(1)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 abiTARGET_ARCH_ABI=armv7hf # for Raspberry Pi 3BPADDLE_LITE_DIR=../Paddle-Liteif [ "x$1" != "x" ]; then TARGET_ARCH_ABI=$1fi# buildrm -rf buildmkdir buildcd buildcmake -DPADDLE_LITE_DIR=${PADDLE_LITE_DIR} -DTARGET_ARCH_ABI=${TARGET_ARCH_ABI} ..make#注意,这里为run代码段!!!!!!#runLD_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代码段:
#runLD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PADDLE_LITE_DIR}/libs/${TARGET_ARCH_ABI} ./object_detection_demo ../models/model.nb ../labels/pascalvoc_label_list
(2)执行预测命令
./run.sh armv7hf
在终端即可看到打印出来的预测结果和性能数据,并且执行后会自动弹出实时视频预测画面。
(3)效果展示
为了避免尴尬,博主机智的戴上了(帅气的)口罩(: