天天看点

论文阅读笔记《Handwritten digit segmentation: Is it still necessary?》

翻译自:A.G. Hochuli a , L.S. Oliveira a , ∗, A.S. Britto Jr b , R. Sabourin c的《Handwritten digit segmentation: Is it still necessary?》

最近在找关闭文本分割的论文,本来是打算找些老一点,经典的看看,无意间看到这篇论文,被它的标题吸引,很有意思。正好比较新,所以今天从下午开始到现在,把论文仔细研读了一遍。个人觉得写得特别好,特别容易理解。以前总觉得外国大牛们写得读起来费劲,一直都比较无从下手,但是这篇论文刷新了我的认知。周末这个班加的很开心,有成就感

论文阅读笔记《Handwritten digit segmentation: Is it still necessary?》

翻译的不好、理解不到位的地方还请大家指出,以下内容仅代表我个人的理解,也许会有偏差吧

论文阅读笔记《Handwritten digit segmentation: Is it still necessary?》

感谢作者的贡献!

摘要:

过去的方法都是基于前景、背景、连通区域提取特征,依赖启发式过分割。困难在重叠数字,我们的方法假设手写数字分割可以成功地替换为一组分类器的训练,以预测字符串的大小,并对它们进行分类而不进行任何分割,为此我们训练了四个CNN。作者认为比所有需要分割的算法都好。

1. 介绍:

手写数字的识别的瓶颈之一是分割模块,它读取一个数字串并将其分割成孤立的字符。挑战是缺少上下文语义信息,也不知道字符串中的数字个数。

而且,过去的启发式过分割虽然最大化了产生良好分割点的机会,但是增加了计算量,因为,需要识别的假设的数目随着过分割切割的数目而指数增加。

在文献[25]中提到过一种策略以减少过度分割的影响,他们使用SVM分类器过滤不必要的分割,成功地减少到大约83%。

文献[20]从性能、分割假设数和处理时间等方面比较了不同的分割算法的性能。目的是比较各种算法的有优势和不足,从而找出一种最佳的算法,但是这种分割策略是有问题的,因为粘连的重叠程度和类型是多变的。

文献[17]首次提出不分割的概念,该作者提出的SDNN (Spatial Displacement Neural Network) ,网络输入包括不分割字符,产生一系列输出向量,由后处理器挑出最可能的标签序列。在3000张邮政编码上测试结果是正确分类66%。文献[14]说SDNN并没有的到比分割更好的效果。

文献[3]提出了另外一种避免分割的策略,他训练了由100个独立的子网络组成的模块化神经网络。从NIST数据库中提取的1374个数字对的识别率为95.3%。另外一种类似的方法是文献[4],使用20 0,0 0 0张图像训练了100类CNN,识别正确率为94.65%。作者也使用过这种方法用于粘连3个数字的数字串,不过用了两个CNNs,一个用于单个数字,一个用于粘连数字。从NIST数据集上1476个3位字符串的正确率为93.4%。

[2,16,19,23]在过分割上都表现很好。深度学习在手写识别领域贡献很大,如数字识别[6,22]方面取得了很大的进步,字符识别[26 ],单词识别[21],[24],[22],脚本识别[28 ],签名验证[11 ]。但是还是受分割的限制。

本文的方法,训练四个特定任务的分类器,一个用来预测粘连串的数字数量,其它三个分别是用来区分[0-9]、[00-99]、[000-999]的分类器。用文献[20]中的79,464 个粘连对 (TP) 和从NIST SD19数据集中抽取的11,585个数字串上做了测试。在TP上的效果优于所有分割算法,同时减少了产生和过滤假设的计算成本。该方法对于NIST SD19数据集中2-6位粘连对的分类也很高效。

2. 合成数据

三种粘连串,分别为2、3、4,粘连串是通过文献[20]中的算法对NIST SD19[9]数据集中单个数字合成得到的。NIST数据库包含3699个手写样本形式(HSFS)和814255个分段手写数字和表格中的字母字符的全页二进制图像。该数据集中有超过240,0 0 0 个单个数字。为了避免数据集对实验结果产生偏差,必须使用NIST SD19中数据的作者信息,例如分别挑选不同的作者的数据专门用来训练、验证、测试。表一:用于训练和测试分类器的数据,且样本在类间均匀分布。

