热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OCR训练常见问题(1)

报错图片数量太少Exception:Thenumberofthewholedata(800)issmallerthanthebatch_size*devices_num*num_

报错图片数量太少

Exception: The number of the whole data (800) is smaller than the batch_size * devices_num * num_workers (2048)----------------------
Error Message Summary:
----------------------
FatalError: Blocking queue is killed because the data reader raises an exception.[Hint: Expected killed_ !&#61; true, but received killed_:1 &#61;&#61; true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:154)[operator < read > error]

搜索FatalError: Blocking queue is killed because the data reader raises an exception.发现报这个错的还不少。。。我的应该就是因为上面所说的 整体数据量太小了导致的&#xff0c;重新导一遍数据好了&#xff0c;多产一些&#xff0c;产2400张好了。


CPU_NUM设置问题

import ujson error: No module named &#39;ujson&#39; use json
2020-09-29 06:24:37,367-INFO: places would be ommited when DataLoader is not iterable
2020-09-29 06:24:37,367-INFO: Distort operation can only support in GPU.Distort will be set to False.
2020-09-29 06:24:37,746-INFO: Loading parameters from ./pretrain_models/rec_mv3_none_bilstm_ctc/best_accuracy...
// 加载预训练模型参数
2020-09-29 06:24:37,821-WARNING: variable ctc_fc_b_attr not used
2020-09-29 06:24:37,821-WARNING: variable ctc_fc_w_attr not used
2020-09-29 06:24:37,878-INFO: Finish initing model from ./pretrain_models/rec_mv3_none_bilstm_ctc/best_accuracy
// 初始化模型完成
W0929 06:24:37.938328 116973 build_strategy.cc:170] fusion_group is not enabled for Windows/MacOS now, and only effective when running with CUDA GPU.
!!! The CPU_NUM is not specified, you should set CPU_NUM in the environment variable list.
CPU_NUM indicates that how many CPUPlace are used in the current task.
And if this parameter are set as N (equal to the number of physical CPU core) the program may be faster.export CPU_NUM&#61;8 # for example, set CPU_NUM as number of physical CPU core which is 8.!!! The default number of CPU_NUM&#61;1.

根据github-issue_Add warning info If CPU_NUM is not set可知&#xff0c;使用之前需要设置一个 CPU_NUM系统变量。
但是这只是一个警告信息&#xff0c;其实不影响程序运行。。。
然后等了很久很久。。。。才出现第一行 训练结果&#xff1a;

2020-09-29 06:30:16,110-INFO: epoch: 1, iter: 10, lr: 0.000500, ‘loss’: 22621.375, ‘acc’: 0.0, time: 30.381

考虑改一下那个CPU_NUM吧&#xff0c;不然训练太慢了。。。

Linux查看物理CPU个数、核数、逻辑CPU个数
ubuntu环境变量的三种设置方法

# 查看物理CPU个数
[root&#64;AAA ~]$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
# 查看每个物理CPU中core的个数(即核数)
[root&#64;AAA ~]$ cat /proc/cpuinfo| grep "cpu cores"| uniq
8
# 查看逻辑CPU的个数
[root&#64;AAA ~]$ cat /proc/cpuinfo| grep "processor"| wc -l
8
# 逻辑cpu个数&#61;物理cpu个数*每个cpu中core的个数
(py37) root&#64;XX:/home/XXX/paddleOCR/PaddleOCR$ cd
(py37) root&#64;XX:~$ vim ~/etc/profile
(py37) root&#64;XX:~$ cd ../
(py37) root&#64;XX:/$ ls
bin boot dev etc home initrd.img initrd.img.old lib lib64 lost&#43;found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old
(py37) root&#64;XX:/$ vim etc/profile$ vim /etc/profile
在里面加入&#xff1a;
export CPU_NUM&#61;1
使生效
source profile
查看是否生效
echo $CPU_NUM

提示训练图片集不存在

在这里插入图片描述
解决方法&#xff1a;很容易发现是因为存放图片的文件夹名不一致&#xff0c;修改一下即可。
在这里插入图片描述
在这里插入图片描述


提示缺少yml参数文件

在这里插入图片描述
将缺少的文件夹复制到tools文件夹。

或者可以使用终端绝对路径直接调用


训练和评估的效果都特别好&#xff0c;预测的效果却特别差

这个是数据预处理的问题&#xff0c;paddleOCR官方给的推理程序里数据预处理的方式和训练程序里数据预处理的方式不完全一样&#xff0c;导致了训练时输入神经网络的张量维度和预测时输入神经网络的张量维度不一样&#xff0c;所以即使权重训练得很好&#xff0c;预测效果也会出现偏差。更改方式如下。
首先&#xff0c;要确保训练的配置文件里image_shape参数和推理的参数设置里rec_image_shape参数的值要是一样的&#xff0c;训练的配置文件在configs/rec里面&#xff0c;推理的参数设置在tools/infer/utility.py文件里面。


RuntimeError : ( PreconditionNotMet ) The third-party dynamic library(cublas64_102.dll;cublas64_10.d11)that Paddle deperon is not configured correctly(error code is 126)

只用cpu就没有这样的问题&#xff0c;这个问题是由于英伟达CUDA安装不正确导致的
解决方法&#xff1a;
它说缺cublas64_10.dll&#xff0c;我就在英伟达显卡加速包里找&#xff0c;发现这里有cublas64_100.dll,通过修改文件名去让其去被调用。


推荐阅读
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本教程旨在指导开发者如何在Android应用中通过ViewPager组件实现图片轮播功能,适用于初学者和有一定经验的开发者,帮助提升应用的视觉吸引力。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • 本文探讨了 Boost 库中的 Program Options 组件,这是一个强大的工具,用于解析命令行参数和配置文件。文章介绍了如何正确设置和使用该组件,包括处理复杂选项和负数值的方法。 ... [详细]
  • 本文通过具体示例详细介绍了 Python 中的装饰器和装饰类的使用方法,包括带参数的装饰器和装饰类的应用场景。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • 在使用Visual Studio构建项目时遇到了IntelliSense错误,具体表现为预期的')'未找到。本文提供了详细的解决方案和可能的原因分析。 ... [详细]
  • LeetCode 104. 二叉树的最大深度 - 深度优先与广度优先策略
    本题探讨了如何通过深度优先搜索(DFS)和广度优先搜索(BFS)两种算法策略来求解二叉树的最大深度问题。二叉树的最大深度定义为从根节点到最远叶子节点的最长路径上的节点数目。 ... [详细]
  • 本文详细介绍了Python中常用的内置函数,包括但不限于数据操作、类型转换、数学运算及进制转换等,旨在帮助开发者更好地理解和运用这些功能强大的工具。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 2022年4月15日的算法练习题,包括最长公共子序列和线段树的应用。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
author-avatar
用户d4k2wd8en1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有