paddle ocr 文字识别模型训练 svtr

news2024/9/8 23:43:37

训练模型方法参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md

实践:https://aistudio.baidu.com/projectdetail/4482681

SVTR 算法原理

SVTR: Scene Text Recognition with a Single Visual Model Yongkun Du and Zhineng Chen and Caiyan Jia and Xiaoting Yin and Tianlun Zheng and Chenxia Li and Yuning Du and Yu-Gang Jiang IJCAI, 2022

假设我们要识别一张图片上的文本,这个过程可以分为几个阶段:

  1. 初步分块和特征提取:
    ○ 首先将图像分成小块,每个小块提取出初步的特征(例如颜色、形状等)。
  2. 组件级别的混合、合并和组合:
    ○ 对每个小块的特征进行混合、合并和组合。这一步骤是分层次进行的,每一层次都进一步整合前一层次的特征。
    ○ 例如,第一层次可能仅处理字符的局部特征(如笔画),而第二层次开始整合整个字符,第三层次则开始整合多个字符之间的关系。
  3. 全局和局部混合:
    ○ 全局混合:整合整张图片的特征,理解字符之间的相对位置和关系。
    ○ 局部混合:细化每个字符内部的细节,确保模型能够识别出单个字符的精确特征。
  4. 多层次感知:
    ○ 通过多层次的处理,模型不仅能够识别出每个字符,还能理解字符之间的关系,从而准确地识别出整个文本内容。

在这里插入图片描述

下载识别模型

https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/algorithm_rec_svtrv2.md

下载最新的SVTR2训练模型
https://paddleocr.bj.bcebos.com/openatom/openatom_rec_svtrv2_ch_train.tar

在这里插入图片描述

数据

https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md

每张图片只有一行文字

ICDAR2015数据集(全英文)

在这里插入图片描述

中文数据集
参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/dataset/datasets.md
中文文档文字识别
● 数据来源:https://github.com/YCG09/chinese_ocr

● 数据简介:
○ 共约364万张图片,按照99:1划分成训练集和验证集。
○ 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成
○ 包含汉字、英文字母、数字和标点共5990个字符(字符集合:https://github.com/YCG09/chinese_ocr/blob/master/train/char_std_5990.txt )
○ 每个样本固定10个字符,字符随机截取自语料库中的句子
○ 图片分辨率统一为280x32
https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/datasets/ch_doc1.jpghttps://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/datasets/ch_doc3.jpg

● 下载地址:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m)

图片:
在这里插入图片描述

100,000张图片,标签如下:

训练命令

下载Paddle OCR源码 git clone https://github.com/PaddlePaddle/PaddleOCR.git

配置文件参数解释:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/config.md

使用下载的识别模型当预训练模型

训练模型命令:python tools/train.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml

识别模型训练速度较慢
在这里插入图片描述

第三轮差不多就达到精度最高98%
在这里插入图片描述

评估

python tools/eval.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml

如果用预训练模型预测,准确度只有68%
在这里插入图片描述

通过微调准确率提高了30%
在这里插入图片描述

推理命令

将训练得到best模型,转换成inference model

python  tools/export_model.py -c configs/rec/SVTRv2/rec_svtrv2_ch.yml -o Global.pretrained_model=output/rec_svtrv2_ch/best_accuracy Global.save_inference_dir=./inference/rec_svtrv2_ch

转换成功后,在目录下有三个文件:

在这里插入图片描述

使用自己的识别模型:

python tools/infer/predict_rec.py   --image_dir='E:/BaiduNetdiskDownload/DataSet/Chinese_dataset/images/img_0000001.jpg'  --rec_model_dir='./inference/rec_svtrv2_ch'  --rec_char_dict_path=''

在这里插入图片描述

训练后参数分布会变,所以预测的图片与训练的图片分布相似时,准确率会更高。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络-ss命令

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器,主要的作用就是向客户端提供网络…

数据结构(邓俊辉)学习笔记】高级搜索树03——红黑树

文章目录 1. 动机1.1 观察体验1.2 持久性1.3 关联性1.4 O(1)重构 2. 结构2.1 定义规则2.2 实例验证2.3 提升交换2.4 末端节点2.5 红黑树,即是B树2.6 平衡性2.7 接口定义 3. 插入3.1 以曲为直3.2 双红缺陷3.3 算法框架3.4 RR-13.5 RR-23.6 归纳…

将nvim的配置 上传gitee

首先是创建仓库 接着进入这个界面 然后是上传代码, 结果: 可以看到已经是可以了。 然后是 拉取代码进行测试。 第一次 拉取 使用 git clone .(家里) 做一点修改,然后上传。(公司) 然后在git pu…

Kotlin 的优势:现代编程语言的卓越选择

