文章目录
前言
最近在查找OCR开源项目时,发现了商汤公司的MMOCR,它和百度公司的PaddleOCR一样都是用于OCR文本检测和识别的开源框架,里面也集成了很多当下比较优秀的检测与识别模型,比如DBNet, CRNN等。之前有用过PaddleOCR,还真没用过MMOCR。出于好奇,研究了下MMOCR支持的检测与识别模型,发现了在PaddleOCR里没有实现的两个2021年的新模型,一个是用于文本检测的FCENet模型,一个用于文本识别的SegOCR模型,这里主要跟大家分享下FCENet模型。
看MMOCR检测结果还不错, 和DBNet相比(MMOCR测试)好像FCENet的结果更好一些,但是从测试数据上看,FCENet的测试图像分辨率更高,epoch数量也更大,而且好像backbone也不相同,所以仅从数据中就说FCENet比DBNet更好是不可靠的。
MMOCR中DBNet测试结果:
MMOCR中PCENet测试结果:
论文链接:Fourier Contour Embedding for Arbitrary-Shaped Text Detection
摘要(Abstract)
任意形状文本检测的主要挑战就是能够设计一个足够好的文本实例表示,能够允许网络去学习多样的文本几何变化。大部分现有的方法是对图像中文本实例进行空域建模,即在笛卡尔或者极坐标系下的掩膜(mask)或者轮廓点序列建模。然而,掩膜表示可能带来高成本的后处理,点序列的方式对高度弯曲的文本形状建模可能有容量限制的问题。为了解决这些问题,论文在傅里叶域(Fourier,通常说的频域)对文本实例建模,提出一种新颖的傅里叶轮廓嵌入(Fourier Contour Embedding, FCE)的方法来将任意形状的文本轮廓表示为紧凑的特征。论文在此基础上搭建了FCENet,包括特征提取层(backbone),特征金字塔网络(FPN, neck)和由反向傅里叶变换(IFT)和非极大值抑制(NMS)组成的简单后处理。和之前的方法不同,在测试期间,FCENet首先为文本实例预测傅里叶特征,然后根据IFT和NMS来重新构建文本轮廓。实验证明FCE对定位场景文本的轮廓是非常准确的鲁棒的,对高度弯曲的文本形状也是如此;实验也验证了FCENet对任意形状文本检测的效率和优秀的泛化能力。实验结果表明了FCENet在CTW1500和Total-Text数据集上获得当时最优结果,特别是在有挑战性的高度弯曲文本子集中。
1. 介绍(Introduction)
论文中,在傅里叶域中对文本实例轮廓建模取代以前空域建模的方法,通过使用傅里叶变换可以以一种鲁棒且简单的方式通过渐进近似来拟合任何封闭轮廓(所有文本实例都是封闭的吗?如果不是封闭的,会怎么样?)。Fig.1(a)表明傅里叶变换可以准确拟合极其复杂的形状,比如肖像素描,通过使用非常紧促的特征,比如 K = 125 K=125 K=125,表明随着傅里叶度数 k k k的增加,重构的形状越接近真实(Ground Truth)。和 T e x t R a y TextRay TextRay 这个在极坐标系下使用文本轮廓点序列的当时最优模型相比,论文提出的傅里叶轮廓表示可以对高度弯曲的文本更好地建模,如Fig.1(b-c)所示。
论文提出FCE方法将文本实例轮廓从点序列转换为傅里叶特征向量。首先,论文提出一种重采样机制来获得每一文本轮廓固定数量的稠密点。为了保证傅里叶特征向量的独特性,论文将文本轮廓域穿过文本中心点的水平线的最右边的交点作为采样起始点,固定采样方向为顺时针方向,沿着文本轮廓进行等间隔采样。其次,空间域中轮廓采样点序列通过傅里叶变换被嵌入到傅里叶域中。
FCE对于文本实例表示而言由三点优势:
- 灵活(Flexible):任何闭合轮廓,包括极其复杂的形状,都可以被准确拟合;
- 紧凑(Compactness):傅里叶特征向量是紧凑的,在实验中,傅里叶度数 K = 5 K=5 K=5就可以实现文本精确近似;
- 简单(Simplicity):采样点序列与傅里叶特征向量间通过傅里叶变换和反傅里叶变换就可以实现,没有引入复杂的后处理(傅里叶变换与反傅里叶变换不是很耗时吗?即使有快速傅里叶变换方法,但是和普通空间域操作相比还是需要更长的时间)。
配备了FCE,论文搭建了FCENet用于任意形状文本检测。FCENet由三部分组成:backbone - ResNet50_DCN,即配备了可变形卷积的残差网络模型作为特征提取层;特征金字塔网络(FPN)作为neck层;FCE作为head层。这个head层由两个独立的分支组成:分类分支和回归分支。分类分支用来预测文本区域掩膜和文本中心区域掩膜。回归分支用来预测傅里叶域中文本的傅里叶特征向量,然后将该特征向量输入到反向傅里叶变换进行文本轮廓点序列的重建。真实(Ground Truth)文本轮廓点序列用作监督信号。由于FCE的重采样机制,回归分支中的损失兼容不同数据集,即使像CTW1500和Total-Text这样每一个文本实例有不同数量的轮廓点。
实验证实了FCENet对于任意形状文本检测的有效性和优秀的泛化能力。而且,FCENet在CTW1500和Total-Text数据集上超过了当时最优模型,尤其是在高度弯曲文本子集中。
论文的主要贡献:
- 提出FCE方法,它可以准确近似任意闭合形状,包括任意形状的文本轮廓,生成紧凑的傅里叶特征向量;
- 提出FCENet,第一个在傅里叶域中预测文本实例的傅里叶特征向量,然后通过反向傅里叶变换在图像空间域中重建文本轮廓点序列。这个过程可以进行端到端的学习,不需要任何复杂的后处理过程就可以进行推理。
- 对提出的FCE和FCENet进行了大量的实验验证。实验结果表明了FCE具有优秀的表示能力,特别在高度弯曲的文本方面;当在小数据集上进行训练时,FCENet有很好的泛化能力。而且,FCENet在CTW1500和Total-Text数据集上超过了了当时最优模型。(个人表示很期待FCENet在中文检测上的能力)
2. 相关工作(Related Work)
论文主要就文本检测的两个主要方向进行了阐述:基于分割的方法和基于回归的方法,这里就不细说了,大家感兴趣可以自行阅读论文。
3. 方法(Approach)
这一章节,首先引入FCE方法,它可以将任意形状的文本轮廓近似表示为紧凑的傅里叶特征向量。然后提出了配备FCE的FCENet来检测任意形状的文本。
3.1 傅里叶轮廓嵌入(Fourier Contour Embedding)
论文使用一个复函数来表示任一文本闭合轮廓:
上式中, i i i表示复函数的虚部, t ∈ [ 0 , 1 ] t\in [0,1] t∈[0,1], ( x ( t ) , y ( t ) ) (x(t),y(t)) (x(t),y(t))表示在时刻 t t t的空间坐标。因为 f f f是一个闭合轮廓,所以 f ( t ) = f ( t + 1 ) f(t)=f(t+1) f(t)=f(t+1)。 f ( t ) f(t) f(t)的反傅里叶变换表示为:
上式中, k k k表示频率, c k c_{k} ck表示傅里叶系数,用它来描述频率 k k k的初始状态。公式中每一个累加单元 c k e 2 π i k t c_{k}e^{2\pi ikt} cke2πikt表示了一个圆形移动,它使用一个初始右旋向量 c k c_{k} ck和固定频率 k k k。因此,这个轮廓可被视为不同频率的圆形移动的组合,如图Fig.2中粉色圆所示。从公式(2)可知,低频单元可以定位粗粒度的文本轮廓,高频单元可定位轮廓的细节。论文经验发现仅保留 K K K个最低(论文实验中 K = 5 K=5 K=5)的频率同时废弃其它频率单元就可以找到满意的近似文本轮廓,如图Fig.5所示。