发布时间:2023-04-05 12:00
声明:笔者翻译论文仅为学习研究,如有侵权请联系作者删除博文,谢谢!
源论文地址:https://arxiv.org/pdf/1703.01086.pdf
VOC数据集到RRPN所需数据格式转换脚本
注:文字中标粗和亮色的部分为笔者认为有创新改进余地和需要注意的地方,灰色背景部分为笔者的一些想法。因水平所限,部分笔触可能有不实和错误之处,敬请广大读者批评指正,让我们一起进步~
注:本文中提到的创新点类别为笔者自己定义,1类创新点是根本性创新,指前人没有或者较为新颖的方法;2类创新点是借鉴型创新,指所用方法在相关领域或者别的模型中有所使用,嫁接而来;3类创新点是改进型创新,指更改一些关键参数以提升使用的鲁棒性。
-----------------------------------------------------------------------------------------------------------------------------------------
本文介绍了一种基于旋转的自然场景图像任意文本检测框架。提出了一种基于文本倾斜角信息的旋转区域建议网络(RRPN)。然后对角度信息进行调整,进行边框回归,使 proposals 在方向上更准确地融入文本区域。提出了旋转感兴趣区域池化层(RRoI),为文本区域分类器的特征图设计一个任意方向的方案。整个框架建立在基于区域的体系结构上,与以往的文本检测系统相比,保证了任意方向文本检测的计算效率。我们在三个真实场景文本检测数据集上使用基于旋转的框架进行了实验,并证明了它在有效性和效率方面优于以前的方法。
索引词:场景文本检测,任意定向,旋转建议。
文本检测的目的是识别给定图像的文本区域,是许多多媒体任务的重要前提,如视觉分类[1]、[2]、视频分析[3]、[4]和移动应用[5]。虽然有一些商业光学字符识别(OCR)系统用于记录文本或互联网内容,但由于光线不均匀、模糊、透视失真、方向等复杂情况,在自然场景图像中检测文本是一个挑战。
近年来,文本检测任务(如[6]-[16])得到了广泛的关注。尽管这些方法已经显示出有希望的结果,但是它们大多数依赖于水平或接近水平的注释并返回水平区域的检测。然而,在实际应用程序中,大量文本区域不是水平的,即使应用非水平对齐的文本行作为水平建议也可能不准确。因此,针对水平的方法不能在实践中得到广泛应用。
近年来,针对任意文本检测[17]-[19]提出了一些研究工作。一般来说,这些方法主要包括两个步骤,即:例如,全卷积网络(FCN)等分割网络用于生成文本预测maps,倾斜建议则使用几何方法。然而,前面的分割通常是耗时的。此外,有些系统需要几个后处理步骤来产生具有所需方向的最终文本区域建议,因此不如直接基于检测网络的系统效率高。
在本文中,我们开发了一个基于旋转的方法和一个端到端的文本检测系统来进行任意方向的文本检测。特别地,方向被合并,以便检测系统能产生任意方向的建议。图1展示了以前的基于水平的方法和我们的方法之间的比较。提出了一种基于文本倾斜角信息的旋转区域建议网络(RRPN)。然后调整角度信息进行边框回归,使建议更准确地适合文本区域。提出了旋转感兴趣区域(RRoI)汇聚层,将任意方向的方案映射到特征图。最后,利用两层网络将区域划分为文本区域和背景区域。本文的主要贡献包括:
本文的其余部分组织如下。第二部分介绍了场景文本检测的背景及相关工作。第三节简要描述了水平区域建议办法。第四部分详细讨论了我们的框架。在第五部分,我们展示了对三个数据集的定量研究。我们在第六节结束我们的工作。
本文的创新点如下:
一级创新点2个:RRPN 框架及旋转建议框 | RROI Pooling层
粗略看了下,这部分是对文本检测的一个笼统概述,讲的也不是很细致,有点东一榔头西一棒子的感觉,有需要的小伙伴可以自己扒原文看一下~ ~
我们首先简要回顾一下RPN[20]。如前一节所述,RPN能够进一步加速 proposals 的生成过程。使用VGG-16 [47]的部分作为共享层,水平区域建议通过在最后一层卷积层的 feature map上滑动生成。每个滑动窗口提取的特征被送入两个兄弟层(box-regression (reg)层和box-classification (cls)层,从reg层输出4k(4个坐标/建议)个坐标和从cls层输出2k(2个分数/建议)个分数。k为每个滑动窗口的锚点数。
为了适应不同大小的物体,RPN使用两个参数来控制锚点的大小和形状,即比例尺和宽高比。比例尺决定锚的大小,而宽高比控制锚点框的宽高比。在[20]中,作者为一个通用对象检测任务设置比例为8、16和32,比例为1:1、1:2和2:1。这种锚选择策略可以覆盖几乎所有自然物体的形状,并保持提案总数较低。然而,在文本检测任务中,尤其是场景图像中,文本往往呈现出不同方向的非自然形状;RPN生成的水平提案对场景文本检测不具有鲁棒性。为了使网络具有更强的文本检测鲁棒性并保持其效率,我们认为有必要建立一个检测框架,将旋转信息与区域建议进行编码。
我们现在详细阐述了基于旋转的框架构建。架构如图2所示。我们在框架的前面使用了VGG-16[47]的卷积层,它由两个兄弟分支共享,即最后一个卷积层的特征映射的克隆和RRPN。RRPN为文本实例生成面向任意性的建议,并进一步对建议边界框进行回归,以更好地适应文本实例。从RRPN分支出来的同级层是RRPN的分类层(cls)和回归层(reg)。这两层的输出是来自cls的分数和来自reg的坐标信息,它们的Loss函数被计算和汇总,形成一个多任务损失函数。然后,通过将来自RRPN的任意方向的文本建议投射到特征图上,RRoI pooling层作为特征汇集层。最后,使用两个全连接层构成的分类器,将具有RRoI特征的区域分为文本和背景。
总结:
- 旋转边框表示用 (x, y, h, w, θ) 五元组表示;
- 旋转锚点框使用角度、比例尺和长宽比参数。角度为-π/6, 0, π/6, π/3, π/2, 2π/3,比例尺为8,16,32,长宽比为1:2、1:5和1:8。feature map上的每个点,生成 54 个 r-anchor;
- 在开始训练之前,先定义好正负锚点的标定规则:
1) 如果锚点对应的reference box与ground truth的IoU值最大,标记为正样本;
2) 如果锚点对应的reference box与ground truth的IoU>0.7,标记为正样本;
3) 如果锚点对应的reference box与ground truth的夹角小于π/12,标记为正样本;
4) IoU小于0.3,标记为负样本;
5) IoU大于0.7,但是夹角大于π/12,标记为负样本;
6) 剩下的既不是正也不是负,不用于训练。- 损失函数的计算,比传统的多任务损失函数增加了一个角度的Loss计算;
- 倾斜IoU计算:多边形化为多个三角形面积计算;
- 倾斜非极大值抑制;
- RRoI Pooling层。
在训练阶段,文本区域的ground truth被表示为带有(x, y,h,w, θ)的旋转边框,坐标(x, y)表示边框的几何中心。高度h设置为边框的短边,宽度w设置为长边。θ是从x轴的正方向到与旋转边界框的长边平行的方向的夹角。由于场景文本检测的特殊性,读取的方向及其相反的方向不影响被检测区域。在这里,我们简单地使用方向参数θ,使其覆盖一半的角空间。假设一个旋转框的方向是θ;存在且只有一个整数k确保θ+ kπ在区间[-π/4,3π/4)内,我们将θ+ kπ更新为θ。(x, y, h, w, θ)这样表示有三个好处。首先,很容易计算两个不同旋转框之间的角度差。其次,这是每个旋转边界框的角度回归的rotation-friendly表示。第三,与传统的8点表示(x1;y1;x2;y2;x3;y3;x4)相比,当我们旋转一个训练图像后,这个表示可以很容易地计算出新的ground truth。
这段话有些地方没读懂,思路理不顺,也没明白到底这样五点表示比八点表示好在哪儿…
试着总结一下好处:
1)能够比较容易计算出两个旋转的角度差异;
2)相较于传统上对于边界框使用8个点的表达,使用这样的方式更能很好回归带有旋转的目标检测框情形;
3)使用这样的表达能够高效计算经过旋转之后训练图片的ground truth;
这段加粗字体没太理解所以翻译的不太准,这里贴上原句:
假设给定图像的大小为IH x IW,原始文本区域表示为(x,y, h, w, θ),如果我们将图像围绕其中心旋转一个角度α∈[0,2π),锚点的中心可以计算为
其中T和R分别为平移矩阵和旋转矩阵,
旋转包围框的宽度w’和高度h’不变,方向为θ’ =θ+α+kπ (θ’ ∈[-π/4,3π/4))。在训练过程中,我们使用这种图像旋转策略来增加数据。
传统的锚点使用比例尺和长宽比参数,在in-the-wild文本检测中存在不足。因此,我们设计的旋转锚( r-anchor)通过几个部分调整。首先,方向参数是用于控制 proposals 的方向。使用-π/6, 0, π/6, π/3, π/2, 2π/3 这六种不同的取向。它们是方向覆盖率和计算效率之间的权衡。其次,由于文本区域通常具有特殊的形状,因此将长宽比改为1:2、1:5和1:8,以覆盖广泛的文本行。另外,尺度为8,16,32。在我们的数据表示步骤之后,锚策略总结在图3中,一个 proposal 由带有5个变量(x,y,h,w,θ)的 r-anchor 中生成。对于feature map上的每个点,生成 54 个r-anchor(6个方向,3个纵横比,3个比例尺),在每个滑动位置的reg层生成270个输出(5x54), cls层生成108个score输出(2x54)。然后,我们使用 RRPN 滑动 feature map,为 feature map 生成 HxWx54个锚点,feature map的宽度为W,高度为H。
在生成 r-anchor 的过程中,需要一个针对 r-anchor 的抽样策略来执行网络学习。我们首先定义 loU 重叠为 ground truth 和 r-anchor 的斜矩形之间的重叠。正 r-anchor 特征如下: (i) 最高的loU重叠或大于0.7的loU,(ii) 相交角度相对于ground truth小于π/12。负 r-anchor 特征如下: (i) IoU小于0.3,(ii) 大于0.7但夹角大于π/12。未被选为正或负的区域在训练中不使用。
在开始训练之前,先定义好正负锚点的标定规则:
- 如果锚点对应的reference box与ground truth的IoU值最大,标记为正样本;
- 如果锚点对应的reference box与ground truth的IoU>0.7,标记为正样本;
- 如果锚点对应的reference box与ground truth的夹角小于π/12,标记为正样本;
- IoU小于0.3,标记为负样本;
- IoU大于0.7,但是夹角大于π/12,标记为负样本;
- 剩下的既不是正也不是负,不用于训练。
损失函数使用多任务损失函数(multi-task loss),定义如下:
如前一节所述,我们给出了 r-anchor 在[-π/4,3π/4)范围内的固定方向,并且6个方向中的每一个方向都能与交角小于 π/12 的 ground truth 相吻合。因此,每个 r-anchor 都有它的拟合范围,我们称之为它的拟合域。当GT框的方向在r-anchor的拟合域中时,这个r-anchor很有可能是GT框的正样本。因此,6个方向的拟合域将角度范围[-π/4,3π/4)分成6等份。因此,任何方向的GT框都可以用匹配拟合域的r-anchor框。图4显示了回归项的效用比较。我们可以观察到,邻近区域的区域方向是相似的。
为了验证网络学习文本区域方向的能力,我们将输入图像的中间结果如图5所示,将不同迭代后RRPN训练的特征图可视化。feature map上的短白线表示对文本实例响应最高的r-anchor。短线的方向是这个r-anchor的方向,而短线的长度表示置信度。我们可以观察到 feature map 中较亮的区域集中在文本区域,而其他区域在150000次迭代之后变暗。此外,随着迭代次数的增加,区域的方向更接近文本实例的方向。
旋转建议可以在任何方向产生。因此,对水平建议的 IoU 计算可能会导致不准确的倾斜交互式建议IoU,并进一步破坏建议提取。在算法1中,我们设计了一个考虑三角剖分的斜IoU计算实现[49]; 图6显示了几何原理。给定一组斜交矩形 R1…Rn,我们的目标是计算每一对(Ri, Rj)的 loU。第一步是生成Ri与Rj的交点 PSet(算法1中的第4-7行)。计算两个矩形的交点和一个矩形在另一个矩形内的顶点,并将其插入PSet。然后计算PSet的交点面积(算法1中的第8-10行),根据PSet中的点在图像中的位置,将其按逆时针方向进行排序,并根据排序后的点生成一个凸多边形。通过三角剖分,我们可以得到图6(b)中的三角形集合(例如,{△AIJ, △AJC, △ACK, △AKL}。多边形的面积是三角形面积的和。最后,计算loU值。
这里看着复杂,其实就是个IoU的计算,因为两个斜的框会产生多边形,把多边形分解为一个个三角形,就能够计算IoU的值了。
传统的NMS只考虑IoU因素(例如,IoU阈值为0.7),但这对于带有方向的proposals是不够的。例如,比例为1:8,角度小于为π/12的锚的loU值为0.31,小于0.7;然而,它可以被认为是一个正样本。因此,Skew-NMS包括两个阶段:(i)保持最大IoU大于0.7;(ii)如果所有的proposals IoU 在[0.3,0.7]的范围内,保持proposals与GT框的角度差最小(角度差应小于π/12)。
这里没太懂这个NMS咋整的,查了查相关资料,总结了下,见:
NMS(非极大值抑制)
但感觉还是得看程序…
在Fast-RCNN[48]中,Rol Pooling层从每个proposal 的feature map中提取一个固定长度的特征向量。每个特征向量被输入到全连接层中,最终分支到同级的cls和reg层中,输出是输入图像中对象的预测定位和类。由于图像的特征映射只需要对每幅图像进行一次计算,而不是对每一个生成的建议进行计算,因此加速了目标检测框架。Rol pooling层使用max pooling将任何有效的Rol中的特征转换成一个具有固定空间范围hr×wr的小feature map,其中hr和wr是独立于任何Rol的超参层(layer hyperparameters)。
对于任意方向的文本检测任务,传统的Rol pooling层只能处理水平的建议。因此,我们提出了旋转Rol (RRol) pooling层来调整 rrpn 生成的任意方向的建议。我们首先将RRol层超参数设为Hr和Wr。对于高H、宽w的建议,旋转后的建议区域可以划分为HrxWr大小的子区域(如图7a所示)。每个分区域h/Hr×w/Wr都具有与建议相同的方向。图7(b)显示了一个在feature map上有4个顶点(A, B, C, D)的子区域的例子。这4个顶点使用相似变换(移位、缩放和旋转)来计算,并分组到子区域的边界。然后在每个子区域执行max pooling, max pooling的值保存在每个RRol的矩阵中;与Rol pooling相比,RRol pooling可以将任何具有不同角度、长宽比或尺度的区域汇集到一个固定大小的feature map中。最后,将建议转化为RRols,发送给分类器给出结果,即无论是文本还是背景。
这部分针对MSRA-TD500 [21], ICDAR2015[23] and ICDAR2013 [22]三个文本检测数据集进行了实验,包括P、R、F-measure、FPS指标,且绘制了曲线图。基本都是与Faster R-CNN作对比,也做了对比实验。这里篇幅较多,但与其他文章比大同小异,且个人感觉较显凌乱,说服力不是很足。就没有进行精翻,待之后做程序复现的时候再将重点重新梳理一下。
在本文中,我们介绍了一个基于旋转的文本检测框架。倾斜矩形建议是利用网络中较高卷积层的文本区域方向角信息生成的,从而实现文本的多方向检测。设计了一种新的RRoI pooling层,并将其应用于旋转RoI。在MSRA-TD500、ICDAR2013和ICDAR2015上与目前最先进的方法进行的实验比较表明,我们提出的RRPN和RRoI在文本检测任务上是有效和高效的。