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,一经查实,立即删除!

相关文章

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

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

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编码方式前言很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标&…

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中调用。软件内置刀模线绘制、二维码生成、条码制作…

ai圆角插件_【干货满满】AI软件技巧排版所需

今天给大家来一期关于AI软件的技巧,在画图的速度上能有所提升。下面是软件技巧。#1、在ai中,如何让文件背景是透明的?答:ctrl shift d2、在ai中,如何像快速放大缩小编辑区域?答:按住alt滚动鼠标…

字体垂直居中_海报设计技巧!垂直轴式

文/杨启梅 垂直轴式海报是比较常见的一种海报版式,该版式具有稳重、平和的特点,但是若不注重图文设计的技巧,则容易让该类版式海报落入呆板的窠臼。该文从垂直轴在版面中的位置、文字的易读性和美观性、抽象元素的添加三个方面,讲…

mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍

前言orztop是一款实时show full processlist的工具,我们可以实时看到数据库有哪些线程,执行哪些语句等。工具使用方便简单。解决了我们需要手动刷新show full processlist的痛苦。该工具为朱旭开发的一款可以查看mysql数据库实时运行的sql状况的工具&…

yii2 mysql update_yii2 + mysql 常用增删改查操作语法以及事务

关于数据库mysql的使用: 1.查询: Salesorderitem::find()-asArray()-where([order_id$order_id])-all();Salesorderitem::find()-asArray()-where([order_id$order_id])-one();Quote::findOne([customer_id $customer_id]); 2.插…

mysql 按日期拆分成多条记录_mysql性能优化2 设计规范 设计原则 结构优化 拆分 配置优化...

一、MYSQL数据库设计规范1、数据库命名规范a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线’_组成;b、命名简洁明确(长度不能超过30个字符);c、例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;d、除非是备份数…

python添加环境变量_windows系统下python学习-1 (python环境变量配置)

python安装完成后检测一下是否添加了环境变量(基于你已经完成了python的安装)使用 WindowsR 键调出运行窗口,输入 cmd 按回车调出命令提示符窗口,输入 python 回车已添加环境变量如果你回车后出现上图效果,可以进入python编程界面…

c 子类对象 访问父类对象受保护成员_java面向对象总结

前言:文章参考《java疯狂讲义》进行总结和归纳,知识要进行输出才算真正的有用。在java的世界里,一切皆为对象,类是对对象的抽象,来一个例子:Person类public 有了类,就可以创建者个类的对象了&am…

多次执行sql 后卡住_解Bug之路记一次中间件导致的慢SQL排查过程

解Bug之路-记一次中间件导致的慢SQL排查过程前言最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,就以此为素材写出了本篇文章。Bug现场我们的分库分表中间件在经过一年的沉淀之后,…

c++思维导图_40+张最全Linux/C/C++思维导图,你确定不收藏?

ID:技术让梦想更伟大整理:李肖遥申明:所有图片都源自网络素材,侵删。这是我自己收集的,并花大量时间整理的可说最全的Linux/C/C思维导图。有些图可能不是高清,但是放大即可看清楚。linux思维导图认识LinuxLinux学习路径…