DBNet阅读笔记

原网址:https://zhuanlan.zhihu.com/p/94677957

Real-time Scene Text Detection with Differentiable Binarization是华科白翔老师团队发表在AAAI2020上的一篇文本检测文章,在PAN的效果上更近一步,效果和性能都再创新高。文章地址

https://arxiv.org/pdf/1911.08947.pdf​arxiv.org

 

官方代码

https://github.com/MhLiao/DB​github.com

 

我的实现

https://github.com/WenmuZhou/DBNet.pytorch​github.com

 

网络结构

标准FPN结构,不过看图,最后两个输出是由不同的输出头给出。作者在resnet的stage2-4中使用Deformable convolution来更好的检测长文本。

Differentiable binarization

本文的最大创新点。在基于分割的文本检测网络中,最终的二值化map都是使用的固定阈值来获取,并且阈值不同对性能影响较大。本文中,对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。

二值化公式如下,

其实就是一个带系数的sigmoid,和sigmoid的对比如下 :

和标准二值化的对比,图a的SB,DB图例应该写反了。

使用DB模块之后,二值化操作就变成了可微的,可以加到网络里一起训练。

网络输出

  1. probability map, [公式] ,代表像素点是文本的概率
  2. threshold map, [公式] ,每个像素点的阈值
  3. binary map, [公式] ,由1,2计算得到,计算公式为DB公式

loss函数

[公式]

[公式] 是收缩之后文本实例的loss, [公式] 是二值化之后的收缩文本实例loss, [公式] 是二值化阈值map的loss,两个值 [公式] ,这里 [公式] 使用10的weight是因为 [公式] 的结果会影响到 [公式]的结果。 [公式] 都使用带OHEM的bceloss, [公式]使用L1loss(后面可以用smoothL1loss试一下)。

后处理

由于threshold map的存在,probability map的边界可以学习的很好,因此可以直接按照收缩的方式(Vatti clipping algorithm)扩张回去,公式为:

[公式]

[公式] 是每条边向外扩充的长度, [公式] 分别是probability map上文本框的面积和周长, [公式] 是设置为1.5的常量(对应收缩的比例0.4)。

label制作

  1. probability map, 按照pse的方式制作即可,收缩比例设置为0.4
  2. threshold map, 将文本框分别向内向外收缩和扩张d(根据第一步收缩时计算得到)个像素,然后计算收缩框和扩张框之间差集部分里每个像素点到原始图像边界的归一化距离,此处有个问题,两个邻近的文本框,在扩张后会重叠,这种情况下重叠部分像素点的距离使用哪个文本框的?

下面是我制作的label

实验结果

Dconv 和DB的消融实验

对threshold map添加监督信息的对比实验

Limitation

目前还无法处理,文本内包含文本的情况

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值