【读点论文】Shape Robust Text Detection with Progressive Scale Expansion Network通过GT生成核增大类间距,通过逐渐扩展核学习GT。

Shape Robust Text Detection with Progressive Scale Expansion Network

Abstract

  • 场景文本检测取得了快速进展,尤其是随着卷积神经网络的发展。然而,仍然存在两个挑战阻碍该算法进入工业应用。一方面,大多数最先进的算法需要四边形边界框,而四边形边界框对于定位任意形状的文本不准确。另一方面,两个彼此接近的文本实例可能会导致覆盖两个实例的错误检测。传统上,基于分割的方法可以缓解第一个问题,但通常无法解决第二个挑战。为了解决这两个挑战,在本文中,我们提出了一种新颖的渐进式尺度扩展网络(PSENet),它可以精确检测具有任意形状的文本实例。更具体地说,PSENet 为每个文本实例生成不同尺度的核,并逐渐将最小尺度核扩展到具有完整形状的文本实例。 由于最小尺度核之间存在较大的几何边缘,我们的方法可以有效地分割接近的文本实例,从而更容易使用基于分割的方法来检测任意形状的文本实例。
  • 在 CTW1500、Total-Text、ICDAR 2015 和 ICDAR 2017 MLT 上进行的大量实验验证了 PSENet 的有效性。值得注意的是,在 CTW1500(一个充满长曲线文本的数据集)上,PSENet 在 27 FPS 下实现了 74.3% 的 F 测量值,而我们的最佳 F 测量值(82.2%)比最先进的算法高出 6.6%。代码 GitHub - whai362/PSENet: Official Pytorch implementations of PSENet.
  • 论文地址:[1903.12473] Shape Robust Text Detection with Progressive Scale Expansion Network

Introduction

  • 户外场景文本检测是场景理解、产品识别和自动驾驶等众多应用中的一个基本问题。近年来,随着卷积神经网络 (CNN) 的快速发展,该领域取得了许多进展 。我们可以将现有的基于 CNN 的算法大致分为两类:基于回归的方法和基于分割的方法

  • 对于基于回归的方法 ,文本目标通常以具有特定方向的矩形或四边形的形式表示。 然而,基于回归的方法无法处理具有任意形状的文本实例,例如,如图 1 (b) 所示的曲线文本。另一方面,基于分割的方法基于像素级分类来定位文本实例。然而,很难分离彼此接近的文本实例。通常,基于分割的方法可能会预测覆盖所有彼此接近的文本实例的错误检测。一个例子如图 1 © 所示。

    • 在这里插入图片描述

    • 图 1. 不同方法的结果,最好以彩色显示。 (a) 是原始图像。 (b) 表示基于回归的方法的结果,其检测结果令人失望,因为红色框覆盖了绿色框中近一半以上的上下文。 © 是简单语义分割的结果,由于它们的边界像素部分连接,它将 3 个文本实例误认为 1 个实例。 (d) 是我们提出的 PSENet 的结果,它成功区分并检测了 4 个独特的文本实例

  • 为了解决这些问题,本文提出了一种基于核的新型框架,即渐进式尺度扩展网络 (PSENet)。我们的 PSENet 具有以下两个优点。首先,作为一种基于分割的方法,PSENet 执行像素级分割,能够精确定位任意形状的文本实例。其次,我们提出了一种渐进式尺度扩展算法,通过该算法可以成功识别相邻的文本实例,如图 1 (d) 所示。更具体地说,我们为每个文本实例分配多个预测分割区域,为简单起见,这些区域称为“核”。 每个核的形状与原始文本实例相似,但尺度不同。为了获得最终的检测结果,我们采用基于广度优先搜索 (BFS) 的渐进式尺度扩展算法。通常,有 3 个步骤:1)从尺度最小的核开始(在此步骤中可以区分实例);2)通过在更大的核中逐渐包含更多像素来扩大它们的面积; 3) 完成,直到探索完整的文本实例(最大的内核)

  • 设计渐进式尺度扩展算法的原因有三个。首先,尺度最小的核很容易分离,因为它们的边界相距较远。其次,尺度最小的核无法覆盖文本实例的完整区域(见图 2(b))。因此,需要从尺度最小的核中恢复完整的文本实例。第三,渐进式尺度扩展算法是一种简单有效的方法,可以将小核扩展为完整的文本实例,从而确保文本实例的准确位置

    • 在这里插入图片描述

    • 图 2. 完整文本实例和文本实例核的可视化。可以看出,CRNN 正确识别了完整文本实例,但无法识别核,因为核无法覆盖文本实例的完整区域。

  • 为了证明我们提出的 PSENet 的有效性,我们在四个竞争性基准数据集上进行了广泛的实验,包括 ICDAR 2015 、ICDAR 2017 MLT 、CTW1500 和 Total-Text 。在这些数据集中,CTW1500 和 Total-Text 专门用于曲线文本检测。具体来说,在 CTW1500(一个包含长曲线文本的数据集)上,我们的表现比最先进的结果高出 6.6%,我们的实时模型在 27 FPS 下实现了相当的性能(74.3%)。此外,提出的 PSENet 在多方向和多语言文本数据集上也取得了良好的性能:ICDAR 2015 和 ICDAR 2017 MLT。

