PSENet笔记(二)

上一篇介绍了一下使用开源代码测试,这一篇介绍一下原理。

参考:https://www.jianshu.com/p/5668e1e01e26

参考:《Shape Robust Text Detection with Progressive Scale Expansion Network》

网络结构:

论文中主要内容从第3节开始,PSENet的总流水线(管道)如上图所示。网络架构受FPN(Feature Pyramid Network)启发。

3.1 管道结构   如上图。

3.2 渐进尺度展开算法 

实际文章中n=6,但是为了更方便解释,这里假设n=3,即网络最终输出了3张分割结果,首先从最小的分割结果开始,如上图(a)所示,能够找出四个分割区域。这四个分割区域用四种不同的颜色表示,这样能得到所有文本的中心区域,然后将这些区域与进行合并得到最终结果,结果分别如上图(c)和图(d)所示。上述依次合并的规则如上图(g)所示(Breadth-First-Search algorithm)。在合并的过程中可能会遇到如上图(g)中的冲突情况,在遇到冲突的情况下,采用"先到先得"的方式。

 

 In the pseudocode, T,P are the intermediate results. Q is a queue. Neighbor(·) represents the neighbor pixels of p. GroupByLabel(·) is the function of grouping the intermediate result by label. “S i [q] =True” means that the predicted value of pixel q in S i belongs to the text part.

上面的伪代码中,T、P是中间结果,Q是队列,Neighbor(·)代表p的邻接像素,GroupByLabel(·)是按标签分组的函数,S i [q] =True表示Si中的像素q的预测值属于文本部分。

3.3 标签生成

因为网络输出有n个分割结果,所以对于一张输入图片来说groundtruth也要有n个。这里groundtruth就是简单的将标定的文本框进行不同尺度的缩小,如下图所示。下图中(b)就是标定框也是最大的groundtruth S_n,如下图(c)的最右侧图所示。为了获得下图(c)中的其他图,文章采用Vatti clipping算法将原多边形p_n缩小d_i个像素得到p_i。最终得到的n个groundtruth用G_1,G_2,...,G_n表示。需要缩小的像素通过下面式子得到:

d_i = \frac{Area(p_n)*(1-r_i^2))}{Perimeter(p_n))}                      (1)

上式中,d_i表示要缩小的像素值,Aerea(.)表示多边形的面积,Perimeter(.)表示多边形的周长,r_i表示缩小的比例。

缩小比例r_i的计算方式如下所示:

r_i=1-\frac{(1-m)(n-i))}{n-1}                      (2)

上式中,m表示最小的缩放比例,是一个超参数,取值范围为(0,1],本文取m=0.5。n为最终输出多少个尺度的分割结果,文章设为6。

3.4 损失函数

PSENet损失函数可以定义如下:

L=\lambda L_c+\left ( 1-\lambda L_s \right )                            (3)

其中L_cL_s分别代表文本的损失和多个缩小的文本的损失,\lambda用于平衡L_cL_s之间的权重。

一般,在自然图像中,文本只占很小的区域,这会导致使用二值交叉熵时网络的预测结果偏向于非文本区域。受论文[20]的影响,我们在实验中采用了dice coefficient。 dice coefficient的定义如(4)式:

                                             D(S_i ,G_i ) =\frac{2\sum_{x,y}\left ( S_{i,x,y}*G_{i,x,y}\right )}{\sum_ {x,y}S_{i,x,y}^{2}+\sum _{x,y}G_{i,x,y}^{2}}                         (4)

其中,S_{i,x,y}G_{i,x,y}​是像素(x,y)的分割结果S_i和Ground Truth G_i

此外,还有许多类似于文字笔画的模式,如栅栏、格等。因此,我们在训练中采用在线难例挖掘(OHEM) 到LcL_cLc​,以便更好地区分这些模式。

L_c​的重点是分割文本和非文本区域。 让我们考虑OHEM给出的训练mask为M,因此L_c可以写为:

                                                 L_c = 1-D(S_n\cdot M,G_n\cdot M)                    (5)

L_s​是收缩文本实例的损失。 由于它们被完整文本实例的原始区域包围,因此在分割结果SnS_nSn​中忽略了非文本区域的像素,以避免一定的冗余。因此,L_s可以定义为:

                           L_s = 1- \frac{\sum _{i=1}^{n-1}D\left ( S_i\cdot W,G_i\cdot W \right )}{n-1}, W_{x,y}=\left\{\begin{matrix} 1 &,if S_{n,x,y}\geq 0.5; \\ 0 & ,otherwise \end{matrix}\right.            (6)                                        

其中,W是一个掩码,它忽略S_n中非文本区域的像素,S_{n,x,y}​指S_n中像素(x,y)的值。

 

上面时论文作者实验结果,从图(a)中可以看出n=6(3.2 渐进尺度展开算法中有对n的说明)时就能取得较好的结果,没有必要再增加缩放个数;从图(b)中可以看出m=0.5时取得较好的结果,太大或太小性能都会有所下降。n=1,m=1.0对应的是原图不缩放。

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花逐流水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值