《DB:Real-time Scene Text Detection with Differentiable Binarization》论文笔记

DBNet是一种基于分割的文本检测方法,通过Differentiable Binarization模块实现自适应阈值预测,简化后处理步骤。该方法在多个数据集上达到最优的检测精度和速度,尤其在处理扭曲文本时表现出色。网络结构包含可微二值化操作和自适应阈值,训练中使用阈值图损失函数,实现在轻量级backbone上仍保持高性能。
部署运行你感兴趣的模型镜像

代码地址:

  1. DB-official
  2. DBNet.pytorch

1. 概述

由于分割网络的结果可以准确描述诸如扭曲文本的场景,因而基于分割的自然场景文本检测方法变得流行起来。基于分割的方法其中关键的步骤是其后处理部分,这步中将分割的结果转换为文本框或是文本区域。这篇文章的文本检测方法也是基于分割的,但是通过提出Differenttiable Binarization module(DB module)来简化分割后处理步骤(加了一个边的预测),并且可以设定自适应阈值来提升网络性能。文章的方法在现有5个数据上在检测精度与速度上均表现为state-of-art。在换用轻量级的backbone(ResNet-18)之后可以将检测帧率提升到62FPS,其与其它一些文本检测算法的性能与速率关系见图1所示。

文章方法与其它一些方法的对比:
在这里插入图片描述
传统意义上基于分割的文本检测算法其流程如图2中的蓝色箭头所示。在传统方法中得到分割结果之后采用一个固定的阈值得到二值化的分割图,之后采用诸如像素聚类的启发式算法得到文本区域。
在这里插入图片描述

而文章的检测算法流程是图2中红色箭头所示的,其中不同的地方也是这篇文章核心的一点就是在阈值选取上,通过网络去预测图片每个位置处的阈值,而不是采用一个固定的值,这样就可以很好将背景与前景分离出来。但是这样的操作会给训练带来梯度不可微的情况,对此对于二值化提出了一个叫做Differentiable Binarization来解决不可微的问题。

在解决了阈值可微的为题之后,文章将分割算法与DB module组合起来构建了一个快速且鲁棒的文本检测器,这个方法的亮点表现在:

  • 1)在几个开源的数据集上对于水平、倾斜、扭曲的文本表现出了更好的检测性能;
  • 2)由于不需要繁琐的后处理,直接使用DB module产生适应的阈值使得网络提速很多,并且DB module能够生成更加鲁棒的分割二值图;
  • 3)DB module在轻量级的backbone(ResNet-18)也具有很好的性能;
  • 4)DB module在做inference的时候可以直接移除,而不会损失性能,因而减少了这部分的时间与资源消耗;

2. 方法设计

2.1 网络结构

文章的网络结构见图3所示,输入的图像经过不同stage的采样之后获得不同大小的特征图,之后这些由这些特征图构建特征金字塔,从而构建出统一尺度(相比原图像stride=4)的特征图 F F F,之后这个特征图用于预测分割概率图 P P P与阈值图 T T T,之后将 P , T P,T P,T结合得到估计的二值图 B ^ \hat{B} B^。在训练的时候 P , B P,B P,B是使用同样的表现作训练,而 T T T会使用单独的阈值图作训练。
在这里插入图片描述

2.2 二值化操作

标准二值化(Standard Binarization,SB)
对于分割特征图 P ∈ R H ∗ W P\in R^{H*W} PRHW,使用下面的方式进行二值化处理:

可微的二值化(Differentiable Binarization,DB)
由于公式1中的二值方法不是可微的,因而就不能在分割网络中随着训练的过程进行优化,为了解决这个问题文章提出了一个函数来近似这个二值化过程,既是:
B ^ i , j = 1 1 + e − k ( P i , j − T i , j ) \hat{B}_{i,j}=\frac{1}{1+e^{-k(P_{i,j}-T_{i,j})}} B^i,j=1+ek(Pi,jTi,j)1
其中, B ^ \hat{B} B^是生成的近似二值图, T T T是生成的阈值特征图, k k k是放大倍数,在试验中取值为 k = 50 k=50 k=50。这个函数的曲线与标准二值方法曲线具有较高的近似度,而且还是可微的,如图4左边图所示,右边的两幅图是其正负标签的导数曲线。通过这样的方式可以帮助文本区域从背景区域抽离,还可以帮助文本之间摆脱粘连的情况。
在这里插入图片描述
DB的函数可以定义为:
f ( x ) = 1 1 + e − k x , x = P i , j − T i , j f(x)=\frac{1}{1+e^{-kx}},x=P_{i,j}-T_{i,j} f(x)=1+ekx1,x=Pi,jTi,j
因而对于正负标签的损失可以描述为:
在这里插入图片描述
因而对应对 x x x求导得到:
在这里插入图片描述
从上式中可以看到:

  • 1)梯度被 k k k进行了放大;
  • 2)正负样本的优化是具有不同的尺度的,在 f ( x ) f(x) f(x)趋近与0的时候梯度值会变得很大(结合图4©),有利于产生更有利于区分的预测。