Related Work

  • 基于深度学习方法的场景文本检测在过去几年中取得了显著的成果。 现代文本检测器主要基于CNN框架,其中场景文本检测大致分为两类:基于回归的方法和基于分割的方法

  • 基于回归的方法通常基于通用对象检测框架,例如 Faster R-CNN 和 SSD 。TextBoxes 修改了卷积核的锚尺度和形状,以适应文本的各种长宽比。EAST 使用 FCN 直接预测每个像素的得分图、旋转角度和文本框。 RRPN 采用 Faster R-CNN 并开发了 RPN 部分的旋转提议来检测任意方向的文本。RRD 从两个独立的分支提取用于文本分类和回归的特征图,以更好地检测长文本

  • 然而,大多数基于回归的方法通常需要复杂的锚设计和繁琐的多个阶段,这可能需要详尽的调整并导致性能不佳。此外,上述工作是专门为多方向文本检测而设计的,在处理曲线文本时可能会有所不足,而曲线文本在现实场景中实际上分布广泛。

  • 基于分割的方法主要受到全卷积网络 (FCN) 的启发。Zhang 等人 首先采用 FCN 提取文本块,并通过 MSER 从这些文本块中检测候选字符。姚等人 将一个文本区域制定为各种属性,例如文本区域和方向,然后利用 FCN 预测相应的热图。吕等人 利用角点定位为文本实例寻找合适的不规则四边形。PixelLink 通过预测不同文本实例之间的像素连接来分离彼此靠近的文本。最近,TextSnake 使用有序磁盘表示曲线文本以进行曲线文本检测。SPCNet 使用实例分割框架并利用上下文信息来检测任意形状的文本,同时抑制误报

  • 上述工作在多个水平和多方向文本基准测试中取得了优异的表现。同样,除 TextSnake 外,上述大多数方法都没有特别关注曲线文本。 然而,TextSnake 在推理过程中仍然需要耗时且复杂的后处理步骤(集中、跨度和滑动),而我们提出的渐进式尺度扩展只需要一个干净高效的步骤

Proposed Method

  • 在本节中,我们首先介绍所提出的渐进式尺度扩展网络 (PSENet) 的总体流程。接下来,我们介绍渐进式尺度扩展算法的细节,并展示它如何有效地区分紧密相邻的文本实例。此外,我们介绍了标签生成方式和损失函数的设计。最后,我们描述了 PSENet 的实现细节。

Overall Pipeline

  • 图 3 显示了我们提出的 PSENet 的高级概述。我们使用 ResNet 作为 PSENet 的主干。我们将低级纹理特征与高级语义特征连接起来。这些图在 F 中进一步融合,以使用各种接受视图对信息进行编码。 直观地讲,这种融合很可能有助于生成具有各种尺度的内核。然后将特征图 F 投影到 n 个分支中以产生多个分割结果 S1、S2、…、Sn。每个 Si 将是特定尺度下所有文本实例的一个分割掩码。 不同分割掩码的尺度由超参数决定,这将在第 3.4 节中讨论。 在这些掩码中,S1 给出具有最小尺度(即最小内核)的文本实例的分割结果,Sn 表示原始分割掩码(即最大内核)。在获得这些分割蒙版之后,我们使用渐进尺度扩展算法将 S1 中所有实例的核逐渐扩展为 Sn 中的完整形状,并得到最终的检测结果 R
    • 在这里插入图片描述

    • 图 3. 我们整体流程的说明。流程左侧部分由 FPN 实现。右侧部分表示特征融合和渐进式尺度扩展算法

    • 使用Resnet作为骨干网络,从2,3,4,5阶段进行不同层级的特征提取;

    • 将提取到的特征放入FPN网络中,提取不同尺度的特征并拼接;

    • 将第2阶段的特征采用PSE算法生成最后的分割结果,并生成文本边界框。

  • 左边的蓝色部分为backbone,论文中是ResNet50,从下到上分别为ResNet50的conv_2x、conv_3x、conv_4x、conv_5x的输出C2、C3、C4、C5。原始输入为6406403,C2到C5的shape分别为160*160*256、80*80*512、40*40*1024、20*20*2048。中间的橘色部分作者借鉴的FPN,以第一个节点为例
    • 20*20*2048的C5经过1*1*256的Conv、BN、ReLU得到20*20*256的P5
    • 40*40*1024的C4经过1*1*256的Conv、BN、ReLU得到40*40*256的C4
    • P5经过 upsample 后与C4进行add得到40*40*256的中间结果
    • 然后经过3*3*256的Conv、BN、ReLU得到40*40*256的P4
  • P5、P4、P3分别 upsample 成P2的大小,然后****concatenate****得到160*160*1024的fusion feature即图中的F。然后经过3*3*256的Conv、BN、ReLU、1*1*num_class(论文中num_class=6,包含1个完整的文本标注)得到7*160*160的特征图。最后以stride=4,upsample成输入大小得到最终结果。模型的输入shape为(batch_size,3,640,640),输出shape为(batch_size,7,640,640)

