周报(1):WordSup、FTSN、R-FCN、FCIS(2020-8-1)

WordSup

《WordSup: Exploiting Word Annotations for Character based Text Detection》

Motivation

对于很多语言和数学公式,字符是它们的基本组成单元,自然而然想到使用一个字符检测器实现一个通用的检测系统。从而实现各种语言和场景的检测任务。

Solution

网络是一个基于anchor、回归的检测方法。由一个通用的字符检测模块和针对不同任务的文本分析模块构成,字符检测模块是一个弱监督学习模块,先由检测网络产生response map,然后利用word级别的单词标注得到一个character mask用于监督网络训练。

缺点

非端对端,模型复杂,细化到character级别后效率低下,对于不同的任务需要设计不同的文本结构分析。

FTSN

《Fused Text Segmentation Networks for Multi-oriented Scene Text Detection》

这是一个基于实例分割FCIS模型的检测方法。文本检测比起目标检测来说,其是一个‘objectness’的分类任务。

Motivation

主流的传统方法之一是将文本检测任务作为一个自底向上的过程,即将文本实例看作由独立子元素的一个组合,例如上面提到的WordSup是将character作为独立的子元素、使用SWT和MSER去搜索候选character等,这类方法往往有多个pipelines,导致效率低。还有一种基于滑动窗口的传统方法。然后作者提到了近期深度学习的方法要么使用region proposal network要么直接回归bounding box,它们受限于矩形边界框或旋转矩形边界框,不能很好表达文本,而虽然基于FCN的方法能够很好满足任意形状文本但pipeline过多效率低。
因此作者提出不包含额外pipeline的、端对端可训练的、能够检测任意形状文本的网络FTSN。它是从实例分割的角度去处理。

Solution

该模型是一个基于region proposals、实例分割(FCIS)的检测框架,大致流程:首先,通过resnet提取特征,因为网络越深平移不变性增强,位置敏感降低,所以取了较低层的特征进行融合传入Faster RCNN中的RPN,生成RoIs;然后,在resnet stage5为了保持 s t r i d e = 1 stride=1 stride=1和维持感受野,使用了hole算法,利用更高层的feature maps进行融合得到高语义特征图;使用1*1卷积操作将高语义特征图生成两个position-sensitive score maps,其中一个map为FCIS中提到的inside/outside score maps;使用R-FCN中提出的PSROIPooling操作分别对inside/outside score maps、bbox回归用的position-sensitive score map进行池化,然后使用FCIS中的pixel-wise max、pixel-wise softmax对池化后的inside/outside score maps进行处理,得到分类和分割结果(与FCIS中不同的是FCIS并没有对inside/outside score maps使用pooling操作),bbox regression的结果即对池化结果做一个全局平均池化得到。
预测阶段,使用结合MMI的NMS去除重叠检测,然后为每一个文本实例生成覆盖mask的最小四边形。

MMI(mask-maximum-intersection)

针对多方向文本实例检测任务,作者修改了原始的IoU计算公式到一个基于mask面积的式子,获得了更高表现。
该方法主要得益于mask比起矩形bounding box更加贴合文本实例,特别对于多方向文本实例来说相当有利;基于overlap占据两个文本实例比率maximum,能够很好处理这种情况:line-level检测包含了一个word-level检测,能够很容易去掉其中一个去实现word-level detection和line-level detection,这里如何去选择去掉哪一个作者没有说明,简单有效做法是通过比较两个文本实例的面积去区分line-level和word-level。
后处理依然使用NMS。

R-FCN

《R-FCN: Object Detection via Region-based Fully Convolutional Networks》

Overview

整体结构简单,由RPN、position-sensitive score map、position-sensitive pool layer构成。通过score map的使用实现了计算的共享,即所有可学习层的计算都基于整个图片,没有Faster R-CNN中大量per-region的重复计算。解决了分类问题中平移不变性的优点和目标检测中平移变化的优点之间的矛盾,为了处理目标检测任务引入了position-sensitive pool layer,产生 k ∗ k ∗ ( C + 1 ) k*k*(C+1) kk(C+1)的输出,在 k ∗ k k*k kk维做简单的平均投票得到 ( C + 1 ) (C+1) (C+1)输出。不仅速度快,performance也有竞争力。

Solution

这篇文章也是一个基于region的目标检测框架,主要设计了位置敏感的分数图和位置敏感的RoIPooling操作。

Position sensitive score maps & Position sensitive pooling layer