自适应阈值与膨胀卷积
在图6中展示了阈值图对于检测的影响,就算没有阈值图的监督,阈值图也可以很好区分文本的边界。
在这里插入图片描述
此外,为了增加网络的感受野,文章在backbone的stage3、stage4、stage5使用了deformable卷积。

2.3 标注生成

分割训练标签生成:
在训练标签的生成过程中借鉴了PSENet的方法,使用标签收缩的方式进行,这里对于收缩的offset D D D使用下面的计算方式得到:
D = A ( 1 − r 2 ) L D=\frac{A(1-r^2)}{L} D=LA(1r2)
其中, A A A是多边形区域的面积, r = 0.4 r=0.4 r=0.4 L L L是多边形的周长。
其标注过程见下图5所示:
在这里插入图片描述
阈值图训练标签生成:
在上述对文本区域进行膨胀之后( G d G_d Gd)与原来的文本区域收缩之后的结果( G s G_s Gs)做差可以得到一个gap区域,那么阈值图按照文章的描述可以定义为:gap区域与原文本多边形区域mask(表示为 G G G)的最近距离

2.4 网络的损失函数

网络的损失函数定义为:
L = L s + α ∗ L b + β ∗ L t L=L_s+\alpha * L_b+\beta * L_t L=Ls+αLb+βLt
上面三个损失分量分别是分割概率损失、二值图损失、阈值图损失, α = 1.0 , β = 10.0 \alpha=1.0,\beta=10.0 α=1.0,β=10.0

其中,对于 L s , L b L_s,L_b Ls,Lb使用的交叉熵损失函数:
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\in S_l}y_ilogx_i+(1-y_i)log(1-x_i) Ls=Lb=iSlyilogxi+(1yi)log(1xi)
并且为了样本均衡这里使用了困难样本挖掘,保持正负样本的比例为1:3。

对于阈值图的损失 L t L_t Lt使用的是L1损失
L t = ∑ i ∈ R d ∣ y i ∗ − x i ∗ ∣ L_t=\sum_{i\in R_d}|y_i^*-x_i^*| Lt=iRdyixi

3. 实验结果

3.1 消融实验

DB与膨胀卷积的影响:
在这里插入图片描述
阈值监督的影响:
在这里插入图片描述

3.2 性能比较

CTW1500:
在这里插入图片描述
ICDAR 2015:
在这里插入图片描述
MSRA-TD500与MLT-2017:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

无源域自适应(Source-Free Domain Adaptation, SFDA)语义分割旨在将模型从带有标签的源域适应到未标记的目标域,而无需访问源域数据。近年来,一些研究开始关注如何利用模型校准来提升跨域泛化性能。其中,**Cal-SFDA** 是一项结合了可微分预期校准误差(Expected Calibration Error, ECE)用于源无关域自适应语义分割的研究[^1]。 该方法的核心思想是通过最小化目标域样本的分类预测偏差来增强模型在新域上的泛化能力。具体而言,Cal-SFDA 引入了一种可微分形式的 ECE 损失函数,使得模型能够在仅使用目标域数据的情况下优化其输出概率分布的校准性。这种策略不仅提升了模型在目标域上的分割精度,还避免了传统方法中对源域数据的依赖。 此外,Cal-SFDA 采用了基于伪标签生成和一致性正则化的联合训练机制。在初始阶段,使用源域预训练模型为目标域生成伪标签;随后,在训练过程中通过一致性约束进一步优化模型参数以应对域间差异。整个框架通过端到端的方式进行优化,显著提高了在不同域之间迁移时的鲁棒性和稳定性。 与其他 SFDA 方法相比,Cal-SFDA 的优势在于: - 利用可微分 ECE 直接优化模型校准性,从而提升不确定性建模能力; - 不需要源域数据或额外辅助信息即可完成模型适配; - 在多个公共数据集上验证了其在域适应任务中的有效性。 如果你希望复现或深入理解该方法,以下是一个简化的伪代码示例,展示了如何实现基于 ECE 的损失计算: ```python import torch import torch.nn as nn class DifferentiableECELoss(nn.Module): def __init__(self, n_bins=15): super(DifferentiableECELoss, self).__init__() self.n_bins = n_bins def forward(self, logits, labels): bin_boundaries = torch.linspace(0, 1, self.n_bins + 1) softmaxes = torch.softmax(logits, dim=1) confidences, predictions = torch.max(softmaxes, dim=1) accuracies = predictions.eq(labels) ece = torch.zeros(1, device=logits.device) for bin_lower, bin_upper in zip(bin_boundaries[:-1], bin_boundaries[1:]): in_bin = confidences.gt(bin_lower) * confidences.le(bin_upper) prop_in_bin = torch.mean(in_bin.float()) if prop_in_bin.item() > 0: accuracy_in_bin = torch.mean(accuracies[in_bin].float()) avg_confidence_in_bin = torch.mean(confidences[in_bin]) ece += torch.abs(avg_confidence_in_bin - accuracy_in_bin) * prop_in_bin return ece ```
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值