使用计算机视觉和深度学习创建现代OCR管道( 六 )


6.性能调优
在这一点上,现在有一个实际的工程管道(带有单元测试和持续集成!),但仍然存在性能问题 。
第一个问题是,是否会在推理时在生产中使用 CPU 或 GPU 。训练深度网络比在推理时使用它需要更长的时间 。在训练期间使用GPU是很常见的(就像我们所做的那样),因为它们大大减少了训练深度网络所需的时间 。但是,在推理时使用 GPU 是目前更难进行的调用 。
首先,在等生产数据中心拥有高端GPU仍然有点异国情调,并且与其他机队不同 。此外,基于 GPU 的机器更加昂贵,并且基于快速开发,配置正在更快地搅动 。对Word 和Word Deep Net在CPU和GPU上的表现进行了广泛的分析,假设充分利用每个CPU上的所有内核以及CPU的特征 。经过大量分析,决定与 GPU 机器相比,只需在 CPU 上即可达到性能目标,成本相似或更低 。
一旦决定使用CPU就需要针对Word Deep Net优化系统BLAS库,稍微调整网络,并将配置为使用可用内核 。单词检测器也是一个重要的瓶颈 。最终以更模块化的方式重写了 C++MSER实现,以避免在执行两次传递时重复缓慢的工作(以便能够处理黑白文本以及黑文本上的白色);向层(底层MSER树层次结构)公开更多内容,以实现更有效的处理;并使代码实际可读 。还必须优化 MSER 后 Word 检测管道,以调整和矢量化其中的某些慢速部分 。
在所有这些工作之后,现在有了一个生产化的高性能系统可以为少数用户“影子打开”,从而进入第三个阶段:改进 。
7.优雅
由于提议的系统在生产中与商业OCR系统并行运行,需确认系统确实更好,这是根据真实用户数据测量的 。在,非常重视用户数据隐私,因此不能只查看和测试随机移动文档扫描图像 。相反,使用前面详述的用户图像捐赠流程来获得评估图像 。然后,使用这些捐赠的图像,非常小心地保护它们的隐私,对两个OCR系统进行端到端的定性黑盒测试,并且很高兴地发现确实执行了与旧的商业OCR SDK相同或更好的功能,能够将系统提升到100%的 用户 。
接下来测试了在这些捐赠文档上微调训练有素的深度网络与手工选择的微调图像套件是否有助于提高准确性 。不幸的是,它没有移动针头 。
另一个重要的改进是进行方向检测,这是在原始管道中没有完成的 。来自移动文档扫描仪的图像可以旋转90°甚至倒置 。使用另一个基于v2架构的深度网络构建了一个方向预测器,更改了最后一层以预测方向,收集了方向训练和验证数据集,并从偏向于自己需求的训练模型中进行了微调 。将此方向预测器放入管道中,使用其检测到的方向将图像旋转到直立,然后再进行字检测和。
方向预测器的一个棘手方面是,只有一小部分图像实际上是旋转的 。需要确保系统在尝试修复较少数量的非直立图像的方向时,不会无意中旋转直立图像(最常见的情况) 。此外必须解决各种棘手的问题,将直立旋转图像与PDF文件格式可以应用自己的转换矩阵进行旋转的不同方式相结合 。
最后发现,在 Apple 的原生预览应用程序中,包含扫描的 OCRed 隐藏层的 PDF 文件格式存在一些棘手的问题 。大多数 PDF 呈现器都尊重文本中嵌入的空间以进行复制和粘贴,但 Apple 的预览应用程序会执行自己的启发式方法,以根据文本位置确定单词边界 。这导致从此PDF渲染器复制和粘贴的质量不可接受,导致大多数空格被删除,并且所有单词都被“一起填充” 。必须对一系列PDF渲染器进行广泛的测试,以找到正确的PDF技巧和解决方法来解决这个问题 。
CRed 隐藏层的 PDF 文件格式存在一些棘手的问题 。大多数 PDF 呈现器都尊重文本中嵌入的空间以进行复制和粘贴,但 Apple 的预览应用程序会执行自己的启发式方法,以根据文本位置确定单词边界 。这导致从此PDF渲染器复制和粘贴的质量不可接受,导致大多数空格被删除,并且所有单词都被“一起填充” 。必须对一系列PDF渲染器进行广泛的测试,以找到正确的PDF技巧和解决方法来解决这个问题 。