FOTS解读 —— Fast Oriented Text Spotting with a Unified Network

简述

FOTS是CVPR 2018的一篇论文,其是第一篇针对多方向文本的端到端可训练的文本检测+识别算法。(反正论文中是这么说的,感觉貌似不是,莫在意)

概述:FOTS(Fast Oriented Text Spotting)是图像文本检测与识别联合训练端到端可学习的网络模型。检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式能学习到更通用的图像特征。引入了旋转感兴趣区域RoIRotate), 可以从卷积特征图中产生出水平轴对齐高度固定(论文中固定为8)的文本区域,从而支持倾斜文本的识别。

得益于检测和识别这两种互补监督的端到端训练,实现了效率和精度的双提升,在icdar 2015上取得89.84%的F1,帧率达到22.6fps。很强的算法!(就是现在还没有官方开源)
在这里插入图片描述
上图所示红框内为两阶段法(先检测再识别),蓝框内为端到端(FOTS)的方式,可见端到端的方式比两阶段法几乎快了一倍。

一般来说文本检测和识别是分为两项任务进行的,分开更容易实现,可是也带来了先验知识的损失。FOTS提出了ROIRotate方法,将文本检测和文本识别这两项监督进行融合互补。观察其网络结构可以发现,是将east(检测)和crnn(识别)两个算法通过其提出ROIRotate连接起来。通过这种方式不仅速度快而且相比分开两项任务精度还能所有提升。能有效减少“漏检”、“错检”、“字符错误分割”、“字符错误合并”等4种错误。

网络结构

首先是网络结构,如下:
在这里插入图片描述
FOTS的整体结构由4部分组成。shared convolutions(共享特征),the text detection branch(检测分支),RoIRotate operation(仿射变换分支),the text recognition branch(识别分支)。数据通过主干网络提取共享特征,经过检测分支来预测文本框位置和方向,利用仿射变换在共享特征图上将文本框的内容变换到标准x,y坐标轴上,最后经过识别分支得出文本内容。

本文的检测分支为EAST,识别分支为CRNN,所以就整个网络来说,此网络的关键创新点为:提出了RoIRotate ,类似于roi pooling 和roi align,该操作主要池化带方向的文本区域,通过该操作可以实现将文本检测和文本识别端到端的连接起来。

backbone

FOTS的backbone为ResNet50 with FPN,共享卷积层采用了类似U-net的卷积共享方法,将底层和高层的特征进行了融合。这部分和EAST中的特征共享方式一样。最终输出的特征图大小为原图的1/4(论文中说是为了检测小物体)。
在这里插入图片描述

检测分支

这部分和EAST基本完全一样,这里我直接拿了“EAST文本检测算法”的网络结构图来作说明:(仅关注红框内的部分)
在这里插入图片描述
EAST算法输出了6个channel的feature map:第一个channel表示每个pixel属于正样本(文本区域)的概率;对于每个正样本,后面的4个channel表示该pixel到包围它的bounding box的上、下、左、右边界的距离(这里不太懂不要紧,后面还会说);最后一个channel预测相应bounding box的方向(旋转角度)。

所以检测部分的loss为:文本分类loss和一个bounding box regression loss。其中,文本分类loss是一个交叉熵损失,bounding box regression loss由一个iou loss和一个rotation angle loss组成。文中将 λ θ \lambda_\theta λθ设置为了10,将 λ r e g \lambda_{reg} λreg设置为了1。(超参)

注:其中, Ω是通过OHEM算法在score map上选取的正样本区域, |Ω|表示像素点数, H(px, px*)表示交叉熵。

RoIRotate分支

该模块的目的是:将有角度的文本块(EAST文本检测算法得到的),经过仿射变换,转化为正常的axis-align的,高度固定(论文中固定为了8),且长宽比保持不变的文本块,以满足后续识别分支(CRNN)的输入要求。

该变换分为两步。一是通过text proposals的预测值或者text proposals真实值计算仿射变换矩阵M;二是分别对检测分支得到的不同的文本框实施仿射变换,通过双线性插值获取水平feature map。(训练的时候输入给recognize的部分,是gt的部分经过roirotate得到的feature map;预测的时候输入给recognize的部分是使用的east回归的出来的参数进行roirotate得到的feature map。所以说训练和预测阶段的处理有点不太一样。)