注:所有合成数据在

https: //web.inf.ufpr.br/vri/databases-software/touching-digits/(不能访问) 供研究使用。

3. 本文方法框架

无分割方法基于三个主要模块:预处理(3.1)、Length Classifier(3.2.1)和分类识别(3.2.2)。步骤如下(Fig.1):

1. 通过预处理模块,将数字串分成所有的组件(CCs),包括单数字和粘连数字;

2. 每个CC被Length Classifier预测粘连数字长度,会得到该CC对应属于1,,2,3,4粘连长度的概率。从NIST SD19数据集发现超过3个粘连的很少,所以,如果预测结果为4,就被reject;

3. 三个分类器C1,C2,C3分别被用来识别在不同数据段10 [ 0 ... 9 ], 100 [ 0 0 . . . 99 ], 10 0 0 [ 0 0 0 . . . 999 ]的数据。10代表该分类器是10分类。使用哪个分类器取决于上一步的结果;

4. 由fusion module(3.3)决定保留哪个结果作为最后的识别结果。

3.1. 预处理

问题:最初的分组是根据连通区域么?

[19] L.S. Oliveira , R. Sabourin , F. Bortolozzi , C.Y. Suen , Automatic recognition of handwritten numerical strings: a recognition and verification strategy, IEEE Trans. Pattern Anal. Mach. Intell. 24 (11) (2002) 1438–1454 .

使用文献[19]中的分组策略,图像的中线(SI mediam )作为参考。满足以下条件之一认为CC是断裂的:

1. CC不与图像的中线相交;

即使当CC与中线相交时,如果交点接近CC的顶部或底部,也可能被视为断裂部分。

2. max (CCabove ,CCbelow )/ min (CCabove ,CCbelow ) > 5,CCabove ,CCbelow 分别表示中线上下部分的垂直高度。

然后,将被认为断裂的CC分配给它的邻居。分给哪个邻居,必须满足以下条件:

IF CCleft < CCright

THEN

Group (CCprevious , CCbroken)

ELSE

Group (CCbroken , CCnext )

CCleft 、CCright分别表示断裂的CC距离左右数字串的距离量(很大的值)。 离哪边近就跟哪边结合(都是往前结合)。

最后将分组结果根据水平位置从左到右排序。

注:所有量的具体定义在Fig.2,所有阈值都是参考[19]。

如果该模块失败,所有其他模块将受到损害。在这种情况下,很自然地认为这个预处理模块应该是鲁棒的。然而,NIST SD19上的断指频率并不要求这样的鲁棒性。因为在这个数据集中,不到5%的数字串包含断开的数字。本节中描述的策略能够正确地将其中85%个组件分组。

手动创建了800个质量差的数据(顶部-底部裁剪;增加断裂;添加噪声),Fig.3和Fig.4展示了一些对于手动断裂成功或失败分组的例子。

在这些扩展函数中,预处理模块的性能与NIST SD19上观察到的相同,这些图像包含手动创建的断点并由裁剪引起(约85%)。对于具有随机噪声的图像,性能下降到70%。然而,随着一些图像增强(例如,形态学闭合),性能提高到NIST SD19中观察到的相同的85%。综上所述,如果数据集包含质量非常差的手写体,并且有大量的数字残缺,则更强大的预处理将是必需的。

3.2. 分类器

所有分类器都包括卷积层、最大迟化、全连接层,其中,卷积和全连接由可学习的参数。除了最后一层外,每个可学习的层后面都加ReLU非线性映射,最后一层使用SoftMax非线性映射。

训练使用mini-batch=256的反向传播的SGD,训练的各个参数值在3.2第三段。使用Caffe框架[13]和NVidia GeForce GTX Titan Black GPU。

所有训练过的分类器供研究使用:

https://web.inf.ufpr. br/vri/databases-software/touching-digits/ (不能访问)

3.2.1 长度分类器