Network Design

  • PSENet 的基本框架由 FPN 实现。我们首先从骨干网络获取四个 256 通道特征图(即 P2、P3、P4、P5)。为了进一步结合从低到高的语义特征,我们通过函数 C(·) 将四个特征图融合以获得具有 1024 个通道的特征图 F,如下所示:

    • F = C ( P 2 , P 3 , P 4 , P 5 ) = P 2 ∣ ∣ U p ∗ 2 ( P 3 ) ∣ ∣ U p ∗ 4 ( P 4 ) ∣ ∣ U p ∗ 8 ( P 5 ) F=C(P_2,P_3,P_4,P_5)=P_2||Up_{*2}(P_3)||Up_{*4}(P_4)||Up_{*8}(P_5) F=C(P2,P3,P4,P5)=P2∣∣Up2(P3)∣∣Up4(P4)∣∣Up8(P5)

    • 其中“∥”表示连接,Up×2 (·)、Up×4 (·)、Up×8 (·) 分别表示 2、4、8 倍上采样。随后,F 被送入 Conv(3, 3)-BN-ReLU 层并减少到 256 个通道。接下来,它经过 n 个 Conv(1, 1)-Up-Sigmoid 层并产生 n 个分割结果 S1、S2、…、Sn。这里,Conv、BN、ReLU 和 Up 代表卷积 、批量归一化 、整流线性单元 和上采样

Progressive Scale Expansion Algorithm

  • 如图1©所示,基于分割的方法很难将距离较近的文本实例分离出来。为了解决这个问题,我们提出了一种渐进式尺度扩展算法。

  • 这里有一个生动的例子(见图4)来解释渐进式尺度扩展算法的过程,其核心思想来自于广度优先搜索(BFS)算法。在例子中,我们有3个分割结果S = {S1,S2,S3}(见图4(a),(e),(f))。首先,基于最小核图S1(见图4(a)),可以找到4个不同的连通分量C = {c1,c2,c3,c4}作为初始化。图4(b)中不同颜色的区域分别代表这些不同的连通分量。现在我们已经检测到所有文本实例的中心部分(即最小核)。然后,我们通过合并S2中的像素,然后合并S3中的像素来逐步扩展检测到的核。两次尺度扩展的结果分别如图4(c)和图4(d)所示。最后,我们提取图 4(d)中用不同颜色标记的连通分量作为文本实例的最终预测。

    • 在这里插入图片描述

    • 图4. 渐进式尺度扩展算法流程。CC 表示寻找连通分量的函数。EX 表示尺度扩展算法。(a)、(e) 和 (f) 分别表示 S1、S2 和 S3。(b) 为初始连通分量。© 和 (d) 为扩展结果。(g) 为扩展示意图。蓝色和橙色区域表示不同文本实例的核。灰色网格表示需要涉及的像素。(g) 中的红色框表示冲突像素

    • def pse(kernals, min_area):
          kernal_num = len(kernals) 
          pred = np.zeros(kernals[0].shape, dtype='int32')
          label_num, label = cv2.connectedComponents(kernals[kernal_num - 1], connectivity=4)
          # 找网络输出最小kernel中的连通域。 这里的label_num是连通域个数(包含背景)。label是和输入大小相同的图,若一共5个联通域,则label的背景部分值为0,5个连通域的值分别为1~5
          for label_idx in range(1, label_num):
              if np.sum(label == label_idx) < min_area:
                  label[label == label_idx] = 0
          queue = Queue.Queue(maxsize=0)  # 先进先出
          next_queue = Queue.Queue(maxsize=0)
          points = np.array(np.where(label > 0)).transpose((1, 0))  # (10234, 2)所有连通域内的点
          for point_idx in range(points.shape[0]):
              x, y = points[point_idx, 0], points[point_idx, 1]  # 注意这里x是第一维对应的是图像的高
              l = label[x, y]
              queue.put((x, y, l))
              pred[x, y] = l
          dx = [-1, 1, 0, 0]
          dy = [0, 0, -1, 1]
          for kernal_idx in range(kernal_num - 2, -1, -1):
              kernal = kernals[kernal_idx].copy()  # 从上一个kernel即queue里存的值往当前kernel扩充
              while not queue.empty():
                  (x, y, l) = queue.get()
                  is_edge = True
                  for j in range(4):
                      tmpx = x + dx[j]
                      tmpy = y + dy[j]
                      if tmpx < 0 or tmpx >= kernal.shape[0] or tmpy < 0 or tmpy >= kernal.shape[1]:
                          continue
                      if kernal[tmpx, tmpy] == 0 or pred[tmpx, tmpy] > 0:  # 当前kernel这个点像素为0或者已经扩充过了
                          continue
                      queue.put((tmpx, tmpy, l))
                      pred[tmpx, tmpy] = l
                      is_edge = False
                  if is_edge:
                      next_queue.put((x, y, l))
              queue, next_queue = next_queue, queue
              # next_queue里存的是is_edge的像素点,queue是空的。然后下一轮只从is_edge即最外层轮廓开始expand
          return pred
      
  • 尺度扩展的过程如图 4(g)所示。扩展基于广度优先搜索算法,该算法从多个内核的像素开始,并迭代合并相邻的文本像素。请注意,扩展过程中可能会出现冲突像素,如图 4(g)中的红框所示。我们在实践中处理冲突的原则是,混淆像素只能由一个内核按照先到先得的原则合并。由于采用了“渐进式”扩展过程,这些边界冲突不会影响最终的检测和性能。尺度扩展算法的细节总结在算法 1 中。在伪代码中,T、P 是中间结果。Q 是一个队列。 Neighbor(·) 表示 p 的邻居像素(4 路)。 GroupByLabel(·) 是按标签对中间结果进行分组的函数。“Si [q] = True”表示 Si 中像素 q 的预测值属于文本部分。 C和E分别用于保存扩展前后的内核;

    • 在这里插入图片描述

