您当前的位置: 首页 >  ubuntu
  • 1浏览

    0关注

    483博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Ubuntu20.04源码编译PaddleOCR2.4

高精度计算机视觉 发布时间:2022-03-17 12:53:16 ,浏览量:1

一,下载PaddleOCR源码
git clone https://github.com/PaddlePaddle/PaddleOCR.git
git checkout release/2.4
cd PaddleOCR/deploy/cpp_infer/
二,编译PaddleOCR的推理工具

源码中提供的build.sh是不完整的,需要修改,例如,我的编译指令是在这里,

~/ocr/01/PaddleOCR/deploy/cpp_infer/tools/build.sh

OPENCV_DIR=/home/mc/opencv455/dev/
LIB_DIR=/home/mc/ocr/01/Paddle/build_cuda/paddle_inference_install_dir/
CUDA_LIB_DIR=/usr/local/cuda/lib64
CUDNN_LIB_DIR=/usr/local/cuda/lib64

BUILD_DIR=build
rm -rf ${BUILD_DIR}
mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
cmake .. \
    -DPADDLE_LIB=${LIB_DIR} \
    -DWITH_MKL=ON \
    -DWITH_GPU=ON \
    -DWITH_STATIC_LIB=OFF \
    -DWITH_TENSORRT=OFF \
#    -DOPENCV_DIR=${OPENCV_DIR} \
    -DOpenCV_DIR=${OPENCV_DIR} \
    -DCUDNN_LIB=${CUDNN_LIB_DIR} \
    -DCUDA_LIB=${CUDA_LIB_DIR} \
#    -DTENSORRT_DIR=${TENSORRT_DIR} \

make -j

这里有好几个地方需要注意,

  • DOPENCV_DIR要换成DOpenCV_DIR,这样才和系统的定义相匹配。
  • LIB_DIR是你编译Paddle时的那个目录,大家通常喜欢用build,我这里用的是build_cuda,和官网上的一致,具体可以参考:Ubuntu 20.04 源码编译Paddle2.2.2_高精度计算机视觉的博客-CSDN博客
  • Cuda和Cudnn我安装的时候就默认在同一个文件夹里了,可能参考:Ubuntu20.04安装Cuda driver + toolkit + cudnn_高精度计算机视觉的博客-CSDN博客
  • 那个make -j 可以根据你的需要修改,比如nproc查出核线程是12,就用make -j12就好了。

然后回到目录(该目录下有一个CMakeLists.txt文件),

/ocr/01/PaddleOCR/deploy/cpp_infer

执行下面的指令,

sudo ./tools/build.sh #执行完此脚本后会在./build文件夹下生成ocr_system可执行文件

这加上sudo权限是因为需要/usr/local下面的写入权限,生成之后你改一下权限就可以变成用户权限了,如下,

sudo chmod -cvR 777 build  

三,编译过程中碰到的问题

(1)cp: 无法创建普通文件'/usr/lib/libmklml_intel.so': 权限不够

解决办法,

使用sudo权限,这个前面已经解释过了。

(2)没有规则可制作目标

 -- Build files have been written to: /home/mc/ocr/01/PaddleOCR/deploy/cpp_infer/build make[2]: *** 没有规则可制作目标“/home/mc/ocr/01/Paddle/build_cuda/paddle/lib/libpaddle_inference.so”,由“ppocr” 需求。 停止。

解决办法,

检查你的路径,通常这个是由路径设置不对,找不到相关的库引起的。

(3)cc1plus: error: too many filenames given

cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: fatal error: CMakeFiles/ppocr.dir/src/postprocess_op.cpp.d: 没有那个文件或目录 cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_rec.cpp.d: 没有那个文件或目录 compilation terminated. compilation terminated. cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: fatal error: CMakeFiles/ppocr.dir/src/main.cpp.d: 没有那个文件或目录 cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_det.cpp.d: 没有那个文件或目录 compilation terminated. compilation terminated. cc1plus: error: too many filenames given.  Type cc1plus --help for usage cc1plus: fatal error: CMakeFiles/ppocr.dir/src/ocr_cls.cpp.d: 没有那个文件或目录 compilation terminated. cc1plus: fatal error: CMakeFiles/ppocr.dir/src/utility.cpp.d: 没有那个文件或目录 compilation terminated.

解决办法,

找到

~/ocr/01/PaddleOCR/deploy/cpp_infer/CMakeLists.txt

将 "-o3" 改成 "-O3" 就可以了,修改后的结果如下,

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O3 ${FLAG_OPENMP} -std=c++11")

这应该是一个打字错误引起的,不理解为什么官方没有修正过来。

这个可参考:

c++ - CMake on linux givs error cc1plus: error: too many filenames given - Stack Overflow

go - Import C error in Golang: cc1.exe: error: too many filenames given - Stack Overflow

本文结束  

关注
打赏
1661664439
查看更多评论
立即登录/注册

微信扫码登录

0.0416s