导读
本文主要介绍PaddleOCR v2.6 C++ GPU版的编译详细步骤与踩坑记录,方便大家快速上手。(公众号:OpenCV与AI深度学习)
PaddleOCR 2.6
8月24日PaddleOCR更新了2.6版本,下面是主要更新内容:
详细介绍请查看对应github:
https://github.com/PaddlePaddle/PaddleOCR
往前相关PaddleOCR内容:
- OCR文字识别利器--PaddleOCR识别效果演示
- 让OCR更简单 | PaddleOCR+OpenCV实现文字识别步骤与代码演示
- C++ | PaddleOCR+OpenCV实现文字识别步骤与代码演示
- C++ | PaddleOCR GPU版使用步骤与测试时间对比(相对CPU)
C++ GPU编译
C++ CPU版的编译与推理详细步骤前几天已介绍过,详见下面链接:
PaddleOCR v2.6新特征与C++编译推理详细步骤演示
下面来介绍GPU版本的编译与使用:
【1】安装CUDA和cuDNN环境,这里以CUDA10.1和cuDnn7.6.5为例:
安装CUDA10.1并将cuDnn7.6.5解压后复制到CUDA安装目录:
【2】下载PaddleOCR-release-2.6,与前面一样创建build文件夹deploy\cpp_infer\build
【3】下载paddle_inference推理库文件,这里下载avx_mkl_cuda10.1_cudnn7.6.5_avx_mkl-trt6.0.1.5这一版,包含TensorRT,没有TensorRT的版本不要下,里面的头文件不全,后续编译会报错,下载地址:
https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows
【4】安装上面图片对应版本下载TensorRT-6.0.1.5.Windows10.x86_64.cuda-10.1.cudnn7.6,然后解压即可。
【5】CMake编译,注意勾选相关选项、设置对应目录如下:
然后config、generate,完成后打开ppocr.sln,本文使用VS2017编译。
【6】VS2017编译,先生成ALL_BUILD,然后生成ppocr。同样会报错,内容与上篇文章一样:
(1) 无法打开包括文件: “dirent.h”: No such file or directory
(2) mkdir找不到标识符
解决方法:
PaddleOCR v2.6新特征与C++编译推理详细步骤演示
【7】下载推理库,复制对应的dll到ppocr.exe同目录,命令行运行即可。
英文识别cmd命令行指令:
ppocr.exe --det_model_dir=./model_1/en_PP-OCRv3_det_infer/ --rec_model_dir=./model_1/en_PP-OCRv3_rec_infer/ --image_dir=./imgs/
输出log信息与识别结果:
e[1me[35m--- Running analysis [ir_graph_to_program_pass]e[0m
I0829 16:05:56.560971 49564 analysis_predictor.cc:1035] ======= optimize end =======
I0829 16:05:56.560971 49564 naive_executor.cc:102] --- skip [feed], feed -> x
I0829 16:05:56.563968 49564 naive_executor.cc:102] --- skip [softmax_2.tmp_0], fetch -> fetch
predict img: ./imgs\1.JPG
W0829 16:05:56.576009 49564 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 6.1, Driver API Version: 10.1, Runtime API Version: 10.1
W0829 16:05:56.576009 49564 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.
W0829 16:05:56.579969 49564 helper.h:107] TensorRT was linked against cuBLAS 10.2.0 but loaded cuBLAS 10.1.0
W0829 16:05:56.597970 49564 helper.h:107] TensorRT was linked against cuBLAS 10.2.0 but loaded cuBLAS 10.1.0
predict img: ./imgs\2.JPG
predict img: ./imgs\3.JPG
./imgs\1.JPG
0 det boxes: [[12,53],[636,48],[636,102],[12,107]] rec text: Improve Brand Awareness rec score: 0.961477
1 det boxes: [[95,137],[573,143],[572,197],[94,191]] rec text: The Best to Rely on rec score: 0.941693
The detection visualized image saved in ./output//1.JPG
***************************
中文识别类似,参考前面文章即可。
【8】VS2017 + RTX3060编译遇到的问题(因为另外一台电脑GPU是RTX3060)
(1) 按照下图版本下载对应文件:
(2) CMake编译按照上面步骤不会出错,在编译ppocr.sln的时候会有两个新错误:
这里需要改一下cudnn.lib的路径,因为它跟另外两个lib不在同一个文件夹下:
另一个报错如下(如果你本身用的VS2019,此问题忽略):
报错原因是这里面的gflags_static.lib和glog.lib是VS2019编译的
我们在前面avx_mkl_cuda10.1_cudnn7.6.5_avx_mkl-trt6.0.1.5里面找到对应的lib替换当前对应两个的lib,重新编译ppocr即可。
觉得有用,记得点个赞