论文传送门:Detecting Text in Natural Image with Connectionist Text Proposal Network
1 摘要
我们提出一个新颖的级联文本推荐网络(Connectionist Text Proposal Network, CTPN),该网络可精确定位自然场景中的文本位置.CTPN直接在卷积特征映射中检测一系列精细文本域中的文本行,并开发了一种垂直标注点机制,即把预测的位置和每个固定宽度的文本/非文本的分数联合起来以期提高定位精度.将循环神经网络连接的文本序列与卷积神经网络无缝连接,可以训练一个端到端的模型,可使CTPN更有效的检测图像中的丰富的文本信息和模糊的文本.CTPN在多尺度和多语言文本检测十分可靠,并且不需要后处理,放弃了以前需要多步后过滤自上而下的方法.在ICDAR2013,2015基准中达到了0.88和0.61的F-meature,远超近期研究,使用VGG16模型,CTPN的计算效率是每张图0.14秒.已经过期的域名:http://textdet.com
2 图像文字提取
2.1 文字提取流程
【说明】
输入图像为镜头拍摄的图像,因为算法生成的图像与镜头实际拍摄的图像处理结果不同,且相差很远;
图像预处理包括去噪,矫正等;
对图像中的信息进行行列分割
利用分割出的图像碎片,拆分出字符
对分割后的字符进行处理,最后输出识别出的字符
2.2 文字检测
级联文本评估网络检测图像文字(Detecting Text in Natural Image with Connectionist Text Proposal Network, CTPN)可有效提取自然环境中的文字,网络结果如图2.1所示。
2.2.1 算法步骤
VGG16前5个卷积组(conv5)提取图像特征feature1,尺寸为:高×宽×深度(H*W*C)
过滤窗口(尺寸3×3)提取feature1的图像特征,得到feature2,利用这些特征对多个锚点进行预测,锚点即文字目标所在的区域
将feature2作为BLSTM输入,输出特征W*256
连接到512维的全连接层,输出W*512
通过回归得到文字选择框的高度和中心y轴坐标(2k vertical),k个边框类别信息,表明是否为字符及选择框的水平偏移量
将得到的文字框合并,获取文本序列框
2.2.2 小尺寸内检测文本
与区域预测网络(Region Proposal Network, RPN)类似,CTPN本质上是一个完整的卷积神经网络,允许使用任意尺寸的输入图像,通过在卷积特征映射中密集滑动窗口检测文本行,并输出精细化序列的文本区域,如图2.2所示。我们使用VGG16作为神经网络骨架,使用
3
×
3
3×3
3×3的窗口在最后的卷积特征图中提取数据,如第五卷积层(conv5),第五卷积层的尺寸由输入图像决定,但是总滑动步长和感受野窗口分别固定为16和228像素。总滑动步长和感受野通过神经网络结构固定,在卷积层中使用滑动窗口共享卷积计算,这是减少计算的基本方法。
一般情况下,滑动窗口方法适应多尺寸窗口检测不同尺寸的目标,这里一个窗口区域对于相似尺寸的目标是固定的。文献Ren et al. 提出一个有效的标注点回归机制是允许RPN用单一尺度的窗口检测多尺寸的目标,关键在于单一的窗口使用大量的变化的标注点在大范围内和长宽比的情况下预测目标,我们希望在我们的文本任务中提高该标注机制的效能,然而文本与普通物体不同点在于物体通常具有定义好的边框和中心点,可以从这些部分预测整个目标。文本序列没有明显的边框,他们或许由多级组成,如笔画、字符、单词文本行和文本区域,不能很明显的区分他们,文本检测是字符或文本行级别,因此使用单一的目标去检测其余部分的字符很容易检测错误,因此直接预测文本行或字的位置是困难且不可靠的。
我们寻找一个独特的文本属性可以在所有层次上生成文本元素,我们研究发现RPN在检测垂直方向的文字是困难的,因为每个字符包含的字是独立的或级联的,使检测使寻找单词的期待和终点变得很混乱。很自然会想到将文本行作为一个细粒度的序列,每个区域表示文本行的一小部分,如将文本行切分为16像素宽度的小块。每个区域可能包含一个或多个笔画的手写字体,部分字符,单个或多个字符,等等。我们认为每个区域只预测垂直位置准确度会更高,而固定水平位置较难预测。与RPN预测4为的目标相比,分割区域的方法可减少搜索空间,我们开发一个垂直标注点的机制同时预测文本/非文本分数和每个细粒度区域y轴坐标,这样检测通用固定宽度文本区域比比单独识别字符更加可靠,并且,在固定文宽度域的序列中检测文本行对多尺寸和不同纵横比的字符同样是可靠的。
最后,我们设计了如下的细粒度文本域检测。我们的检测器在第五卷积层空间的每个位置进行密集检测,文本域固定宽度为16像素,这和在第五卷积层的特征映射中密集移动检测器总部长16像素是相同的,即每个框移动步长为1像素,总共移动16步。然后设计k个垂直方向的标注点为每个区域预测y坐标,k个标注点水平位置固定宽度为16像素,但是他们的垂直位置由k个不同的值,我们的实验中设定k=10。
将候选区域分割成矩形框进行处理,k个矩形框设置:宽度为16pixel,高度从11~273pixel变换,每次除以0.7,k值设定为10,y轴坐标为:
v
c
=
(
c
y
−
c
y
a
)
/
h
a
,
v
h
=
l
o
g
(
h
/
h
a
)
v_c=(c_y-c_y^a)/h^a, v_h=log(h/h^a)
vc=(cy−cya)/ha,vh=log(h/ha)
v
c
∗
=
(
c
y
∗
−
c
y
a
)
/
h
a
,
v
h
∗
=
l
o
g
(
h
∗
/
h
a
)
v_c^*=(c_y^*-c_y^a)/h^a, v_h^*=log(h^*/h^a)
vc∗=(cy∗−cya)/ha,vh∗=log(h∗/ha)
其中,
v
=
v
c
,
v
h
v={v_c,v_h}
v=vc,vh和
v
∗
=
v
c
∗
,
v
h
∗
v_*={v_c^*,v_h^*}
v∗=vc∗,vh∗分别为预测的相对位置和标注位置,
c
y
a
c_y^a
cya为标注框y轴中心,
h
a
h^a
ha为标注框高度这些参数从输入图像的预处理中获取。
c
y
c_y
cy和
h
h
h为输入图像的预测y轴坐标,KaTeX parse error: Double subscript at position 4: c_y_̲*和
h
∗
h_*
h∗是标注框坐标。因此,每个预测框有一个h×16的边框,一般文本预测比有效接受域小得多。
每次预测水平位置(x坐标)和k个文本区域是固定的。检测结果为文本或非文本区域的分数和预测的y坐标,检测的文本区域来自于分数大于0.7的文本或非文本区域。设计垂直区域和小尺寸检测策略,检测器可以通过处理大尺寸的文本和单一尺度处理纵横比。这可以进一步减少计算量同时预测文本行位置的定位精度。
2.2.3 循环级联文本预测
为提高定位精度,将文本区域拆分成小尺寸序列,并对每块进行预测。显然,对每个隔离区域的进行独立地处理鲁棒性较弱,这样会导致相似结构区域检测失败,也可能忽略一些不明显的文字,文字有较强的序列特征该序列是进行有效预测的重要依据,最近的研究表明,循环神经网络可以对文本序列信息进行高效编码,这些结果证明了文本序列信息对图像分割任务可有效识别。
文本信息直接在卷积网络中进行编码,产生美观且无缝连接的小尺寸的文本区域。RNN利用隐藏层为文本信息循环编码的提供自然选择,在第五卷积层上设计一个RNN层,该层使用每个窗口的卷积特征作为输入,更新内部隐藏层的循环状态,
H
t
H_t
Ht:
H
t
=
φ
(
H
t
−
1
,
X
t
)
,
t
=
1
,
2
,
.
.
.
,
W
H_t=\varphi(H_{t-1}, X_t), t=1,2,...,W
Ht=φ(Ht−1,Xt),t=1,2,...,W
其中,
X
t
∈
R
3
×
3
×
C
X_t\in R^{3×3×C}
Xt∈R3×3×C是第五卷积特征第t个滑动窗口,滑窗从左向右密集移动,每行产生t个序列特征,W是卷积宽度,
H
t
H_t
Ht是内部循环状态,该状态由当前输入(
X
t
X_t
Xt)和前一个编码状态(
H
t
−
1
H_{t-1}
Ht−1)计算而来,循环使用非线性函数
φ
\varphi
φ计算,非线性函数定义了循环模型的具体形式,循环网络层使用长短时记忆结构(Long short-term Memory,LSTM),LSTM引入三个额外的乘法门:输入门,遗忘门和输出门,专门用于解决梯度消失问题,因此RNN隐藏层的内部状态先前所有的窗口通过循环连接扫描获取序列化的文本信息,通过双向LSTM扩展RNN层,BLSTM可实现从两个方向对文本进行编码,因此级联可接受域可以覆盖整张图片的宽度,如228*width,LSTM使用128维度的隐藏层,产生256维度的RNN隐藏层,其中
H
t
∈
R
256
H_t\in R_{256}
Ht∈R256.
H
t
H_t
Ht的内部状态映射到全连接层(Full Connection, FC),,输出层计算第t个区域预测值,所以,我们集成的RNN层是非常优雅的,也使得RNN连接非常高效。减少了检测错误并且对模糊的文本也实现了很好的检测。
2.2.4 边缘优化
小尺寸的文本区域的检测精度和可靠性依赖于CTPN,文本行结构是直接连接连续的文本区域,该区域(有文本或无文本)分数大于0.7,文本行结构如下:
首先为区域
B
i
B_i
Bi定义一个匹配的邻域
B
j
B_j
Bj表示为
B
j
−
>
B
i
B_j->B_i
Bj−>Bi,同时满足:
B
j
B_j
Bj是距离
B
i
B_i
Bi最近的水平距离;该距离小于50pixels;垂直重叠区大于0.7,如图2.3所示;
齐次,如果
B
j
−
>
B
i
B_j->B_i
Bj−>Bi和
B
j
−
>
B
i
B_j->B_i
Bj−>Bi两个区域为一对。
最后,文本行通过序列化连接具有满足邻域的区域构建。
小区域检测和RNN连接可以准确预测的垂直方向的位置,水平方向图像分割成16-pixel等宽的区域,这样当文本两边水平区域没有和标注框完全对应或边缘区域被忽略时定位精度降低,如图2.4所示。
这样的低精度在通用文本检测中或许不重要,但是在文本检测中不能忽略,特别是在一些小尺寸文本行或字的情况。为解决这个问题,我们提出边缘优化的方法来准确评估每次标注点或区域水平方向的左右偏移,类似于y坐标的预测,计算相对偏移如下方法:
o
=
(
x
s
i
d
e
−
c
x
a
)
/
w
a
,
o
∗
=
(
x
s
i
d
e
∗
−
c
x
a
)
/
w
a
o=(x_{side}-c_x^a)/w^a, o^*=(x_{side}^*-c_x^a)/w^a
o=(xside−cxa)/wa,o∗=(xside∗−cxa)/wa
其中,
x
s
i
d
e
x_{side}
xside为预测的距离当前标注点水平方向最近的x坐标,
x
s
i
d
e
∗
x_{side}^*
xside∗为x轴的真实边的坐标,该坐标是由标注框和标注点的位置计算获得。
c
x
a
c_x^a
cxa是x轴标注点的中心。
w
a
w^a
wa是标注框的宽度,固定为16pixels。当我们将检测到的相邻小区域序列连接为文本行时,标注框区域的边定义为文本行区域的开始区域和结束区域,我们只使用标注框区域边的偏移重新定义最终的文本行标注框,如图2.3显示,重新定义的区域边界进一步提高了定位精度,在SWT和多语言数据集中定位精度提高了2%,值得注意的是,重定义的边界偏置是如图2.1的模型同时预测的,不是后处理获得的。
2.2.5 输出模型和损失函数
CTPN有三个输出,这三个输出与最后的全连接层相连,如图2.1所示,模型同时预测的三个输出分别为,预测文本/非文本分数,垂直坐标(v={v_c, v_h})和重定义的文本边界偏移(o),我们利用k个标注点预测他们在第五卷积层的每一个特定位置,响应的输出层结果参数为2k个,2k个和k个。
我们使用多任务学习联合优化模型参数,三个损失函数表示为:
L
s
c
l
,
L
v
r
e
L_s^{cl},L_v^{re}
Lscl,Lvre和
L
o
r
e
L_o^{re}
Lore,分别计算文本/非文本分数误差,坐标误差和重定义边界误差,表示如下:
L
(
s
i
,
v
j
,
o
k
)
=
1
N
s
∑
i
L
s
c
l
(
s
i
,
s
i
∗
)
+
λ
1
N
v
∑
j
L
v
r
e
(
v
j
,
v
j
∗
)
+
λ
2
N
o
∑
k
L
o
r
e
(
o
k
,
o
k
∗
)
L(s_i, v_j, o_k)=\frac{1}{N_s}\sum_iL_s^{cl}(s_i, s_i^*)+\frac{\lambda_1}{N_v}\sum_jL_v^{re}(v_j, v_j^*)+\frac{\lambda_2}{N_o}\sum_kL_o^{re}(o_k, o_k^*)
L(si,vj,ok)=Ns1i∑Lscl(si,si∗)+Nvλ1j∑Lvre(vj,vj∗)+Noλ2k∑Lore(ok,ok∗)
其中,每个标注点都是训练样本,
i
i
i为批量数据中标注点的索引,
s
i
s_i
si为预测第
i
i
i个标注点为真实文本的概率,
s
i
=
0
,
1
s_i={0, 1}
si=0,1为真实标注值;
j
j
jy坐标回归中一组有效标注点的索引,有效的标注点定义为正标注点(
s
j
∗
=
1
s_j^*=1
sj∗=1)或者交除并(IoU)>0.5即与真实标注文本框重合率大于50%的标注点;
v
j
v_j
vj和
v
j
∗
v_j^*
vj∗是第j个预测和标注的y坐标,
k
k
k是标注点边界的索引,标注点边界定义为一组标注点,标注点包含到文本真实标注框左边或右边的距离水平距离,
o
k
o_k
ok和
o
k
∗
o_k^*
ok∗为预测值和真实标注第k个标注点在x轴方向的偏移。
L
s
c
l
L_s^{cl}
Lscl是分类损失,使用Softmax损失鉴别字体和非字体;
L
v
r
e
L_v^{re}
Lvre和
l
o
r
e
l_o^{re}
lore是回归损失。
根据前人研究的工作,即通过平滑函数
L
1
L_1
L1计算这些损失,因此引入了
l
a
m
b
d
a
1
lambda_1
lambda1和
l
a
m
b
d
a
2
lambda_2
lambda2作为损失权重来平衡不同的任务,这些参数根据经验设定为[1.0, 2.0],
N
s
N_s
Ns,
N
v
N_v
Nv和
N
o
N_o
No分别表示
L
s
c
l
,
L
v
r
e
L_s^{cl},L_v^{re}
Lscl,Lvre和
L
o
r
e
L_o^{re}
Lore的正则化参数。
2.2.6 训练和应用细节
CTPN使用标准反向传播和随机梯度下降进行端到端训练,与RPN类似,训练样本是标注点,这些标注点的位置可以在输入图像中与计算得到,因此每个标注点的训练标签可以从真实标注框中计算获取。
【训练标签】
对文本和非文本分类使用二进制标签进行标注,文字标注为正,非文字标注为负。正负是通过计算真实标注值与的重叠区进行标注。定义为正面的两种情况:标注点与真实标注点的重叠率大于70%;与真实标注框有最高重合度的标注点;使用最高重合度的方法即使很小的字体也可分配一个正面的标注点,这对检测小尺寸的文本至关重要也是CTPN重要的优势之一。这个方法不同于一般的目标检测,一般的目标检测会忽略最高的重合度。y轴回归(
v
∗
v^*
v∗)和偏移回归(
o
∗
o^*
o∗)为训练标签。
【训练数据】
训练过程中,每组数据随机从单张图片中收集,每组数据的表述点固定位
N
s
=
128
N_s=128
Ns=128,其中正样本和负样本比例为1:1,如果每组数据的正面少于64个则使用负面数据补充,我们的模型使用3000张自然场景的图片进行训练,包括229张来自ICDAR2013年数据集的图片,我们收集图片并进行标注文字的位置,所有的私人收集的训练集与测试的数据集标注没有重复的,输入的图像经过裁剪,其短边调整为600并保持长宽比进行训练。
【应用】
我们依据标准做法,研究VGG16模型预处理ImageNet数据,通过使用标准差为0.01,均值为0的高斯分布随机初始化权重,通过固定前两个卷积层参数训练端到端模型,使用0.9的影子变量和0.0005的权重衰减,首次训练轮数为16K,学习率设置为0.001,第二次训练轮数为4K,学习率设置为0.0001,我们的模型用Caffe实现,并没有开源源码,哈哈哈。
3 实验结果
【参考文献】
[1]https://cloud.tencent.com/developer/article/1152494
[2]https://arxiv.org/pdf/1609.03605.pdf
[3]http://www.cnblogs.com/antflow/p/7278436.html