Label Generation

  • 如图 3 所示,PSENet 生成具有不同核尺度的分割结果(例如 S1、S2、…、Sn)。 因此,在训练期间需要具有不同核尺度的相应 GT。在我们的实践中,这些 GT 标签可以通过缩小原始文本实例简单有效地进行。图 5(b)中带有蓝色边框的多边形表示原始文本实例,它对应于最大的分割标签蒙版(参见图 5(c)中最右边的图)。为了在图 5(c)中顺序获得缩小的蒙版,我们利用 Vatti 裁剪算法 将原始多边形 pn 缩小 di 像素并得到缩小的多边形 pi(参见图 5(a))。随后,每个缩小的多边形 pi 被转换成 0/1 二进制蒙版,用于分割标签 GT。我们将这些地面实况图分别表示为 G1、G2、…、Gn。从数学上讲,如果我们将尺度比率视为 ri ,则 pn 和 pi 之间的边距 di 可以计算为:

    • d i = A r e a ( p n ) ∗ ( 1 − r i 2 ) P e r i m e t e r ( p n ) d_i=\frac{Area(p_n)*(1-r^2_i)}{Perimeter(p_n)} di=Perimeter(pn)Area(pn)(1ri2)

    • 其中 Area(·) 是计算多边形面积的函数,Perimeter(·) 是计算多边形周长的函数。此外,我们将地面真实地图 Gi 的比例比 ri 定义为:

    • r i = 1 − ( 1 − m ) ∗ ( n − i ) n − 1 r_i=1-\frac{(1-m)*(n-i)}{n-1} ri=1n1(1m)(ni)

    • 其中m是最小尺度比率,是(0,1)之间的一个值。根据公式(3)中的定义,尺度比率(r1,r2,…,rn)的值由两个超参数n和m决定,并且从m线性增加到1。其中m是最终缩放比例,n 是kernel个数,论文中取m=0.5,n=6。i 的取值范围为[1,n], p 1 p_1 p1 是最小的kenel, p 6 p_6 p6 是最大的kernel。

  • 在这里插入图片描述

  • 图 5. 标签生成示意图。 (a) 包含 d、pi 和 pn 的注释。 (b) 显示原始文本实例。 © 显示具有不同核尺度的分割掩码。

    • 图(a)(b)中的蓝色框 p n p_n pn 为文本的原始也是完整的标注信息,对应于最大的segmentation label mask。通过将原始框向内缩放 d i d_i di 个像素得到对应的 p i p_i pi。将 p i p_i pi 转化成0/1二值图即得到了对应不同预测kernel的ground truth。

