最近在安装paddleocr时遇到很多兼容问题,记录一下解决方法。大部分的问题在于CUDA和cuDNN与paddlepaddle的兼容问题。

在不谈版本情况下的安装教程都是在耍流氓!!!

运行paddleocr需要的东西有PaddlePaddle、CUDA和cuDNN。我的版本分别为2.6.211.18.97,大版本保持一致就可以了,安装顺序为CUDA、cuDNN、PaddlePaddle、PaddleOCR

  • PaddlePaddle 是一个深度学习框架,与 PyTorch 类似
  • cuDNN 是 NVIDIA 提供的一种用于 GPU 加速的深度学习库
  • CUDA 是 Compute Unified Device Architecture 的简称,它是由 NVIDIA 提供的并行计算平台和编程模型,专门用于加速在 NVIDIA GPU(图形处理器)上的计算任务。简单来说,CUDA 是让 GPU 用于通用计算(General Purpose Computing on GPU, GPGPU)的一种技术

CUDA安装就不重复了,有兴趣的同学去看我之前文章(4)CUDA工具包安装icon-default.png?t=O83Ahttps://blog.csdn.net/qq_64809150/article/details/134160763?spm=1001.2014.3001.5501#%EF%BC%884%EF%BC%89CUDA%E5%B7%A5%E5%85%B7%E5%8C%85%E5%AE%89%E8%A3%85

目录

一、CUDA的版本问题

1、最大支持版本:

2、CUDA Toolkit 版本:

3、Paddle编译时版本:

​​二、cuDNN安装

1、下载cuDNN

2、配置环境变量

三、安装PaddlePaddle

 四、兼容问题


一、CUDA的版本问题

这个版本一般来说有三个,我们只需要关注下面的第一个和第三个版本

1、最大支持版本:

在命令行输入下面指令可以查看当前你的电脑支持的最大CUDA版本,对于你的电脑来说,在此之下的版本你都可以下载

nvidia-smi

 

2、CUDA Toolkit 版本

这个是你从CUDA官网下载下来的满足低于或等于你电脑最大支持的版本在命令行输入下面指令查看,它表示你本地安装的开发工具链版本,直接用于编译 CUDA 应用程序,这个版本决定了你可以使用哪些 CUDA 特性

nvcc --version

 

3、Paddle编译时版本

这个才是我们需要关注的,我这边使用的版本是11.2,然后目前paddle支持的版本可以去官网查,这个版本选择根据你电脑驱动支持的CUDA来选择,本案例中也就是小于12.5的都可以。

飞桨PaddlePaddle-源于产业实践的开源深度学习平台icon-default.png?t=O83Ahttps://www.paddlepaddle.org.cn/

​二、cuDNN安装

1、下载cuDNN

这个东西是一个针对深度学习框架优化的高性能库(如 PaddlePaddle、TensorFlow 使用它来加速模型训练),不要下载最新版的,下面是历史版本链接,目前paddle不支持cuDNN高于8以上的版本,我们在下面随便选一个低于或等于8的下载就可以了

cuDNN Archive | NVIDIA Developericon-default.png?t=O83Ahttps://developer.nvidia.com/rdp/cudnn-archive

下载完成后会得到一个压缩包,直接解压得到三个文件分别是bin、include、lib,还有一个LICENSE文件,将他们四个直接复制粘贴到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1路径下面,这个路径有三个对应的bin、include、lib目录,系统会自动帮你合并复制的三个同名文件。

2、配置环境变量

最后我们打开环境变量,在系统变量中找到并打开path,新建三个环境变量即可:

三个环境变量为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1目录下面的lib、libnvvp、include

三、安装PaddlePaddle

在你新建的或者之前的conda环境下面执行下面命令安装,这个命令来自上面paddle编译时版本中显示的官方命令,点击后自行去查看

python -m pip install paddlepaddle-gpu==2.6.2.post112 -i https://www.paddlepaddle.org.cn/packages/stable/cu112/

 然后后执行下面命令,你可以添加镜像源,速度我个人认为都一样

pip install paddleocr

最后执行官方代码看看是否运行成功:

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = 'images/185310636-6ce02f7c-790d-479f-b163-ea97a5a04808-20240708082238739.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.show()

 四、兼容问题

RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_8.dll) that Paddle depends on is not configured correctly. (error code is 126) Suggestions: 1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed. 2. Configure third-party dynamic library environment variables as follows: - Linux: set LD_LIBRARY_PATH by export LD_LIBRARY_PATH=... - Windows: set PATH by set PATH=XXX; (at ..\paddle\phi\backends\dynload\dynamic_loader.cc:301)

出现上面报错就是因为cuDNN安装失败或版本过高,比如我之前出现这个问题就是安装了9以上的新版本cuDNN导致的,只需要手动删除CUDA文件下面的cuDNN,再替换成8版本的cuDNN就可以了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