关于paddleocr2.6 布局分析的踩坑总结(一)
8月24日paddleocr发布了2.6.0,之前使用过2.5版本的布局分析,整体比较好用。近期就尝试了一下paddleocr的新版本,记录一下尝鲜经历。2.6版本的公告中指出,布局分析模型缩小了95%,同时速度提升了11倍,在cpu上平均耗时41ms。
打开ppstructure/layout的readme,发现2.6的调用方法与2.5差别还是挺大的,由于之前程序是以2.5版本为基础写的,更倾向于再原有的代码上改造。所以本文主要以改造踩坑为主。
2.5版本是使用了使用了layoutparser库集成的调用,创建了PaddleDetectionLayoutModel对象,调用配置好的模型,使用cv2读取图片后,进行识别,过程很简单。但2.6发布的新模型并没有集成到layoutparser的配置中,从调用方式上看是只需要修改了相关配置就ok的。
通过查看PaddleDetectionLayoutModel的源码,在catalog的MODEL_CATALOG添加模型的url。PubLayNet中未注释的部分为真实地址,但是你添加了这个地址后程序是不会自动下载的,因为在PaddleModelURLHandler中不支持网址https://paddleocr.bj.bcebos.com 。
解决办法有两种,一种相对比较彻底的就是给PaddleModelURLHandler支持的网址中加上模型的网址,这样在配置中可以保留模型真实的地址。另一种隐患较大,修改真实网址如上图中注释代码。但是不管如何修改配置,在尝试过程中都没有成功下载,难道是网络问题?
在确认网络没有异常之后(浏览器可以直接下载),找到了download代码,上边的显示下载进度,下边的直接下载。换成注释内容后顺利下载,建议没事不要动源码,出发用不了。其实也可以跳过代码中下载步骤,通过浏览器下载后将模型放到本地缓存解压即可。代码中tmp的地址就是本地缓存位置。
终于将模型从配置链接到缓存本地都弄好了,启动后依然报错。错误信息是找不到模型文件,查看本地缓存后发现下载的模型文件名默认是model.后缀名,程序调用的模型文件是inference.后缀名。改名之后加载模型过程中没有再报错。
启动后在detect 图片的过程中会报错。同时运行2.5和2.6预测同一张图片时,predictor的input_names不一样,继而返回的tensor的形状也不同,最终报错。原因暂无结论。
接下来会尝试使用2.6文档中的调用方法,尽管这也说明使用无法再使用layoutparser来兼容了。
关于paddleocr2.6 布局分析的踩坑总结(一)的更多相关文章
- Spring5.x源码分析 | 从踩坑到放弃之环境搭建
Spring5.x源码分析--从踩坑到放弃之环境搭建 前言 自从Spring发行4.x后,很久没去好好看过Spring源码了,加上最近半年工作都是偏管理和参与设计为主,在技术细节上或多或少有点疏忽,最 ...
- flex布局应用于踩坑
一.预告 本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道: 1.初学前端,对前端的传统布局还不是很熟悉的人 2.后端人员对前端不打算深入学习的同学 二.开篇 flex布局原本是好几个月前就一直 ...
- flex布局应用与踩坑
一.预告 本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道: 1.初学前端,对前端的传统布局还不是很熟悉的人 2.后端人员对前端不打算深入学习的同学 二.开篇 flex布局原本是好几个月前就一直 ...
- cookie猜数字游戏(上)---------------思路分析(踩坑)
说明:用户第一次请求页面的时候,同时会产生一个随机数,用户点提交表单的时候,会将输入的数字与第一次请求产生的数字进行一个对比. 问题一:如何保存用户每次提交的数据 我们常见的在服务器中保存数据的方式是 ...
- 【分析笔记】Linux I2C-Tools 使用踩坑笔记
一.踩坑缘由 在调试 I2C 器件时,我一般习惯于使用 i2cdetect 工具来确认芯片是否有应答,通常有应答之后,就会开始着手移植或者编写对应的驱动程序,但是在调试 sgp41 传感器时却不灵了. ...
- ViewPager实现无限轮播踩坑记
最近笔者想通过ViewPager来实现一个广告Banner,并实现无限轮播的效果,但是在这个过程中踩了不少的坑,听我慢慢道来.如果大家有遇到和我一样的情况,可以参考我的解决方法,没有那就更好,如果针对 ...
- TiDB 深度实践之旅--真实“踩坑”经历
美团点评 TiDB 深度实践之旅(9000 字长文 / 真实“踩坑”经历) 4 PingCAP · 154 天前 · 3956 次点击 这是一个创建于 154 天前的主题,其中的信息可能已经有所发 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
随机推荐
- Kubernetes 部署 - DevOps CI/CD详细指南
什么是Kubernetes部署? 在此文章中,我们将探索Kubernetes(K8s),结合DigitalOcean Kubernetes集群与Buddy自动化运维系统部署以达到以下列出的目标: 使 ...
- BBS项目 未完待续
项目开发基本流程 1.需求分析 2.架构设计 3.分组开发 4.提交测试 5.交付上线 创建项目配置 环境配置 TEMPLATES = [ { 'BACKEND': 'django.template. ...
- NoClassDefFoundError的两种情况
ClassNotFoundException vs. NoClassDefFoundError ClassNotFoundException 关于ClassNotFoundException发生的原因 ...
- Java学习笔记:2022年1月13日(其一)
Java学习笔记:2022年1月13日(其一) 摘要:这篇笔记主要讲解了Java中的自定义类.以及构造一个类时所需要了解的一些重点知识. 目录 Java学习笔记:2022年1月13日(其一) 1. ...
- MySQL 字符串长度 char_length、length
一.方法分类 二.具体方法 函数 描述 区别 char_length(str)或character_length(str) 返回字符串 str 的字符 1.单位为字符2.不管汉字还是数字或者是字母都算 ...
- uniapp如何打包wgt格式
打包 build 首次打包,需要配置AppId 登录dcloud开发者中心 点击直达 创建应用 将生成的AppId配置到项目manifest.json中 开始打包 打包成功
- Java实现BP神经网络MNIST手写数字识别
Java实现BP神经网络MNIST手写数字识别 如果需要源码,请在下方评论区留下邮箱,我看到就会发过去 一.神经网络的构建 (1):构建神经网络层次结构 由训练集数据可知,手写输入的数据维数为784维 ...
- 千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)
我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音 ...
- Blazor嵌套传递
实现创建一个Blazor Server空的应用程序 创建一个Tab.razor 并且添加以下代码 <div> @Title </div> @code { [CascadingP ...
- Vue17 手机表单数据
1)v-model.trim trim修饰符是去掉前后空格 2)type="number" v-model.number type="number":只能输入数 ...