Loss Function

  • 对于学习 PSENet,损失函数可以表述为:

    • L = λ L c + ( 1 − λ ) L s L=\lambda L_c+(1-\lambda)L_s L=λLc+(1λ)Ls

    • 其中 Lc 和 Ls 分别表示完整文本实例和缩小文本实例的损失,λ 平衡 Lc 和 Ls 之间的重要性。在自然图像中,文本实例通常只占据极小的区域,这使得在使用二元交叉熵 时,网络预测会偏向非文本区域。受 [V-net: Fully convolutional neural networks for volumetric medical image segmentation] 的启发,我们在实验中采用了骰子系数。骰子系数 D(Si, Gi) 的公式如下式 (5):

    • D ( S i , G i ) = 2 ∑ x , y ( S i , x , y ∗ G i , x , y ) ∑ x , y S i , x , y 2 + ∑ x , y G i , x , y 2 D(S_i,G_i)=\frac{2\sum_{x,y}(S_{i,x,y}*G_{i,x,y})}{\sum_{x,y}S^2_{i,x,y}+\sum_{x,y}G^2_{i,x,y}} D(Si,Gi)=x,ySi,x,y2+x,yGi,x,y22x,y(Si,x,yGi,x,y)

    • 其中 Si,x,y 和 Gi,x,y 分别表示分割结果 Si 和真实值 Gi 中像素 (x, y) 的值。此外,还有许多与文本笔画相似的模式,例如栅栏,格子等。因此,我们在训练期间对 Lc 采用在线硬示例挖掘(OHEM),以更好地区分这些模式。Lc 专注于分割文本和非文本区域。 我们将 OHEM 给出的训练掩码视为 M,因此 Lc 可以表示为公式 (6)

    • L c = 1 − D ( S n ⋅ M , G n ⋅ M ) L_c=1-D(S_n·M,G_n·M) Lc=1D(SnMGnM)

  • Ls 是缩小文本实例的损失。由于它们被完整文本实例的原始区域包围,因此我们在分割结果 Sn 中忽略非文本区域的像素,以避免一定的冗余。因此,Ls 可以表示如下:

    • L s = 1 − ∑ i = 1 n − 1 D ( S i ⋅ W , G i ⋅ W ) n − 1 W x , y = 1    i f    S n , x , y ≥ 0.5    e l s e     0 L_s=1-\frac{\sum^{n-1}_{i=1}D(S_i·W,G_i·W)}{n-1}\\ W_{x,y}=1 ~~ if~~S_{n,x,y}\geq 0.5~~else ~~~0 Ls=1n1i=1n1D(SiWGiW)Wx,y=1  if  Sn,x,y0.5  else   0

    • 这里,W 是忽略 Sn 中非文本区域像素的掩码,Sn,x,y 指的是 Sn 中像素 (x, y) 的值。

Experiment

  • 在本节中,我们首先对 PSENet 进行消融研究。然后,我们在四个近期具有挑战性的公共基准上评估所提出的 PSENet:CTW1500、TotalText、ICDAR 2015 和 ICDAR 2017 MLT,并将 PSENet 与最先进的方法进行比较。

Datasets

  • CTW1500 是一个具有挑战性的长曲线文本检测数据集,由 Yuliang 等人 构建。 它由 1000 张训练图像和 500 张测试图像组成。 与传统文本数据集(例如 ICDAR 2015、ICDAR 2017 MLT)不同,CTW1500 中的文本实例由一个具有 14 个点的多边形标记,该多边形可以描述任意曲线文本的形状

  • Total-Text 是一个新发布的曲线文本检测数据集。Total-Text 包含水平、多方向和曲线文本实例。该基准包含 1255 张训练图像和 300 张测试图像。

  • ICDAR 2015(IC15) 是常用的文本检测数据集。它总共包含 1500 张图片,其中 1000 张用于训练,其余用于测试。文本区域由四边形的 4 个顶点标注

  • ICDAR 2017 MLT(IC17-MLT) 是一个大规模多语言文本数据集,包括 7200 张训练图像、1800 张验证图像和 9000 张测试图像。该数据集由来自 9 种语言的完整场景图像组成。

