深度学习 tablent表格识别实践记录

下载代码:https://github.com/asagar60/TableNet-pytorch
下载模型:https://drive.usercontent.google.com/download?id=13eDDMHbxHaeBbkIsQ7RSgyaf6DSx9io1&export=download&confirm=t&uuid=1bf2e85f-5a4f-4ce8-976c-395d865a3c37

原理:https://asagar60.medium.com/tablenet-deep-learning-model-for-end-to-end-table-detection-and-tabular-data-extraction-from-b1547799fe29

tablenet

通过端到端的训练来同时优化表格区域检测和表格结构识别,从而实现更高的准确性和效率。

任务:

  • 精确检测称为表检测的表格区域。

  • 检测到的表的行和列中检测和提取信息,称为表结构识别。

tablenet使用一个网络来同时解决这两个任务。它是一个端到端模型,将文档分辨率为 1024x1024 的图像作为输入,并生成两个语义标记的输出,一个用于图像中的表,另一个用于表中的列,分别称为表和列掩码。生成这些掩码后,使用表掩码从图像中过滤表格。

模型架构:

在这里插入图片描述

类似于编码器-解码器模型,编码器对图像中表的位置和结构信息进行编码,解码器使用这些信息为表和列生成掩码。

对于编码器,使用在 ImageNet 数据集上预训练的 VGG-19 模型。

接下来是两个单独的解码器分支,分别用于对表和列进行分段。解码器分支相互独立训练,而编码器可以使用两个解码器的梯度进行微调。

VGG-19 的全连接层(pool5 之后的层)被替换为两个 (1x1) 卷积层。这些卷积层 (conv6) 中的每一个都使用 ReLU 激活,然后是概率为 0.8 的 dropout 层。

来自 3 个池化层的输出与表解码器和列解码器连接,然后多次upscale。值得一提的是,ResNet-18 和 EfficientNet 的性能几乎接近 DenseNet,但选择了基于测试数据的最佳 F1 分数的模型。

训练策略:
在这里插入图片描述

与 VGG19、ResNet-18 和 EfficientNet 相比,Densenet121 作为编码器效果最好。

模型:
→DenseNet121 编码器块

→Table 解码器块

→Column 解码器模块

在这里插入图片描述

loss函数
BCEWithLogitsLoss() 在这里用作损失。这是 Sigmoid + 二进制交叉熵损失的组合。这将分别应用于列掩码和表掩码。

在这里插入图片描述


class TableNetLoss(nn.Module):def __init__(self):super(TableNetLoss, self).__init__()self.bce = nn.BCEWithLogitsLoss()def forward(self, table_pred, table_gt, col_pred = None, col_gt = None, ):table_loss = self.bce(table_pred, table_gt)column_loss = self.bce(col_pred, col_gt)

优化器

用的adam

原有模型测试效果

下载github TableNet-pytorch 代码
安装pytesseract
设置环境变量
下载语言包

更改app的pytesseract路径, pytesseract.pytesseract.tesseract_cmd
设置环境:pt.image_to_string(thresh1,lang=“chi_sim”)

streamlit run app.py

效果不是太好

在这里插入图片描述

训练模型

python train.py

报错内存不足,将测试集的batch_size也调整为2

使用原始数据集,训练结果:

在这里插入图片描述

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

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

相关文章

查看文件内容的指令:cat,tac,nl,more,less,head,tail,写入文件:echo

目录 cat 介绍 输入重定向 选项 -b -n -s tac 介绍 输入重定向 nl 介绍 示例 more 介绍 选项 less 介绍 搜索文本 选项 head 介绍 示例 选项 -n tail 介绍 示例 选项 echo 介绍 输出重定向 追加重定向 cat 介绍 将标准输入(键盘输入)的内容打…

pta L1-077 大笨钟的心情

L1-077 大笨钟的心情 分数 15 退出全屏 作者 陈越 单位 浙江大学 有网友问:未来还会有更多大笨钟题吗?笨钟回复说:看心情…… 本题就请你替大笨钟写一个程序,根据心情自动输出回答。 输入格式: 输入在一行中给出…

【ZYNQ】基于ZYNQ 7020的OPENCV源码交叉编译

目录 安装准备 检查编译器 安装OpenCV编译的依赖项 下载OpenCV源码 下载CMake 编译配置 编译器说明 参考链接 安装准备 使用的各个程序的版本内容如下: 类别 软件名称 软件版本 虚拟机 VMware VMware-workstation-full-15.5.0-14665864 操作系统 Ub…

