PPOCR -训练模型转推理模型遇到的问题

news2024/11/25 12:23:31

前言

使用PPOCR命令行训练验证码单字位置检测+识别模型的情况下,这两个checkpoint训练模型测试图片均没出现问题,但转为inference推理模型的时候,问题来了。

问题1:文字检测的训练模型转为推理模型结果全为空

官方文档中确实有提到该问题,一开始不清楚如何解决,后来进入PaddleOCR的项目代码中查看对应的代码文件后发现问题。
在这里插入图片描述
根据文档的描述是:训练模型的预处理和inference模型的预处理函数是否一致。在训练时可能将图像resize到某个大小,而inference模型预测是用一套默认的参数,也就是你需要到inference模型的预处理函数中将默认参数改为与你实际项目训练时的参数一致。预处理函数在PaddleOCR项目下的./ppocr/data/imaug/operators.py。

解决的过程

  1. 首先,根据文档提示检查两个预处理参数。检查配置文件的DetResizeForTest发现默认是注释掉的。
    在这里插入图片描述

  2. 检查./ppocr/data/imaug/operators.py的DetResizeForTest,那么既然是没有参数,那么resize_type默认=0,limit_side_len=736,limit_type='min',走的是resize_image_type0()方法。
    在这里插入图片描述

  3. 检查./tools/infer/predict_det.py的TextDetector,发现他是默认配置了limit_side_len=960和limit_type='max'的,虽然也是走的resize_image_type0(),但参数跟我们训练时的参数不一致。
    所以直接将这两个参数注释掉,保持与配置文件的没有参数一致。那么预处理就走的同样的方法,且参数一致了。
    在这里插入图片描述

  4. 做到这边再进行推理就有结果了。解决了第一个问题。

问题2:串联检测+识别推理模型,识别效果极差

检测的问题解决了,单独使用检测推理时,结果基本跟模型测试时一致。单独使用识别模型推理时,结果也很好,基本在可接受范围内。但是串联两个模型推理时,识别效果极差,甚至连检测效果都变差了。

解决的过程

  1. 检查./tools/infer/predict_system.py,经过卡卡一顿看代码,夸夸一顿分析,最后发现在对单个字符进行crop时,当crop后的图片高大于宽时,会自动旋转90度。所以才导致出现2识别成N的类似情况。
    最后根据项目的实际情况,这一步是没必要的,所以我直接将他注释掉。crop出来的单个字符图片就正常了,再进行推理也没问题了。
    在这里插入图片描述
    最后进行验证:结果终于能正确显示出来了。
    在这里插入图片描述
    *以上就是刚入门模型训练遇到的所有问题和解决过程,这两个问题差点劝退我,所以做个记录和分享,万一正好有人入门也遇到这个问题呢?

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

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

相关文章

ClickHouse初级

ClickHouse初级 一、ClickHouse的特点1.列式存储2.DBMS的功能3.多样化引擎4.高吞吐写入能力 LSM Tree5.数据分区与线程级并行6.性能对比 二、ClickHouse安装三、数据类型3.1整型3.2浮点型3.3 布尔型3.4 Decimal型3.5 字符串3.6 枚举类型3.7 时间类型3.8 数组 四、表引擎4.1 表引…

Semantic Kernel 知多少 | 开启面向 AI 编程新篇章

在 ChatGPT 火热的当下, 即使没有上手亲自体验,想必也对 ChatGPT 的强大略有耳闻。当一些人在对 ChatGPT 犹犹豫豫之时,一些敏锐的企业主和开发者们已经急不可耐地开展基于 ChatGPT 模型 AI 应用的落地探索。 因此,可以明确预见的是&#xf…

生信刷题之ROSALIND——Part 3

目录 1、Mortal Fibonacci RabbitsProblemSample DatasetSample OutputCodeOutput 2、Overlap GraphsProblemSample DatasetSample OutputCodeOutput 3、Calculating Expected OffspringProblemSample DatasetSample OutputCodeOutput 4、Finding a Shared MotifProblemSample …

TF卡目录显示文件夹变0字节的方法

关于电脑上的目录打不开是什么原因,电脑目录打不开是什么原因这个许多人还不清楚,今天小编来为大家解答目录打不开状况,此刻让好多人一起来瞧瞧吧! TF卡目录显示文件夹变0字节的方法 工具/软件:sayRecy 步骤1&#xff…

ref的使用与数组中的最全的使用方法

目录 1.ref的使用 什么是 ref 引用? 使用ref引用组件实例 2. this.$nextTick(cd) 方法 数组中的方法 1.some方法 --- 查找到目标元素后就停止后面的查找 2.every----判断每一项是否都满足要求 3.reduce方法 4. filter()方法 5. map()方法 6. forEach()方法…

