文本检测——DBNet阅读笔记

具有可微二值化的实时场景文本检测

  • 论文:Real-time Scene Text Detection With Differentiable Binarization
  • 创新点:提出了“可微分二值化”(Differentiable binarization)模块。对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,最终的输出图对于阈值就会非常鲁棒。

背景

近年来,由于分割结果可以更准确地描述各种形状的场景文本,基于分割的方法在场景文本检测中非常流行。然而,大多数基于分段的方法都需要复杂的后处理,将分割方法产生的概率图转换为文本的边界框/区域,导致推理过程中的时间成本相当大。e.g. PSENet (Wang et al . 2019a)提出了渐进式尺度扩展的后处理,以提高检测精度;像素嵌入(Tian et al . 2019)基于分割结果对像素进行聚类,需要计算像素之间的特征距离。

解决问题

现有的检测方法大多采用类似的后处理流程(蓝色):首先设置一个固定的阈值,将分割网络产生的概率图转换为二值图像;然后,使用一些启发式技术,如像素聚类,将像素分组到文本实例中。本文使用方法(红色)旨在将二值化操作插入到分割网络中进行联合优化。这样可以自适应地预测图像中每个位置的阈值,可以充分区分前景和背景像素。
image.png
本文提出了可微的DB模块,将二值化操作插入到分割网络中进行联合优化,使得CNN的二值化过程端到端可训练。将简单的语义分割网络与DB模块相结合,提出了一种鲁棒、快速的场景文本检测器。

模型框架

image.png

  • 整体流程:
    • 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=LA×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(1r2),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+ek(Pi,jTi,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^+(1y)log(1y^)]假设l+代表了正样本,y=1;l−代表了负样本,y=0。则:
l + = − l o g 1 1 + e − k x l_+=-log\frac{1}{1+e^{-kx}} l+=log1+ekx1 l − = − l o g ( 1 − 1 1 + e − k x ) l_-=-log(1-\frac{1}{1+e^{-kx}}) l=log(11+ekx1)考虑反向传播过程,对其求导:
∂ l + ∂ x = − k f ( x ) e − k x \frac{\partial{l_+}}{\partial{x}}=-kf(x)e^{-kx} xl+=kf(x)ekx ∂ l − ∂ x = k f ( x ) \frac{\partial{l_-}}{\partial{x}}=kf(x) xl=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=iSlyilogxi+(1yi)log(1xi)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=iRdyixi 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} (1max_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:每秒帧率。

消融实验

  • 可微二值化、可变形卷积
    image.png

  • 阈值图的监督、骨干网络

MLT-2017 dataset

image.png

  • 对比先前模型:
    • 弯曲文本检测
Total-Text dataset

image.png

CTW1500 dataset

image.png

  • 多方向文本检测
ICDAR 2015 dataset

image.png

  • 多语言文本检测
MSRA-TD500 dataset

image.png

MLT-2017 dataset

image.png

局限性

不能处理文本中的文本。这是基于分割的场景文本检测器的常见限制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值