[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://www.pswp.cn/pingmian/96049.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96049.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96049.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Sklearn(機器學習)實戰:鳶尾花數據集處理技巧

1.數據集的使用:先使用load導入鳶尾花數據:from sklearn.datasets import load_iris然后定義一個函數來查看鳶尾花數據集:數據集的獲取:iris load_iris()print(鳶尾花的數據集:\n,iris)使用iris[DESCR]來查看數據及里…

【企業微信】接口報錯:javax.net.ssl.SSLHandshakeException

詳細報錯信息 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target原因 關于qyapi…

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法 1 論文核心概念 本文提出了一種基于集成光子芯片的光學子空間神經網絡(Optical Subspace Neural Network, OSNN),用于胰腺癌的早期檢測與圖像分割。其核心思想是利用光子芯片的高并行性、低延遲和低能…

Scikit-learn Python機器學習 - 特征降維 壓縮數據 - 特征提取 - 主成分分析 (PCA)

鋒哥原創的Scikit-learn Python機器學習視頻教程: 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識,包括機器學習概述,特征工程(數據…

【Python】pytorch安裝(使用conda)

# 創建 PyTorch 虛擬環境 conda create -n pytorch_env python3.10# 激活環境 conda activate pytorch_env# 安裝 PyTorch(CPU版本) conda install pytorch torchvision torchaudio cpuonly -c pytorch# 或者安裝 GPU 版本(如果有NVIDIA顯卡&…

ThreeJS骨骼示例

<html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>骨骼動畫混合演示</title><style>body {margin: 0;padding: …

python + Flask模塊學習 1 基礎用法

目錄 Flask 的主要作用 常用擴展 Flask 基本用法 1. 安裝 Flask&#xff08;再安裝個postman用來調試測試API哈 2. 最小化應用示例 3. 運行應用 Flask 是一個輕量級的 Python Web 框架&#xff0c;它簡潔靈活&#xff0c;適合快速開發 Web 應用和 API。它被稱為 "微…

python數據可視化之Matplotlib(8)-Matplotlib樣式系統深度解析:從入門到企業級應用

作者&#xff1a;浪浪山齊天大圣 描述&#xff1a;深入探索Matplotlib樣式系統的核心機制&#xff0c;掌握從基礎樣式到企業級樣式管理的完整解決方案引言 在數據可視化的世界里&#xff0c;一個優秀的圖表不僅要準確傳達數據信息&#xff0c;更要具備專業的視覺效果。Matplotl…

3.HTTP/HTTPS:報文格式、方法、狀態碼、緩存、SSLTLS握手

HTTP/HTTPS&#xff1a;報文格式、方法、狀態碼、緩存、SSL/TLS握手 1. HTTP報文格式 1.1 HTTP請求報文(Request) GET /api/v1/users HTTP/1.1 // 請求行&#xff1a;方法、URI、協議版本 Host: api.example.com // 請求頭 (Headers) User-Agent: Mozil…

【慢教程】Ollama4:ollama命令匯總

??教程說明 Ollama 是一款輕量級本地大模型部署工具&#xff0c;使用廣泛&#xff0c;且容易上手&#xff0c;適合作為AI技術的入門。 &#x1f9e9;教程各部分鏈接&#xff1a; 第一課&#xff1a;ollama運行原理介紹及同類工具對比 ollama運行原理介紹及同類工具對比&am…

JAVA Predicate

簡單來說&#xff0c;當我明確知道此次判斷的邏輯時就可以直接使用if&#xff0c;但是我這次的判斷邏輯可能會隨著某個參數變化的時候使用Predicate比如當我想要判斷某長段文字中是否包含list<String> 中的元素&#xff0c;并且包含的元素個數大于 list<String>最后…

什么是PFC控制器

一句話概括PFC控制器是一種智能芯片&#xff0c;它通過控制電路中的電流波形&#xff0c;使其與電壓波形保持一致&#xff0c;從而減少電力浪費&#xff0c;提高電能的利用效率。PFC控制器IC的核心作用就是控制一顆功率MOSFET的開關&#xff0c;通過特定的電路拓撲&#xff08;…

【P03_AI大模型測試之_定制化 AI 應用程序開發】

git clone https://gitee.com/winner21/aigc-test.git 類似于joycoder的&#xff0c;可以安裝在vscode上的通義靈碼&#xff1a;https://lingma.aliyun.com/ 1、VSCODE上配置通義靈碼 2、創建前后端文件&#xff0c;并引用AI編碼代碼 3、指定文件&#xff0c;利用AI進行代碼優…

人工智能機器學習——決策樹、異常檢測、主成分分析(PCA)

一、決策樹(Decision Tree) 決策樹&#xff1a;一種對實例進行分類的樹形結構&#xff0c;通過多層判斷區分目標所屬類別 本質&#xff1a;通過多層判斷&#xff0c;從訓練數據集中歸納出一組分類規則 優點&#xff1a; 計算量小&#xff0c;運算速度快易于理解&#xff0c;可…

服務器文件同步用哪個工具?介紹一種安全高效的文件同步方案

服務器作為企業核心數據和應用的載體&#xff0c;服務器文件同步已成為IT運維、數據備份、業務協同中不可或缺的一環。然而&#xff0c;面對多樣的場景和嚴苛的需求&#xff0c;選擇一個既高效又安全的服務器文件同步工具并非易事。本文將首先探討服務器文件同步的常見場景、需…

LeetCode 004. 尋找兩個正序數組的中位數 - 二分切分與分治詳解

一、文章標題 LeetCode 004. 尋找兩個正序數組的中位數 - 二分切分與分治詳解 二、文章內容 1. 題目概述 題目描述&#xff1a;給定兩個已按非降序排列的整數數組 nums1、nums2&#xff0c;設它們長度分別為 m 和 n&#xff0c;要求返回這兩個數組合并后有序序列的中位數。…

預閃為什么可以用來防紅眼?

打閃拍照紅眼產生的原因 預閃可以用來防紅眼&#xff0c;是基于人眼的生理特性和紅眼現象的產生原理。在光線較暗時&#xff0c;人眼的瞳孔會放大。當使用閃光燈拍攝時&#xff0c;如果直接進行高強度閃光&#xff0c;由于瞳孔來不及縮小&#xff0c;閃光燈的光線會反射在眼球血…

Python程序使用了Ffmpeg,結束程序后,文件夾中仍然生成音頻、視頻文件

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻&#xff0c;并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec&#xff0c;為了保證高可移植性和編解碼質量&#xff0…

模塊與包的導入

077-模塊-06-模塊搜索順序_嗶哩嗶哩_bilibili 080-包-01-包的概念以及建立包的方式_嗶哩嗶哩_bilibili 088-文件操作-01-文件操作套路以及Python中的對應函數和方法_嗶哩嗶哩_bilibili 注&#xff1a; 1.import math和 from math import *區別 2. 模塊&#xff08;Module…

Docker Compose 多種安裝方式 (Alibaba Cloud Linux 3 環境)

Docker Compose 多種安裝方式&#xff0c;適用于不同場景&#xff08;如依賴系統包管理器、使用 Python 工具鏈、集成 Docker 插件等&#xff09;。以下是常見的方案&#xff0c;尤其針對 Alibaba Cloud Linux 3 環境適配&#xff1a; 一、二進制包安裝&#xff08;推薦&#…