通用场景OCR文本识别任务-baseline学习(PaddleOCR)

简介: 通用场景OCR文本识别任务-baseline学习(PaddleOCR)

baseline地址

“英特尔创新大师杯”深度学习挑战赛 赛道1:通用场景OCR文本识别任务 比赛地址

一、安装环境和下载数据集

1.首先要安装相应的cuda和cudnn这就不多说了,比如我的是cuda10.2和它对应的cudnn

2.从官网安装paddlepaddle-gpu, 链接

3.将代码clone到本地,并进入该目录

git clone https://gitee.com/coggle/tianchi-intel-PaddleOCR
cd tianchi-intel-PaddleOCR

4.下载训练图片和测试图片

python down_image.py

5.下载预测模型

mkdir inference && cd inference/
# 下载模型
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar
# 解压模型
tar -xf ch_ppocr_server_v2.0_rec_infer.tar 
tar -xf ch_ppocr_server_v2.0_det_infer.tar
tar -xf ch_ppocr_mobile_v2.0_cls_infer.tar

6.尝试预测模型去预测一张图片

在tianchi-intel-PaddleOCR目录下

python tools/infer/predict_system.py --image_dir="./1.jpg" --det_model_dir="./inference/ch_ppocr_server_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_server_v2.0_rec_infer/" --cls_model_dir='./inference/ch_ppocr_mobile_v2.0_cls_infer/' --use_angle_cls=True --use_space_char=True

7.运行推理文件如果发生报错 缺少geos_c.dll

可以参考此链接

8.继续运行推理文件果又发生报错

Segmentation fault

9.检查paddlepaddle-gpu安装是否正确

import paddle.fluid
paddle.fluid.install_check.run_check()

如果安装正确会出现字样,

>>> paddle.fluid.install_check.run_check()
Running Verify Fluid Program ...
W0710 09:57:15.796396 13492 device_context.cc:404] Please NOT
E: device: 0, GPU Compute Capability: 7.5, Driver API Version
: 11.2, Runtime API Version: 10.2
W0710 09:57:15.811870 13492 device_context.cc:422] device: 0,
 cuDNN Version: 7.6.
Your Paddle Fluid works well on SINGLE GPU or CPU.
Your Paddle Fluid works well on MUTIPLE GPU or CPU.
Your Paddle Fluid is installed successfully! Let's start deep
 Learning with Paddle Fluid now

否则比如这种

RuntimeError: (PreconditionNotMet) The third-party dynamic li
brary (cudnn64_7.dll) that Paddle depends on is not configure
d correctly. (error code is 126)
  Suggestions:
  1. Check if the third-party dynamic library (e.g. CUDA, CUD
NN) is installed correctly and its version is matched with pa
ddlepaddle you installed.
les as follows:
  - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...
