翻译部分内容,参杂个人想法
不忠实于原文,可能有参考价值
概要
文本检测:
1.把文本作为一种普通对象,采用普通对象检测的方法,利用回归来确定文本框的位置
缺点:文本方向任意、文本尺度任意
2.直接分割文本区域
缺点:过程复杂
我们:结合以上两点——角落点+分割相关区域
一、介绍
近年来,文本检测越来越重要
文本检测难的原因:
1.外部原因:噪声、模糊、咬合(遮盖?)
2.内部原因:文本自身特征
文本比起其他普通检测,其特征在哪?为何难:
1.角度与方向复杂
2.文本框大小选定非常重要
3.可能是字母、单词或是文本段落,算法搞不定
在过去几年里……
我们和过去的算法不同,我们结合了目标检测和区域分割
我们为啥能想到这么厉害的方法?
1.不管方向大小,矩形总是由它的四个角决定
2.区域分割图可以提供有效的文本区域信息
因此,检测了上下左右四个目标点而非直接检测文本框
然后,预测区域敏感分割图而不是文本图(?这块不太懂)
最后,通过采样和分组角落点生成候选框,并去除不好的框
我们提出方法的优势:
1.通过采样和分组角落点,我们无视文本方向的任意性问题
2.我们检测角落点而非文本框,避开了文本尺度问题
3.通过区域敏感分割,解决了字母、单词和文本段落不同的问题(?这块不太懂)
4.采用的是角落点决定的候选框,比通过锚点或是文本区域生成的文本框更加准确,特别是长文本
(正好对应前面提出文本复杂的原因,全解决了)
数据集结果……
我们的贡献:
1.结合目标检测和分割,端到端
2.提出“区域敏感ROI池化层”,用来处理任意方向的文本
3.同时处理在多目标场景中的许多不同的挑战(旋转、尺度不同、距离大小),这些其它的方法都没法弄
4.结果上,速度和准确率都更高
二、最近文本检测方面的工作
2.1.基于回归的文本检测
其他……
我们的方法也来自普遍了目标检测器DSSD,但是不像其它的方法,我们提出定位角落点的位置,然后通过采样和分组角落点生成文本检测框
2.2.基于分割的文本检测
其他……
和其他方法不一样,他们都要很复杂的后处理过程。我们简单清晰多了。
在“推断阶段”,区域敏感分割图将借由我们提出的“旋转区域敏感平均ROI池化层”(ROI pooling好像是Faster RCNN的)去给候选框打分
2.3.基于角点的通用目标检测
基于角点的检测是目前的主流……
我承认,我们的方法的确借鉴了以上的方法
但是!还是有关键性的不同
1.角点检测器不同
2.我们利用分割图去给候选框打分
3.可以给文本生成任意方向的候选框
2.4.区域敏感分割(重点,这到底是个啥)
(扯了半天没看懂,自己去网上查了:
Position-sensitive score map最早来自于另一篇区域分割的论文Instance-sensitive Fully Convolutional Networks,并且已经有人将他用于文本检测了-》R-FCN。
区域敏感分数图会使得某个分类的某个部位在网络中(负责的卷积网络)的某个对应通道上响应高,使得“分类”这个位置不敏感任务变得位置敏感,这也是其名的由来。
)
我们也采用了位置敏感分割图去预测文本位置。与以上提到的方法相比,主要有三个不同:
1.我们利用位置敏感真值直接优化网络(在4.1.1中会详述)
2.我们的位置敏感图可以同时被用于预测文本位置和给提样打分(在4.2.2中详述)
3.我们提出的旋转的 位置敏感ROI平均池化 可以处理任意方向的提样
三、网络
我们方法的网络是一个全卷积网络,扮演了特征提取、角点检测、位置敏感分割的任务。
(
Eltwise层解析
Concat层虽然利用到了上下文的语义信息,但仅仅是将其拼接起来,之所以能起到效果,在于它在不增加算法复杂度的情形下增加了channel数目。那有没有直接关联上下文的语义信息呢?答案是Eltwise层,被广泛使用,屡试不爽,并且我们常常拿它和Concat比较,所以我常常一起说这两个层。我们普遍认为,像这样的“encoder-decoder”的过程,有助于利用较高维度的feature map信息,有利于提高小目标的检测效果。
Eltwise层有三种类型的操作:product(点乘)、sum(求和)、max(取最大值),顾名思义,sum就是把bottom的对应元素相加,product就是对应相乘,max就是对应取最大,其中sum为默认操作。根据eltwise_layer.cpp的源码可见,eltwise层要求对应bottom层的blob一致,这才能是对应元素嘛。得到的结果top层的blob和bottom层一致,这个过程想象成三维的过程很好理解。)
3.1.特征提取
我们模型的主要部分来自于一个预训练的VGG16网络,网络的选取来源于以下的考虑:
1.场景文本的大小变化剧烈,所以主要部分需要有足够的能力去处理好这个问题
2.自然场景的背景很复杂,所以特征最好能包含更多的内容
受到在这些问题上表现良好的的FPN(图像金字塔网络)和DSSD的启发,我们采用FPN/DSSD结构去提取特征
在细节上,我们把VGG16中的fc6和fc7转换为卷积层conv6和conv7。然后在conv7上堆叠额外的一些卷积层(conv8, conv9, conv10, conv11)去提高被提取特征的感受野。在这之后,我们自上而下使用了在DSSD中提出的一些反卷积模块。特别地,为了能更好地检测不同大小的文本,我们利用具有256个通道的conv11到conv3(来自conv10, conv9. Conv8, conv7, conv4, conv3的特征被复用了)构造了共6个串联反卷积模块。包括上conv11的特征,为了方便,我们以F3, F4, F7, F8, F9, F10和F11命名这些输出特征。在最后,被conv11提取的特征和有更丰富特征表示的反卷积模块被用于检测角落点和预测位置敏感图。
3.2.角落检测
对于一个给定的旋转方形框R=(x, y, w, h, θ),有四个角落点(上左、上右、下右、下左)并且可以在顺时针方向被表示为二维坐标 {(x1, y1), (x2, y2), (x3, y3), (x4, y4)} 。为了方便检测角落点,这里我们重新定义并通过一个水平正方形C = (Xc, Yc, ss, ss)来表示一个角落点。这里,Xc, Yc是角落点的坐标(利用x1,y1表示上左点)同时也是水平框的中心。ss是旋转矩形框R的短边长度。(就是用一个正方形来框住角落点,正方形的边长为水平框的短边长,其中角落点在正方形的中心)
跟随SSD和DSSD,我们利用默认框检测角落点。与SSD或者DSSD中每个默认框输出分类分数和相应候选框的偏移量不同的是,角落点检测更加复杂,因为在同一个地点可能有多个角落点(例如一个位置可能同时是一个框的下左的和另一个框的上右)。因此在我们的网络中,一个默认框需要为4个候选框以及相应的4种角落点输出分类分数和偏移量(一脸懵B)。(默认框即为标识角落点的正方形框。角落点的种类可能有四种)
我们采用DSSD中提出的预测模型去在卷积方式的两个分支中预测分数和偏移量。为了减少计算复杂度,所有卷积过滤器都被设置为256(是数量对吧,可是256咋就可以减少复杂度了)。对于一个在每个cell中有k个默认框的m * n的特征图,“分数”分支和“偏移”分支别针对每个默认框的每种角落点类型输出2个分数和4个偏离量。这里,2对于“分数”分支意味着是否一个角落点在这个方向上存在。总之,“分数”分支输出通道数为k*q*2,“偏移”分支输出通道数为k*q*4,这里q意思是角落点的类别,一般默认为4。
在训练阶段,我们遵从了SSD中默认框和真实值匹配的策略。为了去检测不同大小的场景文本,我们使用在不同层上多种尺度的默认框。所有默认框的规模大小都在TABEL1中。默认框的纵横比被设置为1。
(DSSD中默认框到底是个什么,需要去看下原论文【11】)
3.3.位敏分割
在先前基于分割的文本检测方法中,生成的一个分割图用于代表每个像素属于文本区域的可能性。然而,由于文本区域的重叠和文本像素的不准确预测,这些在分数图中的文本区域总是不能互相分离。为了从分割图中得到文本框,总是要实行复杂的后处理。
受到InstanceFCN启发,我们使用方向敏感分割去生成文本分割图。与先前的文本分割方法相比,生成了相对位置。在细节上,对于一个文本框R,一个g*g寻常网格将文本框分割为多个片(bins)(例如,一个2*2网格,可以将文本区域分割为4块)。对于每一块,一个分割图被用于决定是否这个图中的这个像素属于这一块。
我们在统一的网络中利用角落点检测构筑了位敏分割。我们重用了F3, F4, F7, F8, F9的特征并根据角落点检测分支的残差块结构构筑了一些卷积块(见图3)。这些卷积块的所有输出都通过规模因子为1, 2, 4, 8, 16的双线性插值上采样方法所放大到F3的大小。然后,将所有这些有相同尺寸的输出加到一起,进而生成更丰富的特征。我们进一步通过两个连续的Conv1*1-BN-ReLU-Deconv2*2块扩大了融合特征的分辨率并设置最后一层反卷积大小为g*g。
因此,最后位敏分割图有与输入图像相同的g*g个通道。在这里,我们默认设置g=2。
四、训练和推断
4.1.训练
……
4.2.推断
4.2.1 取样和分组
在推断阶段,生成了许多有预测位置的角落点、短边和置信度。高分的点(默认大于0.5)被保留。在极大值抑制之后,根据对应的位置信息,构建了四组角点集。
我们通过采样和分组那些预测的角落点,生产了候选框。在理论上,一个旋转矩形可以由两个点和一个垂直于他们连线的线段所构成。对于一个预测的点,短边已知,所以我们可以通过采样和分组角落点组合中的任意两点来形成一个旋转矩形。
有一些规则来滤掉不合适的组合:
1.相对位置关系不能被违反,例如左上的x左边必须小于右上的
2.构造的旋转矩形的嘴短编必须大于一个阈值(默认为5)
3.一对两点的预测短边ss1和ss2必须满足0.667 < ss1/ss2 < 1.5
4.2.2 打分
在采样和分组角落点之后,可以生成许多候选框。受到InstanceFCN和RFCN的影响,我们通过位敏分割图给候选框打分。打分过程在图5中
为了去处理旋转文本框,我们采用【9】中的位敏ROI池化层并提出了旋转位敏ROI平均池化层。特别的,对于一个旋转框,我们首先将其分为g*g块。然后我们为每一块生成能恰好覆盖它的最小面积的矩形。我们循环遍历最小矩形中的所有像素,并计算在这一块中所有像素的平均值。最后,旋转框的得分可以通过平均所有小块(的平均值)得来。特殊的步骤在算法【1】中呈现
默认低于0.6的候选框将会被滤去。