Dbnet

DBNet:Real-time Scene Text Detection with Differentiable Binarization,是一个基于分割的文本检测器,PPOCR中使用其作为检测器,取得了可观的效果,结合DBNet开源代码和论文对其学习小结  

网络结构

DBNet 网络结构如上图所示,标准的基于分割的FPN结构。

DBNet 为了解决什么?

对于普通的分割网络,得到网络输出后需要阈值化,但是阈值化的值是人工指定,而且一般只使用一个全局阈值,DBNet 的最大贡献点在于使用自适应二值化,对输出的不同的位置有不同的二值化阈值,二值化是可学习的。彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。 二值化即DB模块公式如下:

P 是网络输出的概率图,T 是网络学习到的自适应阈值图. DB 二值化公式本质上是带系数的sigmoid函数,加大了对误分类的梯度,使其学习的更好。

loss 计算

网络输出三部分:

  • probability map, ,代表像素点是文本的概率
  • threshold map, ,每个像素点的阈值
  • binary map,由概率图和阈值图通过 DB二值化公式计算得到.

$L_s$ 是收缩之后文本实例的loss, $L_b$ 是二值化之后的收缩文本实例loss, $L_t$是二值化阈值map的loss. 且使用加权、以及难例挖掘的BCE.

label 制作

1 对于概率图的制作,参考自 PSENet,主要是将文本区域表示为一组线段的闭合集合

2 threshold map, 将文本框分别向内向外收缩和扩张d(根据第一步收缩时计算得到)个像素,然后计算收缩框和扩张框之间差集部分里每个像素点到原始图像边界的归一化距离

其它

在训练结束后,可以使用二值图也可以使用概率图,作者表示由于加上了阈值图的联合学习,网络学到的概率图效果已经很好了,可以直接使用。

代码 https://github.com/MhLiao/DB

ref

dbnet