`
\Paddle_release3\paddle\fluid\platform\dynload\dynamic_loader
.cc:265)

缺少cudnn64_7.dll文件

根据这个链接可以解决

10.再次运行推理

可以发现运行成功了

[2021/07/10 09:57:40] root INFO: dt_boxes num : 2, elapse : 1
.4339828491210938
[2021/07/10 09:57:40] root INFO: cls num  : 2, elapse : 0.007
935762405395508
[2021/07/10 09:57:40] root INFO: rec_res num  : 2, elapse : 0
.037322998046875
[2021/07/10 09:57:40] root INFO: Predict time of ./1.jpg: 1.5
02s
[2021/07/10 09:57:40] root INFO: 土地整治与土壤修复研究中心,
0.973
[2021/07/10 09:57:40] root INFO: 华南农业大学-东图, 0.992
[2021/07/10 09:57:40] root INFO: The visualized image saved i
n ./inference_results/1.jpg

在目录inference_results中可以看到预测的结果

二、训练模型

1.下载预训练模型

为配置文件ch_det_res18_db_v2.0.yml的预训练模型, 进行下载和解压

cd inference
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_train.tar
tar -xf ch_ppocr_server_v2.0_det_train.tar

2.训练预训练模型

python tools/train.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml -o Global.pretrain_weights=./inference/ch_ppocr_server_v2.0_det_train/

发现卡在这边不会动了

[2021/07/10 12:15:37] root INFO: During the training process,
after the 100th iteration, an evaluation is run every 1000 ite
rations
[2021/07/10 12:15:37] root INFO: Initialize indexs of datasets
:['./train_data/tianchi/train_list.txt']
Segmentation fault

于是在https://github.com/PaddlePaddle/PaddleOCR/issues/2184上找到了解决的办法,就是修改num worker改为0,

batch_size_per_card也就是batch size改小点。

将目录下 ...\tianchi-intel-PaddleOCR\configs\det\ch_ppocr_v2.0ch_det_res18_db_v2.0.yml复制一份为my_ch_det_res18_db_v2.0.yml

如下图

打开新复制的yml文件

注意是修改Train:下面的num_workers和batch_size_per_card(批次)

将num_workers设置为0

batch_size_per_card设置为比较小的值(比如我这设置了2)

还可以将save_epoch_step设置为1,代表每一周期训练结束都会保存一下模型


再次训练的时候配置文件改成my_ch_det_res18_db_v2.0.yml

python tools/train.py -c configs/det/ch_ppocr_v2.0/my_ch_det_res18_db_v2.0.yml -o Global.pretrain_weights=./inference/ch_ppocr_server_v2.0_det_train/ 

出现下图这样就是已经开始在训练了

三、预测结果

对测试集进行预测

1.将模型导出

python tools/export_model.py -c configs/det/ch_ppocr_v2.0/my_ch_det_res18_db_v2.0.yml -o Global.pretrained_model=output/ch_db_res18/latest  Global.save_inference_dir=output/ch_db_res18/

2.对测试集进行预测

python tools/infer/predict_system_tianchi.py  --det_model_dir="output/ch_db_res18/"  --rec_model_dir="./inference/ch_ppocr_server_v2.0_rec_infer/" --cls_model_dir='./inference/ch_ppocr_mobile_v2.0_cls_infer/' --use_angle_cls=True --use_space_char=True

3.将结果文件压缩

zip -r submit.zip Xeon1OCR_round1_test*

将submit.zip提交至天池即可,可以拿到62分左右.

四、其他链接:

飞桨AI Studio 有供应GPU使用,但是只能使用Paddle框架

飞桨paddlepaddle官网

相关文章
|
11月前
|
JSON 文字识别 数据可视化
Qwen2-VL微调实战:LaTex公式OCR识别任务(完整代码)
《SwanLab机器学习实战教程》推出了一项基于Qwen2-VL大语言模型的LaTeX OCR任务,通过指令微调实现多模态LLM的应用。本教程详述了环境配置、数据集准备、模型加载、SwanLab集成及微调训练等步骤,旨在帮助开发者轻松上手视觉大模型的微调实践。
|
11月前
|
机器学习/深度学习 人工智能 文字识别
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
k1视觉思考模型是kimi推出的k1系列强化学习AI模型,具备端到端图像理解和思维链技术,能够在数学、物理、化学等领域表现优异。本文详细介绍了k1视觉思考模型的功能、技术原理、使用方法及其在多个应用场景中的表现。
918 68
Kimi 上线视觉思考模型,K1 系列强化学习模型正式开放,无需借助外部 OCR 处理图像与文本进行思考并回答
|
10月前
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
1393 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
机器学习/深度学习 存储 文字识别
OCR -- 文本识别 -- 实践篇
OCR -- 文本识别 -- 实践篇
694 1
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
人工智能 JSON 文字识别
印刷文字识别使用问题之如何数电发票进行识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
文字识别 数据安全/隐私保护 iOS开发
印刷文字识别使用问题之如何识别礼品册上的卡号、密码信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
文字识别 开发工具
印刷文字识别使用问题之是否支持识别手写体
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
印刷文字识别使用问题之是否支持识别手写体
|
机器学习/深度学习 文字识别 自然语言处理
OCR -- 文本识别 -- 理论篇
OCR -- 文本识别 -- 理论篇
388 0

热门文章

最新文章