FDRNet: Fourier Document Restoration for Robust Document Dewarping and Recognition学习笔记

1 广告

这篇工作由字节跳动商业化技术团队与新加坡南洋理工大学合作完成。
话不都说,先看效果:
在这里插入图片描述
FDRNet的效果看上去有点好,可惜没有源代码提供。

2 相关工作

2.1 几何形变恢复方法Geometric Document Restoration

由相机传感器捕获的文档文本通常位于弯曲/折叠的表面上,并遭受严重阻碍文档识别的各种透视失真。为了将文档展平为识别友好的形式,文档展开已被广泛研究。传统方法通过重建3D文档形状或提取2D图像特征对文档进行矫正。另一方面,提取2D特征通常涉及各种启发式参数,并且3D重建复杂且对各种噪声敏感。近年来,一些工作[8,9,27]利用深度神经网络从2D/3D合成文档图像中学习文档形状。然而,这种数据驱动的方法需要大量复杂且耗时的合成数据。

我们提出的FDRNet通过学习2D深度网络特征,用很少的启发式方法来处理文档。它不是使用大量的合成数据[8,9,11,27],而是从真实文档图像的高频分量中学习,这允许使用少量的训练数据学习高级几何文档恢复模型。

2.2 光学文档恢复Photometric Document Restoration

由相机设备捕获的文档图像经常遭受各种照明噪声,例如由摄影师或文档本身引起的遮挡阴影。
这种照明噪声使文档背景中的文本分割变得复杂,这可能会显著降低文本识别性能。
已经报道了不同的光度恢复和文档图像二值化技术[1,18,19,23,36],用于从各种不均匀照明的文档图像中分割文本。
另一方面,大多数现有工作要么是计算密集型的[7,36],要么对启发式参数[1,3,23,26,35]敏感,并且不适合作为文档识别的预处理步骤。
最近,一些方法[11,16]通过基于补丁的网络纠正文档的照明噪声。
本文的方法通过提取高频文档信息来处理照明噪声,效率高、鲁棒性好、启发式最小。

3 算法分析

3.1 核心思想

现有的文档矫正方法大多利用图片生成技术来模拟形变文档,从而学习并预测文档的 3D 信息并进行矫正。由于合成图片与真实图片 domain gap 较大,这样训练出来的网络在真实图片上泛化能力较差。

本文提出一种可以直接在少量真实数据上进行训练的文档矫正方法 FDRNet。对于文档图片,文本内容通常由傅里叶空间中的高频信息组成,而文档背景则由低频信息组成。基于这一特性,FDRNet 在训练过程当中只关注于文档图片的高频信息并且忽略低频信息,从而利用文档的文本特征(而不是文档的 3D 信息)来矫正文档图片。这样使得 FDRNet 在训练过程当中不需要复杂的文档 3D ground-truth,而是可以直接利用现有的文档图片直接进行训练。FDRNet 用百分之一量级的真实图片训练即可达到 SOTA 效果,并且对于任意形变的文档矫正效果更佳。

算法包括三个部分:

  • 粗粒度变换器;
  • 细粒度变换器;
  • 傅里叶变换器。

粗粒度变换器和精粒度变换器学习以粗略到精细的方式对文档进行去毛刺;
傅里叶变换器提取文档图像的高频信息,以便进行有效和高效的网络训练,如图2的绿色突出显示的优化管道(Optimization Pipeline)所示;此外,它还提取高频内容信息,以更好地识别文档,如图2中以蓝色突出显示的网络管道(Network Pipeline)右端所示。
在这里插入图片描述

3.2 粗粒度到细粒度的转换

在这里插入图片描述
粗粒度和细粒度两个变换器共享同一架构空间变换器网络(STN)[14],将空间变换建模为可学习网络。

  • 粗粒度变换器学习在输入图像中定位文档区域,并对定位的文档区域进行粗去毛刺;
  • 细粒度变换器从粗粒度变换器中提取去毛刺的文档图像,并进一步改进去毛刺。

采用薄板样条[4](TPS)作为文档去毛刺的空间变换。

  • TPS变换由两组控制点确定,在一对扭曲和平面文档图像之间具有一一对应关系,它为每个控制点计算空间变形函数以预测几何变形。
  • FDRNet将控制点定义为网状栅格,网络学习预测输入图像中文档区域的网状栅格(即图2中预测网格中的蓝点)。
  • 使用预测网格,TPS将其转换为规则网格(即图2中粗去毛刺和精去毛刺中的蓝点),以实现文档去毛刺。
  • 网格可以有不同的大小,我们的研究表明,9×9网格(有81个控制点)足以进行文件去毛刺。

