[翻译]TextBoxes++: A Single-Shot Oriented Scene Text Detector

ocr这方面学得不行,太久没看了。原理都快忘完了。
然后专业词都翻译不准。
今天也是为自己的学业不精流泪的一天。


TextBoxes++: A Single-Shot Oriented Scene Text Detector

摘要

场景文本检测是场景文本识别系统中重要的一步,也是一个极具挑战性的问题。和一般的物体检测不一样,场景文本识别的主要挑战是在自然图像中文本是具有不同的长宽比的。在这篇论文中,我们提出了一个端对端训练的快速场景文本检测器,命名为TextBoxes++,能够准确高效的在神经网络的一次forward pass中实现对任意方向的场景文本的检测,并且不需要除了非极大值抑制之外的后处理。我们在四个公开数据集上评价我们提出的TextBoxes++。在所有的实验中,TextBoxes++ 在准确率和运行时间上都超过了我们用来对比的方法。准确来说,TextBoxes++在ICADR 2015上取得了0.817的f-measure,在coco-text image上取得了0.5591的f-measure。和文本识别器结合后,TextBoxes++超过了目前最好的word spotting和端对端文本检测方法。

##introduction

场景文本是自然场景中最普遍的一个视觉意象,经常出现在街道、驾照、包装上。对场景文本的阅读推动了一系列有用的应用,比如基于图像的定位。尽管和传统ocr存在一些相似性,场景文本阅读由于前后景差异大、多变的方向和长宽比和不可控的光照条件,相对来说更具有挑战性。也正是由于这些不可避免的挑战和复杂性,传统文本检测方法需要多个预处理的步骤,比如字母\单词候选的生成,候选过滤和聚集。它们往往最终难以使每个模块正常工作,需要在调整参数和设计启发式规则方面付出很大努力,同时也会降低检测速度。

受最近的物体检测的发展的启发,我们提出了一个通过一个单一的端对端训练的神经网络来直接预测四边形单词框从而检测文本的方法。我们称之为TextBoxes++。具体来说,我们用一个四边形或者有向矩形表达来取代长方形框表达。此外,为了实现更好可以覆盖较长的文本区域的感受野,我们设计了一个长卷积核来预测边界框。TextBoxes++通过在不同层预测文本表现和到锚框(也被称为默认框)的坐标轴offset的方法直接输出单词边界框。最终的输出是非极大值抑制后的结果。一个单一的前向pass就可以检测图像上不同尺度的文本框。因此这个检测器在速度上有很大的优势。我们将通过实验表明我们的方法不仅在单一尺度的输入上能取得高速度和高准确率,在多尺度输入上能取得更高的准确率。

我们将我们的TextBoxes++和开源的文本识别模块CRNN组合。这一段无关紧要,跳过。

我们这个方法的早期的版本叫做TextBoxes,这篇论文是对其的一个扩展,扩展主要在以下几方面:1. 我们的新方法不仅可以处理水平方向文本,也可以处理任意角度的文本。2. 我们改良了网络结构和训练过程,使得网络表现提升。3. 更多的实验被执行来展示我们的TextBoxes++的优越性。4. 我们改进了检测和识别过程的组合,提出一个新的分数计算。

我们的论文的主要贡献有三个方面:1. 提出的任意方向文本检测器TextBoxes++是准确的、快速的、端对端训练的,并且具有简单且有效的pipeline。2. 这个论文提供了一些设计上的选择的考量,包括边界框表达、模型配置和不同的评价方法的效果。这些研究的结果也能被用到别的文本阅读算法上,并且给出一些启发。3. 我们也介绍了一个使用识别结果来改进检测结果的方法。

related works

物体检测

物体检测是计算机视觉的一个基础工作,目的是检测图像中的一半物体。最近的两个主流的物体检测方法是基于R-CNN的方法和基于YOLO的方法。

  1. 基于R-CNN的检测方法。R-CNN把一个检测问题当作一个分类问题。它首先通过选择搜索生成一个proposals,然后把proposals传到cnn中来提取深层特征,SVM也被用于分类。Fast R-CNN通过使用RoI池化从特征图中提取proposals的深度特征来提升R-CNN,这极大得简化了R-CNN的流程。此外,一个回归branch也被用到了fast R-CNN上来提高它的速度。Faster R-CNN通过引入端对端训练的region proposal network来进一步提升速度。
  2. 基于YOLO的检测方法。最初的YOLO直接对整个图形的特征图的边界框进行回归。一个卷积层被用来预测在不同位置的边界框而不是RPN或者RoI pooling,并且明显地减少了运行时间。另一个基于YOLO的方法是SSD,使用不同阶段不同长宽比的默认框来预测物体边界框。默认框和锚框的概念相似。平移不变性和尺度不变性通过使用在每个位置的不同长宽比不同尺度的默认框实现,这也简化了回归问题。

