【摘 要】 许多历史地图页可公开用于需要长期历史地理数据的研究。这些地图的制图设计包括地图符号和文字标签的组合。从地图图像中自动读取文本标签可以大大加快地图解释速度,并有助于生成描述地图内容的丰富元数据。已经提出了许多文本检测算法来自动定位地图图像中的文本区域,但大多数算法都是在域外数据集(例如风景图像)上训练的。训练数据决定了机器学习模型的质量,而在地图图像中手动标注文本区域既费力又费时。另一方面,现有的地理数据源,例如 OpenStreetMap (OSM),包含机器可读的地图图层,这使我们可以轻松地分离出文本图层并获得文本标签注释。但是,OSM 地图瓦片和历史地图之间的制图风格明显不同。本文提出了一种自动生成无限量带注释的历史地图图像的方法,用于训练文本检测模型。我们使用样式转换模型将当代地图图像转换为历史样式并在其上放置文本标签。我们表明,最先进的文本检测模型(例如 PSENet)可以从合成历史地图中受益,并在历史地图文本检测方面取得显着改进。

【原 文】 Lunga, D., Hu, Y., Newsam, S., Gao, S., Martins, B., Yang, L., & Deng, X. (2022). GeoAI at ACM SIGSPATIAL: The New Frontier of Geospatial Artificial Intelligence Research (0 citation(s); arXiv:2210.13207). arXiv. http://arxiv.org/abs/2210.13207

1 简介

历史地图是了解人类活动和城市发展的绝佳来源 ,在扫描历史地图并将其发布以供公众使用方面付出了巨大的努力。 这些现有的地图系列最初是出于不同的原因(例如税收)而创建的,并且在那个时代起到了很大的作用。如今,它们继续为我们提供一个回顾过去的渠道。但自动从历史地图中提取文本标签并生成元数据需要用大量的训练数据进行训练才能获得最佳性能。

国际文档分析与识别会议 (ICDAR) 发布了几个数据集,以解决场景图像检测和扫描文档的文本检测问题。

历史地图文本检测和场景文本检测,这两个领域面临一些共同的挑战。例如,

  • 地图和场景图像中字体大小的差异可能很大。
  • 两个域中的图像在文档中使用许多不同的字体样式。

然而,有些特征是历史地图所独有的:

  • 历史地图通常具有嘈杂(高边缘强度)的背景,例如复杂的道路网络或山区等高线,而其他电子文档和场景图像通常在文本区域内具有更简单、均匀的背景。
  • 一些地图文本标签(例如街道名称)的字符间距可能很大。
  • 地图文本可以定向和弯曲以遵循给定的基础地理特征,例如铁路、边界线和河流。相比之下,文档和场景图像通常在水平或垂直方向上具有直文本。

这些差异对处理历史地图的文本检测算法提出了新的挑战。由于这些差异,在场景图像上训练的文本检测模型在历史地图图像上可能表现不佳。我们需要在历史地图域中为模型提供一些训练数据,需要在文本区域周围绘制边界框/多边形,这可能非常耗时。

本文提出了一种以最少的人工工作量自动生成大量训练数据用于历史地图文本检测的方法。

总体思路:

  • 我们首先生成一个没有任何文本标签的合成历史地图背景图层,然后自动在图层上放置文本标签。具体来说,我们使用风格转换模型 CycleGAN 将 OpenStreetMap 光栅图像转换为历史风格。
  • 然后使用 QGIS PAL API 将文本标签放置在历史地图背景上。QGIS PAL API 能够根据基础地理特征的位置和几何形状放置文本标签。对于点特征,API 将标签放置在点周围。对于线要素,API 沿线放置标签。
  • 从合成地图图像中计算真实边界多边形。我们使用边界多边形而不是边界矩形表示,因为文本标签可以是弯曲的,有时是任意形状的。旋转的边界矩形不够紧密,无法准确地包围文本区域。

主要贡献

  • 端到端管道,用于生成大量带注释的训练数据,从而能够使用深度学习模型从历史地图图像中解锁有用的文本信息。

