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=⎣⎡S1kTPT1k00P00⎦⎤−1⋅⎣⎡Px′00⎦⎤(1)
此处:
- (S)ij∈S(S)_{ij} \in S(S)ij∈S:由ϕ(ti−tj)\phi(\boldsymbol{t_i} - \boldsymbol{t_j})ϕ(ti−tj)确定,ϕ(r)=∥r∥22log∥r∥22\phi(\boldsymbol{r}) = \|\boldsymbol{r}\|_{2}^{2} \log \|\boldsymbol{r}\|_{2}^{2}ϕ(r)=∥r∥22log∥r∥22;
- Px′P_{x}^{\prime}Px′:PPP的xxx坐标。
类似地,通过用Py′P_{y}^{\prime}Py′替换Px′P_{x}^{\prime}Px′可以得到CyC_{y}Cy。因此,我们可以得到C=[Cx,Cy]C=\left[C_{x}, C_{y}\right]C=[Cx,Cy]。最后,对于输入图像u\boldsymbol{u}u中文档区域的每个控制点,可以通过以下方式确定去扭曲文档中对应的点u′\boldsymbol{u}^{\prime}u′:
u′=C⋅u(2)\boldsymbol{u}^{\prime}=C \cdot \boldsymbol{u}\tag2 u′=C⋅u(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/