文本检测

一个场景文本阅读系统通常包括两个主要的部件:文本检测和文本识别。前者在图像中用文字边界框对文本进行定位,后者将单词图打印成机器能理解的字母系列。这篇论文包括了两者,不过更关注检测。通常,大部分文本检测器都能被粗略的按照两个分类策略进行分类:1. 检测目标,2.边界框形状。

  1. classification strategy based on primitive detection targets,大部分文本检测方法能够被分为以下三类:

    1. character-based。单独的字母或者文字的一部分被检测,然后组合成单词。
    2. word-based。单词被用和常见物体检测一样的方法直接提取。
    3. text-line-based。文本行被检测然后被分成单词。
  2. classification startegy based on the shape of target bounding boxes,按照这个分类方法,文本检测方法可以被分为两类。

    1. 水平或近乎水平。这些方法致力于检测图像中水平的或近乎水平的文字
    2. 多方向的。和水平或近乎水平的检测方法相比,多方向的方法更加稳定,因为自然文字通常是任意方向的。
  3. textboxes++ versus some related work

    TextBoxes++是基于单词的多方法的文本检测器,拥有一个简单的pipeline。Tian和Shi提出检测文本块然后将它们连接起来,他们两人的算法在处理长单词时效果都很好,但是却在处理有向文本时结果不太好。另一个工作使用两个超参数连接segments,超参数由网格搜索获得并且不好调整。[40]中的方法被认为是目前最好的方法,它基于一个U-shape的网络,可以同时为text segmentation和边界框产生分数图,然而如何找到一个准确的text region segmentation对他来说仍是一个问题。除此之外,额外的金字塔形的反卷积层也需要额外的计算量。我们的TextBoxes++直接对特征图上的边界框进行分类和回归,同segmentation score map相比,更多的信息被保留在上面。而且这个模型更加简单,用时也更少。

    和TextBoxes++最相近的工作就是SSD。我们的方法确实受到了SSD的启发。我们的TextBoxes++依靠特别设计的text-box层来解决文本长宽比的问题,并且能生成任意角度的边界框。另一个和我们的工作相似的工作提出了四边形滑动窗口并且用蒙特卡罗方法检测有向文字。在TextBoxes++中,我们使用水平长方形作为默认框,在每个区域都有较少的默认框。我们也有更简单的匹配默认框的方法。TextBoxes++同时对默认框和四边形边界框的最大水平矩形进行回归。我们组合检测和识别分数提出一个新的分数来优化检测结果。

    文本检测的最终目的是在图像中识别单词或文本。另一方面,检测到的单词或文本语义层级的表征也能够帮助规范文本检测结果。根据这个想法,我们提出将文本识别器和TextBoxes++,并且使用置信度分数来规范检测结果。因此,我们使用CRNN文本识别器,可以对给定图像直接输出字母序列。

detecting oriented text with TextBoxes++

overview

TextBoxes++依赖端对端训练的全连接层来检测任意方向的文本。我们的方法是被物体检测算法SSD启发的,我们进行了一些空间设计来将SSD网络用于高效地识别自然图像中的有向文本。我们提出用四边形或者有向长方形对文本进行表示,然后我们使用网络来预测边界框到有向文本表达的回归。为了更好的覆盖文本,我们提出了使用vertical offsets densify默认框。此外,我们用能更好地处理长文本问题的卷积核。TextBoxes++在六个尺度上检测有向文本,在测试阶段,多阶段检测结果被组合起来,依靠基于IOU阈值的级联多非极大值抑制。