Implementation Details

  • 我们使用在 ImageNet 上预训练的 ResNet 作为主干。所有网络均使用随机梯度下降 (SGD) 进行优化。我们使用 7200 张 IC17-MLT 训练图像和 1800 张 IC17-MLT 验证图像来训练模型并在 IC17-MLT 上报告结果。请注意,没有采用额外数据(例如 SynthText)来训练 IC17-MLT。我们在 4 个 GPU 上以批量大小 16 在 IC17-MLT 上训练 PSENet,进行了 180K 次迭代。初始学习率设置为 1 × 10−3 ,并在 60K 和 120K 次迭代时除以 10

  • 其余数据集采用两种训练策略:(1)从头开始训练。(2)在 IC17MLT 模型上进行微调。从头开始训练时,我们在 4 个 GPU 上训练批量大小为 16 的 PSENet,进行 36K 次迭代,初始学习率设置为 1 × 10−3,在 12K 和 24K 次迭代时除以 10。在 IC17-MLT 模型上进行微调时,迭代次数为 24K,初始学习率为 1×10−4,在 12K 次迭代时除以 10。我们使用 5 × 10−4 的权重衰减和 0.99 的 Nesterov 动量 (无衰减)。我们采用引入的权重初始化。

  • 在训练过程中,我们忽略所有数据集中标记为DO NOT CARE的模糊文本区域。损失平衡的λ设置为0.7。OHEM的负正比设置为3。训练数据的数据增强如下:1)以比例{0.5,1.0,2.0,3.0}随机重新缩放图像;2)随机在[-10◦,10◦]范围内水平翻转和旋转图像;3)从变换后的图像中裁剪640×640个随机样本。对于四边形文本,我们计算最小面积矩形来提取边界框。对于曲线文本数据集,应用PSE的输出来产生最终结果

Ablation Study

  • 核能作为最终结果吗?核的目的是粗略地定位文本实例,并将彼此紧密相连的文本实例分开。然而,最小尺度核不能覆盖文本实例的完整区域,这对文本检测和识别有害。在图6(a)中,仅使用最小尺度核的检测器的F度量(虚线)在ICDAR 2015和CTW1500数据集上很差。此外,我们使用现代文本识别器CRNN 识别完整文本实例和核中的文本,发现CRNN无法识别核中的文本(见图2)。因此,核不能作为最终的检测结果

    • 在这里插入图片描述

    • 图 6. 最小核尺度 (m) 和核数 (n) 的消融研究(公式 (3))。结果基于从头开始训练的 PSENet-1s (Resnet 50)。“1s”表示输出图的形状是输入图像的 1/1。

  • 最小核尺度的影响。我们通过将核数 n 设置为 2 来研究最小尺度 m 的影响,并使最小尺度 m 从 1 到 0.1 变化。在 ICDAR 2015 和 CTW1500 两个数据集上对模型进行了评估。从图 6 (a) 中我们可以发现,当 m 太大或太小时,测试集上的 F 度量会下降。请注意,当设置核尺度 1 时,我们仅使用文本分割图作为最终结果,而没有使用渐进尺度扩展算法。显然,如果没有 PSE,基线的性能并不令人满意,因为网络无法分离彼此靠近的文本。当 m 太大时,PSENet 很难分离彼此靠近的文本实例。当 m 太小时,PSENet 经常会错误地将整行文本分成不同的部分,并且训练不能很好地收敛

  • 核数的影响。我们研究了核数 n 对 PSENet 性能的影响。具体来说,我们保持最小尺度 m 不变,并使用不同核数 n 训练 PSENet。 具体来说,我们将 ICDAR 2015 的 m 从 0.4 开始,CTW1500 的 m 从 0.6 开始,让 n 从 2 增加到 10。在 ICDAR 2015 和 CTW1500 数据集上评估了模型。 图 6 (b) 显示了实验结果,从中我们可以发现,随着 n 的增长,测试集上的 F 度量不断上升,并在 n ≥ 5 时开始趋于平稳。 多核的优点是它可以准确地重建两个彼此靠近且间隙较大的文本实例

  • 主干的影响。更深层的神经网络已被证明可以提高大规模图像分类和物体检测的性能。为了更好地分析所提出的 PSENet 的能力,我们采用 ResNet 作为主干,具有三种不同的深度 {50, 101, 152},并在大规模数据集 IC17-MLT 上进行测试。如表 1 所示,在相同设置下,将主干深度从 50 提高到 152 可以明显将性能从 70.8% 提高到 72.2%,绝对改进率为 1.4%

    • 在这里插入图片描述

    • 表 1. IC17-MLT 上的性能随着主干网络的加深而提高。 “P”、“R”和“F”分别代表准确率、召回率和 F 度量。