长度分类器L,验证多个模型后最终基于LeNet 5 [14]。基本结构Fig.5。

400000, 79157 ,79742分别用来做training, validation,testing。输入图像大小为64 ×64效果最好。在test上长度识别正确率分别为98.4%(Top-1 )和99.9%(Top-12)。Table2展示了结果。

垂直笔画的数量和位置是预测字符串大小所需的重要信息。

[14] Y. LeCun , L. Bottou , Y. Bengio , P. Haffner , Gradient-based learning applied to document recognition, Proc. IEEE 86 (11) (1998) 2278–2324 .

3.2.2 数字分类器

Fig.7展示了数字分类器的网络结构及参数,这三个分类器(1-digit,2-digit,3-digit)也是基于LeNet 5 [14]。这些参数是在验证集上定义的。

Table3展示了用于training, validation, testing的数据和迭代次数。使用Caffe框架[13]和NVidia GeForce GTX Titan Black GPU。

 在test上识别正确率在table4展示。

3.3. Fusion (融合)(作者提的)

由于数字分类器的效果很大程度上取决于长度分类器,所以table2矩阵表明也可以参考top-2的结果,所以提出了Fusion规则,参考公式(1)。

公式(1)的解释:如果输入图像X在长度分类器的结果L ( x ) <阈值T,则将Top1和Top2的结果都送到对应的数字分类器中识别,去概率最大的一个结果。

如果L ( x ) >阈值T,只取Top1的结果去识别。阈值T是在验证集上得到的。

最后整个数字串的识别概率P (M| I)=公式(2),解释为:各个结果相乘。

Fig.8展示了完整的步骤。

注:阈值T在第四部分通过在验证集上实验得到T=0.95。

4. 实验

比较本文方法和传统分割方法,测试数据集使用TP的79464 张图像和NIST SD19中提取的粘连范围在2-6的11000张图像。

4.1. 合成数据

Table5展示了文献[20]和[7]中提到的所有算法在TP数据集上的实验效果,包括分割正确率和Fig.9展示的粘连类型的效果。

问题:single segmentation cut 是什么?分割点,在Fig.10中有三个分割点SP0,SP1,SP2。

作者利用启发式或更详细的过滤器,以减少分割假设的数量[25 ]。通过创建大量的分割点将图像分解成多个片段,可以在某个时间点产生良好的分割切割;但是,在实际情况下,过滤和处理过分割的成本可能是令人望而却步的。

本文的方法在处理粘连类型5(多笔粘连)的时候性能并不比传统分割好。本文方法的正确率97.2%,错误2.88%(1.78%长度分类错误,1.10% 数字分类错误)。

4.2. 数据集NIST SD19

从hsf_7 series中抽取11585张图像,合成了5类2_digit (2,370),3_digit (2,385), 4_digit (2,345),5_digit(2,316),and 6_digit (2,169)。[2,16,19,23]中也被用来测试。 需要注意一点,在任何时候hsf_7 series的作者的数据都不能用来做训练集。

Fig.12展示了T的改变对效果的影响(灵敏度分析)。

错误结果来源:预处理错误、长度分类错区、数字分类错误。

Fig.13展示了一些正确识别和错误识别的例子。

Fig.14展示了每个分类器被调用的次数。

作者简单描述了其他文献中使用同样数据集的算法和实验结果(Table 7 )。

在table7中[8]表现比本文方法好。有时间看看。

[8] A. Gattal , Y. Chibani , B. Hadjadji , Segmentation and recognition system for unknown-length handwritten digit strings, Pattern Anal. Appl. 20 (2) (2017) 307–323 .

5. 总结

分割可以被CNN分类器取代。为了克服由长度分类器引起的一些混淆,融合方法可以取长度分类器的Top1和Top2,然后使用两个数字分类器的输出来产生最终的结果。TP数据集上的实验证实了这个优点,实现了97%的识别率。在NIST SD19的实验中,其中大多数字符串仅包含单个数字,该方法与文献中的某种启发式的文献相比有利。为了将来的工作,我们计划将系统部署在当前正在构建的数值字符串的真实数据集上。