在Jeston NX上部署运行PaddleOCR教程(安装whl包方法)

news2025/7/8 11:39:49

文章目录

  • 基本概念介绍
  • 1.确定盒子环境python+CUDA+cuDNN+TensorRT版本
    • 1.1 我还没有安装环境:一步到位整体安装
    • 1.2 我已经安装了环境:查询盒子环境版本
    • 1.3 默认python版本设置
  • 2.安装PaddlePaddle
  • 3. 安装PaddleOCR
  • 4. 运行例程
  • 5. 后续工作
  • 附:参考教程合集

想在Jeston盒子部署PaddleOCR实现识别,但发现官方教程庞大,且教程间互相引用穿插,版本繁多,不够针对,这对刚刚接触的小白来说,会感觉无从下手,而且踩很多坑。因此用这篇博客特来记录一下Jeston盒子部署PaddleOCR(含paddlepaddle)过程

基本概念介绍

运行PaddleOCR,首先需要安装PaddlePaddle(Paddle Inference)这个基础推理框架,这就像是python执行函数之前首先要安装这个函数的包,这是必须的,不安装paddlepaddle,在跑ocr代码的时候是跑不起来的
在这里插入图片描述
而要安装paddlepaddle,需要确定安装的版本,这需要根据我们Jeston盒子中所安装的不同JetPack(CUDA+cuDnn+TensorRT)版本来选择,版本匹配才能安装。

所以正确的部署步骤流程是:
1.确定盒子python+CUDA+cuDNN+TensorRT版本,或按需求安装对应版本
2.根据版本找到对应的paddlepaddle包,并安装
3.git clone PaddleOCR包,并安装

或许有人会说,PaddleOCR没有提供docker吗?一个个安装和确认环境太累了!但事实是,在dockerHub-ppocr提供的是amd64架构的docker,在windows或amd/x86架构服务器可以直接部署,而这个盒子的架构是arm64/aarch64,而官方没有提供这个架构的docker,所以只能用whl安装,类似问题见架构问题

1.确定盒子环境python+CUDA+cuDNN+TensorRT版本

1.1 我还没有安装环境:一步到位整体安装

对于Jeston NX盒子,我们通常在装系统的时候在虚拟机使用NVIDIA SDK Manager工具对盒子进行整体JetPack的刷机安装(这个csdn有很多教程)。在这里插入图片描述
在这里插入图片描述
一个JetPack会包含已经搭配好,互相兼容的python+CUDA+cuDNN+TensorRT,一步到位,非常方便。因此我们推荐在安装系统的同时,或者重新把盒子刷机的方式,来一次性安装所需环境,这里的JetPack也将和后面Paddle提供的包匹配,免去了很多版本不一致导致的bug。

在这里插入图片描述
在这里插入图片描述

1.2 我已经安装了环境:查询盒子环境版本

对于Jeston NX盒子,可以安装jetson-stats包,然后执行

sudo jtop

即可查询到盒子当前运行的cpu,gpu信息
在这里插入图片描述
然后左下角有个info,点一下或者按6
在这里插入图片描述
这里就有JetPack,CUDA,cuDNN,TensorRT的所有版本信息

如果不是盒子,当然也有更普遍性的查询版本的指令:

  • CUDA:nvcc -V
    在这里插入图片描述
  • cuDNN:cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    这个实例是cuDNN8.2.0

但这里,因为每个人安装的cuDNN位置可能不一样,所以可能会存在找不到但安装了的环境变量问题,这也是不用JetPack的麻烦的地方

  • TensorRT:可以使用python import tensorrtpip list来验证这个包是否安装
    在这里插入图片描述

1.3 默认python版本设置

这是单独的一个小问题,盒子的linux可能会默认python为2.7版本,执行whereis python可以知道本机有什么python(JetPack4.5.1对应带有python3.6.9),那么依次执行以下命令,可将python优先版本设置为3.6.9

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2

#这个命令可以列出当前可以设置优先级的版本
sudo update-alternatives --list python

#输入3.6版本对应的数字即可
sudo update-alternatives --config python

#查询优先的python版本,应该显示自己设置的3.6.9
python -V

2.安装PaddlePaddle

现在,我们搭好了Python,CUDA,cuDNN,TensorRT的环境,就可以在下载安装Linux推理库下载所需版本
例如,我的环境是JetPack4.5.1(Python3.6,CUDA10.2,cuDNN8.0,TensorRT7.1.3),盒子的架构是aarch64,对于NX盒子,则对应选择Jetpack5.0.2:nv-jetson-cuda11.4-cudnn8.4.1-trt8.4.1-jetpack5.0.2-xavier
在这里插入图片描述

然后把它拷贝到盒子里(推荐xftp和xshell工具),并执行安装

pip3 install paddlepaddle_gpu-2.4.0rc0-cp36-cp36m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