proposed network

  1. 网络结构:TextBoxes++的结构在图中展示。它继承了vgg-16的结构,保留了从conv1_1到conv5_3的层,并把最后两个全连接层变成卷积层。另外八个卷积层被分为四个阶段(conv8到conv11),通过最大池化变为不同的分辨率。多层输出层,被我们称为text-box-layers,被插入在最后一层和一些中间层上,这些层也是卷积层,用来预测输出,之后进行非极大值抑制过程。综合来讲,TextBoxes++是一个只包括卷积层和池化层的全卷积结构。因此Textboxes++能够处理任意形状的图像,它用卷积层取代了平均池化,有利于多尺度的训练和测试。

  2. 带vertical offsets默认框:文本框层是TextBoxes++的核心部件。一个文本框层同时预测text表征和边界框。输出的边界框包括有向边界框{q}或{r},最小水平边界矩形{b}。这是通过预测一些对在每个位置预设计的水平默认框的offset的回归来实现的。更细致地,让 b 0 = ( x 0 , y 0 , w 0 , h 0 ) b_0=(x_0,y_0,w_0,h_0) b0=(x0,y0,w0,h0)定义一个水平默认框,它也能被写作 q 0 = ( x 01 q , y 01 q , x 02 q , y 02 q , x 03 q , y 03 q , x 04 q , y 04 q ) q_0=(x^q_{01},y^q_{01},x^q_{02},y^q_{02},x^q_{03},y^q_{03},x^q_{04},y^q_{04}) q0=(x01q,y01q,x02q,y02q,x03q,y03q,x04q,y04q)或者 r 0 = ( x 01 r , y 01 r , x 02 r , y 02 r , h 0 r ) r_0=(x^r_{01},y^r_{01},x^r_{02},y^r_{02},h^r_0) r0=(x01r,y01r,x02r,y02r,h0r)

    在每个位置,它能够输出分类分数和到每个默认框的offsets。对于一个四边形表达,text-box 层预测 ( Δ x , Δ y , Δ w , Δ h , Δ x 1 , Δ y 1 , Δ x 2 , Δ y 2 , Δ x 3 , Δ y 3 , Δ x 4 , c ) (\Delta x,\Delta y,\Delta w,\Delta h,\Delta x_1,\Delta y_1,\Delta x_2,\Delta y_2,\Delta x_3,\Delta y_3,\Delta x_4,c) (Δx,Δy,Δw,Δh,Δx1,Δy1,Δx2,Δy2,Δx3,Δy3,Δx4,c),包含了包括水平矩阵b和四边形q在内。对于旋转矩形表达,预测到 ( Δ x , Δ y , Δ w , Δ h , Δ x 1 , Δ y 1 , Δ x 2 , Δ y 2 , Δ h r , c ) (\Delta x,\Delta y,\Delta w, \Delta h,\Delta x_1,\Delta y_1,\Delta x_2,\Delta y_2,\Delta h^r,c ) (Δx,Δy,Δw,Δh,Δx1,Δy1,Δx2,Δy2,Δhr,c),包含了旋转矩阵r。

    在训练阶段,ground-truth单词框和默认框根据重叠机制相匹配。旋转矩形或者四边形框的最小化水平矩形被用来和默认框进行匹配。考虑到一个位置针对不同的长宽比会有多个默认框,因此我们将单词根据他们的长宽比进行区分,允许TextBoxes++学习特定的回归和分类权值来应对相似长宽比的单词。因此默认框的设计是和任务高度匹配的。

    和一般物体不一样,单词长宽比变化很大。因此,在早期的研究学习中,TextBoxes++包括了对应大长宽比的长默认框。特别的,对于水平文本数据集,我们定义了六个长宽比1,2,3,4,7和10。我们致力于检测任意长宽比的文本,因此我们将默认框的长宽比设置为1,2,3,5,1/2,1/3,1/5。此外,文本通常在某个区域密集,所以每个默认框都设置了垂直offset从而更好地覆盖所有文本,这使得默认框在垂直方向上密集。

  3. 卷积层:在早期的对水平文本检测的学习中,我们也采用了不规则的1x5卷积核,而不是常用的3x3卷积核。这是因为单词或文本行通常都比较长,然而这些长的卷积核并不适用于有向文本。因此,在有向文本中,我们使用3x5的卷积核。这种inception-style滤波器使用矩形的感受野,这也能更好的匹配拥有大长宽比的文本。inception也帮助避免了方形感受野可能带来的噪声信号

