ocr这方面学得不行,太久没看了。原理都快忘完了。
然后专业词都翻译不准。
今天也是为自己的学业不精流泪的一天。
场景文本检测是场景文本识别系统中重要的一步,也是一个极具挑战性的问题。和一般的物体检测不一样,场景文本识别的主要挑战是在自然图像中文本是具有不同的长宽比的。在这篇论文中,我们提出了一个端对端训练的快速场景文本检测器,命名为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. 我们也介绍了一个使用识别结果来改进检测结果的方法。
物体检测是计算机视觉的一个基础工作,目的是检测图像中的一半物体。最近的两个主流的物体检测方法是基于R-CNN的方法和基于YOLO的方法。
一个场景文本阅读系统通常包括两个主要的部件:文本检测和文本识别。前者在图像中用文字边界框对文本进行定位,后者将单词图打印成机器能理解的字母系列。这篇论文包括了两者,不过更关注检测。通常,大部分文本检测器都能被粗略的按照两个分类策略进行分类:1. 检测目标,2.边界框形状。
classification strategy based on primitive detection targets,大部分文本检测方法能够被分为以下三类:
classification startegy based on the shape of target bounding boxes,按照这个分类方法,文本检测方法可以被分为两类。
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文本识别器,可以对给定图像直接输出字母序列。
TextBoxes++依赖端对端训练的全连接层来检测任意方向的文本。我们的方法是被物体检测算法SSD启发的,我们进行了一些空间设计来将SSD网络用于高效地识别自然图像中的有向文本。我们提出用四边形或者有向长方形对文本进行表示,然后我们使用网络来预测边界框到有向文本表达的回归。为了更好的覆盖文本,我们提出了使用vertical offsets densify默认框。此外,我们用能更好地处理长文本问题的卷积核。TextBoxes++在六个尺度上检测有向文本,在测试阶段,多阶段检测结果被组合起来,依靠基于IOU阈值的级联多非极大值抑制。
网络结构:TextBoxes++的结构在图中展示。它继承了vgg-16的结构,保留了从conv1_1到conv5_3的层,并把最后两个全连接层变成卷积层。另外八个卷积层被分为四个阶段(conv8到conv11),通过最大池化变为不同的分辨率。多层输出层,被我们称为text-box-layers,被插入在最后一层和一些中间层上,这些层也是卷积层,用来预测输出,之后进行非极大值抑制过程。综合来讲,TextBoxes++是一个只包括卷积层和池化层的全卷积结构。因此Textboxes++能够处理任意形状的图像,它用卷积层取代了平均池化,有利于多尺度的训练和测试。
带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从而更好地覆盖所有文本,这使得默认框在垂直方向上密集。
卷积层:在早期的对水平文本检测的学习中,我们也采用了不规则的1x5卷积核,而不是常用的3x3卷积核。这是因为单词或文本行通常都比较长,然而这些长的卷积核并不适用于有向文本。因此,在有向文本中,我们使用3x5的卷积核。这种inception-style滤波器使用矩形的感受野,这也能更好的匹配拥有大长宽比的文本。inception也帮助避免了方形感受野可能带来的噪声信号
ground truth表达:我们的ground truth表达如下所述:
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损失。
online hard negative mining:一些纹理和标志和文本非常像,导致我们的网络难以区分。我们使用了hard negative mining方法。具体来说,在对应的数据集上的训练被分为两个阶段,第一阶段中负正样本的比例为3:1,第二阶段中为6:1。
数据扩充:和很多基于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=∣B∩G∣/∣B∪G∣C=∣B∩G∣/∣G∣
多尺度训练