DBNet::可微分二值化网络论文解析
DBNet::基于可微分二值化的实时场景文本检测(论文解析)
1、简介
作者:Minghui Liao1 , Zhaoyi Wan2 , Cong Yao 2, Kai Chen3,4, Xiang Bai1
- 1Huazhong University of Science and Technology,
- 2Megvii,
- 3Shanghai Jiao Tong University,
- 4Onlyou Tech.
开源项目地址: https://github.com/MhLiao/DB
2、摘要
近年来,基于分割的方法在场景文本检测中得到了广泛的应用,因为分割结果能够更准确地描述曲线文本等各种形状的场景文本。然而,二值化的后处理对于基于分割的检测是必不可少的,它将由分割方法产生的概率图转换成文本的边界框/区域。本文提出了一个可微二值化(DB)模块,可以在分割网络中进行二值化处理。分割网络使用DB优化,可以自适应地设置二值化的阈值,这不仅简化了后处理,同时也提高了文本检测的性能。基于一个简单的分割网络,我们在五个基准数据集上验证了DB的性能提升,在检测精度和速度方面都取得了SOTA的结果。特别是对于轻量级主干网,DB的性能改进非常显著,因此我们可以在检测精度和效率之间寻找一个理想的折衷方案。具体来说,通过ResNet-18 backbone,我们的detector在MSRA-TD500数据集上实现了82.8的F-measure,每秒62帧。代码位于:https://github.com/MhLiao/DB。
3、背景介绍
近年来,基于场景图像的文本阅读在图像/视频理解、视觉搜索、自动驾驶、盲辅助等方面有着广泛的实际应用,成为一个活跃的研究领域。
作为场景文本阅读的一个重要组成部分,场景文本检测是一项具有挑战性的任务,因为场景文本通常具有不同的尺度和形状,包括水平文本、多向文本和曲线文本。基于分割的场景文本检测由于能够描述各种形状的文本,得益于其像素级的预测结果,近年来受到了广泛的关注。然而,大多数基于分割的方法需要复杂的后处理来将像素级的预测结果分组到检测到的文本实例中,从而导致推理过程中相当大的时间开销。以两种最新的场景文本检测方法为例:PSENet(Wang et al.2019a)提出了渐进尺度扩展的后处理方法,以提高检测精度;Pixel embedding in(Tian et al.2019)基于分割结果对像素进行聚类,它必须计算像素之间的特征距离。
现有的检测方法大多采用类似的后处理方式,如下图所示(蓝色箭头后):首先设置固定的阈值,将分割网络产生的概率图转换为二值图像;然后,一些启发式技术(如像素聚类)用于将像素分组到文本实例中。或者,我们的方法(在图中的红色箭头之后)旨在将二值化操作插入到分割网络中以进行联合优化。通过这种方法,可以自适应地预测图像中每个位置的阈值,从而能够完全区分像素的前景和背景。然而,标准的二值化函数是不可微的,我们提出了一种二值化的近似函数,称为可微二值化(DB),它与分割网络一起训练时是完全可微的。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210204174547811-330713512.png)
本文的主要贡献是提出了可微的DB模块,使得CNN中的端到端二值化过程可以训练。通过将一个简单的语义分割网络与所提出的DB模块相结合,提出了一种鲁棒性强、速度快的场景文本检测器。从使用DB模块的性能评估中,我们发现我们的检测器比以前最先进的基于分割的方法有几个突出的优点:
- 我们的方法在五个场景文本基准数据集(包括水平文本、多向文本和曲线文本)上都取得了较好的性能。
- 我们的方法比以前的方法执行得快得多,因为DB可以提供一个高度健壮的二值化映射,大大简化了后处理。
- 当使用轻量级backbone时,DB工作得相当好,这显著提高了ResNet-18 backbone的检测性能。
- 由于DB可以在推理阶段删除而不牺牲性能,因此测试不需要额外的内存/时间开销。🌟
小结:DB分支是区别于Seg分支的,它预测了实例的边界,与分割的特征图融合得到真实的实例区域,这里使用DB分支完成了边界的后处理工作!
4、相关工作
目前的场景文本检测方法大致可以分为两类:基于回归的方法和基于分割的方法。
基于回归的方法是一系列直接回归文本实例边界框的模型。TextBoxes(Liao et al.2017)基于SSD(Liu et al.2016)修改了用于文本检测的anchors和卷积核的尺度。TextBoxes++(Liao、Shi和Bai 2018)和DMPNet(Liu和Jin 2017)应用四边形回归来检测多方向文本。SSTD(He等人2017a)提出了一种注意机制来大致识别文本区域。RRD(Liao et al.2018)通过使用旋转不变特征进行分类,使用旋转敏感特征进行回归,将分类和回归解耦,以更好地处理面向多个方向的长文本实例。EAST(Zhou et al.2017)和DeepReg(He et al.2017b)是anchor-free方法,对多方向文本实例应用像素级回归。SegLink(Shi、Bai和Belongie 2017)回归了段边界框并预测了它们的链接,以处理长文本实例。DeRPN(Xie et al.2019b)提出了一种维度分解区域建议网络来处理场景文本检测中的尺度问题。基于回归的方法通常有简单的后处理算法(例如非极大值抑制)。然而,它们大多局限于表示不规则形状(如曲线形状)的精确边界框。
基于分割的方法通常结合像素级预测和后处理算法得到BBox。(Zhang et al.2016)通过语义分割和基于MSER的算法检测多方向文本。在(Xue,Lu,and Zhan 2018)中使用文本边界来分割文本实例,Mask TextSpotter(Lyu et al.2018a;Liao et al.2019)以基于Mask R-CNN的实例分割方式检测任意形状的文本实例。PSENet(Wang et al.2019a)提出了通过分割具有不同尺度内核的文本实例来进行渐进尺度扩展。在(Tian et al.2019)中提出了像素嵌入来对分割结果中的像素进行聚类。PSENet(Wang et al.2019a)和SAE(Tian et al.2019)对分割结果提出了新的后处理算法,从而降低了推理速度。相反,我们的方法专注于在不损失推理速度的前提下,通过将二值化过程纳入训练周期来改善分割结果。
快速的场景文本检测方法既注重准确性,又注重推理速度。TextBoxes(Liao et al.2017)、TextBoxes++(Liao,Shi,and Bai 2018)、SegLink(Shi,Bai,and Belongie 2017)和RRD(Liao et al.2018)通过遵循SSD的检测架构实现了快速文本检测(Liu et al.2016)。EAST(Zhou et al.2017)提议应用PVANet(Kim et al.2016)来提高其速度。它们大多不能处理曲线等不规则形状的文本实例。与以往的快速场景文本检测方法相比,DB方法不仅检测速度快,而且可以检测任意形状的文本实例。
5、方法
DB的框架如下图所示:
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205094958958-292167324.png)
-
将输入图片传给特征金字塔backbone(FPN);
-
其次,将金字塔特征上采样到相同的尺度,并级联生成特征 F (con-cat后的 \(\frac{1}{4}\) 特征图);
-
然后利用特征F预测概率图(P)和阈值图(T);
-
然后由特征图F与阈值图T得到近似二值特征图\(\hat{B}\) ;
注,作者在这里说\(\hat{B}\)是由 F 和 T 得到,那么概率图P呢?不都是经过pred操作算子吗!实际上应该是由 P 和 T 得到的;
阈值图由F到T是经过了较为复杂的运算之后得到的!其中包含一个\(3 \times 3\) 的卷积与两个步长为2的反卷积 deconvolutional(pred操作).
-
由 \(\hat{B}\) 、输入图片得到边框与实例。
在训练期间,对概率图、阈值图和近似二值图进行监督,其中概率图和近似二值图具有相同的监督(人工标注的label)。在推理过程中,通过一个边框模型,可以方便地从近似二元映射或概率映射中得到边界框。
5.1 标准二值化
对于给定的一个概率特征图 \(P\in R^{H \times W}\) ,生成标准的二值化特征图一般采用如下的公式:
其中:\(t\) 是预定义的阈值,\((i,j)\) 标识特征图中的坐标。
5.2 可微二值化🌟
标准二值化是阶梯函数,“不可导”,或者其导函数无意义。因此DB作者提出了可微分的二值化函数:
\(k\) 表示放大系数。根据经验,\(k\) 设置为50。如下图所示,可微二值化函数与标准函数取值非常接近,但是它是可微分的,负标签损失 \(l_{-}\) 与正标签损失 \(l_{+}\) 的导函数见下图的(c)、(b)。
采用自适应阈值的可微二值化方法,不仅有助于区分文本区域和背景,而且可以分离紧密连接的文本实例。
DB提高性能的原因可以用梯度的反向传播来解释。以二元交叉熵损失为例。我们定义DB函数为:
正标签损失 \(l_{+}\) 与负标签损失 \(l_{-}\) :
这里的损失是要取对数似然函数的,所以有
基于上面的函数可以获取其导函数:
这两个导函数函数图像见上图(b)、(c)。从微分可以看出:(1)梯度被放大因子 \(k\) 放大;(2)梯度的放大对于大多数错误预测的区域是更显著的(对于\(l_{+},x<0\);对于\(l_{-},x>0\)),从而有利于优化,有助于产生更显著的预测。此外,因为 \(x=P_{i,j}-T_{i,j}\) 时,\(P\) 的梯度受T的影响并在前景和背景之间重新放缩。
5.3 阈值自适应
阈值图 T 从外观上与(Xue、Lu和Zhan 2018)中的文本边界图相似。然而,阈值特征图T的动机和用法与文本边界映射不同。下图显示了有/无监控的阈值图。阈值特征图将突出显示文本边界区域,即使没有对阈值特征图的监督label。这表明了边界的阈值特征图有利于最终的结果。因此,我们在阈值图上应用边界式监督以获得更好的指导。在实验部分,我们讨论了阈值特征图的消融研究。对于用法,(Xue、Lu和Zhan 2018)中的文本边界图用于拆分文本实例,而我们的阈值图用作二值化的阈值。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205112839188-238786575.png)
5.4 Deformable convolution 可变形卷积
可变形卷积(Dai et al.2017;Zhu et al.2019)可以为模型提供灵活的感受野,这对于极端纵横比的文本实例尤其有利 (源论文中山羊都可以自适应感受野区域)。随后(Zhu等人,2019年),调制可变形卷积被应用于ResNet-18或ResNet-50主干中阶段conv3、conv4和conv5的所有 \(3\times3\) 卷积层(He等人,2016a)。
5.5 标签生成
标签生成。文本多边形的注释以红线显示。收缩和扩张的多边形分别以蓝线和绿线显示。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205115512916-370513150.png)
概率图的标签生成受到PSENet的启发(Wang等人,2019a)。给定一个文本图像,其文本区域的每个多边形由一组线段描述:
其中,\(n\) 是顶点的数量,在不同的数据集中可能不同,例如,ICDAR 2015数据集为4(Karatzas et al.2015),CTW1500数据集为16(Liu et al.2019a)。然后通过使用Vatti裁剪算法(Vati 1992)将多边形 \(G\) 收缩为 \(Gs\)来生成正面积。收缩的偏移量D由原始多边形的周长\(L\)和面积\(A\)计算得出:
其中\(r\)是收缩率,根据经验设置为0.4。
通过类似的过程,我们可以为阈值特征图生成标签。首先将文本多边形\(G\)以相同的偏移量\(D\)展开到\(Gd\)。我们将\(Gs\)和\(Gd\)之间的间隔作为文本区域的边界,通过计算到\(G\)中最近片段的距离来生成阈值特征图的标签。
5.6 Optimization
损失函数由三部分损失加权构成:
其中:
- \(L_{s}\) 是概率特征图的损失;
- \(L_{b}\) 是二值化特征图 \(\hat{B}\) 的损失;
- \(L_{t}\) 是阈值特征图 \(T\) 的损失;
- \(\alpha,\beta\) 的取值分别设置为1.0和10。
对于 \(L_{s}\)、\(L_{b}\) 都使用二元交叉熵损失,为了平衡正负样本,对负样本进行采样。
其中,\(S_{l}\) 是正负样本的采样比率。
\(L_{t}\)计算为扩展文本多边形 \(Gd\) 内预测和标签之间的\(L1\)距离之和:
其中 \(R_{d}\) 是扩张多边形区域的像素的下标;\(y^{*}\) 是值域特征图的标签。
在推理阶段,我们可以使用概率特征图或近似二值特征图来生成文本边界框,从而得到几乎相同的结果。为了提高效率,我们使用概率图,移除阈值分支。框的形成过程包括三个步骤:
(1)首先对概率图/近似二值图用一个恒定的阈值(0.2)进行二值化,得到二值图;
(2)从二值图中得到连通区域(收缩文本区域);
(3)缩小的区域用Vatti裁剪算法(Vati 1992)的偏移量 \({D}'\) 进行扩张。偏移量 \({D}'\) 的计算公式为:
其中,\({A}'\) 是缩小区域的面积;\({L}'\) 是缩小区域的周长;\({r}'\) 根据经验设置为1.5。
小结:在项目中关于损失函数的计算label主要有:
原图:
-
(1) GT: 真实实例的区域内缩mask,如:
-
(2) Mask: 作者说是忽略掩码,即值为1的像素是对loss没用贡献的点
这有张图:“
”
-
(3) thresh_map: 阈值边界图,即扩张图减去内缩图做平滑处理后的特征
-
(4) thresh_mask: 真实实例的扩张mask。
这里的label 带入到loss函数中,除Mask无法给出合理的解释,其他都可以有合理的说明。且在上面的Mask中,出现全是白色?目前还不知道是什么问题,准备过两个用DB的项目测试一下。
6、实验
6.1 基准数据集
SynthText (Gupta、Vedaldi和Zisserman 2016)是一个合成数据集,由800k个图像组成。这些图像是由8k背景图像合成的。此数据集仅用于对模型进行预训练。
MLT-2017 dataset 数据集是一个多语言数据集。它包括9种语言,代表6种不同的脚本。在这个数据集中有7200个训练图像,1800个验证图像和9000个测试图像。我们在微调期间同时使用训练集和验证集。
ICDAR 2015 数据集(Karatzas et al.2015)由1000张训练图像和500张测试图像组成,由谷歌拍摄,分辨率为720×1280。文本实例在单词级别进行标记。
MSRA-TD500 数据集(Yao et al.2012)是一种多语言数据集包括英文和中文。有300个训练图像和200个测试图像。文本实例在文本行级别中进行标记。按照之前的方法(Zhou et al.2017;Lyu et al.2018b;Long et al.2018),我们从HUST-TR400(Yao、Bai和Liu,2014)中额外添加了400张训练图像。
CTW1500 数据集CTW1500(Liu et al.2019a)是一个关注曲线文本的数据集。它由1000幅训练图像和500幅测试图像组成。文本实例在文本行级别进行注释。
Total-Text 数据集Total-Text(Chng and Chan 2017)是一个包含各种形状的文本的数据集,包括水平、多向和弯曲的文本。它们是1255个训练图像和300个测试图像。文本实例在单词级别进行标记。
6.2 实施细则
对于所有模型,我们首先使用SynthText数据集对它们进行100k次迭代的预训练。然后,我们在相应的真实数据集上进行1200个epochs的模型微调。训练批大小设置为16。我们使用动态多学习率策略,其中当前迭代的学习率等于初始学习率乘以:
🌟学习率初始化为:0.007;power初始化为0.9;权值衰减系数(\(L_{2}\) 正则)设置为:0.0001;动量设置为:0.9 。
训练数据的数据扩充包括:
(1)角度范围为(-10°,10°)的随机旋转;
(2)随机裁剪;
(3)随机翻转。
为了提高训练效率,所有处理后的图像都重新调整为640×640。
在推理阶段,我们保持测试图像的纵横比,并通过为每个数据集设置合适的高度来重新调整输入图像的大小。推理速度在批处理大小为1的情况下进行测试,在单个线程中使用单个1080ti GPU。推理时间成本由模型的前处理时间成本和后处理时间成本组成。后处理时间约占推理时间的30%。
6.3 消融实验
我们对MSRA-TD500数据集和CTW1500数据集进行了烧蚀研究,以证明我们提出的可微二值化、可变形卷积和不同主干的有效性。详细的实验结果见下表:
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205145205872-1608934662.png)
关于是否支持至于特征图的消融实验结构如下:(MLT-2017 数据集)
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205145854402-987860652.png)
在MSRA-TD500数据集上,ResNet-50模型比ResNet-18高2.1个点;在 CTW1500 上高 2.4 个点, 但是时间开销增大了一倍!
与之前的模型进行比较:
我们在五个标准基准上比较了我们提出的方法,包括两个曲线文本基准、一个面向多个方向的文本基准和两个面向长文本行的多语言基准。
Total-Text的检测结果。括号中的值表示输入图像的高度。“*”表示使用多个尺度进行测试。“MTS”和“PSE”是Mask TextSpotter和PSENet的缩写。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205151122129-2026970573.png)
CTW1500检测结果。带“*”的方法来自(Liu等人,2019a)。括号中的值表示输入图像的高度。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205151330756-554831963.png)
我们在两个曲线文本基准(Total-Text和CTW1500)上证明了该方法的形状鲁棒性。如上面的表格所示,我们的方法在准确度和速度上都达到了最先进的水平。具体来说,“DB-ResNet-50”在Total-Text和CTW1500数据集上的性能比以前最先进的方法分别高出1.1%和1.2%。“DB-ResNet-50”的运行速度比以前所有的方法都快,使用ResNet-18主干网可以进一步提高速度,性能下降很小。与最近基于分段的检测器(Wang et al.2019a)相比,“DB-ResNet-50(800)”的速度快了8.2倍,“DB-ResNet-18(800)”的速度快了12.8倍。
ICDAR 2015多方向文本检测
ICDAR 2015数据集的检测结果。括号中的值表示输入图像的高度。“TB”和“PSE”是textboxs++和PSENet的缩写。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205152132613-1376272671.png)
多语言文本检测
该方法对多语言文本检测具有较强的鲁棒性。如选项卡所示。6和标签。7、“DB-ResNet-50”在准确度和速度上均优于以往的方法。在MSRA-TD500和MLT-2017数据集上,“DB-ResNet-50”的准确度分别比之前最先进的方法高1.9%和3.8%。就速度而言,“DB-ResNet-50”比MSRA-TD500数据集上先前的最快方法(Liao et al.2018)快3.2倍。使用轻量级主干,“DB-ResNet-18(736)”与之前最先进的方法(Liu等人,2018年)(82.8 vs 83.0)相比,实现了相对准确度,并且在MSRA-TD500上以62 FPS的速度运行,比之前最快的方法(Liao等人,2018年)快6.2倍。通过减小输入大小,可以将速度进一步加速到82 FPS(“ResNet-18(512)”)。
MSRA-TD500数据集的检测结果。括号中的值表示输入图像的高度。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205152951373-1563811442.png)
MLT-2017数据集的检测结果。带“*”的方法收集自(Lyu等人,2018b)。在我们的方法中,MLT-2017数据集中的图像被重新调整为768×1024。“PSE”是PSENet的缩写。
![](https://img2020.cnblogs.com/blog/1319275/202102/1319275-20210205153144634-139707333.png)
7、本方法局限性
该方法的一个局限性是不能处理“文本在文本中”的情况,即一个文本实例在另一个文本实例中。虽然缩小文本区域对于文本实例不在另一个文本实例的中心区域的情况是有帮助的,但是当文本实例正好位于另一个文本实例的中心区域时,缩小文本区域是失败的。这是基于分割的场景文本检测器的一个常见限制。
8、总结
在本文中,我们提出了一个新的框架,用于检测任意形状的场景文本,其中包括在分割网络中提出的可微二值化处理(DB)。实验证明,我们的方法(ResNet-50主干网)在速度和准确度方面,在五个标准场景文本基准测试上始终优于最先进的方法。特别是,即使使用轻量级主干网(ResNet-18),我们的方法也可以在所有测试数据集上以实时推理速度获得有竞争力的性能。在将来,我们有兴趣扩展我们的端到端文本定位方法。
完!