论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)
Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks
目录
- 作者和相关链接
- 方法概括
- 方法细节
- 创新点和贡献
- 实验结果
- 问题讨论
- 总结与收获点
作者和相关链接
- 作者:
方法概括
- Step 1——文本块检测: 先利用text-block FCN得到salient map,再对salient map进行连通分量分析得到text block;
- Step 2——文本线形成: 对text-block利用MSER提取候选字符区域,利用候选字符区域估计整个block的方向,再结合候选字符的bounding box生成每个每条文本行;
- Step 3——文本线过滤: 利用centroid FCN得到每条文本行中的字符的质心,利用质心过滤非文本行;
以下为细化的每个步骤示例图:
Figure 1. The procedure of the proposed method. (a) An input image; (b) The salient map of the text regions predicted by the TextBlock FCN; (c) Text block generation;
(d) Candidate character component extraction; (e) Orientation estimation by component projection; (f) Text line candidates extraction; (g) The detection results of the proposed method.
方法细节
text blcok 检测
- Text-block FCN的网络结构
选用VGG16的前5层卷积层,去掉后面的全连接层。在每个卷积层后都接上一个deconv操作(由1*1的卷积+上采样构成)。再把5个deconv得到的maps用1*1的卷积进行 fusion,并经 过一个sigmoid层得到salient map。
- Text-block FCN生成salient map的示例图
从第1层到第5层的细节越来越少,global的信息越来越强。
- 普通方法得到的的salient map和由text-block FCN得到的salient map对比
- text block FCN用到的训练图
文本线生成
- MSER提取字符候选区域
- 在每个text block里进行MSER提取(不要求MSER把所有字符都提取出来,允许漏检和存在噪声);
- 利用候选区域的面积、长宽比过滤大部分噪声(仅在text block里提取,噪声不多,比较单一);
- projection方法估计直线方向
- 在text block里找到最优的h和θ(可以确定一条直线),使得该直线穿过的component个数最多;
- 本方法的假设条件:第一,同一block中,所有文本线的方向一致;第二,文本线是近直线的;
- MSER提取字符候选区域
- 候选文本线生成
- 对每个block里的所有component进行聚类,聚类条件如下:
- 每个grouping生成bounding box
- 沿着block(记为α)的方向θr(α)的方向画一条直线l,该直线经过这个grouping中的所有component的中心(所有component中心中随便取一个或者取中间那个?);
- 将直线l与α的边缘点的交点集合记为P(α是图(b)中的所有白色点的集合),即如下图中的最左边和最右边的两个红点。
- 利用点集P和每个componet的bounding box生成整条文本线的bounding box(求并集)
- 对每个block里的所有component进行聚类,聚类条件如下:
- 候选文本线生成
文本线噪声过滤
- character-centroid FCN获得每条文本线中的所有可能存在的字符的质心
- 模型结构:从text-block FCN的5层卷积→3层卷积(text-block FCN的缩小版)
- 训练样本:距离字符中心(ground Truth中的字符中心?)距离小于字符高度的15%的点都算作正样本点,其他点算作负样本点、
- 非文本线噪声过滤
- 质心概率的均值过滤
- 几何角度过滤(近直线)
- 质心概率的均值过滤
- character-centroid FCN获得每条文本线中的所有可能存在的字符的质心
创新点和贡献
- 贡献
- 用FCN生成文字/非文字的salient map;
- 利用局部(Component based )和全局(context of the text block ) 的信息生成文本线;
- 用FCN得到字符的质心;
- idea的出发点
- FCN既然可以作像素级的标定,那么可以用来得到每个像素属于文字的概率(salient map),也可以用来得到每个像素是字符质心的概率(centroid map );
- 单个字符容易受背景干扰,容易造成漏检或者误检,而文本块相对于字符不但区分性更强(更容易与背景区分开),而且更稳定(一般比较完整)。因此,如果能把单个字符的信息(局部,细节)与上下文信息(文本线)结合起来,就能使检测更加鲁棒;
- 贡献
实验结果
- MSRA-TD500
- ICDAR2015
- ICDAR2013
- 示例图
- 失败的图
- MSRA-TD500
问题讨论
- 为什么FCN可以用来做文字?有什么好处?
- FCN可以融合局部(字符)和全局信息(文本线);
- FCN是端到端训练;
- FCN由于去掉了全连接层后在像素级的标定很快,而且文字本身也容易获得像素级标定的训练数据;
- 为什么这篇文章的方法可以解决多方向的文字检测问题?
- 文章中决定文字方向的方法是text block(记为α)上利用MSER检测候选字符,再在整个block上找到一条直线θr(α),使得经过的候选字符个数最多。由于直线θr(α)的两个参数h和θ都没有约束限制,因此可以检测任意方向的文字;
- deconv中1*1的卷积作用是什么?
- 1*1的卷积得到的map大小和原图是一样的,所以作用一般有三个。一是为了把多通道的信息融合起来;二是为了升维或降维(把上一层的channel数变多或者变少);三是有时候1*1的卷积是在做pixel-wise的prediction。
- deconv中上采样的作用是是什么?
- 因为每一层卷积得到的map大小是不同的,而且和原图相比都更小,在fusion的时候要得到和原图相同大小的map所以要进行上采样。这个上采样的核(参数)在FCN中是可以学习的,初始化的时候可以选择用双线性插值;
- 得到的text block为什么不能直接看成是文本线,为什么还要单独一步专门做文本线生成?
- 第一,当多条文本线靠得比较近时,容易被一个block包含;第二,text block得到的区域范围太粗糙,并没有准确的文本位置;
- 文本线方向估计的这个projection的算法实际是如何操作的?(遍历h和θ?)
- 在文本线过滤中得到的质心图是一个概率图,如下图所示,是一团白色区域,而不是唯一的一个点,每个字符最终是由一个质心表示么?如何确定这个唯一的质心?(使用类似于meanshift,nms找到极值点?)
- deconv中1*1的卷积作用是什么?
总结与收获点
- 把text block(global)和character(local)的特点综合起来,这个想法非常好,要把Faster RCNN与component的方法结合起来可以参考这篇文章的一些思想。
- 这是第一个用FCN来做文字的文章,虽然准确率高,但是pixel wise还是比较慢的。文字和其他目标检测不大一样,太细了。需要找其他方法来检测text block。
论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)的更多相关文章
- 论文阅读笔记十三:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation(FC-DenseNets)(CVPR2016)
论文链接:https://arxiv.org/pdf/1611.09326.pdf tensorflow代码:https://github.com/HasnainRaz/FC-DenseNet-Ten ...
- 【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来 ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- 【Semantic Segmentation】 Instance-sensitive Fully Convolutional Networks论文解析(转)
这篇文章比较简单,但还是不想写overview,转自: https://blog.csdn.net/zimenglan_sysu/article/details/52451098 另外,读这篇pape ...
- 【Detection】R-FCN: Object Detection via Region-based Fully Convolutional Networks论文分析
目录 0. Paper link 1. Overview 2. position-sensitive score maps 2.1 Background 2.2 position-sensitive ...
- 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)
论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...
- 论文阅读笔记十:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)(CVPR2016)
论文链接:https://arxiv.org/pdf/1606.00915.pdf 摘要 该文主要对基于深度学习的分割任务做了三个贡献,(1)使用空洞卷积来进行上采样来进行密集的预测任务.空洞卷积可以 ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 【论文速读】Fangfang Wang_CVPR2018_Geometry-Aware Scene Text Detection With Instance Transformation Network
Han Hu--[ICCV2017]WordSup_Exploiting Word Annotations for Character based Text Detection 作者和代码 caffe ...
随机推荐
- 【BZOJ1087】 [SCOI2005]互不侵犯King 状压DP
经典状压DP. f[i][j][k]=sum(f[i-1][j-cnt[k]][k]); cnt[i]放置情况为i时的国王数量 前I行放置情况为k时国王数量为J #include <iostre ...
- <一>获取数据库连接
一.JDBC_通过Driver接口获取数据库连接 1. Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接. 2.JDBC URL由三部分组成,各部分用冒号隔开,格式:j ...
- 201301 JAVA题目0-1级
描述 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回 ...
- 如何在移动设备上调试html5开发的网页
在我们用phoengap+html5做的移动app中,经常遇到的问题就是 本地网页兼容但是到了app出现不兼容的情况,原因是手机端页面,大多运行在webkit内核的浏览器上,但还是会因平台.厂商的不同 ...
- javascript函数小练习
求n-m之间数据的和 <script> function num(n,m){ var sum=0; for (var i = n; i <= m; i++) { sum+=i; } ...
- 如何通过apk获得包名及Activiy 名称
一.使用重签名工具Robotium
- Git系列教程二 基础介绍
一.存储方式 如果让我们设计一个版本控制系统,最简单的方式就是每做一次更改就生成一个新的文件. 这样的方式太占用空间,所以传统的版本控制系统都是保存一个文件的某个版本的全部内容以及其他版本相对于这个版 ...
- 使用github的使用,利用git shell命令行模式进行操作
一.登录到git,新建一个版本仓库 二.在"Repository name"一栏里填写版本仓库的名称,如"test",Description栏是描述,可填可不填 ...
- 实验五(简单嵌入式WEB服务器实验)问题总结
实验五问题总结 问题链接:<信息安全系统设计基础>实验五实验报告 虽然将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中c ...
- 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...