【Paper Reading】【CTPN: Detecting Text in Natural Image with Connectionist Text Proposal Network】
abstract:
- 在卷积特征图中用一系列fine-scale text proposals来直接检测文本行
- 垂直anchor机制,同时预测每一个固定宽度proposal的位置和文本/非文本分数
- 使用RNN,以获取上下文信息来提高检测正确率
- multi-scale and multi-language text reliable,无需额外后处理
introduction:
- motivation:
- 深度CNN在目标检测上的发展,如Faster Region-CNN(R-CNN,提出RPN,从卷积特征图直接生成高质量的无类别目标proposals)
- 目标检测与文本行检测的区别:
- 一般目标具有大致轮廓/中心点
- 文本行没有相对固定的长度
- contribution:
- 将文本检测问题转化为fine-scale text proposals序列的定位问题。提出垂直anchor机制,同时预测每一个固定宽度proposal的位置和文本/非文本分数。
- 提出in-network recurrence mechanism,连接卷积特征图中的sequential text proposals。
- 将上述两个方法无缝整合,得到端到端可训练模型,一次操作可以处理多尺度多语言文本,避免的更多的后处理
details:
1. Detecting Text in Fine-Scale Proposals:
与RPN相似,必须采用全卷积网络以便适合于任何尺寸的输入图像。通过在卷积特征图上密集地滑动要给小窗口来检测一个文本行,输出一系列fine-scale(固定16-pixel width)的text proposals。
用一个3x3的窗口在最后一个卷积层的特征图上滑动。总stride和感受野分别固定为16和228像素(网络结构决定)。在卷积层使用滑动窗口使之可以共享卷积计算。
普通目标检测中,目标一般有相对固定的边界和中心,从而可以从部分推理出整体。而文本名没有明显的封闭边界而且可能包含multi-level components,例如笔画、字母、单词等,彼此并没有明显区别。直接预测文本行或者单词的位置很困难,而且并不可靠。
观察到直接使用RPN进行单词检测,很难准确预测单词的水平边界,因为同一单词内的各个字母之间相互隔离使得很难检测单词的开端与结尾。很自然地将一个文本行看作是一系列fine-scale text proposals,每一个proposal都代表文本行的一小部分(16像素宽的文本碎片)。只预测每一个proposal的垂直位置更好,还能减少搜索空间。开发了一种垂直anchor机制,可以同时预测每一个fine-scale proposal的文本/非文本分数和y轴位置。
检测器紧密浏览conv5的每一个空间位置。text proposal取固定宽度16像素(in the input image)。k个proposals,预测y坐标,水平位置相同,固定宽度16像素,k个不同的高度(11~273,in the input image)。
对于每一次预测,水平位置(x坐标)和k-anchor位置是固定的,且可以预先计算出来(通过conv5与input image的对应关系)。检测器为每一个窗口位置的k个anchors输出文本/非文本分数且预测y坐标。
2. Recurrent Connectionist Text Proposals
文本具有很强的序列化特征,对于做出可靠的决定起到至关重要的作用。参考recurrent neural network(RNN)。
在conv5层上设计一个RNN层,将每个窗口的卷积特征作为序列化输入,往复式更新隐藏层的内部权重Ht。
为RNN层使用双向LSTM结构,避免梯度消失问题。
减少误检,恢复含有较弱文本信息的text proposals
3. side-Refinement
文本行构造算法:
先建图:确定每一个文本行由哪些text proposals组成:1)对于每一个proposal i,正向找到符合条件的可能相邻proposals j,挑出分数最大的;2)对于(每一个)可能的相邻proposal j,判定是否是与i一对连续节点,即反向寻找符合条件的proposal k,取出最大值,判断score[i]>score[k]
只在连接好的文本行中最左/右的proposal上起作用
Model Outputs and Loss Functions
三个输出:
- 文本/非文本分数
- 垂直坐标和中心高度
- side-refinement offset
k个anchors,分别得到2k,2k,k个输出。每个anchor是一个训练样本,通过iou判断前景/背景,对前景进行训练。