PMTD(Pyramid Mask Text Detector)论文详解

《Pyramid Mask Text Detector》,在2019年3月28日上传到arxiv网站,这篇文章真是把ICDAR MLT2017和ICDAR2015数据库刷出了新高,在两个库的f值分别达到80.13%和89.33%。

文章思想:把文字检测当作图像分割来做,采用在分割上获得不错效果的Mask R-CNN方法,但是直接使用该方法有一些缺点如下:

  1. 监督过于简化,目前文字检测常用的还是用四个点表示的四边形进行定位,目前基于Mask R-CNN的检测方法只是将文本从背景中分割出来,没有很好的考虑到groundtruth为四边形的情况,所以没有很好的利用这点

  2. 不准的groundtruth用于分割,很多情况下分割的标签只是简单的从标定框二值化而来,有时候一个框内可能有很大一部分像素是背景,这样会导致产生的gt不准,如下图所示


    1.png
  3. 错误信息的传递,因为在Mask R-CNN中是先得到检测的框,然后对框内的物体进行分割,如果框的位置不准确,这样会导致分割出来的结果也不会准确,如下图所示


    2.png

下面来介绍一下文章是怎么去解决这些问题的。
文章做了两个实验,一个是baseline方法,一个是文中重点PMTD方法。

一、baseline方法

先简单介绍一下baseline方法。
baseline的主干网络使用resenet50,网络结构采用FPN结构。
该方法和Mask R-CNN文章的不同数据增强和rpn achor的尺寸设置。
对于数据的增强:

  1. 将图片按照0.5的概率水平翻转
  2. 随机的将图片的长和宽resize到640-2560之间,并且不保证长宽比不变
  3. 随机的在第二步resize后的图片选择640*640大小的区域进行截取

对于FPN结构,与anchor有关的设置包括基本的anchor大小、需要进行搜索的feature map、anchor的长宽比。
文章将在所有的FPN输出的四个feature map\{1/4, 1/8, 1/16, 1/32\}上进行anchor的搜索,且anchor大小都为4\times 4,anchor的纵横比取\{0.17, 0.44, 1.13, 2.90, 7.46\}。之所以这样取,是因为文章分析了数据增强后的数据中bounding box的纵横比,纵横比处在0.17之前的数据占5%,处在7.46之前的数据占95%,然后再0.17-7.46之间均匀的插入三个值得到\{0.17, 0.44, 1.13, 2.90, 7.46\}

在训练的时候还采用了OHEM来挖掘难样本。

二、PMTD

baseline做法的缺点如下:

  • 没考虑到通常的文本为四边形,只是将像素去分类,这样丢失了一些与形状有关的信息

  • 将四边形的标定转换为像素级别的groundtruth会造成groundtruth不准的问题,如上面第一张图所示,框内会有一部分非文字的像素被转换为正样本

  • 在Mask R-CNN中是先得到检测的框,然后对框内的物体进行分割,如果框的位置不准确,这样会导致分割出来的结果也不会准确,如上面的第二张图所示

2.1 PMTD的网络结构

如下图所示,基本和Mask R-CNN一致,只是在分割操作的训练和测试有所不同,不同的原因是由groundtruth标签和推断算法导致的,下面将详细介绍。


3.png
2.2 金字塔标签(Pyramid label)的生成

这部分也就是groundtruth的生成
以前的做法是将文本框中的像素置为1,其他置为0,groundtruth只有这两个值,现在groundtruth是[0,1]区间内的值。groundtruth的取值如下图所示,文章将文本框的中心称为金字塔顶,且该点的取值为1,金子塔底为文本标定框的边。图中每条三角形的边的取值都采用线性插值得到。


4.png

下面用公式解释
对于给定的四个点A(x_{a}, y_{a}),B(x_{b}, y_{b}),C(x_{c}, y_{c}),D(x_{d}, y_{d}),对于框中的一点P(x_{p}, y_{p})的值score_{p}的计算如下:
首先对于金子塔尖,也就是框的中心点的计算如下所示:
x_{o}=(x_{a}+x_{b}+x_{c}+x_{d})/4
y_{o}=(y_{a}+y_{b}+y_{c}+y_{d})/4
对于每个R_{OMN},其中M和N指的是A、B、C、D四点中的两点,即区域R_{OAB}R_{OBC}R_{OCD}R_{ODA}
\overrightarrow{OP}能用下式分解:
\overrightarrow{OP}=\alpha\overrightarrow{OM}+\beta\overrightarrow{ON}
\left[ \begin{matrix} x_{p}-x_{o} \\ \ y_{p}-y_{o} \end{matrix} \right] =\left[\begin{matrix}x_{m}-x_{o} & x_{n}-x_{o} \\ \ y_{m}-y_{o} & y_{n}-y_{o}\end{matrix}\right] \left[ \begin{matrix} \alpha \\ \beta\end{matrix} \right]

这样\alpha \beta可以通过下式获得
\left[ \begin{matrix} \alpha \\ \beta\end{matrix} \right]=\left[\begin{matrix}x_{m}-x_{o} & x_{n}-x_{o} \\ \ y_{m}-y_{o} & y_{n}-y_{o}\end{matrix}\right]^{-1}\left[ \begin{matrix} x_{p}-x_{o} \\ \ y_{p}-y_{o} \end{matrix} \right]

因为P点在R区域内,所以\alpha \beta应该满足下面条件
\alpha\ge0 \quad or \quad \beta\ge 0

P点的取值为
score_{p}=max(1-(\alpha+\beta), 0)

2.4 损失函数

损失函数和Mask R-CNN类似如下式所示
L = L_{rpn} + λ_{1}L_{cls} + λ_{2}L_{box} + λ_{3}L_{pyramid mask}
其中 λ_{1}λ_{2}λ_{3}分别取值为1、1、5。

2.3 推断过程的后处理操作

知道了label的制作方法,网络结构和loss函数后就可以训练模型了,在得到模型进行推断过程中,经过网络的前向操作可以得到对应原图中每个像素的预测值。

得到这些预测值后需要经过平面聚类(plane clustering)的方法来得到最终的预测文本框。

首先要明确的是在一张图上,图是二维的,加上预测出的每个像素的值就是三维的了。将值看成是z轴的值,也就是第三维上的值。

下面来看看平面聚类(plane clustering)方法的伪代码


5.png

文章对于上面伪代码的标识解释不是很详细,下面文章描述一遍。
平面聚类(plane clustering)是一个迭代的过程,如下图所示:


6.png

迭代过程为:

  1. 将网络输出预测图,将大于0.1的像素看成是正样本,这些正样本组成一个集合称为P。将P的中心点作为金字塔的顶点,并设其值为1。预测出的boundingbox的四个顶点作为金字塔底的四个点(如上图虚线所示)。
  2. 经过上面步骤就可以得到初始的四个金字塔平面,然后将预测出来的点分配给离点最近的平面
  3. 所以点分配完成后采用最小二乘法更新平面的位置
  4. 回到第一步进行迭代

迭代的结束条件为最小二乘返回一个很小的值(文章设为1e-4)或者到达最大的迭代次数(文章设为10),这样就得到最终的文本框(如上图最后一图的虚线所示)。

到这里文章的算就介绍完了,文章的结果和试验等详细情况请到原文查询,还有文章还使用了空洞卷积来扩大感受野可以去文章看更详细的说明。

中文本定位与识别的评测方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342