文章目录 简洁与优雅的语法空安全特性函数式编程,支持高阶函数、lambdaKotlin 内联函数与 Java 的互操作性强大的类型推断协程支持lazy 委托object 单例模式区间表达式现代的开发工具支持 本文首发地址 https://h89.cn/archives/301.html 最新更新地址 https://gite…

2024-07-27 Unity Excel —— 使用 EPPlus 插件读取 Excel 文件

文章目录 1 前言2 项目地址3 使用方法3.1 写入 Excel3.2 读取 Excel3.3 读写 csv 文件 4 ExcelSheet 代码 1 前言 ​ 前几日,一直被如何在 Unity 中读取 Excel 的问题给困扰,网上搜索相关教程相对古老(4、5 年以前了)。之前想用 …

探索 Electron:如何进行网址收藏并无缝收录网页图片内容?

Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序,它的出现极大地简化了桌面应用程序的开发流程,让更多的开发者能够利用已有的 Web 开发技能…

嵌入式人工智能(28-基于树莓派4B的语音播报模块-SYN6288)

1、语音播报模块 语音播报在一些嵌入式场景中很常见,广泛应用于游戏篮球机音效语音播报,跑步机语音导航,按摩椅语音操作指引,设备故障提示,设备操作引导语音,车载安全语音警示,公共场所语音提示…

系统移植(七)u-boot移植 ④ trusted版本

文章目录 一、U-boot源码适配(一)执行make stm32mp15_trusted_defconfig命令进行配置,生成.config文件(二)执行make menuconfig命令,对u-boot源码进行重新配置1. 对u-boot源码进行配置,移除pmic…

Executable Code Actions Elicit Better LLM Agents

Executable Code Actions Elicit Better LLM Agents Github: https://github.com/xingyaoww/code-act 一、动机 大语言模型展现出很强的推理能力。但是现如今大模型作为Agent的时候,在执行Action时依然还是通过text-based(文本模态)后者JSO…

Java Web——第一天

Web开发课程安排 Web标准 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World Wide Web Consortium,万维网联盟)负责制定 三个组成部分: HTML:负责网页的结构 (页面素和内容) CSS:负责网页的表现 (页面元素的外观、位置等页面…

Ubuntu 20.04.6 安装 Elasticsearch

1.准备 -- 系统更新 sudo apt update sudo apt upgrade -- 安装vim 文本编辑器 sudo apt install vim-- jdk 版本确认 java -versionjdk 安装可以参照:https://blog.csdn.net/CsethCRM/article/details/140768670 2.官方下载Elasticsearch 官方地址:h…

PPT图表制作

一、表格的底纹 插入→表格→绘制表格→表设计→选择单元格→底纹 二、把一张图片做成九宫格 1. 把一张图片画成九宫格(处理过后还是一张图片,但是有框线) 绘制33表格→插入图片→全选表格单元格→右键设置形状格式→填充→图片或纹理填充…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填,采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填,则需要采用SOA的创…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP? ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。 以下是ModBus TC…

二分类、多分类、多标签分类的评价指标

前言 在机器学习和深度学习中,常见的分类任务可以分为:二分类(Binary Classification); 多分类(Multi-class Classification); 多标签分类(Multi-label Classification); 序列分类 (Sequence Classification); 图分类…

SQL优化相关

文章目录 SQL优化1. 数据插入2. 主键优化页分裂页合并索引设计原则 3. order by 优化4. group by 优化5. limit优化6. count优化7. update 优化 SQL优化 1. 数据插入 当我们需要插入多条数据时候,建议使用批量插入,因为每次插入数据都会执行一条SQL&am…

使用YApi平台来管理接口

快速上手 进入YApi官网,进行注册登录https://yapi.pro/添加项目 3. 添加分类 4. 添加接口 5. 添加参数 添加返回数据 可以添加期望 验证 YAPI(Yet Another Practice Interface)是一个现代化的接口管理平台,由淘宝团队…

pip install albumentations安装下载遇19kB/s超级慢细水管解决办法

albumentations 是一个用于图像增强的 Python 库,它提供了丰富的图像变换功能,可以用于数据增强,从而提高深度学习模型的泛化能力。 直接安装命令: pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

【通信模块】LoRa与LoRaWAN简介

LoRaWAN网络 技象科技相关文章总结,学习笔记,原文链接如下,转载请标明该出处: LORA: https://www.techphant.cn/tag/l-2 LORAWAN:https://www.techphant.cn/tag/l-3 其他:如LAN https://www…

网络通信---TCP协议1

今日内容 三次握手: 指建立tcp连接时,需要客户端和服务端总共发送三次报文确认连接。 四次挥手: 断开一个tcp连接,需要客户端和服务端发送四个报文以确认断开。 编程模型 TCP报文 客户端 服务端