为了验证百度PaddlePaddle发布的工业表计数工程模型的准确性以及效果,分别在PC端和jetson端搭建了环境,亲测实际效果

工业表计数:工业表计读数 — PaddleX 文档

链接中jetson nano c++部署链接失效,可以参考这个:


Jetson部署 — PaddleX 文档

Nvidia Jetson开发板本地部署 — PaddleX 文档

github链接:https://github.com/PaddlePaddle/PaddleX

一、PC端搭建(比较)

1、下载PaddleX源码:

git clone https://github.com/PaddlePaddle/PaddleX
cd PaddleX
git checkout release/1.3

2、预测执行文件位于PaddleX/examples/meter_reader/,进入该目录:

cd PaddleX/examples/meter_reader/

3、使用anaconda3创建paddlepaddle环境

(1)安装paddlepaddle-gpu

不要使用默认安装版本,不然会因为版本不匹配,出现不必要的错误

工业表计数的要求版本为

Paddle paddle >= 1.8.0
Python >= 3.5
PaddleX >= 1.0.0

(2)安装完成后的版本版本为:

paddlepaddle-gpu == 1.8.1.post97
Python >= 3.6.13
paddlex==1.3.0

(3)安装命令 直接pip install  包的名称,如安装paddlepaddle-gpu,安装命令为:

pip install paddlepaddle-gpu==1.8.1.post97

4、下载模型以及数据文件

可在上面链接中获取模型以及数据文件

5、实际测试检测效果

单张测试

检测过程

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddle

检测原图

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlepaddle_02

 

检测后的图

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_工业表计数_03

 

二、jetson nx搭建(jetpack 4.6)

1、python预测库

(1)、在jetson平台上pip 直接install的话会找不到对应的安装包,需要去专门的网站上下载针对硬件和软件编译好的.whl包

网站为下载安装Linux预测库 — Paddle-Inference documentation 

或者这个网站:Paddle Lite

一定要下载自己系统对应的包,不然出错,我下载的版本

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddle_04

(2)安装 

安装之前安装pip3 sudo apt-get install python-pip3

直接pip install paddlepaddle_gpu-2.3.0-cp36-cp36m-linux_aarch64,安装过程中可能会提示所依赖的包版本过高,而python版本低,这个时候需要设置版本号

如pip install paddlepaddle_gpu-2.3.0-cp36-cp36m-linux_aarch64 potobuf==3.8.0

(3)安装paddlex

直接pip安装,为了避免版本问题,直接安装1.3.0

pip3 install paddlex==1.3.0 protobuf==1.8.0

(4)安装过程中遇到的问题

安装scipy报错,一大堆的错误

解决方式:

安装系统依赖项

sudo apt-get install libblas-dev checkinstall
sudo apt-get install liblapack-dev checkinstall
sudo apt-get install gfortran
pip3 install scipy

问题2:

pip3 install pyarrow

报错原因是pip版本低引起

python3 -m pip install --upgrade pip

(5)预测实例

预测命令

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_工业表计数_05

原图

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlex_06

 

预测图

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_工业表计数_07

 

 2、C++预测库

(1)下载c++的预测库(在pyhon预测库中下载)

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlepaddle_08

 我的下载如图所示,解压存在指定位置就ok

(2)工程部署

工业表计数百度已经给了具体的步骤,如图所示,我这主要记录在编译过程中遇到的奇葩错误,同时纠正一些bug

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlex_09

编译之前需要根据以下链接配置build.sh脚本

Jetson Nano上部署PaddleDection 原生预测方法经验分享 - 知乎 

编译过程中所遇到的问题:

问题1:cc1plus:fatal error: xxx/xx.cpp.d:没有那个文件或目录

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_github_10

 

这个问题需要修改CmakeList.txt的第148行,将-o2修改为-O3

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlepaddle_11

 参考了:cc1plus:fatal error: xxx/xx.cpp.d:没有那个文件或目录_驱魔鮔_Roc的博客

                https://github.com/PaddlePaddle/PaddleOCR/issues/4654

问题2:no matching function for call to "Paddlex::Model::Init()"

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlex_12

 解决方法:修改meter_reader.cpp里中Init函数的参数,使用在meter_reader.cpp里Init的函数赋值了5个参数,而初始化却有8个参数

修改后的函数如下:

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddle_13

 至此C++版本的paddlepaddle在jetson nx上部署完成了

测试命令

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlepaddle_14

原图

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_paddlepaddle_15

 

结果

paddlepaddle与paddlespeech版本对应 paddlex和paddlepaddle_工业表计数_16