WordSup: Exploiting Word Annotations for Character based Text Detection
主要思想是,现存的字符级别的标定太少,引入弱监督来调整字符坐标的定位。
分为2大部分,character detector部分,得到的输出是字符对应的坐标。Text structure analysis部分,得到的是词的坐标(如果为词)。
1 Character Detector部分
该部分有两部分组成。Basic Character Detector部分和利用词坐标对字符坐标进行监督更新的部分。
1.1 Basic Character Detector
Basic Character Detector部分可以看作为预训练。网络设置如下:
- 预测使用原图1/4的尺寸的特征(因为很多情况文字在图片中的比例太小)。
- 将高层特征与底层特征融合,借鉴FPN,使用eltsum将两层的特征求和。(需要参数少)
- 最终的feature用于同时预测是否为文本(01)和标定框坐标回归。生成5k=(1+4)k个score map。1为是否为文本,4为坐标回归。K为anchor。K=3代表对角线长度为24、26、12像素的字符。字符的对角线是anchor的0.7~1.4的,视为正样本。(此处不是很明白,一个feature的像素对应5*3个label?)
- Two-level hard negative example mining approach:用于减少背景干扰,1)online hard negative mining,所有的正样本用于计算loss,负样本中只有top2评分的计算loss,正负比例为3:1。2)hard patch mining,当前模型的false positive样本在后续中增加采样的概率。
- 样本正负比例1:1。正样本为随机字符和anchor的裁剪,加入随机缩放和旋转。
- 10k次迭代后,加入hard patch mining,负样本中比包含当前的false positive样本。
- 多尺寸的图片,2{0,-1,-2,-3,-4,-5},用IoU阈值为0.5的NMS非极大值抑制来选择最终字符,因为anchor=3,此处必不可缺。
1.2 依据词坐标对字符坐标进行调整
Basic Character Detector训练一段时间后,在依据词坐标对字符坐标进行调整。词坐标做监督的部分主要为两步:
1)利用字符模型,自动依据词坐标生成Character mask;
2)用Character mask来更新词模型。此部分仅在训练阶段存在。
下面对两步进行展开:
1.2.1 生成Character mask:
- 根据当前字符模型,在词标定框中生成候选字符。
- 依据式(1)最大化,在候选字符中选择真实字符。
Bchars B c h a r s 为选择字符的标定框, Banno B a n n o 为词标定框,area(.)为面积, λ1 λ 1 和 λ2 λ 2 为选择字符中心坐标的协方差矩阵的第一第二大的特征值,w=0.5为权重。 s1 s 1 偏好选择的字符在词中占比例大, s2 s 2 偏好所有的字符在同一条直线上(s->max, λ2/λ1->min, λ2->min,即λ1>>λ2也就是说协方差只在一个方向上大)。 - s最大化方法为:
1) 利用式(2)计算出所有候选字符之间knn聚类后的pair weights,得到字符图G。
d¯ d ¯ 为knn节点之间的所有距离均值, ti t i 为候选字符 i i 的是否为字符的评分。
2)用字符图G得到最大生成树M。消除M中的一个边相当于是将字符分成2组。每一次分组我们选择式(1)计算的最大分数对应的组。贪婪分组,直到式(1)分数不再增加。
1.2.2 字符网络更新
损失函数为式(3)
L是一般的损失,s为式(1)的评分。
2 Text Structure Analysis
在上一步完成之后,再对得到的字符定位进行结构分析。首先是对字符进行聚类,再用个line model描述line,再讲line分成词。
2.1 字符聚类
将字符聚类成为一行或者一块。此处用一个更高维的损失,可以衡量3个字符之间的关系。且处理有方向的、变形的文本。
首先,用字符对作为knn的节点,字符对通过小空间距离(字符中心坐标的欧式距离和对角线长度)确定。图边为两对有共同字符的字符对。用unary损失即可描述字符与文本类型的关系,用贪婪损失最小实现字符聚类。
unary损失(对应为图中的点)为:
和
nr
n
r
为一个字符对中的两个字符,p(.)为是否为文本的评分,d(.)为欧式距离。
Pairwise损失(图的边)为:
θ(m,n)
θ
(
m
,
n
)
为字符对m和n的角度距离。
2.2 line model的估计和矫正
2.2.1 line model 估计
对于每一个字符组,用3个复杂度的line model去fit。0-order model为水平或者竖直的line model。1-order为任意角度的有方向的line。Piecewise linear model为代表一个text line的受限的多边形。
Text line是可表示为一组中心线 lin(i=1) l i ( i = 1 ) n 和一个高度值h, li=(ai,bi,ci) l i = ( a i , b i , c i ) 代表为 aix+biy+ci=0 a i x + b i y + c i = 0 的直线。对于0-order和1-order模型,用text line中全部的字符中心坐标估一个直线即可。Piecewise linear model需要为每一个字符分开估计N个线,用k=min(n,11)近邻(n=N,字符个数)。P为所有字符的顶点坐标,d(P, l_i)为p到直线l_i的距离。
模型的选择为最小化:
hm
h
m
为模型m的高度,越小说明拟合越好。
Cm
C
m
为模型m的复杂度惩罚,0-order、1-order和piecewise对应为1、1.2、1.4。
2.2.2 矫正
Line model确定了之后,需要将text line 矫正为32*W的带状图像。
1. 计算代表text line的多边形。每一个字符估计两个control point,对称落在中心线两边,两点连线过字符中心点。Control point为多边形边缘。
2. 用TPS做矫正,顶点作为控制点。
2.2.3 词分隔
并不是必要的,只是为了方便后面识别。
CNN-RNN(LSTM)做词空格检测,并以此作为词分隔。输入为矫正过的text line image。Conv1_1~conv3_3为7层卷积,得到特征图为1/4的原图尺寸。BLSTM为水平方向的预测,标签为是否是词分隔。
Text-Attentional Convolutional Neural Network for Scene Text Detection
主要思想是尽可能多的给模型相关的辅助标签。
首先使用CE-MSERs在图片中检测出候选字符元素,再使用Text-CNN筛除不是字符的元素。Text line合并。
1 CE-MSERs
为Contrast-Enhanced MSERs,解决了两个方面的MSERs的不足:1、背景干扰使得字符没有检测到;2、低对比度低质量的字符没有被检测到。解决方案如下:
文本区域内加强局部稳定性,即为加强区域的对比度。
- 聚类,全图依据对比度和空间特征聚类
- 融合所有因素形成contrast region
该方法可以加强显著大区域的对比度,但是会抛弃掉小的元素
增强小区域的对比度
- 计算non-contrast region的主要颜色
- 用色彩空间平滑方法,在目前non-contrast region内得到contrast region
- 1和2生成的contrast region map共同作用于原图,得到候选元素。
[49] H. Fu, X. Cao, and Z. Tu, “Cluster-based co-saliency detection,” IEEE Trans. Image Processing (TIP), vol. 22, no. 10, pp. 3766–3778, 2013.
[50] M.-M. Cheng, G.-X. Zhang, N. J. Mitra, X. Huang, and S.-M. Hu, “Global contrast based salient region detection,” 2011, in IEEE Computer Vision and Pattern Recognition (CVPR).
2 Text-CNN
多层强监督,需要label包括:text region segmentation、character label和binary text/non-text。是否为text为主模型,其他俩为辅助模型。
训练过程为multi-task learning(MTL),整体的损失函数看为式(2)
加号右边为辅助任务,是否为text分类、字符标签分类和字符区域回归的损失如下:
输入图像为 xi∈R(32×32×3) x i ∈ R ( 32 × 32 × 3 ) ,
是否为text分类 ybi={0,1}∈R2 y i b = { 0 , 1 } ∈ R 2
字符标签分类 yli={0...9,A...Z,a...z}∈R62 y i l = { 0...9 , A . . . Z , a . . . z } ∈ R 62
字符区域回归 yri={0,1}∈R32×32 y i r = { 0 , 1 } ∈ R 32 × 32 大小与输入图像一致,模型估计的是每一个像素为字符的概率。辅助任务只在训练过程中有。结构图:
有3层卷积,2层全连接,第2层卷积后面跟一个max pooling。第2层卷积之后分支出来,两层反卷积后得到32×32概率map。只用一个pooling是因为,pooling层是以牺牲空间信息为代价减少模型系数和复杂度,此处输入很小,不需要过多pooling。
- pooling不可逆,所以分支在pooling之前
- 训练过程从两个辅助任务开始,回归任务停止后再开始主任务。可以将辅助任务看作为是模型的预训练。
3 Text line 合并
- 相邻的元素组成字符对,根据水平位置、高度和方向等
- 字符对合并,如果包含同一个元素,且方向相同
- 根据字符之间的距离,text-line分为很多词
Text Flow: A Unified Text Detection System in Natural Scene Images
整体来说分为2步,用候选字符检测得到很多的字符框标定,然后通过最小化整体cost,同时完成筛选字符、找同一个text line的字符的工作。
1. 候选字符检测
参考X. Chen and A. Yuille. Detecting and reading text in natural scenes. In Computer Vision and Pattern Recognition (CVPR), pages 366–373, 2004. 2, 3
- 移动窗口的快速级联Adaboost。
- 此处特征只有6个:pixel intensity(像素取值)、水平和垂直的梯度、二阶梯度。(论文中说6个,但是看出来只有5个啊?)。
- 每一个像素都计算特征,窗口内的所有特征串联得到的特征向量,用于训练。此处在移动窗口中忽略大块的pattern。
- 正样本为标定的字符框,负样本为bootstrap过程中的误判。
- 此处的字符被看作为一个整体
- 检测的字符和标定IoU>0.5就算正样本,
2. Min-cost flow 网络
Flow network由source、sink、nodes和edges组成。每一个Edge 有flow cost和flow capacity表示flow通过这个边的成本和能否通过。Min-cost flow是指,一个flow从source到sink所需要的最小cost。Nodes代表候选字符,flows代表text line。
Network要解决4个问题:
1) 字符置信度
2) transition constraint(保证数据不会进入一个不可能的状态的限制)
3) 相邻字符的cost
4) 选择一个字符作为开始和重点的概率
前提假设:text line水平、从左到右,
提取text line 的任务可以用最小化cost来表示,四个cost为:
1) data cost:为字符的置信度
2) pairwise smoothness cost:两个相邻的字符为同一个text line的可能性
3) entry & exit cost:每个字符链接source和sink的cost
Smoothness cost对应的是连接两个相邻字符的边,每个字符都连接着source 和sink。
2.1 transition constraint
每一个字符A,下一个与其相邻的字符B的判定:
1. A和B之间的水平距离满足
H(A,B)/min(WA,WB)<TH
H
(
A
,
B
)
/
m
i
n
(
W
A
,
W
B
)
<
T
H
,此处
TH=2
T
H
=
2
2. A和B的竖直距离满足
V(A,B)/min(WA,WB)>TV
V
(
A
,
B
)
/
m
i
n
(
W
A
,
W
B
)
>
T
V
,
TV=0.6
T
V
=
0.6
3. A和B的尺寸相近程度满足
|(WA−WB)|/min(WA,WB)<TS
|
(
W
A
−
W
B
)
|
/
m
i
n
(
W
A
,
W
B
)
<
T
S
,
TS=0.2
T
S
=
0.2
阈值的选择需要靠训练数据集情况选择。
2.2Flow network costs
详细展开4个cost
2.2.1 data cost
C1(A)=−p(Text|A)
C
1
(
A
)
=
−
p
(
T
e
x
t
|
A
)
A为候选字符图片,
p(Text|A)
p
(
T
e
x
t
|
A
)
为A是为文本的概率。高的置信度对应text flow通过的cost低。
此处概率来自一个CNN分类网络,3层conv + max pooling + normalization,后加2层全连接和一个softmax。训练使用Adaboost生成的样本,IoU>0.5的为正样本。
2.2.2 smoothness cost
C2(A,B)=α∗D(A,B)+(1−α)∗S(A,B)
C
2
(
A
,
B
)
=
α
∗
D
(
A
,
B
)
+
(
1
−
α
)
∗
S
(
A
,
B
)
D(A,B)
D
(
A
,
B
)
为字符A和B中心的欧氏距离(nomalized by 他们窗口宽度的均值)。
S(A,B)
S
(
A
,
B
)
为A和B的大小的差别,
S(A,B)=|(WA−WB)|/min(WA,WB)
S
(
A
,
B
)
=
|
(
W
A
−
W
B
)
|
/
m
i
n
(
W
A
,
W
B
)
。
C2
C
2
大则说明A和B不像是相邻字符。此处
α
α
不敏感,可为[0.3,0.5],此处设为0.4。
2.2.3 entry & exit cost
每一个字符都有可能连接source和sink,但是有不同的概率。
Entry cost为:
j
j
代表所有能够到达A字符的字符(能够到达用transition constraint判断)。如果没有字符能到达A的。
Exit cost中的j表示为A字符能够到达的字符集合。
此处,
Cen(A)
C
e
n
(
A
)
不仅取决于A的空间位置,也取决于于其相关联的字符的置信度。
2.3Min-cost flow network 整体
2.3.1 全局损失公式
整个网络偏好组成的候选字符为有相近的大小、距离挨着比较近、判定为字符的置信度比较高。
C1(i)
C
1
(
i
)
为候选字符i的data cost,
C2(i,j)
C
2
(
i
,
j
)
为候选字符i和j的smoothness cost,
Cen(i)
C
e
n
(
i
)
和
Cex(i)
C
e
x
(
i
)
为
i
i
的entry cost和exit cost。
为过判断是否为字符的edge的flow数,
f(i,j)
f
(
i
,
j
)
过pairwise edge的flow数,
f(en,i)
f
(
e
n
,
i
)
为过source到点
i
i
的flow数,为过点
i
i
到exit的flow数。f均为0或1。
为所有从source到sink的所有可行路径。
β
β
不敏感,可为[1.5,2.5],此处设为2。
2.3.2 min-cost flow algorithm
如何求解单个flow的min-cost见A. V. Goldberg. An efficient implementation of a scaling minimum-cost flow algorithm. Journal of algorithms, pages 1–29, 1997. 5, 6
本network整体求最优的过程如下:
2.2.2中的设置和2.3.1中
β
β
<script type="math/tex" id="MathJax-Element-77">β</script>的设置,正确text line使得cost为负。
注意,在min-cost对应的那个flow中的那些字符,如果其他候选字符跟他们之间的iou>0.5,要删除那些候选字符。