场景文字检测概述

简介

文字场景检测一直是一个热门的研究热点,文字场景检测和目标检测十分类似,用到的原理也包含了目标检测里面的faster rcnn、ssd等。

卷积网络的空间不变性是一个非常重要的特性。正是由于卷积网络的空间不变性,我们可以利用其进行字符的位置定位,CTPN的主体网络结构使用到了卷积神经网络VGG以及LSTM来提取图片的特征值。能够检测出复杂场景下的横向分布的文字,它是在faster rcnn基础上开发的。以下是直接使用faster rcnn训练以及测试与使用ctpn训练测试结果展现,效果对比如下:
场景文字检测概述_第1张图片
由左图可以看出,faster rcnn能够直接检测出文字区域,如果文字之间过近或者大小发生变化,检测结果将不会十分理想。而如果使用ctpn方式,ctpn首先会检测出不同的长方形区域,这些长方形区域正好能够覆盖文字区域。

CTPN网络结构

CTPN网络结构是被用来设计检测横向排列的文字。CTPN结构与Faster R-CNN基本类似,也可以自己去设置特征属性提取结构,不同于Faster R-CNN的是,CTPN使用了LSTM层结构。当然,如果直接介绍CTPN网络结构还是推荐首先看懂faster rcnn以及lstm的源码,这样会比较好理解CTPN各个层的作用以及对层内的影响,这样就能够自己去改进主体网络架构,主体架构可以参看一下:深度学习在医学领域的应用中的图像领域的主体网络的作用。当然,本文不会重点讲解CTPN的结构,仅仅说明一下如何训练以及如何测试。

CTPN网络训练

  • 和Faster R-CNN网络训练类似,标注工具可以使用labelImg或者labelme,使用两者制作的样本训练原始的CTPN网络是一模一样的。然而,labelImg仅仅只能够标注出文字的正方形区域,为了后期自己或者它人能够拓展,推荐使用labelme能够利用四边形精确地标注出文字区域。
    给出一个ctpn作者标注的voc格式的标注文件:
    场景文字检测概述_第2张图片
    可以看到文字区域部分并没有被完整的标注成长方形方框,而是将此区域切割成宽是固定长度的子区域(此处为16像素点),所以,做样本标注时,需要遵循一下步骤:
  1. 使用labelImg或者labelme工具将文字标注出来
    此时标注结果如下图:
    场景文字检测概述_第3张图片
  2. 使用脚本处理前一步标注的标签,将文字区域划分成宽度固定的子区域(也就是给出的论文作者训练用的voc格式标注文件)
  3. 开始训练,训练方式与faster rcnn一致

CTPN网络测试

这时可能会有疑问了,使用这种方法标注区域然后训练,训练出来的模型虽然能够检测文字区域,但这些文字区域也是和标注类似的小区域呀!!!

  • 通过训练出来的模型检测结果将会如图所示的一串或者 多串text proposal,接下来需要采用文本线构造方法,把这些text proposal连接成一个文本框,如果清楚faster rcnn,接下来的操作与非极大值抑制算法类似,都是对检测结果进行后续操作。
    场景文字检测概述_第4张图片

此时的后续操作并不是非常重要,所以这里就不介绍了,直接给出相应的连接 场景文字检测—CTPN原理与实现,具体实现原理可以参考一下,和极大值抑制算法比较类似。

你可能感兴趣的:(Tensorflow,人工智能)