线性表的合并之求解一般集合的并集问题(单链表)

目录 1问题描述: 2问题分析: 3代码如下: 4运行结果: 1问题描述: 已知两个集合A和B,现要求一个新的集合AAuB。例如,设 A(7,5,3,11)…

基于Matlab的血管图像增强算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

设计数据库之外部模式:数据库的应用

Chapter5:设计数据库之外部模式:数据库的应用 笔记来源:《漫画数据库》—科学出版社 设计数据库的步骤: 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而,是确定数据库理论结构的阶段。 概念模…

k8s笔记27--快速了解 k8s pod和cgroup的关系

k8s笔记27--快速了解 k8s pod和 cgroup 的关系 介绍pod & cgroup注意事项说明 介绍 随着云计算、云原生技术的成熟和广泛应用,K8S已经成为容器编排的事实标准,学习了解容器、K8S技术对于新时代的IT从业者显得极其重要了。 之前在文章 docker笔记13–…

【Web APIs】事件高级

目录 1.事件对象 1.1获取事件对象 1.2事件对象常用属性 2.事件流 1.1事件流的两个阶段:冒泡和捕获 1.2阻止事件流动 1.3阻止默认行为 1.4两种注册事件的区别 3.事件委托 1.事件对象 1.1获取事件对象 事件对象:也是一个对象,这个对象里…

电子电器架构 —— 诊断数据DTC具体故障篇

电子电器架构 —— 诊断数据DTC起始篇 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎…

算法---前缀和练习-2(和为k的子数组)

和为k的子数组 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 创建一个无序映射(哈希表) hash,用于统计前缀和的出现次数。初始时,将前缀和为 0 的次数设为 1,表示…

牛客题霸-SQL篇(刷题记录二)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 以下内容是…

HarmonyOS应用开发实战 - Api9 拍照、拍视频、选择图片、选择视频、选择文件工具类

鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。 1.话不多说,先展示样式 2.设计思路 根据官方提供的指南开发工具类,基础的拍照、拍视频、图库选照片、选…

使用Python进行自动化测试Selenium与PyTest的结合【第150篇—自动化测试】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行自动化测试:Selenium与PyTest的结合 在软件开发中,自…

css盒子模型及浮动

内容(content)、内边距(padding)、边框(border)、外边距(margin) oder:1px solid red; 边框的粗细 边框的样式(虚线还是实线) 边框的颜色 border中也有一些属性可以直接调某一个方向上的边框的粗细,样式,颜色 border-left\bord…

2024/3/24 LED点阵屏

显示原理: 类似矩阵键盘,逐行or逐列扫描 74HC595是串行 寄存器 感觉就是三转八寄存器 并行:同时输出;串行:一位一位输出 先配置74HC595,重新进行位声明 sbit RCKP3^5; //RCLK sbit SCKP3^6; …

淘宝|天猫|京东|1688主流电商平台的实时数据返回接口|附Python实例

导读:随着淘宝/天猫直通车功能升级,很多功能越来越白盒化,越来越简化,更方便用户的操作,只需一键即可看出淘宝/天猫直通车存在的问题。淘宝/天猫直通车千人千面后有了实时数据工具,下面通过一个案例告诉大家…

23. UE5 RPG制作属性面板(一)

随着角色的属性越来越多,我们不能每次都进行showdebug abilitysystem进行查看,而且玩家也需要查看角色属性,所以需要一个查看玩家角色属性的面板。 在前面,我们创建三种类型的属性 Primary Attributes(主要属性&#…

常见的OOM 问题的 6 种场景

今天跟大家一起聊聊线上服务出现 OOM 问题的 6 种场景,希望对你会有所帮助。 一、堆内存 OOM 堆内存 OOM 是最常见的 OOM 了。 出现堆内存 OOM 问题的异常信息如下: java.lang.OutOfMemoryError: Java heap space此 OOM 是由于 JVM 中 heap 的最大值,已经不能满足需求了…

资深测试总结,性能测试-常见并发问题+解决总结(最全)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、并发测试的定义…

vscode用SSH远程开发c语言

vscode配置远程 这里我使用虚拟机进行展示,首先需要你的虚拟机安装好ssh 没安装好就执行下面的命令安装并开启服务 sudo apt-get install ssh sudo service ssh start ps -e | grep sshvscode安装 remote-ssh扩展 点击左下角的远程连接,我这里已经连接…