下面是EAST检测分支的输出(这里忽略了第一个表示前景概率的channel),EAST得到的文本框是这样定义的: (???, ?, ?, ?, ?, ?),如下图所示:

然后对EAST得到的文本框进行RoIRotate变换,得到仿射变换矩阵M,方式如下:

其中M是仿射变换矩阵。 h t , w t h_t,w_t ht,wt分别表示仿射变换后特征图的高度(论文中设置为8)和宽度。 ( x , y ) (x,y) (x,y)表示共享特征图上点的坐标, ( t , b , l , r ) (t,b,l,r) (t,b,l,r) 分别表示到达框内某点到文本候选框的顶部,底部,左侧,右侧的距离,以及 θ \theta θ表示文本候选框的方向。 ( t , b , l , r ) (t,b,l,r) (t,b,l,r) θ \theta θ可以由真实候选框检测分支给出。

得到仿射变换矩阵M, 思路是:

  • 先计算ROI内的点(x,y)(在ROI内的坐标为(l, t))旋转至水平后要平移的距离。
  • 计算目标高度ht与预测高度(t+b)的比值s, 为保持ROI的高宽比, 预测的长度(l+r)进行s倍的放缩。
  • 平移(tx, ty), 放缩, 旋转得到水平的ROI。
  • 按照仿射矩阵M, 可得目标ROI上每个像素点对应的原ROI上的坐标。

接下使用仿射变换参数,可以轻松生成最终的target RoI特征:

上公式表示目标ROI(I, j, c)处要填入的像素值, hs,ws表示ROIRotate的高和宽, Umn表示原ROI中(n, m, c)处的像素值, k()表示通用采样核(generic sampling kernel), 其参数φx, φy定义了采样方式, 此处取双线性插值采样。处理旋转好的目标ROI在宽的方向用0填充至固定宽度, 填充的部分不计算loss。

识别分支

识别分支就是CRNN,这部分不再详细介绍,可以参考我的另一篇博客

这部分的损失函数和CRNN也是一样的,如下:
在这里插入图片描述

损失函数

综上所述,整个网络的损失函数为一个多任务损失函数:
在这里插入图片描述
这里 λ r e c o g \lambda_{recog} λrecog设置为了1。

这确实是一个很强悍的算法,就是目前没开源且复现代码没成功,有什么疑问欢迎留言。

done~

References

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVPR 2019中发表了一篇题为“迁移学习:无监督领域自适应的对比适应网络(Contrastive Adaptation Network for Unsupervised Domain Adaptation)”的论文。这篇论文主要介绍了一种用于无监督领域自适应的对比适应网络。 迁移学习是指将从一个源领域学到的知识应用到一个目标领域的任务中。在无监督领域自适应中,源领域和目标领域的标签信息是不可用的,因此算法需要通过从源领域到目标领域的无监督样本对齐来实现知识迁移。 该论文提出的对比适应网络(Contrastive Adaptation Network,CAN)的目标是通过优化源领域上的特征表示,使其能够适应目标领域的特征分布。CAN的关键思想是通过对比损失来对源领域和目标领域的特征进行匹配。 具体地说,CAN首先通过一个共享的特征提取器来提取源领域和目标领域的特征表示。然后,通过对比损失函数来测量源领域和目标领域的特征之间的差异。对比损失函数的目标是使源领域和目标领域的特征在特定的度量空间中更加接近。最后,CAN通过最小化对比损失来优化特征提取器,以使源领域的特征能够适应目标领域。 该论文还对CAN进行了实验验证。实验结果表明,与其他无监督领域自适应方法相比,CAN在多个图像分类任务上取得了更好的性能,证明了其有效性和优越性。 综上所述,这篇CVPR 2019论文介绍了一种用于无监督领域自适应的对比适应网络,通过对源领域和目标领域的特征进行对比学习,使得源领域的特征能够适应目标领域。该方法在实验中展现了较好的性能,有望在无监督领域自适应任务中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值