论文盘点:CVPR 2019 - 文本检测专题
作者丨燕小花
研究方向丨计算机视觉
CRAFT
论文主要思想
本文的主要思路是先检测单个字符(character region score)及字符间的连接关系(affinity score),然后根据字符间的连接关系确定最终的文本行,简称 CRAFT。
其网络结构与 EAST 的网络结构相似:特征提取主干网络部分采用的是 VGG-16 with batch normalization;特征 decode 模块与 U-Net 相似,也是采用自顶向下的特征聚合方式;网络最终输出两个通道特征图,即 region score map 和 affinity score map,具体的网络结构图如下:
对于训练标签生成,与以往分割图(以二值化的方式离散标记每个像素的 label)的生成方式不同,本文采用高斯热度图来生成 region score 和 affinity score。文中说采用高斯热度图的好处是它能很好地处理没有严格包围的边界区域。
对于 character region score 标签生成,由于对 bbox 中的每个像素计算高斯分布值比较耗时,本文结合透视变换,采用了近似估计的方法来生成标签,具体步骤如下:a). 准备一个二维的高斯图;b). 计算高斯图区域和每个文字框的透视变换;c). 将高斯图变换到文字框区域。
而对于 character affinity score 标签生成,先画出每个字符框的对角线;再取每个文本对角线的上下两个三角形的中心点,将紧挨着的两个文本框中的中心点相连,得到 affinity score(即下图中的红色框)。
这样的标签生成可以使模型在较小感受野的情况下,也可以有效地检测很大很长的文本实例,同时使得模型只关注单个字符与字符间的联系,不需要关注整个文本行。
CRAFT 可以用于处理任意方向文本、 曲线文本、 畸变文本等。该方法具有如下特性:
1. 对尺度变换具有较好地鲁棒性,本文都是基于单尺度图像进行实验的;
2. 本文模型不能适用与粘连的语言,如 Bangla and Arabic characters;
3. 相比于端到端的文本检测方法,该方法在训练的时候也借助了文本长度(因为在训练过程中对于合成样本可以很好地进行单个字符的标注,但是对于现有的文本数据库,其标注方式基本是基于文本行的,所以文中通过借助文本行长度来进行弱监督训练);
4. 泛化能力较强。
LOMO
论文主要思想
受限与 CNN 的感受野的及文本行的表征方式(bbox 或四边形),长文本行与曲线文本的检测仍存在极大的挑战。针对此,本文提出了 LOMO (Look More Than Once),它由三部分组成:直接回归模块(DR)、迭代修正模块(IRM)、形状表征模块(SEM)。
首先由直接回归模块产生粗略的四边形表征的候选文本框;接着在提取的特征图上通过迭代修正得到完整的长文本行的四边形表征;最后通过结合文本行区域、文本行中心线及文本行边界偏移得到最终的文本行。具体的框架图如下:
对于直接回归模块,文中参考了 EAST,这里就不详细解释了。对于迭代修正模块(IRM),使用了 RoI transform 层来提取四边形文本行的特征块,之所以没有使用 RoI Pooling 或 RoI Align,是因为:
1. RoI transform 在提取四边形文本行对应的特征块时,保持宽高比不变;
2. 在相同感受野的情况下,文本行的四个角点可以为文本行的边界提供更加精确的信息。
因此在回归四个角点的时候,本文引入了角点注意力机制。对于形状表征模块(SEM),回归了文本行的三种几何属性:文本行区域、文本行中心线及文本行边界偏移。
其中文本行区域是一个二值 mask,文字区域用 1 表示,背景区域用 0 表示;文本行中心线也是一个二值 mask,它是文本行多边形标注的一个向内收缩的版本(具体看 EAST);边界偏移是 4 通道的 feature map。
对于文本行多边形生成,具体步骤如下:
1. 文本中心线采样:文中采用了 n 个等间距的方式对文本行中心线进行采样。对于曲线文本(多边形标注的),n=7;对于其它数据集(四边形标注的,如ICDAR2015,ICDAR2017 等),n=2;
2. 边界点生成:基于已采样的文本中心线,结合相同位置的 4 个角点的偏移 maps,得到文本行的边界点,然后顺时针连接这些角点,就可以得到文本行的完整表征;
3. 多边形得分:文中将多边形区域内的文本行响应均值作为最终的文本行得分。
▲ 图中黄色表示ground truth;蓝色框是DR模块的输出;绿色框是IRM模块的输出;红色框是SEM模块的输出。
LSAE
论文主要思想
本文的主要思想是将文本检测当做一种实例分割,采用了基于分割框架来进行检测。具体的做法是将每个文本行看成一个连通区域,为了更好地区分不同文本实例(即挨得很近的文本或者是很大很长的文本),本文提出了将图像像素映射到嵌入特征空间中,在该空间中,属于同一文本实例的像素会更加接近彼此,反之不同文本实例的像素将会远离彼此。
特征提取主干网络采用的是 ResNet-50,接着使用两个对称的特征融合模块(即两个对称的特征金字塔,这里合并的策略与 PANet 中的自适应特征池化相似),一个用于后续的嵌入分支(Embedding branch),另一个用于后续的分割分支(文本行前景图,包括全文本行前景图和向内收缩后的文本行前景图)。
通过权重共享,使得两个任务优势互补。网络输出包括嵌入特征图和文本行前景掩膜图,然后经过后处理得到最终的预测文本行。总体网络结构如下图:
为什么要使用嵌入形状感知?1)相比与通用的目标检测,文本检测更难根据边界确定两个挨的很近的文本实例;2)文本行的宽高比变化太大,如从单个文字到整个文本行。
文中针对该分支提出了 Shape-Aware Loss损失函数,它包括两部分的损失:方差损失和距离损失,该损失函数用于区分嵌入特征空间中的不同文本实例。具体的计算公式如下:
对于最终文本行的构建:论文中通过结合嵌入特征图,Full Map,Center Map 三种特征图来进行聚类,得到最终的文本行。
具体的聚类步骤如下:首先使用 DBSCAN 聚类算法得到两个聚类集合:Full Map 的和 Center Map 的;接着对在 Full Map 内 Center Map 外的像素进行簇类划分,这里划分的规则是根据嵌入空间中当前像素的嵌入距离到每个簇类平均嵌入距离,若小于指定的阈值,则该像素归于当前簇类;反之,亦然。接着通过上述递归,得到新的簇类集合,然后对每个簇类集合采用最小外接矩形框最为最终的文本行检测框。
为什么不直接在嵌入空间中使用聚类?直接使用嵌入空间进行聚类,并不能很好地区分不同的文本实例。
PSENet
论文主要思想
形状鲁棒性文本检测存在以下挑战:1)现有的文本检测是基于四边形或旋转矩形,很难将任意形状的文本(特别是形状文本)进行包闭操作;2)大多数基于像素分割的方法不能很好地区分非常邻近的文本实例。
针对上述问题,本论文提出了基于语义分割的单文本实例多预测方法(简称 PSENet),它采用了前向渐进式尺度扩展的方法用来区分邻近的文本实例,可用于检测任意方向的文本。
PSENet 沿用了特征金字塔网络结构(简称 FPN),并在此基础上增加了特征融合和渐进式尺度扩展的方式来实现自然场景中文本行的检测。具体步骤如下:
1. 先沿用 FPN 中的网络结构作为特征提取主干网络,提取 4 个 feature maps(低维度和高维度特征连接在一起),分别为 P2, P3, P4, P5;
2. 将上述提取的特征进行融合得到 F,F 中包含了不同感受野的信息,对应融合操作为:
融合后 F 的通道数为 256×4 = 1024 ;
3. 将融合后的 F 送入 Conv3-BN-ReLu 层(得到 256 个通道),然后再经过 Conv1-Up-Sigmoid 层产生 n 个分支,生成不同的分割结果,分别为 S1, S2…. Sn,其中 S1 表示最小的尺度,并依次递增。每个 Si 表示在某个特定尺度的所有文本实例的分割掩膜图;
4. 使用渐进式尺度扩展的方式逐渐扩展 S1 中每个文本行实例的 kernels,直到 Sn,得到最终的检测结果。具体的网络结构如下:
渐进式尺度扩展的具体步骤(该步骤是结合下述示例图来进行阐述的):
1. 给定网络的输出集合 S1, S2…Sn,对于最小尺度 S1,包含 4 个明显的 connected components 为 C = (c1, c2, c3, c4),用于初始化;通过对当前 S1 求连通域,并结合对应的源图像,得到不同颜色的文字块(就是论文中说的 kernels),这里用不同的颜色表示不同的文本行实例,这样就获得了每个文本行实例的中心部分;
2. 通过渐进式尺度扩展方法(文中采用的是广度优先搜索算法)依次合并 S2,S3,….Sn,直到网络的输出集合全部合并完毕;
3. 提取图像中不同颜色的区域,得到最终的文本行。渐进式尺度扩展的步骤示例图如下:
关于训练标签生成,因为 PSENet 输出的包含了不同尺度的分割结果 S1, S2, …Sn,要想生成这些不同“kernels”的分割图就必须生成对训练的 ground truths。
在实际操作中,可以通过 shrinking 操作来生成对应的 ground truths label。如下图所示:蓝色多边形是原始标注的文本行的 ground truths,它对应的是最大的掩膜图。
为了生成其它不同的“kernels”,这里通过图像多边形裁剪算法(Vatti clipping algorithm)来每次向内收缩 di 个像素得到对应收缩后的 pi(具体计算公式详见论文)。注意这里收缩是在 mask 操作上进行的,所以所有的 ground truths 都是二值图像。
检测结果如下:
PMTD
本文是商汤和香港中文大学联合发表并于 2019.03.28 挂在 arXiv 上,本文的方法在 ICDAR2017 MIT 数据集上,相比于之前最高的精确率提升了 5.83% 百分点,达到 80.13%;在 ICDAR2015 数据集上,提升了 1.34% 个百分点,达到 89.33%。
论文主要思想
本文提出了 Pyramid Mask 文本检测器,简称 PMTD。它主要做了如下工作:
1. 提出了软语义分割的训练数据标签。与现有的基于 Mask RCNN 方法(文本区域内的像素标签为 0 或 1)不同,本文针对文本区域和背景区域提出了软语义分割(soft semantic segmentation),文本行区域内的像素标签值范围在 0-1 之间,不同位置的像素标签值是由其当前位置到文本边界框的距离决定的,这样做的好处是可以考虑训练数据的形状和位置信息,同时可以一定程度上缓解文本边界区域的一些背景干扰;
2. 提出通过平面聚类的方法构建最终的文本行。通过像素坐标及对应像素点的得分构建 3D 点集合,然后通过金字塔平面聚类的迭代方法得到最终的文本行。
文中做了两个实验:baseline 和 PMTD。baseline 是基于 Mask RCNN 的,主干提取特征网络采用的是 ResNet50,网络结构采用了 FPN。相比原生的 Mask RCNN,做了 3 方面修改:1)数据增广;2)RPN anchor;3)OHEM。具体的修改细节详见论文。
那么 baseline 存在什么问题呢?
1. 没有考虑普通文本一般是四边形,仅按照像素进行分类,丢失了与形状相关的信息;
2. 将文本行的四边形的标定转换为像素级别的 groundtruth 会造成 groundtruth 不准的问题;
3. 在 Mask R-CNN 中是先得到检测的框,然后对框内的物体进行分割,如果框的位置不准确,这样会导致分割出来的结果也不会准确。
PMTD 是针对 baseline 中存在的问题提出的改进,主要包括:
1. 网络结构的改进:PMTD 采用了更大的感受野来获取更高的准确率,为了获取更大的感受野,本文通过改变 mask 分支,将该分支中的前 4 个卷积层改成步长为 2 的空洞卷积,因为反卷积操作会带来棋盘效应,所以这里采用双线性采样+卷积层来替换反卷积层;
2. 对于训练标签生成部分,使用了金字塔标签生成,具体做法是:文本行的中心点为金字塔的顶点(score=1),文本行的边为金字塔的底边,对金字塔的每个面中应该包含哪些像素点采用双线性插值的方法。
那么如何得到最终的文本行呢?文中使用了平面聚类的方法,用于迭代回归从已学习到的 soft text mask 寻找最佳的文本行的边界框。在具体操作时,可以看成与金字塔标签生成的反过程。
点击以下标题查看更多往期内容:
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
📝 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。
▽ 点击 | 阅读原文 | 访问作者专栏