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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码地址:

  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(P

### Differentiable Binarization 模型介绍 #### 定义与背景 Differentiable Binarization (DB) 是一种用于场景文本检测的技术,旨在解决传统二值化方法不可微的问题。传统二值化操作依赖固定阈值 \( t \),对网络输出的概率图 \( P \) 进行划分[^2]。然而,这种方式是非连续的,不支持梯度反向传播。 #### 可微分二值化函数 为了解决这一问题,DB引入了一个近似的阶跃函数作为可微分替代方案: \[ B(x, k)=\frac{1}{1+\exp(-k(P-T))} \] 这里,\( P \) 表示概率图,\( T \) 表示自适应阈值图,而 \( k \) 则是一个放大因子,通常设置为50。该表达式建立起了概率图和阈值图到最终二值化图像间的平滑映射关系,允许在整个神经网络框架内实现端到端的学习过程。 #### 推理阶段优化 在实际部署过程中,为了提高效率并保持精度不变,可以选择直接利用概率图来进行后续处理而不是转换成精确的二进制形式。这是因为当采用适当高的置信水平时,两者产生的边界框几乎相同;同时省去了额外的阈值判断环节也简化了整体架构设计[^1]。 ```python import torch.nn.functional as F def differentiable_binarize(prob_map, thresh_map, k=50): """ Applies the differentiable binarization on probability map. Args: prob_map (Tensor): Probability maps from network output. thresh_map (Tensor): Adaptive threshold maps. k (float): Amplification factor. Returns: Tensor: Binary-like tensor after applying DB formula. """ return 1 / (1 + torch.exp(-k * (prob_map - thresh_map))) ``` #### 应用领域 DB技术主要应用于自然场景下的文字识别任务中,在这类应用场景里能够有效地区分前景文字区域同背景噪声,并且对于相邻字符间存在粘连情况也能较好地分离出来,提高了OCR系统的鲁棒性和准确性。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值