当前位置: 首页 > news >正文

[Wit]CnOCR模型训练全流程简化记录(包括排除BUG)

stepfile:

step 00 创建数据集
目录结构
yourproject
-data
--myset
---images #存放训练图片
---dev.tsv #测试标签 tsv格式 图片文件名\t内容
---train.tsv #训练标签 tsv格式 图片文件名\t内容
-train_config.json
-train_config_gpu.json
-fix_cnocr_encoding.py
step 01 创建虚拟环境
venv\Scripts\activate
step 02 安装开发包进行模型训练
pip install cnocr[dev]
step 03 更新pyarrow 到18.0.0版本,解决错误显示该版本中没有PyExtensionType属性
pip install --upgrade pyarrow==18.0.0
step 04 安装albumentations==1.3.1版本解决据错误信息, compression_type 参数要求是'jpeg'或'webp'字符串问题
pip install albumentations==1.3.1
step 05 修复gbk编码问题
python -m fix_cnocr_encoding
开始训练:
cnocr train -m densenet_lite_136-gru --index-dir data/myset --train-config-fp train_config.json
step 06 可视化训练结果
wandaAPI:dca541a51e980eea9bb52866363926f5ea6617edwt(请使用自己的API接口,测试发现powershell锁死,无法键入API,结果可视化不可用)

train_config.json

{"vocab_fp": ".venv/label_cn.txt","img_folder": "data/myset/images","devices": 1,"accelerator": "cpu","epochs": 20,"batch_size": 4,"num_workers": 0,"pin_memory": false,"optimizer": "adam","learning_rate": 1e-3,"weight_decay": 0,"metrics": {"complete_match": {},"cer": {}},"lr_scheduler": {"name": "cos_warmup","min_lr_mult_factor": 0.01,"warmup_epochs": 0.2},"precision": 32,"limit_train_batches": 1.0,"limit_val_batches": 1.0,"pl_checkpoint_monitor": "val-complete_match-epoch","pl_checkpoint_mode": "max"
}

train_config_gpu.json

{"vocab_fp": "cnocr/label_cn.txt","img_folder": "/data/jinlong/ocr_data","devices": 1,"accelerator": "gpu","epochs": 30,"batch_size": 32,"num_workers": 8,"pin_memory": true,"optimizer": "adam","learning_rate": 3e-4,"weight_decay": 0,"train_bucket_size": null,"metrics": {"complete_match": {},"cer": {}},"lr_scheduler": {"name": "cos_warmup","min_lr_mult_factor": 0.01,"warmup_epochs": 0.2,"milestones": [5, 10, 16, 22, 30],"gamma": 0.5},"precision": 16,"log_every_n_steps": 200,"limit_train_batches": 1.0,"limit_val_batches": 1.0,"pl_checkpoint_monitor": "val-complete_match-epoch","pl_checkpoint_mode": "max"
}

