论文笔记(一)——TextBoxes

论文标题:TextBoxes: A Fast Text Detector with a Single Deep Neural Network

作者:Minghui Liao, Baoguang Shi, Xiang Bai, Xinggang Wang, Wenyu Liu

Introduction

  1. 场景文字识别与传统OCR有区别,场景文字识别需要区别文字与背景的关系,同时光照条件也会影响识别效果。
  2. 传统的场景文字识别方法步骤多,很麻烦,TextBoxes提供了一种简单直接的神经网络来解决这个问题。
  3. TextBoxes能做到快速而准确的文字识别,可以同时输出文字所在的区域和置信度,并且设计了一些方法来解决识别不同比例的文字的问题。
  4. TextBoxes文字检测的结果直接输入到识别模块得出最终的识别结果,识别模块使用的是CRNN方法。
  5. 总的来说TextBoxes有以下几个优点:
    • End-to-end trainabel neural network for scene text detection.
    • Word spotting/end-to-end recognition framework that effectively combines detection and recognition.
    • High competitive result and computational efficientlyd.

Related works

  1. 场景文字识别检测(Scene Text Reading)主要有两个任务,一个是识别,就是将文字所在的地方标记出来;另�一个是检测,将标记的有文字区域的文字识别出来。
  2. 场景文字识别的方法一般分为3类:
    • 基于字符:将离散的字符检测出来,然后合并组成单词。
    • 基于单词:将单词当做物体,使用物体检测网络直接检测出来。
    • 基于文本线:先检测文本集中分布的位置,然后将其拆分成单词。
  3. TextBoxes是第2种基于单词的检测方式。相比较其他的基于单词的检测算法拥有多个步骤,算法复杂,TextBoxes只有一个简单的步骤,是一个端到端可训练的神经网络。
  4. TextBoxes的算法是在SSD的基础上改进的,SSD是一个用来检测物体的网络,但是直接拿来检测文本的话效果并不好,因此本文在SSD的基础上做了修改,使之能够胜任文字检测的任务。
  5. 文字识别使用的是CRNN的方法,此方法在白翔老师的另一篇论文中有详细的说明(这篇论文笔记也会在后面更新),CRNN同样是端到端的识别网络,当然使用其他的识别网络也是可行的。

Detecting text with TextBoxes

Architecture

TextBoxes的网络结构跟SSD十分类似,先来看看SSD的结构是怎样的。

SSD结构

SSD是一个物体检测网络,输入为一张图片,输出图片中物体的边界框(bounding box)。它的结构如上图,首先使用VGG-Net conv4_3之前的层用作输入图片的特征提取,得到图中第一个特征图(38×38×512),继续通过VGG-Net中的fc7之前的层提取第二个特征图(19×19×1024),再继续使用卷积层和池化层继续提取特征。不难发现,随着网络的加深,提取到的特征尺寸越来越小,特征也越来越抽象,将这些中间层中提取的特征图分别送入一个检测和分类网络,得出若干个可能存在物体的区域候选框,再跟一个NMS(非极大值抑制)层得出最终的预测的区域。

SSD与TextBoxes结构对比:

SSD网络结构
TextBoxes网络结构

Text-box layers

  1. Text-box层的输出由两部分构成,一部分是bounding box的位置,另一部分是该bounding box区域分别是文字和背景的概率。
  2. Text-box层特征图的深度是72,每个区域有12个比例不同、位置不同的默认框(default boxes),对于每个框需要预测4个值,即预测框与默认框的偏差,对于每一个默认框,还有softmax进行二分类得到的2个概率值,即该区域属于背景和文字的概率,因此总共是72-d的向量。
  3. SSD检测物体时为了能匹配各种大小和比例的物体设计了多个不同长宽比和大小的默认框,而做文字检测时,文字所在的区域一般都是长方形,因此本文设计了长宽比分别是1、2、3、5、7、10的默认框。
  4. 为了防止默认框在水平方向上排列紧密而垂直方向上排列稀疏从而造成检测失误的情况,将水平方向上的这些默认框全部向下平移半个区域的单位(下图中黑色与绿色,蓝色与红色),这样一个区域总共12个默认框,解决了默认框排列不均匀的问题。以一列比例为1和5的默认框为例:
    不同比例和位置的默认框
  5. 两个网络在卷积核的大小上也有区别,SSD除了最后一层,使用的均为3×3的卷积核;TextBoxes使用的则是更适合文字长方形比例的1×5卷积核。值得注意的是,TextBoxes主体结构全部由卷积层和池化层构成,因此它在训练和检测的过程中可以适应任何大小的图片。

Learning

损失函数方面,TextBoxes的损失函数由两部分构成,一部分是二分类的损失函数,由于TextBoxes只会把区域分成两类,一类是背景,一类含有文字,因此这部分是一个二分类的softmax损失函数。另一部分是预测的bounding box位置的回归损失,这部分使用的是smooth L1损失函数。

Multi-scale inputs

检测过程中可能会遇到文字区域过长,超过了默认框的最大比例的问题,解决办法是将原图片放缩到不同的大小,这样某些在水平方向很长的文字就会被挤压从而满足默认框的比例,这种方法提高了检测的准确度,但是会消耗一定的运算能力。

Word spotting and end-to-end recognition

文字识别使用的是CRNN,是一个深度双向RNN网络,每个节点是一个LSTM单元。TextBoxes检测的结果会被送入CRNN网络中识别,在识别过程中,有词典的情况下,会排除检测过程中的一些错误,比如识别出来的字符序列不在给定的词典中,那么这个区域很有可能并没有检测出文字。至于CRNN,在这里先留个坑,在后面关于CRNN的论文笔记中详细介绍这个算法。

Experiments

这部分就是通过一些实验数据证明该算法确实能去的很好的效果,并介绍了一些实验的细节,比如一些超参数的设置。

检测结果

Weaknesses

从实验结果来看,识别的效率还是很好的,但是同时也存在一些问题,比如:对于曝光过度的地方并不能识别出文字,对于字符之间间距过大的单词识别效率也不高。

More information

  1. TextBoxes论文总结
  2. TextBoxes代码实现
  3. TextBoxes论文地址

你可能感兴趣的:(论文笔记(一)——TextBoxes)