P=[t1,t2,…,tk]TP = \left[\boldsymbol{t}_{\mathbf{1}}, \boldsymbol{t}_{\mathbf{2}}, \ldots, \boldsymbol{t}_{\boldsymbol{k}}\right]^{T}P=[t1,t2,,tk]T表示预测网格点,用P′=[t1′,t2′,…,tk′]TP^{\prime} =\left[\boldsymbol{t}_{\mathbf{1}}^{\prime}, \boldsymbol{t}_{\mathbf{2}}^{\prime}, \ldots, \boldsymbol{t}_{\boldsymbol{k}}^{\prime}\right]^{T}P=[t1,t2,,tk]T表示规则网格点,可确定TPS变换参数:
Cx=[S1kP1kT00PT00]−1⋅[Px′00](1)C_{x}=\left[\begin{array}{ccc} S & 1_{k} & P \\ 1_{k}^{T} & 0 & 0 \\ P^{T} & 0 & 0 \end{array}\right]^{-1} \cdot\left[\begin{array}{c} P_{x}^{\prime} \\ 0 \\ 0 \end{array}\right]\tag1 Cx=S1kTPT1k00P001Px00(1)
此处:

  • (S)ij∈S(S)_{ij} \in S(S)ijS:由ϕ(ti−tj)\phi(\boldsymbol{t_i} - \boldsymbol{t_j})ϕ(titj)确定,ϕ(r)=∥r∥22log⁡∥r∥22\phi(\boldsymbol{r}) = \|\boldsymbol{r}\|_{2}^{2} \log \|\boldsymbol{r}\|_{2}^{2}ϕ(r)=r22logr22
  • Px′P_{x}^{\prime}PxPPPxxx坐标。

类似地,通过用Py′P_{y}^{\prime}Py替换Px′P_{x}^{\prime}Px可以得到CyC_{y}Cy。因此,我们可以得到C=[Cx,Cy]C=\left[C_{x}, C_{y}\right]C=[CxCy]。最后,对于输入图像u\boldsymbol{u}u中文档区域的每个控制点,可以通过以下方式确定去扭曲文档中对应的点u′\boldsymbol{u}^{\prime}u:
u′=C⋅u(2)\boldsymbol{u}^{\prime}=C \cdot \boldsymbol{u}\tag2 u=Cu(2)
注意,预测的网格点在实现中由规则网格初始化。由于TPS转换中的所有算子都是可微的,因此粗变和细变可以学习通过梯度反向传播来定位文档网格点,而不需要对文档网格进行任何注释。此外,由于网格定位需要关注高层次的文档内容信息,我们在两个变压器中采用堆叠扩展卷积[32,46]来扩大网络接受场。图3显示了粗变压器和精变压器的详细结构。具体来说,首先由骨干网提取文档特征,然后将特征输入到三个堆叠的膨胀卷积层,然后再输入两个不同膨胀率[42]的堆叠的膨胀卷积层。该网络最后预测一组控制点(如图2预测网格所示的文档网格),并将其传递给TPS进行文档去扭曲。

3.3 傅里叶转换

3.4 网络训练

参考文献

[1] 论文:Fourier Document Restoration for Robust Document Dewarping and Recognition
[2] 数据集:https://sgvilab.github.io/event/warpdoc/

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

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

相关文章

python如何在所有线程结束后执行最后操作_Python线程的生命周期

在线程的生命周期中,从创建到执行以及最终终止,线程通常处于四种状态之一:开始态、可调度状态、阻塞态和终止态。 父线程和子线程 当一个新的进程或程序开始运行时,它将以一个线程开始,这个线程被称为主线程。然后主线…

mac怎么安装python开发环境搭建_Mac OS搭建Python开发环境

简书 Wwwwei转载请注明原创出处,谢谢!前言最近在看一些关于机器学习的内容,其中大量代码需要Python的运行环境,所以搭建了Python开发环境,这里记录下,方便大家学习。安装PythonMac OS下安装Python主要方式有…

文本图形处理(扭曲变形、增强等)的源代码列表-1

文本图形扭曲变形 Google:Document image dewarping GitHub Document image dewarping using text-lines and line Segments https://github.com/taeho-kil/Document-Image-Dewarping Document Dewarping with Control Points https://github.com/gwxie/Document-Dewarping…