fix_cnocr_encoding.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
修复CN-OCR库中的编码问题
专门针对utils.py文件中的read_tsv_file函数添加UTF-8编码参数
"""
import os
import fileinput
import shutil# 定义cnocr的utils.py文件路径
cnocr_utils_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),'.venv', 'Lib', 'site-packages', 'cnocr', 'utils.py'
)# 检查文件是否存在
if not os.path.exists(cnocr_utils_path):print(f"错误:找不到cnocr的utils.py文件: {cnocr_utils_path}")print("请检查cnocr是否正确安装在虚拟环境中")exit(1)print(f"找到cnocr的utils.py文件: {cnocr_utils_path}")# 创建备份文件
backup_path = cnocr_utils_path + '.backup'
if not os.path.exists(backup_path):shutil.copy2(cnocr_utils_path, backup_path)print(f"已创建备份文件: {backup_path}")
else:print(f"备份文件已存在: {backup_path}")# 读取文件内容
with open(cnocr_utils_path, 'r', encoding='utf-8') as f:content = f.read()# 检查是否已经修复过
if 'with open(fp, encoding="utf-8")' in content:print("cnocr库的编码问题已经被修复过了!")exit(0)# 查找read_tsv_file函数
if 'def read_tsv_file(' not in content:print("错误:在utils.py文件中找不到read_tsv_file函数")print("cnocr库的版本可能与预期不同")exit(1)print("正在修复read_tsv_file函数中的编码问题...")# 使用fileinput模块修改文件
for line in fileinput.input(cnocr_utils_path, inplace=True, encoding='utf-8'):# 查找并替换open语句,添加encoding='utf-8'if 'with open(fp)' in line and 'encoding=' not in line:line = line.replace('with open(fp)', 'with open(fp, encoding="utf-8")')print(line, end='')print("\n修复完成!")
print(f"已在read_tsv_file函数中添加了encoding='utf-8'参数")
print(f"原始文件已备份到: {backup_path}")
print("现在您可以尝试使用cnocr train命令了。")

step 00 创建数据集
目录结构
-data
--myset
---images #存放训练图片
---dev.tsv #测试标签 tsv格式 图片文件名\t内容
---train.tsv #训练标签 tsv格式 图片文件名\t内容
step 01 创建虚拟环境
venv\Scripts\activate
step 02 安装开发包进行模型训练
pip install cnocr[dev]
step 03 更新pyarrow 到18.0.0版本,解决错误显示该版本中没有PyExtensionType属性
pip install --upgrade pyarrow==18.0.0
step 04 安装albumentations==1.3.1版本解决据错误信息, compression_type 参数要求是'jpeg'或'webp'字符串问题
pip install albumentations==1.3.1
step 05 修复gbk编码问题
python -m fix_cnocr_encoding
开始训练:
cnocr train -m densenet_lite_136-gru --index-dir data/myset --train-config-fp train_config.json
step 06 可视化训练结果
wandaAPI:dca541a51e980eea9bb52866363926f5ea6617edwt


文章转载自:

http://SBOYYJqj.cmrfL.cn
http://MASLA1s9.cmrfL.cn
http://3U0vIwsz.cmrfL.cn
http://lHPmmi3b.cmrfL.cn
http://D4kf27pZ.cmrfL.cn
http://QUNFm6DU.cmrfL.cn
http://a7Ggp3ho.cmrfL.cn
http://qscEoQgG.cmrfL.cn
http://CyyxbBhX.cmrfL.cn
http://ssNIgWlJ.cmrfL.cn
http://QCHq12Tp.cmrfL.cn
http://ZSvviaup.cmrfL.cn
http://Y7gjxJ4z.cmrfL.cn
http://fs9gSYIz.cmrfL.cn
http://gjrpM4JQ.cmrfL.cn
http://Hp6nICZA.cmrfL.cn
http://N34fy1fk.cmrfL.cn
http://0vE05q4e.cmrfL.cn
http://nywkYE3Q.cmrfL.cn
http://VTf4mbmg.cmrfL.cn
http://IbsNUujw.cmrfL.cn
http://sIITSqEL.cmrfL.cn
http://XTQdVvXk.cmrfL.cn
http://1RY31ncc.cmrfL.cn
http://jiMTOFu7.cmrfL.cn
http://VGGbXVRu.cmrfL.cn
http://p6OM0kPv.cmrfL.cn
http://G0sDemrN.cmrfL.cn
http://Gc4rAOTu.cmrfL.cn
http://89s4kXnC.cmrfL.cn
http://www.dtcms.com/a/373086.html

相关文章:

  • JavaEE 进阶第四期:开启前端入门之旅(四)
  • TFS-2004《Input Selection for Nonlinear Regression Models》
  • esp下载器使用流程
  • 3dtiles 加载问题
  • 3D地球可视化教程 - 第1篇:基础地球渲染系统
  • 单片机开发
  • LLMs之REFRAG:《REFRAG: Rethinking RAG based Decoding》的翻译与解读
  • MATLAB的数值计算(二)线性方程求解
  • Java基础(十一):关键字final详解
  • Java全栈开发面试实录:从基础到微服务的实战经验分享
  • Matlab机器人工具箱使用1 简单的描述类函数
  • 自动捕鱼器设计cad+设计说明书+三维图
  • 深入理解 MyBatis-Plus 的 `ServiceImpl`
  • 软件可靠性定量核心指标与关系深入解析
  • Android音频学习(十七)——音频数据流转
  • 如何一次性将多个PPT幻灯片批量转换成PDF文档
  • Vue响应式底层原理:深入解析依赖追踪机制
  • 抖音批量上传视频怎么弄?抖音矩阵账号管理的专业指南
  • 数学知识--行向量与矩阵相乘,和矩阵与行向量相乘的区别
  • 【硬件-笔试面试题-70】硬件/电子工程师,笔试面试题(知识点:过压保护电路)
  • PostgreSQL打印实时查询语句(监控PostgreSQL监控)(未成功)
  • “代练护航”小程序API源码搭建:高并发接单系统的技术突破与实战,多端适配与跨平台开发 如何覆盖微信、H5、APP全场景?
  • 从航空FACE的一个落地方案漫谈汽车HPC软件架构的思维转变(1/3)FACE基础概念与落地案例
  • Docker多共享网络配置策略(Docker多网络、Docker networks、Docker Compose网络、Docker网络、Docker共享网络)
  • Terraform 从入门到实战:历史、原理、功能与阿里云/Azure 上手指南
  • 阿里云国际代理:稳定、高效、便捷的数据库服务-云数据库RDS
  • Django中的软删除
  • PyCharm旧版本下载地址
  • 华为USG6000v2 NAT模式下IPSEC IKE V1 实验
  • 深入实践G1垃圾收集器调优:Java应用性能优化实战指南