PaddleOCR训练、测试文档

本文详细介绍了如何在Linux系统上安装CUDA11.6,包括CUDNN的配置,以及如何在Anaconda环境下使用PaddleOCR进行文本识别训练、部署及遇到的问题解决。还涉及到了OpenCV和CMake的安装步骤。
摘要由CSDN通过智能技术生成

 Cuda安装

wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run 

sh cuda_11.6.0_510.39.01_linux.run

#可能会报错,查看/var/log/nvidia-installer.log ,kill -9 [ID]可以解决

vim ~/.bashrc

source ~/.bashrc
nvcc -V
cp cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/include/* /usr/local/cuda-11.6/include/
cp cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/lib/* /usr/local/cuda-11.6/lib64/
chmod +x /usr/local/cuda-11.6/include/cudnn.h
chmod +x /usr/local/cuda-11.6/lib64/libcudnn*
检测
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

 以文本识别训练为例

环境使用anconda创建了”paddle”的虚拟环境,该环境适合paddleOCR。

conda activate paddle

数据准备

如图1-1,数据集需要提供train_list.txt,和val_list.txt,具体内容如图1-2,修改配置文件位置图1-3

 图1-1

图1-2 train_list.txt,和val_list.txt具体内容

训练模型

git clone https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
#下载预训练模型,按需求下载
wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar
# 解压模型参数
cd pretrain_models
tar -xf en_PP-OCRv3_rec_train.tar && rm -rf en_PP-OCRv3_rec_train.tar

#cd /configs/rec/PP-OCRv3/ ,创建my_en_PP-OCRv3_rec.yml
#注意配置数据集地址

启动训练:
#cd到PaddleOCR目录下
python3 tools/train.py -c configs/rec/PP-OCRv3/my_en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrained_model/en_PPOCRv3_rec_train/best_accuracy

如果出现中断,重启训练:
python3 tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.checkpoints=./your/trained/model

指标评估
python3 tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.checkpoints=./output/v3_en_mobile/best_accuracy

导出模型
# -c 后面设置训练算法的yml配置文件
# -o 配置可选参数
# Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。
# Global.save_inference_dir参数设置转换的模型将保存的地址。

python3 tools/export_model.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy  Global.save_inference_dir=./inference/en_PP-OCRv3_rec/

#清除内存
fuser -v /dev/nvidia*
kill -9 [nvidia的PID]

第二章 部署

安装Cmake,OpenCV,OpenCV-contribute

yum install mesa-libGL-devel mesa-libGLU-devel
wget https://cmake.org/files/v3.26/cmake-3.26.0-rc4.tar.gz
tar -zxvf cmake-3.26.0-rc.tar.gz
cd cmake-3.26.0-rc
./bootstrap && make -j4 && make install
cmake --version

#安装opencv
yum localinstall –nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm

yum localinstall –nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm 
rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro 
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

yum -y install ffmpeg ffmpeg-devel 
yum install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

git clone https://github.com/opencv/opencv.git
cd opencv
git clone https://github.com/opencv/opencv_contrib.git

#上传缺少文件
cd  opencv_contrib/modules/xfeatures2d/src
cd opencv
mkdir build
cd build
#anconda中的lib可能会干扰安装
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/opencv4/ \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_SHARED_LIBS=OFF \
    -DWITH_IPP=OFF \
	-D WITH_OPENEXR=0 \
    -DBUILD_IPP_IW=OFF \
    -DWITH_LAPACK=OFF \
    -DWITH_EIGEN=OFF \
    -DCMAKE_INSTALL_LIBDIR=lib64 \
    -DWITH_ZLIB=ON \
    -DBUILD_ZLIB=ON \
    -DWITH_JPEG=ON \
    -DBUILD_JPEG=ON \
    -DWITH_PNG=ON \
    -DBUILD_PNG=ON \
    -DWITH_TIFF=ON \
    -DBUILD_TIFF=ON

make -j8 #多次
make install 

预测

git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
mkdir build
cd build

cmake  .. \
	-DPYTHON_INCLUDE_DIR=/usr/bin/python3 \
    -DWITH_CONTRIB=OFF \
    -DWITH_MKL=ON \
    -DWITH_MKLDNN=ON  \
    -DWITH_TESTING=OFF \
    -DCMAKE_BUILD_TYPE=Release \
    -DWITH_INFERENCE_API_TEST=OFF \
    -DON_INFER=ON \
-DWITH_PYTHON=ON 

make -j    #时间很长,多次尝试
make inference_lib_dist
sh tools/build.sh


#修改
OPENCV_DIR=/software/opencv4
LIB_DIR=/paddle_inference_install_dir
CUDA_LIB_DIR=/usr/local/cuda/lib64
CUDNN_LIB_DIR=/usr/local/cuda/lib64

#编译前,需要注意替换args.cpp中的rec_char_dict_path,不然会检测乱码

#编译
sh tools/build.sh
#可能会出现问题1
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.
解决办法:
#解决办法/PaddleOCR/deploy/cpp_infer/CMakeLists.txt将 "-o3" 改成 "-O3" 就可以了,修改后的结果如下,

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

网速会影响下载third-party导致报错。

测试

./build/ppocr --rec_model_dir=../../inference/en_PP-OCRv3_rec     --image_dir=../../doc/imgs_words/en/word_2.png     --use_angle_cls=false     --det=false     --rec=true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值