作者:刘恒

编辑:CV君

PSENet文本检测算法来自论文《Shape Robust Text Detection with Progressive Scale Expansion Network》,2018年7月发表于arxiv,已被CVPR 2019 接收。

论文作者来自南京理工大学和南京大学,其中第一作者来自南理工杨健老师PCALab组。

原作者代码地址:https://github.com/whai362/PSENet

目前该仓库没有给出源码,只有一些原理图和实验结果。

笔者的实现:https://github.com/liuheng92/tensorflow_PSENet

该方法的速度较快,使用resnet作为主干网络,在ICDAR2015数据集上的最快能达到12.38fps,此时的f值为85.88%,而且该方法适用于弯曲文字的检测。

文章思想

文章认为其提出的方法能避免现有bounding box回归的方法产生的对弯曲文字的检测不准确的缺点(如下图b所示),也能避免现有的通过分割方法产生的对于文字紧靠的情况分割效果不好的缺点(如下图c所示)。该文章的网络框架是从FPN中受到启发采用了U形的网络框架,先通过将网络提取出的特征进行融合然后利用分割的方式将提取出的特征进行像素的分类,最后利用像素的分类结果通过一些后处理得到文本检测结果。

一、网络结构

文中的主干网络采用resnet,网络框架类似于FPN的结构,如下图所示。

上图中先利用resnet提取出四层feature maps(

),将得到的四层特征图进行融合得到特征图用F表示,融合的方式用下面公式表示:

上式中,“||”表示的是concatenation操作,

分别表示的是将feature map进行上采样,上采样的倍数分别是2,4,8倍。

特征图F送入3*3大小的卷积中输出通道数为256的特征图,将此特征图再送入1*1大小的卷积层中输出n个最终的结果,这n个结果用

表示。

最后将n个输出结果通过一定的后处理得到最终的文字检测结果。

这里还要说明的是的区别,

是图像文字的分割结果,他们的不同点在于他们分割出的文字区域大小不同,例如

给出的是最小的文字区域分割结果,而

给出的是最大的文字区域分割结果(理想情况下就是GroundTruth)。

二、后处理算法

(Progressive Scale Expansion Algorithm-PSE)

看这个名字就很容易理解为什么这篇文章被称为PSENet了。

该后处理算法如下图所示:

实际文章中n=6,但是为了更方便解释,这里假设n=3,即网络最终输出了3张分割结果

,首先从最小的分割

结果开始,如上图(a)所示,能够找出四个分割区域

。这四个分割区域用四种不同的颜色表示,这样能得到所有文本的中心区域,然后将这些区域与

进行合并得到最终结果,结果分别如上图(c)和图(d)所示。上述依次合并的规则如上图(g)所示(Breadth-First-Search algorithm)。在合并的过程中可能会遇到如上图(g)中的冲突情况,在遇到冲突的情况下,采用”先到先得”的方式。

更为详细的合并规则用下面的伪代码表示,其中T,P表示的中间结果,Q表示的是队列,

表示像素的邻域,

表示属于某一类的中间结果的label。

表示预测的中的像素q是文字。

三、标签的生成

因为网络输出有n个分割结果,所以对于一张输入图片来说groundtruth也要有n个。这里groundtruth就是简单的将标定的文本框进行不同尺度的缩小,如下图所示。下图中(b)就是标定框也是最大的groundtruth

,如下图(c)的最右侧图所示。为了获得下图(c)中的其他图,文章采用Vatti clipping算法将原多边形

缩小

个像素得到

。最终得到的n个groundtruth用

表示。需要缩小的像素通过下面式子得到:

上式中,

表示要缩小的像素值,

表示多边形的面积,

表示多边形的周长,

表示缩小的比例。

缩小比例

的计算方式如下所示:

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

四、损失函数的定义

损失函数的定义如下:

其中,

表示没有进行缩放时候的损失函数,即相对于原始大小的groundtruth的损失函数,

表示的是相对于缩放后的框的损失函数。

关于损失函数文章没有采用交叉熵而是采用的分割常用的dice coefficient,使用公式表示如下

上式中

分别表示在位置(x,y)处分割结果

和groundtruth

的值。

文章使用了OHEM的方法,对于OHEM给出的训练mask为M的情况下,

的计算方法如下:

因为其他缩小框的分割结果会被原始大小的框包围,文章说为了避免冗余,在计算缩小框的损失函数时去除了

结果中为非文本的区域,所以

计算方式如下:

上式中Sn,x,y表示在

中像素(x,y)的值。

五、实验结果

下表是原文在数据库ICDAR 2015, ICDAR 2017 MLT 和 SCUT-CTW1500上测得的结果。表中“P”,“R”和“F”分别表示准确率,召回率和F值。“1s”, “2s” and “4s”表示输出的featuremap的宽和高分别为输入测试图像宽高的 1/1, 1/2 and 1/4。F值最好和次好的结果分别用红色和蓝色标出。

这个结果已经相当优秀了,尤其是在IC17-MLT、SCUT-CTW1500数据集上大幅超越之前的state-of-the-art的结果(2018年7月)。