python小数补0,python用零填充小数

Im looking for a way to pad the float decimals with zeros:This one is my reference:In [37]: {:5.5}.format(round(4.123456, 5))Out[37]: 4.1235I have this:In [38]: {:5.5}.format(4.1)Out[38]: 4.1But I would like to have this:Out[38]: 4.1000解决方案To format a…

通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...

RS485被广泛使用,可以支持ModBus协议。由于其简单、价优、可靠和成熟,因此,被广泛应用于工业控制、智能仪器和电力通信。我们来看看RS485的一个典型组网结构:理论上,RS485总线的传输距离可以达到1200米。然而&#xff…

python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...

Python序列(列表、元组、字典、集合) 一、列表(List)与列表推导式 (一)列表(list) 1.列表是Python内置 可变序列 (列表中元素可增加删除或修改); …

vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...

出处:Element-ui官网给的方法getCheckedKeys() { console.log(this.$refs.tree.getCheckedKeys()); },1这种只有在所有子级都被选中的情况下才能获得父级的id,如果不选中所有的子级那么获取得到的id就只有子级的。但是一般提交数据时后台都需要父级id的。…

nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...

本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作。分享给大家供大家参考,具体如下:注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,nodejs连接sqlserver,最好把防火墙的入站规则关闭,或者允许入站.这个封装只是sql…

python解压_python解压

Python 的代码块不使用大括号( {} )来控制类,函数以及其他 逻辑判断。 python 最具特色的就是用缩进来写模块。 缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。 Python 语句…

python编程a的x次方_「Python 面试」第四次更新

阅读本文大约需要 5 分钟。 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型任务时,同一时刻只能有一个线程在运行,这也是为什么说 Python 的多线程…

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

往期文章「Java并发编程」谈谈Java中的内存模型JMM面试官:说说你知道多少种线程池拒绝策略为什么不要在MySQL中使用UTF-8编码方式前言很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标&…

文本图形处理(扭曲变形、增强等)的源代码列表-2

1 基于深度学习的文档扭曲矫正 Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network https://github.com/gwxie/Dewarping-Document-Image-By-Displacement-Flow-Estimation Here are 12 public repositories matching this topic……

java编译_解析 Java 即时编译器原理。

↑ 点击上面 “时代Java”关注我们,关注新技术,学习新知识!一、导读常见的编译型语言如C,通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译,处处运行”的特性,把编译的过程分成…

ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用

参考iOS-谓词的使用详解NSPredicate 谓词NSPredicateA definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.一种逻辑条件的定义,可以根据定义的模糊查询条件,对内存对象进行过滤搜索。1.比较运…

恒位油杯故障原因_抽油烟机常见故障及处理方法

您知道抽油烟机常见故障及处理方法是什么吗?抽油烟机通电后不能启动,可能是因为电源线断路或接头脱焊,仔细查出断路点或脱焊点,重新焊牢。通断开关断路或触点接触不良,检查断路器处是否焊好,若触点接触不良…

会议容易中吗_在装配式建筑中重要又容易被忽视的部分,你中招了吗?

装配式 建筑装配式建筑大家应该都有听过,那么这种建筑又是怎样构成的呢?装配式建筑概览▲▲▲装配式建筑粘结方案▲▲▲密封胶作为装配式建筑中的重要材料,起到不可忽视的作用~SMP密封胶,1978年开始生产,最初是针对硅酮…

Document image dewarping using text-lines and line Segments学习笔记

1 核心思想 论文:Robust Document Image Dewarping Method Using Text-Lines and Line Segments 论文:Document Dewarping via Text-line based Optimization 代码:https://github.com/taeho-kil/Document-Image-Dewarping 传统的基于文本行的文档去扭曲方法在处理复杂布局…

官网mysql安装目录_官网下载MySQL 并安装

官网下载MySQL 并安装一、下载二、安装:这里不再叙述安装步骤三、MySQL环境变量配置不是必须的。MySQL环境变量作用:找到MySQL安装目录下的bin目录,才能使用MySQL相关命令。配置环境变量后就不必找到bin目录了。说到这里解释一下Java &#x…

ai二维码插件_送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用...

送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用。(领取方式见文章末尾)【AI脚本插件合集包】此AI插件包目前有66款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用。软件内置刀模线绘制、二维码生成、条码制作…