Introduction
Aster算法包括两个部分,矫正网络和识别网络
1. 矫正部分
(1)矫正部分负责把输入图像不规则的文本区域变换成规则的文本区域图像
(2)矫正网络采用STN+TPS变换方式,通过STN网络预测出TPS变换的控制点,计算出TPS变换参数,然后完成变换过程
(3)矫正网络无需标注,可以连同识别部分进行反向传播,完成梯度下降
2. 识别部分
(1)识别部分是基于Attention机制的sequence-to-sequence网络结构
(2)识别部分有效地将字符检测、字符识别、语言模型封装到一个模型中
(3)解码部分将传统的单向解码调整为联合的双向解码,包含两个反向的解码器,两个解码器的输出合并为最终的结果
3. 主要创新点:
(1)提出矫正网络显式的修正不规则文本,对STN网络进行改善,采用不同分辨率的图像用来进行控制点的预测和采样,解决此前STN网络生成的矫正图分辨率降低的问题,同时抛弃了定位网络中非线性激活函数,保留反向传播梯度,加速了网络的收敛
(2)识别部分采用双向解码器,充分利用到不同方向的序列依赖特征信息
(3)提出一种借助ASTER文本矫正和文本识别来强化文本检测的方法
Model
1. 矫正网络
矫正网络负责对输入的非规则图像变换为规则的文本图像,借助TPS算法支持透视、弯曲、扭曲等各种情形下的变换
(1)TPS算法
此部分知识点参考链接:https://blog.csdn.net/VictoriaW/article/details/70161180
对于2维空间的点
X
(
x
,
y
)
X(x,y)
X(x,y),给定变换之后的坐标点
Y
(
x
,
y
)
Y(x,y)
Y(x,y),需要找到这么一个插值函数
Φ
\Phi
Φ,使得经过插值函数后的坐标值
Φ
(
X
)
=
Y
\Phi(X) = Y
Φ(X)=Y。
因为是二维空间,因此插值函数
Φ
(
x
)
=
[
Φ
1
(
x
)
Φ
2
(
x
)
]
\Phi(\bf x)=\left[ \begin{matrix} \Phi_1(\bf x) \\ \Phi_2(\bf x)\end{matrix}\right]
Φ(x)=[Φ1(x)Φ2(x)]
其中
Φ
1
\Phi_1
Φ1和
Φ
2
\Phi_2
Φ2分别代表了两个坐标维度,TPS插值函数的定义形式如下(弯曲能量最小原则):
Φ
(
x
)
=
c
+
a
T
x
+
w
T
s
(
x
)
\Phi(\bf x)=c + \bf a^T \bf x + {\bf w}^T {\bf s}(\bf x)
Φ(x)=c+aTx+wTs(x)
其中
c
c
c是标量,
a
∈
R
2
×
1
\bf a \in \mathbb R^{2 \times 1}
a∈R2×1,向量
w
∈
R
N
×
1
\bf w\in \mathbb R^{N\times 1}
w∈RN×1,函数向量
s
(
x
)
=
(
σ
(
∣
∣
x
−
x
1
∣
∣
)
,
σ
(
∣
∣
x
−
x
2
∣
∣
)
,
⋯
,
σ
(
∣
∣
x
−
x
N
∣
∣
)
)
T
\bf s(\bf x)=(\sigma(||\bf x -\bf x_1||), \sigma(||\bf x -\bf x_2||), \cdots, \sigma(||\bf x -\bf x_N||))^T
s(x)=(σ(∣∣x−x1∣∣),σ(∣∣x−x2∣∣),⋯,σ(∣∣x−xN∣∣))T
其中
σ
(
r
)
=
r
2
l
o
g
r
\sigma(r)=r^2logr
σ(r)=r2logr,是径向基函数核
TPS插值函数有N+3个参数,但是对于变换前后所对应的N个坐标相当于只有N个约束条件,因此还需要添加额外三个约束条件
(1)
∑
k
=
1
N
w
k
=
0
\sum_{k=1}^N w_k = 0
∑k=1Nwk=0, (2)
∑
k
=
1
N
x
k
x
w
k
=
0
\sum_{k=1}^N {\bf x}_k^x w_k =0
∑k=1Nxkxwk=0, (3)
∑
k
=
1
N
x
k
y
w
k
=
0
\sum_{k=1}^N {\bf x}_k^y w_k = 0
∑k=1Nxkywk=0
其中
x
k
x
,
x
k
y
x^x_k, x^y_k
xkx,xky分别代表
x
\bf x
x的
x
x
x坐标值和
y
y
y坐标值
再加上等式
Φ
(
x
k
)
=
y
k
\Phi({\bf x}_k) = {\bf y}_k
Φ(xk)=yk
矩阵形式可以表示为:
[
S
1
N
X
1
N
T
0
0
X
T
0
0
]
[
w
c
a
]
=
[
Y
0
0
]
\begin{bmatrix} S & 1_N & X\\ 1_N^T & 0 &0\\X^T & 0 & 0\end{bmatrix}\begin{bmatrix} \bf w \\ c\\\bf a\end{bmatrix}=\begin{bmatrix} Y\\ 0\\0\end{bmatrix}
⎣⎡S1NTXT1N00X00⎦⎤⎣⎡wca⎦⎤=⎣⎡Y00⎦⎤
令
Γ
=
[
S
1
N
X
1
N
T
0
0
X
T
0
0
]
\Gamma =\begin{bmatrix} S & 1_N & X\\ 1_N^T & 0 &0\\X^T & 0 & 0\end{bmatrix}
Γ=⎣⎡S1NTXT1N00X00⎦⎤
当
S
S
S为非奇异矩阵时,
Γ
\Gamma
Γ也是非奇异矩阵,因此存在唯一解:
[
w
c
a
]
=
Γ
−
1
[
Y
0
0
]
\begin{bmatrix}\bf w\\ c \\ \bf a\end{bmatrix}=\Gamma^{-1}\begin{bmatrix} Y\\ 0\\0\end{bmatrix}
⎣⎡wca⎦⎤=Γ−1⎣⎡Y00⎦⎤
至此插值函数的参数均可以求解出来
回到论文当中,整个矫正模块如下图所示
对于输入图像
I
I
I,经过resize后得到
I
d
I_d
Id,经过定位网络回归出K个控制点(超参数),矫正图像的K个控制点默认位于图像的上下边缘等间距排列,如下图所示对应关系,
p
i
′
p^{'}_i
pi′经过变换后位于矫正图像的
p
i
p_i
pi点,依据变换前后的坐标,便可以求解出变换参数值
看懂上面的TPS计算过程,就不难理解论文中最终推导出的结果
在得到变换参数T后,便可以根据坐标
p
p
p计算出
p
′
p'
p′,根据
p
′
p'
p′的坐标值,采用插值算法完成图像的采样过程,得到最终的校正图像,论文中采用的是双线性插值算法
I
r
=
V
(
P
,
I
)
I_r = V (P, I)
Ir=V(P,I)
(2)与STN和RARE比较
相较于STN做了两个地方的改进:1. 定位网络的训练以及图像采样都是在不同尺寸的输入图像上进行的,定位网络的输入图像是resize后的图像
I
d
I_d
Id,为了减少模型参数,采样则是在原图上进行,由于原图分辨率较高,因此,得到采样后的矫正图也保证了图像质量 2. 在STN网络中应用了TPS算法
相较于RARE论文,移除了定位网络中的最后一个全连接层中的tanh激活函数,改用clip的方法进行坐标点的约束,保证回归的坐标点均在图像范围内,此改进加速了网络的收敛,同时也降低了网络对初始参数的敏感度
2. 识别网络
论文采用sequence-to-sequence结构,采用这一结构的好处是网络可以捕捉到字符之间的依赖,从而在识别过程中充分考虑到上下文信息进行决策,整个网络结构如下图所示,分为encoder和decoder两个部分
(1) Encoder: Convolutional-Recurrent Neural Network
Encoder模块由矫正网络,特征提取网络以及双向LSTM 网络构成,矫正网络上面已经介绍,特征提取网络是通过卷积神经网络进行图像的特征学习,网络输入为矫正后的图像,输出为高度为1的特征图,再经过多层双向LSTM网络进行处理,捕获图像之间的上下文信息。经由LSTM网络的输出特征图尺寸为
h
c
o
n
v
×
w
c
o
n
v
×
d
c
o
n
v
h_{conv} × w_{conv} × d_{conv}
hconv×wconv×dconv,输出记为
H
=
[
h
1
,
h
2
,
.
.
.
,
h
n
]
H=[h_1, h_2,...,h_n]
H=[h1,h2,...,hn],其中
n
=
w
c
o
n
v
n=w_{conv}
n=wconv
(2) Decoder: Attentional Sequence-to-Sequence Model
Decoder采用基于Attention的sequence-to-sequence模型,在t时刻,根据下面公式计算当前时刻编码层的注意力权重系数
其中
s
t
−
1
s_{t-1}
st−1表示前一时刻输出的隐藏层,
w
,
W
,
V
w, W, V
w,W,V均是待训练的参数,权重系数代表了编码层不同位置对当前时刻解码的影响因子
根据权重系数,计算t时刻编码层输出的加权和
最后结合前一时刻的预测值
y
t
−
1
y_{t-1}
yt−1,对当前时刻进行字符预测
r
n
n
rnn
rnn采用不同网络结构对应其计算方式,常见的有LSTM,GRU等
在论文中,采用双向LSTM解码结构,解决字符预测中的双向依赖问题,分别预测从左到右以及从右到左的结果,选取得分最高的作为最终结果
(3)Training
损失函数定义如下:从左到右与从右到左的损失均值
EXPERIMENTS
1.网络配置
在进入矫正网络之前,图像被resize到64x256尺寸,经过矫正网络后输出的矫正图像尺寸为32x100,同时作为识别网络的输入
2. 矫正实验
做了一组对比实验,分别是无矫正网络和有矫正网络,实验结果如下表
矫正对一般水平样本(IIIT5k,IC03,IC13)有1到2个点的提升,但是对形变比较大的不规则样本(SVT,SVTP,CUTE)提高3到4个点
还有一个现象是,经过矫正后的输出图像更加倾向于倾斜的文本,猜测是倾斜的文本更容易学习,因为倾斜的文本在纵轴上存在重叠的关系,相当于潜在的引入了字符之间的依赖
3.其它实验
- 双向解码比单向解码整体效果要好,单向从左到右和从右到左效果接近
- 0~11个字符长度效果接近,高于这个长度单词识别效果下降
- 固定尺寸虽然会导致部分图像失真,但是由于训练集和测试集采用相同的处理方式,因此整体影响不大,采用先resize再填充的方式性能反而下降
END-TO-END RECOGNITION
Aster能够强化检测模型,一方面是通过Aster的识别结果得分可以过滤掉部分误检框,其次在加入矫正模块后,可以对检测框进行修正,使得框更加贴近文本。下图实验分别代表TextBoxes检测器对比加上Aster(不含矫正模块和包含矫正模块)的对比实验,效果提升明显
资料
论文地址:https://ieeexplore.ieee.org/abstract/document/8395027
git地址:https://github.com/ayumiymk/aster.pytorch