文本检测模型 DBNet
DBNet文本检测模型是一种基于分割算法的模型,其优化之处在于对每个像素点进行自适应二值化,并将二值化过程与网络训练相结合。
传统的文本检测方法通常将二值化作为一个后处理步骤,与网络训练分开进行。而DBNet则提出了一种可微分的二值化方法,即将文本检测任务中的二值化过程与网络训练相结合。具体来说,DBNet算法的核心在于其提出的可微分二值化模块(Differentiable Binarization Module,DB Module)。这个模块使用了一个近似二值化的函数,该函数在训练过程中是可微的,因此可以通过反向传播算法来优化网络参数。这个函数能够根据网络的输出自适应地调整二值化阈值,使得网络能够更好地适应不同场景下的文本检测任务。
此外,DBNet的模型结构可以分为三个部分:Backbone网络、FPN网络和Head网络。Backbone网络负责提取图像的特征,FPN网络则是一种卷积网络,用于高效提取图片中各维度特征的结构增强特征,而Head网络则负责计算文本区域概率图。
总的来说,DBNet通过其独特的可微分二值化方法和优化的模型结构,提高了文本检测的准确性和鲁棒性,成为了当前研究领域的热点之一。
背景介绍
一般分割算法流程是先通过网络输出文本分割的概率图,然后使用预先设定好的阈值将概率图转换为二值图,最后使用后处理操作将像素级的结果转换为检测结果。然而,这样就会使得算法性能很大程度上取决于二值化时阈值的选择。
DBNet[1]对这个流程进行了优化,对每个像素点进行自适应二值化,二值化的阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。
模型输入标签
在DB(Differentiable Binarization)网络中,为了训练网络进行文本检测,需要为网络提供适当的标签(ground truth)。虽然网络最终输出三个不同的图(概率图、阈值图和近似二值图),但在训练过程中,通常只有概率图是直接与标签进行比较的,因为阈值图是通过网络学习得到的,而二值图是基于概率图和阈值图通过DB算法计算得到的。
DB网络中,网络的输出为3个部分:概率图、阈值图和近似二值图:
- 概率图:图中每个像素点的值为该位置属于文本区域的概率。
标签:文本区域的二值图(或称为文本掩码)。文本区域的像素被标记为1,非文本区域的像素被标记为0。
损失函数:通常使用二元交叉熵损失(Binary Cross-Entropy Loss)或其他类似的损失函数来比较网络的预测概率图和真实的文本掩码。
- 阈值图:图中每个像素点的值为该位置的二值化阈值。
标签:在DB网络的训练中,阈值图并没有直接对应的标签。相反,阈值图是通过网络学习得到的,用于在预测阶段进行自适应二值化。
损失函数:虽然阈值图没有直接的损失函数,但DB网络会确保阈值图与概率图协同工作,以便在二值化过程中产生准确的检测结果。
- 二值图:由概率图和阈值图通过DB算法计算得到,图中像素的值为0或1。
标签:在训练过程中,二值图并不是直接用于计算损失的。然而,它可以用作一个可视化的辅助工具,帮助理解网络预测的效果。
损失函数:如前所述,二值图是通过DB算法由概率图和阈值图计算得到的,因此在训练过程中不直接参与损失计算。然而,由于概率图与文本掩码之间的损失函数会优化网络以产生更准确的概率图,这间接地也会影响到二值图的质量。
在构造损失函数时,我们需要获取对应的真实标签。阈值图的标签 G d G_{d} Gd,概率图标签 G s G_{s} Gs。DB网络中,标签的获取方式参考了PSENet(Progressive Scale Expansion Network,渐进式尺度扩展网络)中的方法,使用扩张和收缩的方式分别获取上述两个真实标签。标签的构造过程如 图1 所示:
图1 DB标签构造示意图
在该方法中,对于一幅文字图像,文本区域的每个多边形使用一组线段 G = { S k } k = 1 n G=\{S_k\}^n_{k=1} G={Sk}k=1n来进行描述,n为线段个数。如 图1 所示, n = 14 n=14 n=14。
概率图标签 G s G_s Gs的获取方法使用了Vatti clipping算法,该算法常用于收缩多边形,其中,收缩的偏移量D可以使用周长L和面积A计算得到,公式如下:
D = A ( 1 − r 2 ) L D = \frac{A(1-r^2)}{L} D=LA(1−r2)
其中,r为收缩因子,实验中根据经验设置为0.4。
在阈值图标签 G d G_d Gd的计算中,首先使用概率图标签 G s G_s Gs的计算过程中得到的偏移量D进行多边形的扩充,然后计算 G d G_d