通过计算机视觉对扫描文件分类
一种解决扫描文档分类问题的深度学习方法
在数字经济时代, 银行、保险、治理、医疗、法律等部门仍在处理各种手写票据和扫描文件。在业务生命周期的后期, 手动维护和分类这些文档变得非常繁琐。
对这些非机密文档进行简单而有意义的自动化处理,将使维护和利用信息变得容易的多,并显著减少手工工作。
本案例研究的目的是开发一个基于深度学习的解决方案,可以自动分类的文件
Data:
在这个案例研究中,我们将使用RVL-CDIP (Ryerson Vision Lab Complex Document Information Processing)数据集,该数据集包含16个类中的400,000张灰度图像,每个类包含25,000张图像。有32万张训练图像、4万张验证图像和4万张测试图像。图像的大小,使他们的最大尺寸不超过1000像素。这个数据集的大小超过200 GB。
Business-ML问题映射:
我们可以将业务问题映射为一个多类分类问题。当前的数据集中有16个类,我们需要根据被扫描文档的像素值来预测文档的类,这使得问题更加困难。但是等等,**为什么我们不能使用OCR来提取文本并应用NLP技术呢?**是的,我们对这个想法也很兴奋,但是低质量的扫描导致了文本提取的低质量。在实际的业务场景中,我们也无法控制扫描的质量,因此依赖OCR的模型可能会在适当的预处理后泛化能力较差。
KPI和业务约束:
数据集相当平衡。因此,我们选择准确性作为主要指标,微平均F1分数作为次要指标来惩罚分类错误的数据点。我们还使用了混淆度量来验证模型的性能。有一个中等的延迟需求,没有特定的可解释性需求。
我们能从文档的像素强度和大小中得到任何信息吗?
让我们尝试使用箱形图来可视化文档的平均像素强度和大小
从box plot中我们可以观察到,某些类型的扫描文档的大小与其他类型的非常不同,但是也存在重叠。例如,类13和类9的文件大小差别很大,但是类9的大小与类4和类6、类7重叠。
我们可以观察到75%的案例中,class 4的平均像素强度在160-230像素之间。但是对于大约50%的情况,它也与类6的平均像素值重叠。对于其他类,平均像素值重叠。
分析方法
为了解决这个问题,我们对扩充数据进行卷积神经网络(CNN)训练。我们尝试在有和没有数据扩充的情况下训练模型,两种结果进行比较。
太棒了!但是如何确定网络架构呢?你是如何训练网络的,因为数据不能一次放入内存?
从零开始训练神经网络需要大量的时间和集中计算资源,为了避免这种情况,我们采用了转移学习。我们从在ImageNet数据集上训练的预训练网络的权值开始,然后在我们的数据集上重新训练。针对这类问题的当前SOTA模型使用域内和域内转移学习,其中图像被分成四个部分:页眉、页脚、左身体和右身体。首先利用预先训练好的VGG16模型对整个图像(域内)进行训练,然后利用该模型对部分图像(域内)进行训练。
在这个实验中,我们采用了一种稍微不同的方法。我们没有使用VGG16进行域内转移学习,而是训练了两个并行模型VGG16和InceptionResNetV2,并使用它们的堆栈作为我们的最终模型。我们的假设是,由于这两种模型的架构不同,它们会学习图像的不同方面,将它们叠加起来会得到很好的泛化效果。但是我们如何选择这些模型呢?这基本上来自交叉验证的结果。我们尝试了各种网络架构,如VGG16、VGG19、DenseNet、ResNet、InceptionNet,并选出了最好的两个。
我们使用keras的ImageDataGenerator类对训练数据进行预处理和加载,而不是在内存中加载整个数据。
好的, 但是如何处理超参数呢?
对于任何CNN,超参数是:学习率,池大小,网络大小,批量大小,优化器的选择,正则化,输入大小等。
学习率对神经网络的收敛性有重要影响。在深度学习问题中使用的损失函数是非凸的,这意味着在存在多个局部极小值和鞍点的情况下,寻找全局极小值不是一件容易的事情。如果学习率太低,它会慢慢收敛;如果学习率太高,它会开始振荡。在这个案例研究中,我们使用了一种叫做“循环学习速率”的技术,其目的是训练神经网络,使每个训练批次的学习速率以循环方式变化。
但为什么会这样呢? 在CLR中,我们在一个阈值内改变学习率。周期性的高学习率有助于克服它的鞍点或局部极小值。
对于其他超参数,我们开发了自定义实用程序函数来检查哪种配置工作得更好。假设10个epoch之后,准确率是47%我们将使用此模型作为测试基线,并使用实用工具函数检查哪个配置集(即batch_size/optimizer/learning_rate)将在以后的epochs带来更高的准确性
结果
我们使用VGG16模型获得了90.7%的准确率,使用InceptionResNetV2获得了88%的准确率。上述两种模型的比例叠加模型训练正确率为97%,测试正确率为91.45%。
you can find the full implementation here.
Citation:
- A. W. Harley, A. Ufkes, K. G. Derpanis, “Evaluation of Deep Convolutional Nets for Document Image Classification and Retrieval,” in ICDAR, 2015.
- https://arxiv.org/abs/1506.01186
- https://www.researchgate.net/publication/332948719_Segmentation_of_Scanned_Documents_Using_Deep-Learning_Approach