三大优势:

  • 保证数据集大小足以训练深度学习文本检测模型。
    CycleGAN 风格迁移模型不需要配对数据进行训练。因此,历史地图图像不需要覆盖与 OSM 数据相同的区域。
  • 风格迁移模型可以生成任意风格的合成历史地图图像,只要提供少量的训练数据来初始化风格迁移即可。在端到端过程中不需要标签信息。

实验部分:

我们展示了基于深度学习的文本检测模型 PSE-Net 在对所提出的合成地图数据集进行微调后可以提高性能。

##2 方法

主要涉及三个步骤:合成历史地图生成、文本图层叠加和文本注释生成。

我们用于训练模型的源代码和数据集可在 https://github.com/zekun-li/generate_synthetic_historical_maps 上获得,在 https://zekun-li.github.io/side-by-side/ 上可以现场演示风格转移的合成历史地图。

2.1 风格迁移的数据源

我们使用两个数据源来生成合成历史地图。

(1) Open Street Maps (OSM) 数据,为风格迁移提供源图像。

(2) 1888-1913 年军械测量 6 英寸地图

OSM 数据提供合成地图的内容,军械测量数据提供合成地图的历史风格。

2.1.1 开放街道地图 (OSM)。

OSM 涉及两组数据。一种是用于训练 CycleGAN 风格迁移模型的数据,另一种是用于为下游任务生成大量历史地图图像的数据。

这两组数据是否应该在同一个区域没有限制。在我们的实验中,我们使用了不同的区域

训练 CycleGAN 模型不需要向量数据。

2.1.2 军械测量历史地图。

在添加文字图层的同时,我们更喜欢将 OSM 栅格图像转换为历史地图样式,并使用合成地图作为地图地面,而不是直接使用真实历史地图作为背景,因为没有简单的方法可以准确去除来自现有历史地图图像的文本标签。

我们只需要军械测量局历史地图数据来训练 CycleGAN 模型,当合成​​地图图像生成后,不再需要真实的历史地图。在研究区域方面,我们使用了与 OSM 第一组相同的区域,尽管没有要求这两个数据源需要覆盖相同的区域。

2.2 合成历史地图生成

CycleGAN 与其他 GAN 模型的区别在于,cycleGAN 有两个生成器和判别器。这两个生成器用于生成具有两种给定样式的图像,而判别器用于分别区分两种样式的图像。因此,网络可以将具有样式 S 的图像转换为样式 T,然后将它们转换回 S。

Formally, we can define the process as following. Let S={si}i=1MS=\left\{s_i\right\}_{i=1}^M be the set of MM Open Street Map images which do not contain any text labels, and T={ti}i=1NT=\left\{t_i\right\}_{i=1}^N be the set of NN historical map images. We define a Generator G:STG: S \rightarrow T that learns to translate sis_i to tit_i. Also, we define another generator F:TSF: T \rightarrow S that translate tit_i back to sis_i. The Cycle Consistency Loss defined in Eq. 1 encourages G(F(T))TG(F(T)) \approx T and F(G(S))SF(G(S)) \approx S. Meaningly, if an image is fed through both generators sequentially, the output image should look very similar to the original image itself with xiG(F(xi))x_i \approx G\left(F\left(x_i\right)\right) and xiF(G(xi))x_i \approx F\left(G\left(x_i\right)\right)

Lcycle(G,F)=Esp(s)[F(G(s))s1]+Etq(t)[G(F(t))t1]\begin{aligned} \mathcal{L}_{c y c l e}(G, F) &=\mathrm{E}_{s \sim p(s)}\left[\|F(G(s))-s\|_1\right] \\ &+\mathrm{E}_{t \sim q(t)}\left[\|G(F(t))-t\|_1\right] \end{aligned}

To ensure the high-quality of generated images, two discriminators designed for each style are employed to distinguish the real images from generated ones using Adversarial Loss in Eq. 2. Specifically, we have DSD_S and DTD_T, where DSD_S tries to discriminate between original images in SS and the generated images in F(T)F(T), and DTD_T tries to discriminate between original images in TT and the generated images in G(S)G(S).