只有环境都符合要求,才能正常安装上,否则会报错的
在这里插入图片描述

为什么用whl包安装?因为这里有一个架构的安装坑,如果我们按官网https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html直接用指令安装PaddlePaddle,即

python -m pip install paddlepaddle-gpu==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
那么我们会发现安装不上,
在这里插入图片描述
这是因为NX的架构不同,(官网指南也有特别说明),架构可以用
python -c “import platform;print(platform.architecture()[0]);print(platform.machine())”
命令来查询,只有符合第一行输出的是”64bit”,第二行输出的是”x86_64”、”x64”或”AMD64”,才能用指令安装

3. 安装PaddleOCR

安装好了paddlepaddle,即可去下载paddleOCR放进来执行
执行

git clone https://github.com/PaddlePaddle/PaddleOCR
或者
git clone https://gitee.com/paddlepaddle/PaddleOCR.git

或者从https://github.com/PaddlePaddle/PaddleOCR下载压缩包解压放到盒子里
然后cd到PaddleOCR文件夹,安装requirements

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
缺skbuild
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-build

在这里插入图片描述

4. 运行例程

在根目录新建一个文件夹放模型model,或者叫inference等自己取

sudo mkdir model
sudo chmod 777 model

项目自带一些识别图片在doc\imgs

下载模型:
链接见PaddleOCR\README_ch.md中
我这边下载的是中英文的推理模型,

在这里插入图片描述

因为我们这边是直接拿来用所以下载的是推理模型,如果要训练或者微调优化则下载训练模型

也可通过命令下载解压

wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar
tar xf ch_PP-OCRv3_det_infer.tar
tar xf ch_PP-OCRv3_rec_infer.tar

(更多模型可以见doc/doc_ch/models_list.md)

把下载的模型放在项目文件夹下model文件夹中
在这里插入图片描述
然后在项目根目录,即可执行

文本检测:
python tools/infer/predict_det.py --det_model_dir=model/ch_PP-OCRv3_det_infer/  --image_dir=doc/imgs/11.jpg  --use_gpu=True
文本识别:
python tools/infer/predict_rec.py --rec_model_dir=model/ch_PP-OCRv3_rec_infer --image_dir=doc/imgs/11.jpg --use_gpu=True --rec_image_shape="3,48,320"
文本检测+识别:
python tools/infer/predict_system.py --det_model_dir=model/ch_PP-OCRv3_det_infer --rec_model_dir=model/ch_PP-OCRv3_rec_infer --image_dir=doc/imgs/11.jpg --use_gpu=True --use_gpu=True --rec_image_shape="3,48,320"

开启TRT预测只需要在以上命令基础上设置`--use_tensorrt=True`即可

如果运行会报错OSError: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so'].
可参考这里

以文本检测+识别为例,运行命令,终端会显示识别结果和推理时间
在这里插入图片描述
我们在项目根目录运行,则运行结果会保存在根目录的inference_results文件夹里,含有识别文字的位置和内容,以及可视化识别结果
在这里插入图片描述
在这里插入图片描述

5. 后续工作

PaddleOCR提供了TensorRT加速的方法,后续可以根据教程,提高识别速度
GPU TensorRT 加速推理(NV-GPU/Jetson)
在这里插入图片描述

附:参考教程合集

安装PaddlePaddle的官方教程
在这里插入图片描述

PaddleOCR的Jeston系列部署教程:(在paddleOCR项目工程里)
PaddleOCR\deploy\Jetson\readme_ch.md

盒子安装PaddlePaddle
教你如何在三步内Jetson系列上安装PaddlePaddle

PaddlePaddle在jetson NX的配置
【项目经验】Jetson xavier nx开发板-从裸机到深度学习环境配置
从0到1教你在Jetson Xavier NX玩转PaddlePaddle!

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java---Arrays类的常用方法

目录 1:Arrays常用的API方法 2:API方法具体举例 (1)toString方法 (2)sort方法 (3)binarySearch方法 (4)fill方法 (5)copyOf方法 …

如何在自己的项目中实现脚手架的命令行交互

背景 所在的公司大多数项目都是用Taro脚手架搭建的,因为业务上要实现多端开发 答应我,如果可以千万不要选择跨端开发🙏。所以不同环境下运行、打包会有多个命令。如下图所示: 嗯??好熟悉感觉在哪见过&…

LeetCode刷题(python版)——Topic69. x 的平方根

一、题设 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1…

2022年下半年网络规划设计师下午真题及答案解析

1.若系统正在将( )文件修改的结果写回磁盘时系统发生掉电,则对系统的影响相对较大。A.目录 B.空闲块 C.用户程序 D.用户数据 2.采用三级模式结构的数据库系统中,如果对一个表创建聚簇索引,那么改变的是数据库的( )。 A.外模式…

信号(1.信号概念 2.信号的处理方式 3.信号阶段 用户态,内核态)