文章还有一些试验细节的说明和讨论,详情可以查阅原文。

检测结果示例:

论文代码下载

论文地址:

https://arxiv.org/pdf/1806.02559.pdf

笔者复现:

https://github.com/liuheng92/tensorflow_PSENet

pse文本行检测_CVPR 2019 | 文本检测算法PSENet解读与开源实现相关推荐

  1. CVPR 2019 | 文本检测算法PSENet解读与开源实现

    点击我爱计算机视觉标星,更快获取CVML新技术 作者:刘恒 编辑:CV君 PSENet文本检测算法来自论文<Shape Robust Text Detection with Progressiv ...

  2. 9月1日目标检测学习笔记——文本检测

    文章目录 前言 一.类型 1.Top-Down 2.Bottom-up 二.基于深度学习的文本检测模型 1.CTPN 2.RRPN 3.FTSN 4.DMPNet 5.EAST 6.SegLink 7 ...

  3. 论文盘点:CVPR 2019 - 文本检测专题

    作者丨燕小花 研究方向丨计算机视觉 CRAFT 论文主要思想 本文的主要思路是先检测单个字符(character region score)及字符间的连接关系(affinity score),然后根据 ...

  4. keras faster物体检测_URPC 2019水下目标检测竞赛冠军方案:多图像融合增强

    下面要介绍的论文发于2019年12月,题为「ROIMIX: PROPOSAL-FUSION AMONG MULTIPLE IMAGESFOR UNDERWATER OBJECT DETECTION」, ...

  5. 【调研】特殊网络图像的敏感词检测,图像文本检测提取

    一 调研·敏感图像能做点什么 1  特殊网络文本图像: 扭曲? 倾斜?验证码形式? 躲避OCR. related work: 验证码类型? 特殊网络文本图像是一类用来躲避OCR的图像,大多包含敏感信息 ...

  6. 限制文本行数,CSS文本溢出省略号,及兼容火狐

    一,css\处理行数溢出隐藏,省略号.....注:此方法不兼容火狐 1.单行隐藏.hhh{ overflow: hidden;/*文本不换行*/white-space: nowrap;/*文字超出用省 ...

  7. python shuffle 文本行/Python 打乱txt文本顺序

    在做分类算法训练的时候,没有做lmdb,直接用txt文件输入数据,但是生成的txt文件里面每一类照片是顺序存放的,这样会影响训练效果,因此要把txt里面的顺序打乱, import os import ...

  8. 人工智能学习--文本检测初探

    一.相关概念和综述: 转自知乎热心网友 燕小花女士的内容,供学习使用,若侵权则删.貌似写于2018年12月,之后这几年的流行方法更新,自行搜索sci顶刊和会议论文. https://zhuanlan. ...

  9. 计算机视觉 文本检测与文本识别 (一)

    文本检测 传统文本检测 形态学: MSER+NMS 深度学习文本检测分类 基于候选框的文本检测 基于分割的文本检测 基于混合的文本检测 传统文本检测 当前应用中面对文本检测会遇到很多难点: 文本图像的 ...

最新文章

  1. Android中有关Handler的总结
  2. 深入理解特征值与特征向量
  3. php数组的奇数_用php输出一个数组中的偶数或奇数的方法
  4. java内部类的使用
  5. 在Eclipse中运行Nutch2.3
  6. click() bind() live() delegate()区别
  7. Python入门方法--简单总结+学习方式思考
  8. C语言二叉树之二叉链表
  9. oracle 9企业版,Oracle 9i简体中文企业版【32位amp;564位客户端】 - 网络软件频道 -天天游戏吧...
  10. python之列表相关操作
  11. 实现类去实现接口的时候,将接口的注释一起重写出来设置
  12. 系统集成项目管理工程师中高级一次通过经验之谈
  13. 使用DCMTK实现DICOM文件浏览器dicom explorer
  14. Win10系统开启黑暗主题
  15. 装甲逆袭-获取坦克界面
  16. CPU消耗高,tps低问题排查分析
  17. revit阶梯剖的创建方法及快速剖面操作
  18. ARP中使用driftnet工具捕获图片
  19. nVidia驱动安装详解
  20. html2canvas html截图

热门文章

  1. 【HDU 1043】Eight(A*启发式搜索算法)
  2. Springboot中new出来的实例中含有@Autowired注入时的Spring Bean为NULL
  3. 《身边的礼仪》视频全文
  4. 支持javascript的ppt软件_除了PPT还有哪些演示文稿制作软件
  5. 智能驾驶定位三大发展趋势是什么?
  6. 好的大创计算机类课题,年电信学院大创项目选题清单.xlsx
  7. 测试淘宝站内的搜索系统
  8. android 如何检查外部来源,Android是如何判断APK是否不明来源的
  9. 不礼让行人怎么抓拍的_去交警队看看,不礼让行人抓拍如何界定?
  10. bp神经网络算法的优缺点,bp神经网络与bp算法区别