CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记

前言

本文是对CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》论文的简要介绍和细节分析。该论文是华中科大白翔组的工作,主要针对自然场景下文本检测模型由char-level到word-level和line-level的检测。
关键词:SSDSegmentLinkScene Text Detection
注:编者水平有限,如有谬误,欢迎指正。若要转载,请注明出处,谢谢。
联系方式:
邮箱:[email protected]
QQ:1156356625


Introduction

自然场景下的文本检测可以看作一种特殊的目标检测,在模型的第一步,往往需要生成能够足够覆盖单词或者句子的bounding box。但是不同于真实世界的实体,自然场景的文本角度多变、长短不一、间隔不同,普通的目标检测算法不能很好胜任。
所以在目标检测的模型基础上,作者提出了将自然场景文本分解为两个元素:分割 (segment)连接 (link),二者联立将重复的多尺度字符框连接成单词或者句子。

CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记
模型具备以下特点:

  • 分割和连接同时进行,不需要分开训练。
  • 以SSD为基础模型
  • 多尺度融合
  • 两种连接类型:1-层内连接 2-跨层连接

模型的思想还是很符合直觉的,其难点是怎样把分割和连接的思想有效转化为模型结构,并且能在代码层面进行实现(同时避免大量造*)。

Segment Linking

模型框架:
CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记
一些细节:
模型bounding box的表达形式为(xb,yb,wb,hb,θb)(x_b,y_b,w_b,h_b,\theta_b),其中wb,hbw_b,h_b是框的中心坐标,θb\theta_b是框的水平夹角(倾斜角)。分割和连接只运用在某些层的feature map上,文*选用了6层。

segment detection

文中的分割并非是指单一的像素级的分割,而是等同回归框检测+特征层像素分割的的分割。采用了SSD框架中的的default boxes,但是feature map的每个位置上只用一个框作为简化。考虑第ll个特征层的尺寸为wl×hlw_l\times h_l,坐标(x,y)(x,y)对应的default box中心为(xb,yb)(x_b,y_b)
xa=wIwl(x+0.5)(1)x_a=\frac{w_I}{w_l}(x+0.5)\tag{1} ya=wIwl(y+0.5)(2)y_a=\frac{w_I}{w_l}(y+0.5)\tag{2}default box的宽度和高度都设置为常量ala_l
对于特征层上的某个像素点(x,y)(x,y),检测器得到2个分割的正样本值和负样本值(代表二分类的是否属于文本区域),和5个几何偏移(Δxs,Δys,Δws,Δhs,Δθs)(\Delta x_s,\Delta y_s,\Delta w_s,\Delta h_s,\Delta\theta_s)。根据偏移和默认框计算得到的预测值为
xs=alΔxs+xa(3)x_s=a_l\Delta x_s+x_a\tag{3} ys=alΔys+ya(4)y_s=a_l\Delta y_s+y_a\tag{4} ws=al exp(Δws)(5)w_s=a_l \ exp(\Delta w_s)\tag{5} hs=al exp(Δhs)(6)h_s=a_l \ exp(\Delta h_s)\tag{6} θs=Δθs(7)\theta_s=\Delta\theta_s\tag{7}可以看出(3),(4)是线性偏移,(5),(6)是指数偏移,这是因为坐标和长宽的量级不同,很容易理解。常量ala_l控制分割输出的尺度,常量γ\gamma控制尺度的放缩。
al=γwIwl,  γ=1.5(8)a_l=\gamma \frac{w_I}{w_l}, \ \ \gamma=1.5\tag{8}

Link Detection

两种连接示意图:

CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记

  • Within-Layer
    分割检测得到的是字符或字符块,层内连接将一对相邻的分割连接起来,表示二者属于同一个单词。作者认为连接不仅能帮助拼接分割块,还对分离两个相邻单词有益。层内连接的实现是对于feature map的每个位置,同样通过卷积得到其与8个相邻位置连接与否的16个值来进行。
    Ns(x,y,l)w={s(x,y,l)}x1xx+1,y1yy+1s(x,y,l)(9)N^w_{s^{(x,y,l)}}=\{s^{(x',y',l)}\}_{x-1\leq x'\leq x+1,y-1\leq y'\leq y+1}\setminus s^{(x,y,l)}\tag{9}
  • Cross-layer
    为了检测不同尺度的文本,在不同层产生的分割框会存在大量冗余。而跨层连接的目的就是为了解决冗余问题,根据不同融合层feature map尺寸缩放为14\frac{1}{4}的特性(pooling把w和h都减小了1倍)。ll层一个位置上对应l1l-1层的四个像素,所以产生8个值表示与上一层这四个像素的连接
    Ns(x,y,l1)c={s(x,y,l)}2xx2x+1,2yy2y+1(10)N^c_{s^{(x,y,l-1)}}=\{s^{(x',y',l)}\}_{2x\leq x'\leq 2x+1,2y\leq y'\leq 2y+1}\tag{10}
    注:文中ll是从第二层开始算的(conv4_3不算)

卷积层输出格式:

CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记
注:分割和连接需要分别接独立的softmax层

Combing Segments with Links

网络的前向推理完将得到分割了连接的输出,将分别过滤(filtered)后的分割当作点,连接当作边,可以将输出转换为一张图。然后通过深度优先搜索(DFS)来寻找联通成分。每个联通成分包含一个分割集合B\mathfrak{B},其元素被link连接。集合内的分割框按Alg.1算法组合生成单词。(这段较绕,最好参照实现理解)
CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记
算法思想就是先找到中心点所在的直线,然后通过已有数据生成word-level的中心点、首尾端点、倾斜角、宽高,然后得到一个大的包含整个单词的框框。

Training

Set groundtruths

本文的模型不算复杂,其核心部分只有分割和连接两个模块,为了适应这两个部分,需要预先对groundtruths做计算,得到训练样本的分割连接。
若图中仅含1个词,默认框被标记为正需要满足1)框中心在GT内 2)框的大小ala_l和GT高hh满足max(alh,hal)1.5(11)max(\frac{a_l}{h},\frac{h}{a_l})\leq1.5\tag{11} 否则都作为负样本。
若图中包含多个词,则默认框只要满足以上两点,就被标记为正且对应尺寸最接近的GT。偏置计算按照图5流程

CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记

最后,当默认框分别满足以下两点,层内和跨层连接分别被标记为正:1)相邻俩默认框连接为正 2)两个默认框对应同一个单词。
注:这一部分实现起来应该有挺多坑的,考虑将通用的GT经过少量处理以适应模型,或者将预处理改进封装到模型中,也算是一个小点子

Optimization

文章这一部分都是正常操作,熟悉的话可以直接跳过。
损失函数L(ys,cs,yl,cl,s^,s)=1NsLconf(ys,cs)+λ11NsLloc(s^,s)+λ21NlLconf(yl,cl)(12)L(\textbf{y}_s,\textbf{c}_s,\textbf{y}_l,\textbf{c}_l,\hat\textbf{s},\textbf{s})=\frac{1}{N_s}L_{conf}(\textbf{y}_s,\textbf{c}_s)+\lambda_1\frac{1}{N_s}L_{loc}(\hat\textbf{s},\textbf{s})+\lambda_2\frac{1}{N_l}L_{conf}(\textbf{y}_l,\textbf{c}_l) \tag{12}分割和连接的损失是分开计算的,所以和一般loss相比重复了一个LconfL_{conf}的项。loss都是比较常用的函数,如Softmax和Smooth L1 regression,此处不赘述。
然后是一些目标检测惯用的tricks,如

  • Online Hard Negative Mining
  • Data Augmentation

需要参照源码或原论文,原文引用论文同样省略。