起因是用祖传的ppocr.exe识别图片中的文字计算时间在1600ms~2400ms不等,且use_gpu=True/False在时间上没有区别,差不多可以推断之前用的应该不是GPU的OCR推理库。于是自己编译一个GPU的ppocr.exe。
本篇文章主要讲如何编译
一、下载PaddleOCR代码
git clone https://github.com/PaddlePaddle/PaddleOCR
到本地是这样的,默认是main分支,我直接用了(release/2.7)
待会我们编译的时候只需要deploy/cpp_infer
,且编译指南在windows_vs2019_build.md
,按步骤来基本没有问题,所以本文重要记录环境配置
二、下载Windows推理库
C++推理库下载
本人需要GPU版本的,所以直接下载的最后一个,所以win也要配置相应的cuda、cuDNN、TensorRT
注意版本,本人开始看错了,在后面调用GPU的时候,报了错误
解压后打开version.txt,版本一定要按这个来!!!
报错如下:大抵就是cuda、cuDNN、TensorRT版本不匹配
三、环境准备
cmake下载:https://cmake.org/download/
OpenCV下载:https://opencv.org/releases/
opencv环境变量:
默认有以下环境,我们只要配置:CUDA、cuDNN、TensorRT安装
3.1 CUDA下载
下载地址:https://developer.nvidia.com/cuda-downloads
CUDA安装直接默认,安装好后检查一下环境变量
3.2 cuDNN下载
下载地址:https://developer.nvidia.com/rdp/cudnn-download
下载对应的版本即可,本人下载的是8.9.1(要与cuda版本匹配)
下载好后解压,分别将cudnn三个文件夹的内容分别复制到cuda对应的文件夹里面
3.3 tensorRT
进入官方链接下载对应版本的tensorRT(需要开发者账号):https://developer.nvidia.com/tensorrt/download
下载好后解压TensorRT-8.6.1.6.Windows10.x86_64.cuda-12.0.zip(也要与cuda版本相匹配)
- 将下载好的TensorRT-8.6.1.6文件夹中的include文件移动到CUDA文件夹下的include文件夹
- 将下载好的TensorRT-8.6.1.6文件夹中的lib中的dll文件移动到CUDA下的bin文件夹
- 将下载好的TensorRT-8.6.1.6文件夹中的lib中的lib文件移动到CUDA下的lib\x64文件夹
到这里可以重启一下电脑,防止个别环境变量没有生效
四、构建Visual Studio项目
在PaddleOCR/deploy/cpp_infer里面新建一个cmakeBuild文件夹,名字任意,打开cmake-gui,后续步骤在PaddleOCR/deploy/cpp_infer/docs/windows_vs2019_build.md,以下是要注意的点
- GPU版本,在cpu版本的基础上,还需填写以下变量
CUDA_LIB
: CUDA地址,如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib\x64
CUDNN_LIB
: 和CUDA_LIB一致TENSORRT_DIR
:TRT下载后解压缩的位置,如D:\TensorRT-8.6.1.6
WITH_GPU
: 打勾PADDLE_LIB
: 下载的推理库路径WITH_TENSORRT
:打勾
构建成功后,剩下的步骤可以在下载的PaddleOCR\deploy\cpp_infer\docs\windows_vs2019_build.md
里面查看
注意如果按源码编译的话运行的目录只能在教程里面的cd /d D:\projects\cpp\PaddleOCR\deploy\cpp_infer
,如果不是的话会有以下报错:
C++ Windows编译部署PaddleOCR GPU版本(二)