DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
最后更新于
最后更新于
16年那段时间的文字检测的文章,多少都和当年火极一时的Faster R-CNN[2]有关,DeepText(图1)也不例外,整体上依然是Faster R-CNN的框架,并在其基础上做了如下优化:
Inception-RPN:将RPN的卷积划窗换成了基于Inception[3]的划窗。这点也是这篇文章的亮点;
ATC: 将类别扩展为‘文本区域’,‘模糊区域’与‘背景区域’;
MLRP:使用了多尺度的特征,ROI提供的按Grid的池化的方式正好融合不同尺寸的Feature Map。
IBBV:使用多个Iteration的bounding boxes的集合使用NMS
在阅读本文前,一定要先搞清楚Faster R-CNN,本文只会对DeepText对Faster R-CNN的改进进行说明,相同部分不再重复。
DeepText的结构如Faster R-CNN如出一辙:首先特征层使用的是VGG-16,其次算法均由用于提取候选区域的RPN和用于物体检测的Fast R-CNN。
下面我们对DeepText优化的四点进行讲解。
首先DeepText使用了GoogLeNet提出的Inception结构代替Faster R-CNN中使用的卷积在Conv5_3上进行滑窗。Inception的作用参照GoogLeNet中的讲解。
DeepText的Inception由3路不同的卷积构成:
padding=1的 的Max Pooling后接128个用于降维的卷积;
384个padding=1的卷积;
128个padding=2的卷积。
由于上面的Inception的3路卷积并不会改变Feature Map的尺寸,经过Concatnate操作后,Feature Map的个数变成了。
针对场景文字检测中Ground Truth的特点,DeepText使用了和Faster R-CNN不同的锚点:四个尺寸及六种比例共个锚点。
DeepText的采样阈值也和Faster R-CNN不同:当时,锚点为正;,锚点为负。
Inception-RPN使用了阈值为0.7的NMS过滤锚点,最终得到的候选区域是top-2000的样本。
DeepText将样本分成3类:
Text: ;
Ambiguous: ;
Background: .
这样做的目的是让模型在训练过程中见过所有IoU的样本,该方法对于提高模型的召回率作用非常明显。
DeepText使用了VGG-16的Conv4_3和Conv5_3的多尺度特征,使用基于Grid的ROI Pooling将两个不同尺寸的Feature Map变成的大小,通过卷积将Concatnate后的1024维的Feature Map降维到512维,如图1所示。
在训练过程中,每个Iteration会预测一组检测框:,其中表示训练阶段,表示类别的检测框,和分别表示检测框和置信度。NMS合并的是每个训练阶段的并集:。NMS使用的合并阈值是。
在IBBV之后,DeepText接了一个过滤器用于过滤多余的检测框,过滤器的具体内容不详,后续待补。
结合当时的研究现状,DeepText结合了当时state-of-the-art的Faster R-CNN,Inception设计了该算法。算法本身的技术性和创新性并不是很强,但是其设计的ATC和MLRP均在后面的物体检测算法中多次使用,而IBBV也在实际场景中非常值得测试。