OCR训练部署文档

 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具体内容

图1-3 修改配置文件位置

训练模型

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.rpmyum 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.rpmyum -y install ffmpeg ffmpeg-devel 
yum install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-devgit 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=/Hefei-AI/meiyiwork/software/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=ONmake -j8 #多次
make install 

预测

git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
mkdir build
cd buildcmake  .. \-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=/Hefei-AI/meiyiwork/software/opencv4
LIB_DIR=/Hefei-AI/meiyiwork/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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grid弹性布局 设置宽高一致

效果图如下: 例子:设置每行四列的弹性布局,每个盒子宽高相同,间距为10px .left_list{display: grid;grid-gap: 10px 10px;grid-template-columns: repeat(4,1fr);.list_item{height: 0;padding-bottom:100%;/*高度设置为0&#…

c高级day2

整理思维导图 写一个1.sh脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中, 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再…

Windows 操作系统下 Python 及其模块的管理

Python 是一款解释型语言,理论上一个.py文件可以当成一个稍微复杂一些的字符串指令集本文不涉及jupyter,VS,VScode,Pycharm 等集成开发环境,这不是我们这篇文章所关心的东西 这篇文章面向的是Python 的初学者 最近没有写太多长文章,多写几篇&…

2023全国大学生数学建模竞赛B题思路模型代码

目录 一.选题建议先发布,思路模型代码论文第一时间更新,获取见文末名片 二.选题建议,后续思路代码论文 B 题 多波束测线问题 各题分析 获取完整思路代码见此处名片 一.选题建议先发布,思路模型代码论文第一时间更新&#xff…

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 (1)在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办? (2)测试层 (3)开启mybatis日志 (4)预编译SQL 二、新增 (1&#…

C++QT day2

作业 1> 封装一个结构体,结构体中包含一个私有数组,用来存放学生的成绩,包含一个私有变量,用来记录学生个数, 提供一个公有成员函数,void setNum(int num)用于设置学生个数 提供一个公有成员函数&…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER(一)

文章目录 TASK系列解析文章前言PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER功能介绍PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER相关配置PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER流程确定优化变量定义目标函数定义约束ProcessSetUpStatesAndBoundsOptimizeByQPCheckSpeedLimitF…

it运维监控管理平台,统一运维监控管理平台

随着系统规模的不断扩大和复杂性的提高,IT运维管理的难度也在逐步增加。为了应对这一挑战,IT运维监控管理平台应运而生。本文将详细介绍IT运维监控管理平台的作用和优势以及如何选择合适的平台。 IT运维监控管理平台的作用管理平台 IT运维监控管理平台是…

把握市场潮流,溯源一流品质:在抖in新风潮 国货品牌驶过万重山

好原料、好设计、好品质、好服务……这个2023,“国货”二字再度成为服饰行业的发展关键词。以消费热潮为翼,越来越多代表性品类、头部品牌展现出独特价值,迎风而上,在抖音电商掀起一轮轮生意风潮。 一个设问是:在抖音…

Xubuntu16.04系统中解决无法识别exFAT格式的U盘

问题描述 将exFAT格式的U盘插入到Xubuntu16.04系统中,发现系统可以识别到此U盘,但是打不开,查询后发现需要安装exfat-utils库才行。 解决方案: 1.设备有网络的情况下 apt-get install exfat-utils直接安装exfat-utils库即可 2.设备…

当AI遇到IoT:开启智能生活的无限可能

文章目录 1. AI和IoT的融合1.1 什么是人工智能(AI)?1.2 什么是物联网(IoT)?1.3 AI和IoT的融合 2. 智能家居2.1 智能家居安全2.2 智能家居自动化 3. 医疗保健3.1 远程监护3.2 个性化医疗 4. 智能交通4.1 交通…

[.NET学习笔记] - Thread.Sleep与Task.Delay在生产中应用的性能测试

场景 有个Service类,自己在内部实现生产者/消费者模式。即多个指令输入该服务后对象后,Service内部有专门的消费线程执行传入的指令。每个指令的执行间隔为1秒。这里有两部分组成, 工作线程的载体。new Thread与Task.Run。执行等待的方法。…