目录1.临界资源2.临界值3.原子性4.互斥5.什么是信号量6.什么是信号1.信号概念2.信号的处理方式3.信号阶段1.信号使用前,信号的产生2.为什么进程会崩溃3.信号产生中4.信号产生后1.临界资源 被多个进程能够看到看到额资源叫做临界资源 如果没有堆临界资源进任何的保护…

技术分享 | AlertManager 源码解析

作者:石蓓蓓 爱可生研发工程师,主要负责爱可生产品云DMP树产品的研发工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 AlertManager 是处理对应用程序的告警的…

ZIP压缩文件的打开密码和自动加密有什么不同?

ZIP是常用的压缩文件格式,对于重要的内容,我们还可以设置密码,从而达到保护文件内容的目的。 通过WinRAR给ZIP文件设置密码保护,可以设置“打开密码”和“自动加密”,那两者有什么不同呢? 设置打开密码是…

【附源码】Python计算机毕业设计万达影院售票管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

图相似度计算——SIMGnn源码解读

在运行代码的时候,需要首先指定参数,--histogram,表示使用直方图特征 1.数据集 数据集我们使用的是AIDS数据集,为内置的数据集,整个数据集大约700张图,每个图少于10个点,每个点由29维的向量组成…

多视角碰撞,探索 Serverless 企业落地更多可能性丨阿里云用户组厦门站

2022 年 9 月 24 日,阿里云在厦门举办了第 12 场阿里云用户组(AUG)活动,活动主题为“提效降本,Serverless 助力企业快速落地云原生”,吸引了众多技术从业者及企业管理者到场交流。 2009 年,伯克…

油气田工业控制系统现状

石油石化行业综述 石油石化行业分为上游、中游和下游。其中,上游从事的业务包括原油、天然气 的勘探、开发,中游主要是油气 的存储与运输,下游则涵盖炼油、化工、天然气加工等流程型业务及加油站零售等产品配送、销售型业务。通常情况下&…

常用 numpy 函数(长期更新)

文章目录np.where()np.zeros()np.zeros_like()np.divide()np.linalg.norm()np.uint8()np.clip()np.where() np.where有两种用法 np.where(condition,x,y) 当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成…

超强功能WebSSH安装,解决Web远程SSH终端

项目地址:https://github.com/huashengdun/webssh 一个简单的 Web 应用程序,用作 ssh 客户端以连接到您的 ssh 服务器。它是用 Python 编写的,基于 tornado、paramiko 和 xterm.js。 特征: 支持SSH密码认证,包括空密…

Windows系统配置CUDA编程环境

像配置一个简单的可以进行CUDA编程的Windows系统环境,分别需要CUDA以及Visual stdio。 注意,如果是新配置的电脑,一定要先安装visual stdio再安装CUDA,否则后面在VS中创建.cu文件时容易出现找不到模块的情况。 一、安装Visual st…

动态规划--(回文子串,最长回文子序列)

代码随想录day 57 动态规划模块 回文子串,最长回文子序列 文章目录1.leetcode 647. 回文子串1.1 详细思路及解题步骤1.2 Java版代码示例2.leetcode 516. 最长回文子序列2.1 详细思路及解题步骤2.2 Java版代码示例1.leetcode 647. 回文子串 1.1 详细思路及解题步骤 该题用动态规…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java杨佑川音乐播放器908v6

大部分步骤是 1.确定选题 选题的确定需要查阅大量的资料,要搞清楚自己大概想要研究的方向是什么。可以选择自己感兴趣的学科或者强势的学科进行研究,同时要多和毕业指导老师多交流,征求老师的意见和建议,最后确立选题。计算机专…

【K8S系列】第九讲:Kubernetes 之探针

目录 一、探针是什么 二、探针类型 2.1 livenessProbe 2.1.1 容器重启策略 2.2 readinessProbe 2.3 startupProbe 2.4 总结 2.5 探针示例 2.6 配置字段介绍 三、探测机制 3.1 HTTP GET探针 3.2 TCP套接字探针 3.3 Exec探针 Tips 一、探针是什么 探针:是由 kub…

OpenCV众筹了一款ROS2机器人rae,开源、功能强、上手简单。来瞅瞅~

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ ▌前言 Hello,大家好,这里是OAK中国,我是助手君。 在2020年、2021年OpenCV分别在Kickstarter上众筹了两款OAK产品,均筹集…

设计模式——桥接模式

桥接(Bridge)模式 一、基本思想 当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。 将抽象与实现分离,使它们可以独立变化。 用组合关系代替继承关系来实现&#xff0…

运维面试必问的中间件高频面试题

1. redis是单线程还是多线程? 这个问题已经被问过很多次了,从redis4.0开始引入多线程,redis 6.0 中,多线程主要用于网络 I/O 阶段,也就是接收命令和写回结果阶段,而在执行命令阶段,还是由单线程…