高达82 fps的实时文本检测,华科AAAI2020提出可微分二值化模块
今天跟大家分享一篇近几天公布的关于实时场景文本检测的论文Real-time Scene Text Detection with Differentiable Binarization,出自华科白翔老师组,已中AAAI 2020 Oral,其在多个数据集上都取得了目前最好的精度,而且非常快,在输入图像size为512的设置下,可以实现高达82 fps的检测!
该文作者信息:
作者分别来自华中科技大学、旷视科技、上海交通大学、Onlyou Tech。
下图为该算法在 MSRA-TD500 上的与其他SOTA算法检测速度和F-measure比较的结果:
其在精度上超越了CVPR 2019 新出的CRAFT,而速度却快好几倍!
算法原理
在将图像分割应用于文本检测时,需要对分本分割的结果,进行二值化,二值化后得到的 二值 mask ,标示了文本区域,如下图中蓝色箭头线标示的过程。
在以往的基于分割的文本检测算法中,二值化的过程是使用人工设置的阈值,使得得到mask的过程并不是端到端的,该文作者的出发点是要将二值化纳入整个网络的训练。
如上图中的红色箭头线标示的流程,该文算法在训练时会预测出分割图和阈值图,再根据二者自动二值化,得到二值mask。
算法的整体流程如下:
输入图像经过特征金字塔网络,将不同分辨率的特征上采样到同一分辨率,再并联起来即得到特征图,特征图分别通过2个“pred”操作(一个卷积+2个反卷积)得到概率图和阈值图,然后经过DB(可微分二值化模块),得到近似二值图,对近似二值图简单后处理,即可把文本区域提取出来。
其中最关键的问题是,如何实现二值化操作可微?只有可微分的函数才能加入网络中实现端到端训练。
标准的二值化函数表达式如下:
作者的做法是使用其近似函数:
下图展示了此两个函数的曲线:
的确是很接近的,而且该函数可微分。
其对应的正负样本的损失和相应的梯度函数分别为:
作者在训练时,概率图、阈值图、近似二值图均有监督信息指导训练,且概率图和阈值图使用相同的监督信息。
近似二值图的监督信息可以使用文本图像标注信息方便得到,而概率图和阈值图的标签则借鉴PSENet的方法生成。
如下图展示了这一过程:
红色实线多边形为人工标注的文本边界框,其内部蓝色虚线为按照一定的系数红色多边形向内部收缩的结果,其包围的区域设为1即概率图的标签;而外部绿色虚线则为人工标注的文本边界框按照一定系数向外膨胀的结果,收缩和膨胀的中间区域,依据距离人工标注的远近,生成平滑的阈值图。
网络推断时,为得到更高的fps,仅使用了概率图生成近似二值图,但作者实验显示,在训练时加上阈值图的监督信息,能显著改进检测结果。
另外,作者在网络中的部分层还使用了可变形卷积,其在极端长宽比的文本实例图像中会使得结果更好。
实验结果
作者首先在 MSRA-TD500 和 CTW 1500 数据集上验证了使用DB(可微分二值模块)和DConv(可变形卷积)可大幅提高文本检测精度。
而使用阈值图也使得网络取得了一致的精度增益,如下:
然后作者在几个主流文本检测数据集上与SOTA方法进行了比较:
可见,该文提出的方法在取得更高精度的同时,速度也难能可贵的快!在MSRA-TD500 数据集上图像高为512时达到82 fps!怪不得被AAAI 2020 录用为Oral。
以下为检测文本结果示例:
每个子图中右上为阈值图,右下为概率图。
该文提出的可微分二值化模块和相应的标签生成与训练方法,显著改进了文本检测的精度,而且比近期的SOTA算法速度快几倍,非常值得大家参考,而且作者称代码也将开源!
论文地址:
https://arxiv.org/abs/1911.08947
代码地址:
https://github.com/MhLiao/DB