Comparisons with State-of-the-Art Methods

  • 检测曲线文本。为了测试曲线文本检测能力,我们在 CTW1500 和 Total-Text 上评估了我们的方法,其中主要包含曲线文本。在测试阶段,我们将图像的长边缩放到 1280,并使用与 [Detecting curve text in the wild: New dataset and new solution] 相同的评估方法评估结果。我们分别在表 2 和表 3 中报告了 PSENet 在 CTW1500 和 Total-Text 上的单尺度性能。请注意,我们仅使用 ResNet50 作为主干。

    • 在这里插入图片描述

    • 表 2. CTW1500 上的单尺度结果。“P”、“R”和“F”分别代表精度、召回率和 F 值。“1s”和“4s”表示输出图的宽度和高度分别为输入测试图像的 1/1 和 1/4。“Ext”表示外部数据。

    • 在这里插入图片描述

    • 表 3. Total-Text 上的单尺度结果。“P”、“R”和“F”分别代表精度、召回率和 F 值。“1s”和“4s”表示输出图的宽度和高度分别为输入测试图像的 1/1 和 1/4。“Ext”表示外部数据。请注意,EAST 和 SegLink 未在 Total-Text 上进行微调。因此,它们的结果仅供参考。

  • 在 CTW1500 上,即使没有外部数据,PSENet 也能超越所有对手。值得注意的是,我们可以发现 PSENet 实现的 F 值 (82.2%) 比 CTD+TLOC 高 8.8%,比 TextSnake 高 6.6%。据我们所知,这是文献中报道的最好结果。在 Total-Text 上,建议的 PSENet 在准确率、召回率和 F 值方面分别达到 84.02%、77.96% 和 80.87%,比最先进的方法高出 2.47%。请注意,我们的 PSENet 在 F 值方面远远超过了 TotalText 上的基线 40% 以上

  • CTW1500 和 Total-Text 上的性能证明了 PSENet 在处理曲线文本或任意形状的文本时具有明显的优势。我们还展示了几个具有挑战性的结果,并与图 7 (d) 中最先进的 CTD+TLOC 进行了一些视觉比较。 比较清楚地表明,PSENet 可以优雅地区分非常复杂的曲线文本实例并以令人信服的方式将它们分开

    • 在这里插入图片描述

    • 图 7. 三个基准上的检测结果以及 CTW1500 上曲线文本的几个代表性比较。补充材料中提供了更多示例。

  • 检测有方向的文本。我们在 IC15 上评估了所提出的 PSENet,以测试其有方向的文本检测能力。仅采用 ResNet50 作为 PSENet 的主干。 在推理过程中,我们将输入图像的长边缩放到 2240。我们在表 4 中将我们的方法与其他最先进的方法进行了比较。仅使用单一尺度设置,我们的方法就实现了 85.69% 的 F 度量,比最先进的结果高出 3% 以上。此外,我们在图 7 (a) 中展示了一些测试示例,PSENet 可以准确定位具有各种方向的文本实例。

    • 在这里插入图片描述

    • 表4. IC15上的单尺度结果。“P”、“R”和“F”分别代表精度、召回率和F值。“1s”和“4s”表示输出图的宽度和高度分别为输入测试图像的1/1和1/4。“Ext”表示外部数据。

  • 检测多语言文本。为了测试 PSENet 对多种语言的鲁棒性,我们在 IC17-MLT 基准上评估了 PSENet。由于数据集规模庞大,为了充分利用 PSENet 的潜力,我们采用 Res50 和 Res152 作为主干。我们将原始图像放大 2 倍,提出的 PSENet 实现了 72.13% 的 F 度量,比最先进的方法高出 5.3%。此外,我们在图 7 (b) 中展示了一些测试示例,PSENet 可以准确定位多种语言的文本实例。这证明了 PSENet 对于多语言和多方向检测具有鲁棒性,并且确实可以在复杂的自然场景中部署。结果如表 5 所示。请注意,我们使用高分辨率来测试IC15和IC17-MLT,因为这两个数据集中包含太多小文本

    • 在这里插入图片描述

    • 表 5. IC17-MLT 上的单尺度结果。“P”、“R”和“F”分别代表精度、召回率和 F 值。“Ext”表示外部数据。

Speed Analyze

  • 如表6所示,PSENet可以快速检测曲线文本实例。采用ResNet50和ResNet18作为骨干,以权衡速度和准确性。我们特别分析了PSENet在不同阶段的时间消耗。当输出特征图为输入图像的1/1时,PSENet获得最佳性能,而由于特征图较大,PSE的时间消耗超过总推理时间的一半。如果输出特征图的大小为输入图像的1/4,PSENet的FPS可以从3.9提升到8.4,而性能从84.84%略有下降到82.09%,如表2所示。我们可以看到PSE的时间消耗不到总推理时间的1/10。此外,当我们缩放640的长边时,FPS进一步推高到22,检测器仍然具有良好的性能(75.6%)

    • 在这里插入图片描述

    • 表 6. PSENet 在 CTW-1500 上的时间消耗。总时间包括骨干、分割头和 PSE 部分。† 表示从头开始训练。“Res”表示输入图像的分辨率。“F”表示 F 度量。

  • 当我们使用 ResNet 18 作为骨干时,PSENet 的速度接近实时(27 FPS),而性能仍然具有竞争力。请注意,PSENet(ResNet18)不使用外部数据进行预训练。结合表 2,我们可以发现 PSENet 在速度和性能上都超越了 EAST 和 CTD+TLOC。以上所有实验均在 CTW1500 测试集上进行测试。我们评估所有测试图像并计算平均速度。我们缩放 {1280, 960, 640} 的长边作为输入来测试速度。表 6 中的所有结果均由 PyTorch 和一个 1080Ti GPU 测试。

