![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第1张图片](http://img.e-com-net.com/image/info8/be073058c5dc4e90aa1bf6ad48e0d61d.jpg)
文章目录
-
- 一、背景
- 二、方法
-
- 2.1 Adaptive Scale Fusion (ASF) 模块
- 2.2 Binarization
- 2.3 Adaptive Threshold
- 2.4 Deformable Convolution
- 2.5 Label Generation
- 2.6 Optimization
- 三、效果
论文:Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion
代码:https://github.com/open-mmlab/mmocr/tree/main/configs/textdet/dbnetpp
出处:TPAMI 2022 | 和 DBNet 出自同一团队
一、背景
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第2张图片](http://img.e-com-net.com/image/info8/e079ae4ad56743dfa0a13883ad3956f1.jpg)
文本检测的目的是在图像中定位出文本的位置,是文本识别的基础。
基于分割的方法能够得到像素级的表达,但是,后处理的处理方式对检测结果影响很大。
如图 2 所示的蓝色箭头表示的后处理方式是基于分割方法的基础处理方式:
- 首先,将分割结果图使用二值化的方式变成二值化图
- 然后,使用启发式的方法(如像素聚合)将一簇的像素聚合成文本区域
- 这两个过程是独立进行的,不能参与训练过程,会导致检测准确率较低
本文的作者首先提出了 DBNet,将特征图二值化的过程构建成了一个可微的过程,可以直接参与到训练中,如图 2 红色箭头所示:
- 首先,还是生成分割结果图,但也同时会预测一个 threshold map,也就是图 2 中高亮的那个特征图,这样不同位置的阈值是不同的,这样做的原因在于,作者认为文本区域的边界区域的置信度应该是比中心区域低的。
- 然后,作者引入了二值化操作的一个近似方法:Differentiable Binarization (DB),使用 threshold map 来对分割图进行二值化,这样就可以联合优化分割过程和二值化过程,可以得到更好的检测结果
DBNet++ 的出发点:
- 在 DBNet 中,作者在分割网络中直接对多尺度的特征图聚合来提高对不同尺度的鲁棒性,直接聚合缺少了对特征的选择性
- DBNet++ 中,作者提出了 Adaptive Scale Fusion (ASF) module,来动态聚合多尺度特征图
ASF 模块的特点:
- ASF 是一个 stage-wise attention 模块,并且其中引入了 spatial attention 模块,能够在空间维度学习不同尺度和不同空间位置的权重,达到 scale-robust 特征融合
DBNet++ 和 DBNet 的关联:
- 第一点,DBNet++ 在 DBNet 的基础上引入了 ASF 模块,加强分割网络中不同尺度特征的融合
- 第二点,DBNet++ 将 DBNet 中的理论分析更完善化了
DBNet++ 的贡献:
- 联合优化分割网络的 DB 模块,能够获得更加鲁棒的结果并提升文本检测的效果
- 在 infer 过程中,DB 模块可以被移除且对最终效果没有明显的影响,故在 infer 过程中不会带来额外的时间消耗
- ASF 模块能够给分割网络引入更鲁棒的特征
- DBNet++ 在多个文本检测数据集上达到了 SOTA 的效果,包括水平、多方向旋转、弯曲形状等
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第3张图片](http://img.e-com-net.com/image/info8/cc9042b2bf314d2381ff3c1de233c524.jpg)
二、方法
DBNet++ 的总体框架结构如图 3 所示:
- 首先,将图像输入金字塔形式的 backbone 中
- 然后,将金字塔特征图上采样到相同大小,并输入 ASF 模块,得到特征图 F F F
- 之后,将 F 用于预测 probability map P P P 和 threshold map T T T,并使用 P P P 和 T T T 计算得到 approximate binary map B ^ \hat{B} B^
- 训练时,同时监督 P P P、 T T T 和 B ^ \hat{B} B^, P P P 和 B ^ \hat{B} B^ 共享监督信号,都使用生成的 probability map label 作为监督信号
- 推理时,可以通过 box formation process 的方式从 P P P 或 B ^ \hat{B} B^ 中来得到文本框
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第4张图片](http://img.e-com-net.com/image/info8/9b4b6c7dd40e44bc9e17ae2282fd5642.jpg)
2.1 Adaptive Scale Fusion (ASF) 模块
不同尺度的特征图可以看做是从不同角度和感受野得到的特征图,所以如何融合不同尺度的特征图来得到文本区域是很重要的。
比如,浅层特征或大尺度的特征图可以看到更多的细节信息和小的文本实例,深层特征或小尺度的特征图可以看到大尺度的文本实例并且捕捉到全局信息。
为了更好的利用不同尺度的特征图,特征金字塔或 U-Net 结构在分割网络中使用的比较广泛
ASF 模块为了更好的融合不同尺度的特征,没有使用简单相加的方式,而是让网络自己选择不同尺度和不同位置特征的重要性,对特征进行动态的聚合。
ASF 模块的结构如图 4 所示:
- 首先,将不同尺度的特征图缩放到相同大小,然后输入 ASF 模块中,假设输入 ASF 模块的特征图包括 N 组特征图 X ∈ R N × C × H × W = { X i } i = 0 N − 1 X\in R^{N \times C \times H \times W}=\{X_i\}_{i=0}^{N-1} X∈RN×C×H×W={Xi}i=0N−1,其中 N=4,也就是包括下采样 4/8/16/32 倍的特征图共 4 组,如图 3 所示。
- 然后,将经过尺度缩放的特征图 X X X concat 起来,经过 3x3 卷积,获得中间特征 S ∈ R C × H × W S \in R^{C \times H \times W} S∈RC×H×W
- 接着,在中间特征 S S S 上使用 spatial attention 模块,在 spatial attention 模块中,首先将 S S S 的所有通道的每个点进行 avg pooling,然后使用 conv-Relu + conv-Sigmoid 的方式,对每组特征图得到 1 × H × W 1 \times H \times W 1×H×W 的特征图,对于一个 batch 就是会得到 A ∈ R N × H × W A \in R^{N \times H \times W} A∈RN×H×W 的特征图,作为 attention weights,也就是每个位置都会有一个权重,让网络学习到每个位置的重要程度。
- 最后,将 A ∈ R N × H × W A \in R^{N \times H \times W} A∈RN×H×W 乘到对应的中间特征 S S S 上去,得到加权后的特征图 F ∈ R N × C × H × W F \in R^{N \times C \times H \times W} F∈RN×C×H×W
Scale Attention 定义如下:
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第5张图片](http://img.e-com-net.com/image/info8/34ffce1375774e27be7f96dd13b2e439.jpg)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第6张图片](http://img.e-com-net.com/image/info8/fd4b7885444f4a4198c1a79a844582b6.jpg)
2.2 Binarization
标准二值化(Standard Binarization)和可微二值化(Differentiable Binarization)的函数曲线如图 5a 所示,标准二值化在 0 处是不可微的。
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第7张图片](http://img.e-com-net.com/image/info8/dd537931a5974d6f81247c689cf60e8d.jpg)
1、标准二值化
给定从分割网络得到的 probability map P ∈ R H × W P \in R^{H \times W} P∈RH×W,将其二值化后,就会得到只包含 0 和 1 的二值化图,其中,0 表示背景,1 表示有效的文本区域,标准二值化过程如下:
![在这里插入图片描述](http://img.e-com-net.com/image/info8/12c683e502864dc39743a6b4c584ffd0.jpg)
- t 是阈值
- P 是 probability map 也就是分割结果
2、Differentiable binarization
如公式 1 所示的标准二值化是不可微的,所以不能和分割网络一起来训练,所以,本文作者提出了一个二值化的近似形式:
![在这里插入图片描述](http://img.e-com-net.com/image/info8/fa3053e02f3d4afb95bc95f395a36eee.jpg)
- B ^ \hat{B} B^ 是近似的二值图
- T 是从网络中学习到的 adaptive threshold map,P 是预测的分割特征图
- k 是一个增强因子,设定为 50
- 该近似的二值化函数和标准的二值函数类似,但可微,就可以随模型一起训练
标准二值化和可微二值化的区别:
- 标准二值化:二值化后的特征图非 0 即 1
- 可微二值化:二值化后的特征图包括 [0, 1] 中的所有值,也就是当分割 probability map 和 动态阈值图 threshold map 的差距在约 (-0.1, 0.1) 内时,二值化后的图在这些位置的值处于 0~1 之间,当 P - T > 0.1 时,二值化后的图在这些位置的值为 1,当 P - T < -0.1 时,二值化后的图在这些位置的值为 0(0.1 这个数值是从图 5a 中大概估计出来的)。
- 也就是说两者的差别主要发生在 P 和 T 特征值相差很小的位置上,
DB 能够提升模型效果的原因可以用梯度的反向传播来解释,以二值化交叉熵 loss 为例。
![在这里插入图片描述](http://img.e-com-net.com/image/info8/e3402b8aa66c416c94ab61d93c958ef2.jpg)
positive label 的 loss l + l_{+} l+ 和 negative label 的 loss l − l_{-} l− 如下:
![在这里插入图片描述](http://img.e-com-net.com/image/info8/7122413389534365848ef820e9188985.jpg)
segmentation loss:
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第8张图片](http://img.e-com-net.com/image/info8/cc3942f546d048cba0d30d178e06b166.jpg)
定义 DB 函数为: f ( x ) = 1 1 + e − k x f(x) = \frac{1}{1+e^{-kx}} f(x)=1+e−kx1
- 其中, x = P i , j − T i , j x = P_{i,j}-T_{i,j} x=Pi,j−Ti,j
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第9张图片](http://img.e-com-net.com/image/info8/aad2270a8ed34575bed3b17f074dd0be.jpg)
包含 DB 的 loss 微分如下:
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第10张图片](http://img.e-com-net.com/image/info8/d02c18dcbca64de3a5bc2db9d89dca3a.jpg)
考虑激活函数 sigmoid:
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第11张图片](http://img.e-com-net.com/image/info8/0e7ba93c54304ac8a0cb33737cee2470.jpg)
激活后的梯度如下:
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第12张图片](http://img.e-com-net.com/image/info8/c833a327190f426a95e09fb5648b3c6c.jpg)
从图 6 可以看出,当错误的预测距离边界较近的时候,DB 能够增强梯度反向传播,能够让模型更关注于优化那些模棱两可的区域,此外 sigmoid 激活函数能够缓解最低上限和最大下限,DB 能够进一步降低对极值的惩罚。
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第13张图片](http://img.e-com-net.com/image/info8/35f7630347e5477da613dac01715d0db.jpg)
2.3 Adaptive Threshold
threshold map 是否有监督信号得到的结果如图 7 所示,当有监督信号的时候,就有高亮清洗的文本边界,这说明 border-like threshold map 有利于最终的结果。所以,作者给 threshold map 施加了 border-like 监督信号,然后用 threshold map 来二值化分割结果。
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第14张图片](http://img.e-com-net.com/image/info8/9262e05839004c718da5ed15cb7ffa7b.jpg)
2.4 Deformable Convolution
为了覆盖到更多的 aspect ratio,作者在 res-18 和 res-50 的 conv3、conv4、conv5 中使用了 3x3 的可变形卷积。
2.5 Label Generation
Label generation 的方法和 PSENet 中一样,给定图像,每个 polygon 区域都被描述为一个分割区域集合:
![在这里插入图片描述](http://img.e-com-net.com/image/info8/388b6ccff1f54d76980bf9f5ae02aaac.jpg)
- n 是顶点的数量,不同数据集中是不同的,ICDAR 2015 中是 4,CTW1500 中是 16
为分割 Label 生成 positive area:
- 红色线为标注的文本区域
- 使用 Vatti clipping algorithm [47] 来将 polygon G G G 收缩为 G s G_s Gs,即为蓝色线
- 收缩的 offset D D D 是从原始 polygon 的边长 L L L 和面积 A A A 通过如下方式得到的:收缩偏移为 D = A ( 1 − r 2 ) L D=\frac{A(1-r^2)}{L} D=LA(1−r2), r r r 是收缩比例,设定为 0.4
为 threshold map 生成 Label:
- 首先,将 polygon G G G 膨胀为 G d G_d Gd,使用和上面相同的收缩偏移 D 来进行膨胀,得到绿色线
- 然后,绿色线和蓝色线中间的区域即为 threshold map 的 label。因为作者认为 G s G_s Gs 和 G d G_d Gd 的 gap 是文本区域的边界区域,所以 threshold map 的 label 可以通过计算 G 中距离分割区域最近的距离来得到。
- 所以,threshold map 的 label 就是下图中的 border-like 的高亮圈
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第15张图片](http://img.e-com-net.com/image/info8/a9e9764f03814778b42f5de5e6958dcb.jpg)
2.6 Optimization
训练 loss:
![在这里插入图片描述](http://img.e-com-net.com/image/info8/4bb938725add4e8e9635a2f97529d927.jpg)
- L s L_s Ls:probability map 的 loss
- L b L_b Lb:binary map 的 loss
- L t L_t Lt:threshold map 的 loss
- α = 1 \alpha = 1 α=1, γ = 10 \gamma=10 γ=10
1、 L s L_s Ls 和 L b L_b Lb 的 loss 都使用二值交叉熵,为了平衡正负样本,使用了难例挖掘
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5080ac17d13a4691a31a51f7f4b8a977.jpg)
- S l S_l Sl 是正负样本 1:3 的样本集合
2、 L t L_t Lt 是计算了在膨胀文本多边形区域 G d G_d Gd 内的 prediction 和 label 的 L1 距离之和
![在这里插入图片描述](http://img.e-com-net.com/image/info8/640a85f4a5e9442a965ebc5302d8f871.jpg)
- R d R_d Rd:在膨胀多边形区域 G d G_d Gd 内的像素的索引
- y ∗ y* y∗:threshold map 的 label
推理过程:
推理的时候,可以使用 probability map 或 approximate binary map 来生成 text bounding boxes,两者生成的很接近。
为了高效,作者使用 probability map 来生成,所以 threshold map 就可以舍弃了。
box 生成包含 3 步:
- probability map 首先使用 0.2 的阈值进行二值化
- 从二值图中得到连接的区域(收缩 text 区域的方式来实现)
- 使用 offset D ′ D' D′ 来进行收缩区域的膨胀, D ′ = A ′ × r ′ L ′ D' = \frac{A' \times r'}{L'} D′=L′A′×r′,其中, A ′ A' A′ 是收缩后多边形的面积, L ′ L' L′ 是收缩后多边形的周长, r ′ = 1.5 r'=1.5 r′=1.5
三、效果
文本检测指标 P/R/F 的计算方式具体如下:
- 首先,得到预测的 pred_polygon(也就是多边形区域的角点坐标,且坐标已经恢复到原图坐标中)
- 然后,对每个 pred_polygon,计算该 pred_polygon 和其所在的图中的其他所有 gt polygon 的 IoU
- 接着,如果 IoU>阈值(如0.5),则判定该 pred_polygon 预测正确,预测正确 polygon 的数量 + 1
- 最后,计算指标,假设一个测试集中,共预测正确了 N 个 polygon:
- Precision = N / pred_polygon 总数
- Recall=N / gt_polygon 总数
- F1 = 2PR/(P+R)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第16张图片](http://img.e-com-net.com/image/info8/e98369bab7e84e8eb77b4ab9a1d5bad6.jpg)
1、可变形卷积、ASF 模块、DB 模块分别带来的效果提升
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第17张图片](http://img.e-com-net.com/image/info8/a572dbcba1d34a8781b44d8b1dd8963b.jpg)
2、ASF 的提升:ASF 中的 spatial attention 在 MSRA-TD500 提升 0.5%,在 CTW1500 提升 1%
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第18张图片](http://img.e-com-net.com/image/info8/9aba783c6b954221a74223763073eaa2.jpg)
3、对 Threshold map 监督的效果,在 MLT-2017 上,res-18 提升了 0.7%,res-50 提升了 2.6%
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第19张图片](http://img.e-com-net.com/image/info8/b3126d6a19d748f3bb4ef92995636bcd.jpg)
4、ASF 和 PPM [64] 及CCA [20] 的对比
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第20张图片](http://img.e-com-net.com/image/info8/0e2fb95ddc35438fba9be78718961a1c.jpg)
5、和其他方法的对比
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第21张图片](http://img.e-com-net.com/image/info8/5d19ae63b4244cbb92cd28bcb57f84f6.jpg)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第22张图片](http://img.e-com-net.com/image/info8/751bbed21ef244518fbbbd638c911fa2.jpg)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第23张图片](http://img.e-com-net.com/image/info8/23942d87ca17452184eb778d6db0c557.jpg)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第24张图片](http://img.e-com-net.com/image/info8/e5c14048dc3e45d09e3b67622497fa72.jpg)
6、和 DBNet 的对比
定量分析:在 res-18 和 res-50 中带来的 F-measure 的提升
- Total-Text:0.5%、1.3%
- CTW1500:2.9%、1.9%
- ICDAR 2015:0.8%、0.0%
- MSRA-TD500:3.6%、2.3%
- MLT-2019:1.3%、1.0%
定性分析:
DBNet++ 有更强的尺度鲁棒能力,尤其对大尺度的文本目标更鲁棒,而 DBNet 出现了一些误检,如图 10。
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第25张图片](http://img.e-com-net.com/image/info8/f266408b390f4ceba789880f1474532c.jpg)
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第26张图片](http://img.e-com-net.com/image/info8/8f4ef8ea13584cdebfa967790afb52cb.jpg)
不同数据集的尺度多样性分析:
- ICDAR 2015 和 TotalText 数据集没有 MSRA-TD500 和 CTW1500 数据集中数据的尺度丰富
- 从图 11c 和 图 11d 中也能看出,数据尺度越丰富,ASF 带来的提升就越大,这也证明了 DBNet++ 带来的尺度鲁棒性能的提升
![【文本检测】2、DBNet++ | 为 DBNet 引入多级特征图聚合模块 ASF_第27张图片](http://img.e-com-net.com/image/info8/7aa791293aa44f158944abb7b377e754.jpg)
DBNet++ 的限制性:
- 对于 text in text 的情况,难以处理
- 这也是 segmentation-based 方法的局限性