Ladv(G,F,DS,DT)=Etq(t)[logDT(t)]+Esp(s)[log(1DT(G(s))]+Esp(s)[logDS(s)]+Etq(t)[log(1DS(F(t))]\begin{aligned} \mathcal{L}_{a d v}\left(G, F, D_S, D_T\right) &=\mathrm{E}_{t \sim q(t)}\left[\log D_T(t)\right] \\ &+\mathrm{E}_{s \sim p(s)}\left[\log \left(1-D_T(G(s))\right]\right.\\ &+\mathrm{E}_{s \sim p(s)}\left[\log D_S(s)\right] \\ &+\mathrm{E}_{t \sim q(t)}\left[\log \left(1-D_S(F(t))\right]\right. \end{aligned}

In summary, the total loss L(G,F,DS,DT)\mathcal{L}\left(G, F, D_S, D_T\right) is composed of two parts: the cycle-consistency loss Lcycle\mathcal{L}_{c y c l e} and the adversarial loss Ladv\mathcal{L}_{a d v}, and it can be written as L(G,F,DS,DT)=Lcycle(G,H)+\mathcal{L}\left(G, F, D_S, D_T\right)=\mathcal{L}_{c y c l e}(G, H)+ λLadv(G,F,DS,DT)\lambda \mathcal{L}_{a d v}\left(G, F, D_S, D_T\right)

为了生成合成的历史地图背景图像,我们将训练好的模型 GG 和饲料 SS 作为输入。输出是一组来自 OSM 数据集的图像 T=G(S)=tiMi=1T ′ = G (S) = {t ′ i }M i=1 ,其风格已被转换为历史风格。图 4 显示了来自 OSM 的一些示例图像和输出的合成地图图块。

风格合成地图

图 4:开放街道地图 (OSM) 瓦片和输出合成历史地图瓦片的可视化。

2.3 文字层叠加

2.3.1 字体大小和样式。

根据底层地理特征类型,我们大致将字体大小分为大、中、小三个等级。大标签对应覆盖非常大区域的地理特征,小标签对应较小区域。对于字体样式,我们使用从 FontSpace4 下载的几种字体和从 ArcGIS 网站下载的 Cheysson 字体5。我们还在字体系列中包含了几种 MacOS 系统字体,总共有 16 种字体。每种地理要素类型都有相关的字体样式和大小,具有相同基础地理要素的文本标签具有相同的字体样式和大小。表1显示了字体大小信息的统计

字体设置

2.3.2 文本标签放置。

我们利用 QGIS PAL API 来放置文本标签。对于点要素,文本标签放置在点周围。对于 MultiLine 地理要素,文本标签放置在线的中心。对于 MultiPolygon 地理特征,标签是

放置在该区域的中心周围。任何地理特征都没有重叠或相交的文本标签。具体来说,基础地理要素可能与其他要素或文本标签重叠,但文本标签不应相互重叠。图 5 显示了在合成地图上放置文本标签后的示例地图区域。

添加标签后的合成地图

图 5:我们的模型生成的示例合成地图区域。源地图为开放街道地图 (OSM),目标样式为军械测量局 6 英寸历史地图。文本标签来自 OSM 的矢量数据

2.4 文本注释生成

我们提供文本注释的两种表示形式:

(1) 边界多边形 - 每个文本标签的紧凹多边形

(2) 中心线和局部高度——中心线以点序列的形式提供,局部高度可以认为是边界多边形的高度。当中心线和局部高度都已知时,可以构造边界多边形。

2.4.1 边界多边形

使用 QGIS 渲染文本层时,我们会生成两个版本的光栅图像:彩色版本和灰度版本。我们将两个版本的非文本区域设置为透明,并将文本标签保持在完全相同的位置。在彩色版本中,每个位置名称标签都涂有不同的颜色。因此很容易 1) 将所有文本标签与透明的非文本区域分开,以及 2) 将一个特定的文本标签与所有其他标签分开。我们将彩色版本从 RGBA 空间转换为黑白 (BW) 空间以生成灰度版本。然后将灰度版本添加到合成的历史地图背景中以呈现完整的地图。

通过区分像素的颜色和彩色版本,我们可以获得属于同一文本标签的所有像素。我们将文本区域的像素称为前景,将其他不相关的像素称为背景。然后我们过滤掉背景颜色以获得前景像素的位置。最后,我们计算前景像素的凹壳以生成最终的边界多边形。我们采用 alphashape 算法进行凹壳计算,并根据经验将所有文本标签的 α 参数设置为 0.02。按照 ICDAR 数据集约定,我们按顺时针顺序存储多边形点。

2.4.2 中心线和局部高度。

中心线和局部高度表示提供了另一种描述基本事实的方法。中心线是跨越文本区域中心线像素的多段线。局部高度表示文本区域的高度 h(或直径)。

对于中心线计算,我们使用一个名为 centerline 的现有 Python 包,6 它利用 Voronoi 图来计算多边形的中心线。边界密度参数控制在多边形内采样的点数。使用小的边界密度值,生成的中心线将包含很多细节,并可能形成如图 6 所示的树形结构。较大的边界密度值会导致更平滑的中心线。在我们的实验中,我们根据经验将边界密度参数(插值距离)设置为 9。但即使边界密度很大,中心线的两端仍然存在一些分支线,如图 6 所示。

中心线

图 6:使用不同插值距离计算的中心线。较大的插值会导致更平滑的中心线。

。相反,对于这种情况,我们应该沿 y 轴拟合 x = f (y)。为了确定将哪些轴值用作自变量,我们使用一个简单的条件检查来计算 x 轴值和 y 轴值的范围。具体来说,我们首先计算原始中心线点的x轴值和y轴值的最大值和最小值:Xmax、Ymax、Xmin和Ymin。然后我们得到x轴和y轴的范围

Xvar = Xmax - Xmin,Yvar = Ymax - Ymin。我们选择范围较大的轴作为自变量。图 7 中的第二张图像显示了最终拟合的中心线。

基于中心线的边界生成

图 7:使用带有分支的原始中心线(左)和整齐的中心线(右)生成的基于中心线的边界多边形。红点是中心线位置,蓝线段是边界多边形中的边缘。左边的多边形杂乱无章,因为中心线点没有按顺序排序。

对于局部高度计算,我们设计了一种基于距离变换的算法来确定文本区域的高度。与 2.4.1 节类似,我们首先使用像素颜色信息来获取只有一个文本标签的图像块。给定这个彩色图像块 I 和从 2.4.1 计算的多边形 P,我们对 I 进行二值化以生成图像 M 的掩码版本,其中多边形内的像素被分配为 1,否则为 0。令 F = {Mi,j = 1} 为前景像素集,B = {Mi,j = 0} 为背景像素集。然后我们计算从每个前景像素到背景像素的欧几里得距离,并将最大距离设为文本区域的局部高度。

3 实验分析

(略)

4 相关工作

4.1 文本检测数据集

在不同领域收集了许多文本检测数据集,例如场景图像、视频帧和研究出版物 [8、21、23、28、29]。国际文档分析与识别会议 (ICDAR) 在组织文本检测竞赛 [8, 28] 方面做出了巨大努力,并鼓励数据集和算法的开发。 2013-2015年,比赛以原生数字文档和场景文本图像为主。 2015年之后,附带场景文本检测受到更多关注。场景图像由各种设备(例如袖珍相机、手机和无人机)拍摄并收集以增加数据集的多样性。文本检测不再局限于英语,2019 年 ICDAR 还创建了多语言文本检测数据集

MSRA-TD500 是另一个场景图像文本检测数据集。它包含 500 张室内和室外场景的图像。尽管数据集的大小相对较小,但图像在背景照明条件、字体大小、样式和图像分辨率方面存在较大差异。 ICDAR 数据集和 COCO-Text MSRA-TD500 中的图像数量对于训练深度学习模型来说相对较少。通常首先在一些大规模数据集上预训练模型,然后在之前的数据集上进行微调。 COCO-Text 是一个更大的数据集,包含 63,686 张图像和 145,859 个文本实例。它涵盖了不同语言的机印文本和手写文本。除了那些多语言数据集[16, 23],还有一些数据集只用于汉字检测。 RCTW-17 和 Chinese Text in the wild 是用于此目的的两个基准数据集。 RCTW-17 包括 12,000 多张由手机摄像头或手机屏幕截图拍摄的图像。这些图像涵盖了室内和室外场景,包括街景、菜单和海报。文本标签按照 ICDAR 2015 约定用四边形注释。 Chinese Text in the wild 是一个更大的数据集,包含 32,286 张街景图像,大约 100 万个汉字。现实生活场景中常用的独特角色有 3,850 个。该数据集在文本字体大小、样式、形状和遮挡方面具有很大的多样性。上面提到的所有数据集都不包含(或无法注释)弯曲文本标签。因此,提出了另外两个用于弯曲文本检测的数据集:SCUT-CTW1500 和 TotalText 。 SCUT-CTW1500 包括 1,500 张图像和 10,751 个文本标签。 3,530 个是所有文本标签中的弯曲文本实例。这些图像是从各种来源收集的,例如网页、图像库和手机摄像头。图片中既有英文也有汉字,而且很多都是多方位的。

TotalText 的大小与 SCUT-CTW1500 大致相同,它包含 1,555 个具有不同方向和形状的文本标签的图像。以上数据集主要用于场景文本检测,历史地图领域的文本检测数据集比较少见。 David Rumsey Maps 数据集 是 Weinman 等人注释的一个有价值的历史文本检测数据集。这是我们在本文中用于评估的数据集。

4.2 合成数据生成

数据收集和注释需要大量手动工作,一些研究人员建议为文本检测任务创建合成数据集。 SynthText 是一个非常大规模的数据集,包含大约 800,000 个真实场景图像和大约 800 万个合成文本实例。每个文本标签都有字符级别、单词级别和边界框级别注释。 SynthText 使用基于分割的方法来寻找合理的标签放置区域,这样生成的合成图像看起来非常自然。 UnrealText 包含大约 600K 合成图像和大约 1200 万个单词实例。它利用 UnrealText 3D 图形引擎将文本标签放置在有效的 3D 对象表面上以实现逼真的外观。

“The motivation of our proposed method and the above two papers are very similar. We rely on synthetic data generation to produce a large 我们提出的方法的动机与上述两篇论文非常相似。我们依靠合成数据生成来生成大量(可能无限)带注释的数据。与 SynthText 和 UnrealText 相比,我们提出的方法

生成历史地图域中的文本数据,支持任意形状和方向的文本标签的标注。

5 结论和未来工作

本文提出了一种端到端管道合成地图,用于从 OpenStreetMap (OSM) 生成无限量的合成历史地图图像。 合成地图 首先使用样式传输网络将 OSM 瓦片转换为 NLS 历史地图样式。然后 合成地图 使用 QGIS PAL API 将文本标签放置在合成地图图层上。我们提出了一种注释生成算法来自动生成多边形、中心线和局部高度信息来表示文本标签边界。使用这种方法,我们创建了一个包含超过 10K 合成历史地图图像的 合成地图 数据集。该数据可用作地图文本检测任务的训练数据。我们采用了最先进的文本检测模型 PSENet,并使用我们的 合成地图 数据集训练模型。我们比较了模型在域外数据集上训练时的性能,并观察到文本检测精度有很大提高。所提出的方法是一个通用的管道,不限于用于风格迁移的 CycleGAN 模型。 CycleGAN 可以在未来被任何其他更先进的风格迁移模型所取代,以生成更高质量的合成地图图像。 合成地图 还可以潜在地为其他地图分析任务生成大量训练数据,例如单词链接和道路描绘。