对先序特征图上每一个像素点预测 k 2 ( C + 1 ) k^2(C+1) k2(C+1)个点,其中 k 2 k^2 k2代表RoI中的bin数量, C C C代表类别数,我的理解是:其实质是每一个像素点在不同的RoI中位于不同的位置,即往往位于不同的bin中。在计算pooling时,选定类别和某一个bin后,从这个bin对应的特征图上取bin范围内的值,然后做一般意义的池化,假设以bin为单位,那么这意味着如果bin位于RoI不同位置,bin对应的最终的池化值不一样,即位置敏感。
比较巧妙的是在执行完position sensitive pooling操作后得到一个 k ∗ k ∗ ( C + 1 ) k*k*(C+1) kk(C+1)的简单使用bin投票就得到一个 C + 1 C+1 C+1的分类输出,大大简化了计算量且有效。
对于bounding box regression使用类似的方式,不同的是生成一个 4 k 2 4k^2 4k2通道的特征,可以对 C C C个类别分类别进行回归处理,但这样增加了计算量,论文中为了简单处理,不区分类别地进行回归。

FCIS

《Fully Convolutional Instance-aware Semantic Segmentation》

Motivation

实例分割和语义分割的不同点

全卷积网络成为语义分割的主要方法,卷积操作因为在feature map上共享卷积核导致了平移不变性,即相同的像素不管在region的哪个区域都是相同响应,这对不区分instance的语义分割任务是优点,但实例分割不仅需要去区分每一个类别还需要去区分同一类别中的不同实例,它需要去操作在region level。在目标检测中,一些方法使用预定义的anchors去实现instance level的检测,也是操作在region level,但实例分割操作在pixel leve,目标检测只需要判断有无对象即可,不存在像素的平移不变性问题。
由上述提到的,因为实例分割需要操作在region level,所以相同像素在不同的region中应该有不同的语义,一个像素在region1可能是positive sample而在region2可能就是negative sample,显然操作在整个图片上的单一的FCN不能完成这样的事情。

related work

以前的方法往往使用特征提取网络、RoI Pooling操作、一个或多个fc层去转换per-roi feature map到per-roi mask。这种方法存在:对于分割任务来说目标检测中的pooling过程往往会丢失很多空间信息、fc的过参数化、最后一步的per-roi计算没有在rois之间进行共享(存在redundant computation)。PS:在语义分割任务中,使用类似R-FCN中的position-sensitive pool操作往往会丢失精度,毕竟一个基于pixel-level一个基于region-level。
为解决instance mask proposal生成任务,J. Dai等在论文《Instance-sensitive fully convolutional networks》中提出了第一个完全卷积、具有translation-variant特性的解决方案,在实例分割任务中,其将classification和segmentation分开处理(非端对端), 得到mask proposal以后,后续网络进一步去分类它到各个目标类别,其作用类似于一个RPN网络;网络操作在多尺寸的图片上。
此文章FCIS模型扩展了这个解决方案到端对端、特征与score map在分割与分类子任务之间共享的网络模型。

Solution

整个网络结构与Faster R-CNN类似,是一个tow-stage的模型,由检测和分割模块共同完成实例的分割。最关键、最巧妙的设计是inside/outside score maps,这样的设计使得分割子任务和分类子任务能够共享、共同训练score maps,每一个score map能够同时受到两个子任务对它的优化,能够充分利用两个子任务之间的紧密关联。最后的消融研究也表明共同优化带来的提升。

procedure
  • 由RPN生成300个RoI proposals,然后使用Fast R-CNN进行修正RoIs;
  • 基于共享feature maps使用1*1卷积生成R-FCN中的position-sensitive score map,channel为 2 ∗ k 2 ( C + 1 ) 2*k^2(C+1) 2k2(C+1) 2 2 2对应inside/outside score maps;
  • 使用per-pixel max和后续的avg pooling产生classification score,使用per-pixel softmax生成segmentation probability map,其中max和softmax同时操作在inside/outside score maps上。
理解

inside score map中值越大表示像素更可能属于instance mask,其余区域越小;outside score map中值越大表示像素更可能属于排除instance mask区域的object bounding box区域,其余区域越小。这样就能够使用max区分object(值越大表明属于bounding box区域),使用softmax就能更准确计算mask(能够根据inside和outside的差别高亮instance mask区域)。

你可能感兴趣的:(暑期论文阅读,计算机视觉,场景文本检测和识别)