PSENet原理介绍

    通常OCR中,文字检测都是由目标检测继承而来,目标检测大多都是基于先验框的(anchor base),近期出现的no-anchor模式本质上也是基于先验框的。anchor-base模式在目标检测衍生到OCR领域就有很多缺陷,比如:倾斜(或扭曲)文字检测不准、过长文字串检测不全、过短文字串容易遗漏、距离较近的无法分开等缺点。近期,渐进式扩展网络(PSENet)横空出世,以另一种思路解决了这些问题,下面我们来梳理一下该模型,不妥之处敬请指正。

模型概述

    PSENet是一种新的实例分割网络,它有两方面的优势。 首先,psenet作为一种基于分割的方法,能够对任意形状的文本进行定位.其次,该模型提出了一种渐进的尺度扩展算法,该算法可以成功地识别相邻文本实例(该算法在下文会详细介绍)。

整体框架

    如上图所示该模型主干网络使用ResNet系列(可以根据自己需要调整),输入图像维度为: [ B , 3 , H , W ] [B, 3, H, W] [B,3,H,W],通过下采样,特征融合,上采样,最后得到得到与原图片尺寸相同的输出F,维度大小为: [ B , C , H , W ] [B, C, H, W] [B,C,H,W],其中C的大小为确定的kernel_num,这里记为n, 这样就得到最终的 S 1 . . . S n S_1...S_n S1...Sn图片,然后利用广度优先算法从 S 1 S_1 S1开始,到 S n S_n Sn结束,获取到最终的文本连通域。其中连通域的数量在 S 1 S_1 S1中就已经确定, S 1 S_1 S1是预测的图片中目标文字的核心区域(并不是全部范围)。

算法介绍

    该论文提出了渐进式尺度扩展算法,我们将每个文本实例分配给多个预测的分割区域,记作 S 1 . . . . . . S n S_1......S_n S1......Sn。我们将这些分割区域表示为本文中的“核”,并且对于一个文本实例,有几个对应的内核。每个内核与原始的整个文本实例共享相似的形状,并且它们都位于相同的中心点但在比例上不同。这些“核“对应的Ground Truth的产生流程如下:

    如上图所示:(a)中 p i p_i pi为第 i i i个核, p n p_n pn是第 n n n个核, d i d_i di p i p_i pi p n p_n pn边缘之间的距离;(b)为最原始的文本区域;©为产生的多个分割区域。
    如何得到分割实例对应的label呢?为了依次获得例如图©中的缩小的掩模,我们利用Vatti clipping algorithm来缩小原来的多边形 p n p_n pn d i d_i di像素,并得到缩小多边形 p i p_i pi (见图(a))。随后,每个缩小的多边形 p i p_i pi被转换成一个0/1的二进制掩码,用于分割标签的Ground Truth。我们将这些Ground Truth分别表示为 G 1 . . . . . G n G_1.....G_n G1.....Gn。从数学上讲,如果我们认为比例是 r i r_i ri,那么 p n p_n pn p i p_i pi之间的范围 d i d_i di可以计算为:
d i = A r e a ( p n ) ( 1 − r i 2 ) P e r i m e t e r ( p n ) d_i = \frac{Area(p_n)(1-r_i^2)}{Perimeter(p_n)} di=Perimeter(pn)Area(pn)(1ri2)
    其中 A r e a ( p n ) Area(p_n) Area(pn)为多边形 p n p_n pn的面积, P e r i m e t e r ( p n ) Perimeter(p_n) Perimeter(pn)为多边形 p n p_n pn的周长, r i r_i ri p n p_n pn p i p_i pi之间的比例。
     r i r_i ri的计算如下:
r i = 1 − ( 1 − m ) ∗ ( n − i ) n − 1 r_i = 1 - \frac{(1-m)*(n-i)}{n-1} ri=1n1(1m)(ni)
    其中 m m m为缩小比例,取值范围在(0, 1]; n n n为文本分割实例的数量,即”核“的数量。
    对于预测的n个分割实例 S 1 . . . . . . S n S_1......S_n S1......Sn,为了得到最终的检测结果,我们采用了渐进的尺度扩展算法。 它基于广度优先搜索(BFS), 由三个步骤组成:

  1. 从具有最小尺度的核 S 1 S_1 S1开始(在此步骤中可以区分实例,不同实例有不同的连通域);
  2. 通过逐步在较大的核中加入更多的像素来扩展它们的区域;
  3. 完成直到发现最大的核。

    模型输出的为7个核,把这7个核输出展示如下(从右到左依次减小):

    该算法的伪代码如下:

    该算法的具体图解如下:

    由于正常情况下非文本区域远大于文本区域,所以使用二分类的交叉熵损失会使得结果更加偏向于非文本区域,因此该模型中使用了dice coefficient。定义如下:
D ( S i , G i ) = 2 ∗ ∑ x , y ( S i , x , y ∗ G i , x , y ) ∑ x , y S i , x , y 2 + ∑ x , y G i , x , y 2 D(S_i, G_i) = \frac{2*\sum_{x, y}(S_{i, x, y}*G_{i, x, y})}{\sum_{x, y}S_{i, x, y}^2+\sum_{x, y}G_{i, x, y}^2} D(Si,Gi)=x,ySi,x,y2+x,yGi,x,y22x,y(Si,x,yGi,x,y)
     S x , y S_{x, y} Sx,y为预测实例中像素点(x, y)的值, G x , y G_{x, y} Gx,y为label中像素点(x, y)的值。
    该模型定义了新的损失函数,损失计算如下:
L = λ L c + ( 1 − λ ) L s L = \lambda L_c + (1-\lambda)L_s L=λLc+(1λ)Ls
     L c L_c Lc为文本区域分类损失, L s L_s Ls为收缩文本实例损失,计算方式如下:
L c = 1 − D ( S n ∗ M , G n ∗ M ) L s = 1 − 1 n − 1 ( ∑ i = 1 n − 1 D ( S i ∗ W , G i ∗ W ) ) W = { 1     i f   S n , x , y > = 0.5 0     o t h e r w i s e \begin{aligned} &L_c = 1 - D(S_n*M, G_n*M)\\ &L_s = 1 - \frac{1}{n-1}(\sum_{i=1}^{n-1}D(S_i*W, G_i*W))\\ &W=\begin{cases} 1\space\space\space if \space S_{n, x, y} >= 0.5 \\ 0\space\space\space otherwise \end{cases} \end{aligned} Lc=1D(SnM,GnM)Ls=1n11(i=1n1D(SiW,GiW))W={1   if Sn,x,y>=0.50   otherwise
     M M M的取值采用在线难例挖掘(online hard example miniing,OHEM)的方式生成,也是一个0/1的掩码。OHEM算法的核心思想是根据输入样本的损失进行筛选,筛选出难例,表示对分类和检测影响较大的样本,然后将筛选得到的这些样本应用在随机梯度下降中训练。具体到该模型中,选取所有正样本(主要是正样本本来就偏少,所以就全取)以及困难样本,过滤掉easy的负样本。被选中的像素点取值为1,未选中的取值为0。
    最后说一些感受,OCR中文本检测本人用过YOLO、CTPN、PSENet。对于这三个模型的感受是,YOLO和CTPN的检测速度较快,PSENet的检测速度稍慢,YOLO对于长文本或短文本的很容易出现缺损或丢失的情况,CPTN在长短文本方面效果好一些,但是文本对齐效果不理想,PSENet在检测效果方面是碾压了前两者的。PSENet不仅适应任意角度的文本检测,而且对近距离文本分割效果更好。

  • 13
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值