具有可微二值化的实时场景文本检测
- 论文:Real-time Scene Text Detection With Differentiable Binarization
- 创新点:提出了“可微分二值化”(Differentiable binarization)模块。对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,最终的输出图对于阈值就会非常鲁棒。
背景
近年来,由于分割结果可以更准确地描述各种形状的场景文本,基于分割的方法在场景文本检测中非常流行。然而,大多数基于分段的方法都需要复杂的后处理,将分割方法产生的概率图转换为文本的边界框/区域,导致推理过程中的时间成本相当大。e.g. PSENet (Wang et al . 2019a)提出了渐进式尺度扩展的后处理,以提高检测精度;像素嵌入(Tian et al . 2019)基于分割结果对像素进行聚类,需要计算像素之间的特征距离。
解决问题
现有的检测方法大多采用类似的后处理流程(蓝色):首先设置一个固定的阈值,将分割网络产生的概率图转换为二值图像;然后,使用一些启发式技术,如像素聚类,将像素分组到文本实例中。本文使用方法(红色)旨在将二值化操作插入到分割网络中进行联合优化。这样可以自适应地预测图像中每个位置的阈值,可以充分区分前景和背景像素。
本文提出了可微的DB模块,将二值化操作插入到分割网络中进行联合优化,使得CNN的二值化过程端到端可训练。将简单的语义分割网络与DB模块相结合,提出了一种鲁棒、快速的场景文本检测器。
模型框架
- 整体流程:
- backbone网络提取图像特征
- 类似FPN网络结构进行图像特征融合后得到两个特征图probability map跟threshold map
- probability map与threshold map两个特征图做DB差分操作得到文字区域二值图
- 二值图经过cv2轮廓得到文字区域信息
- 训练阶段:首先,图片通过特征金字塔结构的backbone,通过上采样的方式将特征金字塔的输出变换为同一尺寸,并级联产生特征F;然后,通过特征图F预测概率图(P — probability_map)和阈值图(T — threshold_map); 最后,通过概率图P和阈值图T生成近似的二值图(B — approximate_binary_map)。
- 推理阶段:由于threshold map的存在,probability map的边界可以学习的很好。直接由P经过标准二值化(t=0.2)处理得到B’,再扩张可得到最终检测结果,而无需求得T和B。扩张系数D’通过B’的周长L’和面积A’得到: D ′ = A ′ × r ′ L ′ D' = \frac{A'×r'}{L'} D′=L′A′×r′,设定 r ′ = 1.5 r'=1.5 r′=1.5(对应收缩的比例0.4)。
在训练阶段,监督被应用在阈值图、概率图和近似的二值图上,其中后两者共享同一个监督;在推理阶段,则可以从后两者轻松获取边界框。
可变形卷积
可变形卷积可以为模型提供一个灵活的接受域,这对极端宽高比的文本实例尤其有利。输入特征(CxHxW)首先经过一个标准卷积,得到offset field(2NxHxW),对于3x3可变卷积来说,N=9,因为卷积为9个点。之后将原本的输入特征与求得的其对应的偏移量offsets一起进行一个可变卷积,可得到最后的输出特征。
标签制作
- probability map:使用 Vatti clipping 算法对多边形进行缩放,形成Gs,即缩小版的多边形的 gt mask 图,probability map 的蓝色边界;收缩偏移量D通过原始多边形的周长L和面积A得到: D = A ( 1 − r 2 ) L D =\frac{ A(1 − r^2)}{ L} D=LA(1−r2),r是缩放比例,一般取值为0.4。probability map 的 gt 是一个完全的 0,1 mask,polygon 的缩小区域为1,其他背景区域为0。
- threshold map:以同样的偏移量D从G拓展到Gd,得到 threshold_map 中的绿色边界,threshold_map 中由Gs到Gd之间形成了一个文字区域的边界。threshold_map 文字边框值并非0,1。
可微二值化 DB
B
i
,
j
=
1
1
+
e
−
k
(
P
i
,
j
−
T
i
,
j
)
B_{i,j} = \frac{1}{1 + e^{−k(P_{i,j}−T_{i,j} )}}
Bi,j=1+e−k(Pi,j−Ti,j)1该公式借鉴了 sigmod 函数的形式(sigmod 函数本身就是将输入映射到0~1之间),所以将概率值P与阈值T之间的差值作为 sigmod 函数的输入,然后再经过放大系数k,将其输出无限逼近两个极端0或者1。
对于一张图片P,设定像素点(i,j)的阈值为T(i,j),若像素值P(i,j)>阈值T(i,j),则二值化为一个接近1的数,不然二值化为一个接近0的数。
对于二元交叉熵BCE损失:
L
=
−
[
y
l
o
g
y
^
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
]
L=-[ylog\hat{y}+(1-y)log(1-\hat{y})]
L=−[ylogy^+(1−y)log(1−y^)]假设l+代表了正样本,y=1;l−代表了负样本,y=0。则:
l
+
=
−
l
o
g
1
1
+
e
−
k
x
l_+=-log\frac{1}{1+e^{-kx}}
l+=−log1+e−kx1
l
−
=
−
l
o
g
(
1
−
1
1
+
e
−
k
x
)
l_-=-log(1-\frac{1}{1+e^{-kx}})
l−=−log(1−1+e−kx1)考虑反向传播过程,对其求导:
∂
l
+
∂
x
=
−
k
f
(
x
)
e
−
k
x
\frac{\partial{l_+}}{\partial{x}}=-kf(x)e^{-kx}
∂x∂l+=−kf(x)e−kx
∂
l
−
∂
x
=
k
f
(
x
)
\frac{\partial{l_-}}{\partial{x}}=kf(x)
∂x∂l−=kf(x)
图b表示的是正样本,在x>0时有P(i,j)>T(i,j)即预测正确;x<0时有P(i,j)<T(i,j)即预测错误。而对比k=50和k=1,可以发现k=50时对预测错误的梯度的增加是显著的。图c同理,因此k的取值可以促进优化从而产生更好的预测结果。
损失函数
总损失可以表示为概率图损失Ls,二值图损失Lb和阈值图损失Lt的加权和,设定α=1,β=10: L = L s + α × L b + β × L t L=L_s+α×L_b+β×L_t L=Ls+α×Lb+β×LtLs和Lb使用BCE损失,使用hard negative mining方法来解决正负例(文字区域和非文字区域)不均衡的问题,Sl是正负比=1:3的采样集合: L s = L b = ∑ i ∈ S l y i l o g x i + ( 1 − y i ) l o g ( 1 − x i ) L_s = L_b = \sum_{i∈S_l} y_i log x_i + (1 − y_i) log (1 − x_i) Ls=Lb=i∈Sl∑yilogxi+(1−yi)log(1−xi)Lt使用L1距离,Rd是预测得到的Gd内部的像素索引集合(绿框内部所有区域),y是对应位置的label。 L t = ∑ i ∈ R d ∣ y i ∗ − x i ∗ ∣ L_t = \sum_{i∈R_d} |y_i^∗ − x_i^* | Lt=i∈Rd∑∣yi∗−xi∗∣ Rd是预测得到的Gd内部的像素索引集合(绿框内部所有区域),y是对应位置的label。
实验
数据集
- SynthText:由8k背景图像合成的80万张图像,用于预训练。
- MLT-2017 dataset:多语言数据集,7200张训练图像,1800张验证图像和9000张测试图像,同时使用训练集和验证集。
- ICDAR 2015 dataset:由谷歌眼镜捕获,分辨率720×1280,1000张训练图像和500张测试图像。文本实例在单词级别被标记。
- MSRA-TD500 dataset:多语言数据集。有300个训练图像和200个测试图像。包含来自HUST-TR400 的额外400张训练图像。文本实例在文本行级别被标记。
- CTW1500 dataset:专注于曲线文本,1000张训练图像和500张测试图像。文本实例在文本行级别被标记。
- Total-Text dataset:各种形状的文本,1255张训练图像和300张测试图像。文本实例在单词级别被标记。
实验细节
使用 SynthText 数据集进行100k次迭代的预训练。在相应的数据集上对模型进行了1200个epoch的微调,训练批大小为16。遵循多学习率策略,当前迭代的学习率等于初始学习率×
(
1
−
i
t
e
r
m
a
x
_
i
t
e
r
)
p
o
w
e
r
(1-\frac{iter}{max\_iter})^{power}
(1−max_iteriter)power,其中初始学习率为0.007,power为0.9。权重衰减为0.0001,momentum为0.9。max_iter表示最大迭代,这取决于最大epoch。
数据增强包括:随机旋转,角度范围为(−10°,10°);随机裁剪;随机翻转。图像重新调整为640×640,以提高训练效率。
推理期间,保持测试图像的长宽比,并通过为每个数据集设置合适的高度来重新调整输入图像的大小。单个线程中使用单个1080ti GPU,批量大小为1的情况下测试推理速度。推理时间成本包括模型正向时间和后处理时间成本。后处理时间成本约为推理时间的30%。
指标
精度 Precision:预测为正的样本中有多少是真正的正样本。
召回率 Recall:样本中的正例有多少被预测正确了。
F值 F-measure:综合考虑P和R。
速度 FPS:每秒帧率。
消融实验
-
可微二值化、可变形卷积
-
阈值图的监督、骨干网络
- 对比先前模型:
- 弯曲文本检测
- 多方向文本检测
- 多语言文本检测
局限性
不能处理文本中的文本。这是基于分割的场景文本检测器的常见限制。