2023年第十二届数据技术嘉年华(DTC)资料分享

第十二届数据技术嘉年华(DTC 2023)已于4月8日在北京圆满落幕,大会围绕“开源融合数智化——引领数据技术发展,释放数据要素价值”这一主题,共设置有1场主论坛,12场专题论坛,68场主题演讲&#x…

低调且强大——JNPF低代码平台

前言 先说说很多人为什么要用低代码平台。大部分的反馈是“懒”,其次就是后台管理这东西吧,来来回回就那些东西,查询/表单/表格/弹窗之类的,加上一些增删改查的逻辑。很多人表示,呆过的公司好几家了,后管的…

《低代码PaaS驱动集团企业数字化创新白皮书》-未来展望

未来展望 低代码PaaS发展的机遇 低代码开发可以帮助企业灵活搭建数字化应用,满足企业各业务部门的个性化、碎片化需求。根据IDC调研结果显示,当前低代码开发主要应用于面向企业内部的应用,占该应用总量的比例达到 11.6%;其次是面…

debug的用法和方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言debug三种方式 1.按照条件输出 2.进入方法 3.回退到上一个方法 一、debug是什么?二、使用步骤1.方法debug 在条件输出的时候按照条件输出进入方法内…

idea好用插件分享——Bito-ChatGPT

文章目录 安装步骤:第一步:打开Setting第二步:选择Plugins,输入Bito,就可以搜索出来了,再点击安装第三步:安装完成回到IDEA主界面,右边区域可以看到Bito图标,点击展开&am…

Java---异常概述

(一)认识Java的异常 1、什么是异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户…

【软件工程】UML序列图

一.概述 序列图(时序图)是一种软件工程行化建模方法,用于可视化系统或应用程序中多个对象之间 的交互。在序列图中,每个对象都表示为竖直线,对象之间的消息则表示为水平箭头 从一个对象指向另一个对象。 序列图可以…

Canvas实现动态绘制圆周效果|实现奥运五环

步骤实现: 首先,创建一个 HTML 画布和一个 JavaScript 动画函数。 在画布上绘制一个圆。 定义一个变量来表示圆心的坐标和半径。 进行动画循环以更新圆心坐标,使其沿外圆周运动。 使用三角函数(如 sin 和 cos)来计…

如何带领小微企业在软件开发行业生存

文章目录 前言一、企业急需的技术人才需要掌握的技能二、人工智能开发者技能三、领导者需要掌握的知识和技能四、具备敏锐的技术视野的方法和途径五、人工智能技术论坛及组织六、机器学习相关论坛和组织七、新技术如何应用和落地1、了解新技术2、确定应用场景3、进行实践验证4、…

Pinia与Vuex区别、Pinia安装与使用

目录 一、Pinia和Vuex区别 二、Pinia使用state、getters、actions 1、安装使用Pinia 2、State 3、actions 4、getters 三、Pinia划分模块 1、目录结构 2、store/user.js 3、某组件使用 四、Pinia持久化存储 1、安装插件 2、store/index.js 3、store/user.js 4、…

Linux 内核设计与实现

文章目录 一、前言二、进程管理1、task_struct2、thread_info 三、调度四、系统调用五、内核数据结构1、kfifo2、映射3、二叉树 六、中断1、软中断2、tasklet3、工作队列4、下半部机制的选择5、下半部禁止与使能 七、内核同步方法1、原子操作2、自旋锁(1&#xff09…

辛弃疾最经典的10首词

他,文能挥笔填词,武能上马杀敌; 他,被称为“词中之龙”, 他,一生赤子,追求收复山河; 他,是与苏轼齐名的豪放派词人; 他是辛弃疾。 辛弃疾一生怀着赤子之…

Bito:一款 iead/webstorm 神级插件,由 ChatGPT 团队开发,堪称辅助神器

前言: idea(后端),webstorm(前端)中可以用的一款辅助插件:Bito 个人尝试体验效果: 优点是:可以自动完成一些场景代码。 缺点:太慢了,大部分时间一直转圈 摘取文档: 什么是Bito&…

UE4 架构初识(一)

UE引擎学习 一、基础框架 UObject: ​ UE创世,万物皆UObject,接着有Actor。UObject提供的元数据、反射生成、GC垃圾回收、序列化、编辑器可见,Class Default Object等,UE可以构建一个Object运行的世界。 Actor: 脱胎自Object的…

问题解决 | Failed to initialize NVML: Driver/library version mismatch

问题描述: Ubuntu20.04服务器上,一个docker容器正在训练模型,打开另外一个docker容器时,出现以下错误 Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to st…