Conclusion and Future Work

  • 我们提出了一种新颖的渐进式尺度扩展网络 (PSENet),可成功检测自然场景图像中任意形状的文本实例。通过多个语义分割图将检测区域从小核逐渐扩展到大而完整的实例,我们的方法对形状具有鲁棒性,并且可以轻松分离非常接近甚至部分相交的文本实例。在场景文本检测基准上的实验证明了所提出方法的卓越性能。
  • 未来有多个方向可以探索。 首先,我们将研究扩展算法是否可以与网络一起进行端到端训练。其次,可以将渐进式尺度扩展算法引入到一般的实例级分割任务中,特别是在那些具有许多拥挤对象实例的基准测试中。 我们正在清理我们的代码,很快就会发布它们。

基于渐进尺度扩展网络的形状稳健文本检测补充材料

The Advantage of Multiple Kernels

  • 当文本实例的尺寸差距较大时,使用多个核可以顺利地重建紧密相连的文本实例。如图8所示,2核重建存在一些缺陷,而随着核数量的增加,这一问题得到缓解(参见3核重建)。此外,渐进式尺度扩展算法(PSE)的时间复杂度为O(W×H)1,其中W×H是输出的大小。因此,核数量的增加对PSE的时间成本没有影响。因此,使用多个核来重建文本实例是一种很好的方式。
    • 在这里插入图片描述

    • 图 8. 2 核重建和 3 核重建的区别。

Applying PSENet on Other Semantic Segmentation Framework

  • 提出的PSENet由两个关键点组成:内核机制和PSE。它们都很容易应用于其他语义分割框架。在这里,我们基于广泛使用的语义分割框架PSPNet 实现了类似PSENet的方法,并在CTW1500上对其进行了评估。我们在表7中详细比较了基于PSPNet的类似PSENet方法与原始PSENet。我们可以发现基于PSPNet的方法在曲线文本数据集上也可以实现具有竞争力的性能。然而,与原始PSENet相比,基于PSPNet的方法需要更多的GPU内存(3.7G vs 2.9G)并且具有较低的前向速度(289ms vs 118ms),这表明原始PSENet更适合文本检测。

More Comparisons on CTW1500

  • 为了展示 PSENet 在复杂曲线文本检测方面的强大功能,我们实现了最先进的开源 2 种方法 CTD-TLOC 【https://github.com/Yuliang-Liu/Curve-Text-Detector】,并在 CTW1500 上对 PSENet 和 CTD-TLOC 进行了详细比较。比较结果如图 9 和 10 所示。有趣而令人惊奇的是,在图 9 中,我们提出的 PSENet 能够定位多个文本实例,其中甚至没有标记真实标签。这充分证明了我们的方法由于其强大的学习表示和区分能力而非常稳健。图 10 展示了更多示例,其中 PSENet 不仅可以检测到具有极端曲率的曲线文本实例,还可以很好地分离那些相近的文本实例。
    • 在这里插入图片描述

    • 图 9. CTW1500 上的比较。所提出的 PSENet 产生了几个甚至被真实标签遗漏的检测结果。

    • 在这里插入图片描述

    • 图 10. CTW1500 上的比较。

More Detected Examples on Total Text, ICDAR 2015 and ICDAR 2017 MLT

  • 在本节中,我们在图 11(Total Text)、图 12(ICDAR 2015)和图 13(ICDAR 2017 MLT)中展示了由所提出的 PSENet 生成的更多测试示例。 从这些结果中,可以很容易地观察到,使用所提出的基于内核的框架和 PSE,我们的方法能够实现以下几点:1)精确定位任意形状的文本实例;2)很好地分离紧密相邻的文本实例;3)检测具有各种方向的文本实例;4)检测多语言文本。同时,由于强大的特征表示,PSENet 还可以定位具有复杂和不稳定照明、不同颜色和可变尺度的文本实例。
    • 在这里插入图片描述

    • 图 11.PSENet 生成的 Total Text 上的测试示例。

    • 在这里插入图片描述

    • 图 12.PSENet 在 ICDAR 2015 上生成的测试示例。

    • 在这里插入图片描述

    • 图 13.PSENet 生成的 ICDAR 2017 MLT 上的测试示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值