adapting training for arbitrary-oriented text detection

  1. ground truth表达:我们的ground truth表达如下所述:

    1. 四边形。对于每一个有向的文本ground truth T,让 G b = ( x ^ 0 b , y ^ 0 b , w ^ 0 b , h ^ 0 b ) G_b=(\hat{x}^b_0,\hat{y}^b_0,\hat{w}^b_0,\hat{h}^b_0) Gb=(x^0b,y^0b,w^0b,h^0b)作为它的水平矩形ground truth,即包围T的最小的水平矩形。这些矩形ground truth也能够被定义为 G b = ( b 1 , b 2 , b 3 , b 4 ) G_b=(b_1,b_2,b_3,b_4) Gb=(b1,b2,b3,b4),其中 ( b 1 , b 2 , b 3 , b 4 ) (b_1,b_2,b_3,b_4) (b1,b2,b3,b4)是按照始终顺序对四个角点,从左上角开始。我们使用有向文本ground truth T的四个顶点来代表T G q = ( q 1 , q 2 , q 3 , q 4 ) = ( x ^ 1 q , y ^ 1 q , x ^ 2 q , y ^ 2 q , x ^ 3 q , y ^ 3 q , x ^ 4 q , y ^ 4 q ) G_q=(q_1,q_2,q_3,q_4)=(\hat{x}^q_1,\hat{y}^q_1,\hat{x}^q_2,\hat{y}^q_2,\hat{x}^q_3,\hat{y}^q_3,\hat{x}^q_4,\hat{y}^q_4) Gq=(q1,q2,q3,q4)=(x^1q,y^1q,x^2q,y^2q,x^3q,y^3q,x^4q,y^4q)。四个顶点也是按照时钟方向排序的,这样的话 b i , q i b_i,q_i bi,qi间欧几里得距离的和就会被最小化。
    2. 旋转矩形。对于旋转的矩形,这里有几个不同的表达,一个最常用的是用一个水平矩形+一个旋转角度,写成 ( x , y , w , h , θ ) (x,y,w,h,\theta) (x,y,w,h,θ)。然而,由于数据集本身的偏差,这个 θ \theta θ的分布通常是不平衡的,使得我们的模型具有一定的数据集依赖。为了解决这个问题,我们使用另一个表达: G r = ( x ^ 1 r , y ^ 1 r , x ^ 2 r , y ^ 2 r , h ^ r ) G_r=(\hat{x}^r_1,\hat{y}^r_1,\hat{x}^r_2,\hat{y}^r_2,\hat{h}^r) Gr=(x^1r,y^1r,x^2r,y^2r,h^r),分别表示第一第二个顶点和高。
  2. loss function:让x表示匹配指示矩阵,对于第i个默认框和第j个ground truth, x i j = 1 x_{ij}=1 xij=1表示这里有一个匹配。c表示置信度,l表示预测的位置,g表示ground-truth位置。则损失函数被定义为:
    L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) L(x,c,l,g)=\frac{1}{N}(L_{conf}(x,c)+\alpha L_{loc}(x,l,g)) L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))
    对于 L l o c L_{loc} Lloc我们使用平滑的L1损失,对于 L c o n f L_{conf} Lconf我们使用二分类softmax损失。

  3. online hard negative mining:一些纹理和标志和文本非常像,导致我们的网络难以区分。我们使用了hard negative mining方法。具体来说,在对应的数据集上的训练被分为两个阶段,第一阶段中负正样本的比例为3:1,第二阶段中为6:1。

  4. 数据扩充:和很多基于cnn的视觉问题相似,数据扩充是个增加训练集大小的必要手段。常用方法是在原图随机裁剪一块于ground truth的jaccard overlap大于最小值的图片。这样做存在两个问题,首先这个jaccard不适用于小物体,同时裁剪后的图像中文字可能会占据所有部分,这在自然图像中很不常见。所以我们加入了一个命名为object coverage的新约束。两个约束J和C定义如下:
    J = ∣ B ∩ G ∣ / ∣ B ∪ G ∣ C = ∣ B ∩ G ∣ / ∣ G ∣ J=|B\cap G|/|B\cup G|\\ C=|B\cap G|/|G| J=BG/BGC=BG/G

  5. 多尺度训练

你可能感兴趣的:(OCR学习)