OCR中的滑动窗口技术耗时过长

我在开发照片OCR时使用了滑动窗口技术,即从图片中切割出一个特定大小的矩形,并检查其中是否包含文字。然后,再将矩形移动几个像素。但这种滑动窗口技术耗时过长。例如,处理一张1366×768的图片,步长为2,窗口大小为20×25时,需要6个小时。是否有其他技术可以帮助加速这个过程?

我使用Java进行编程。


回答:

在不了解你的算法/代码细节的情况下,很难给出具体的建议。以下是几个可能的性能改进建议:

  1. 尽量减少磁盘I/O和缓存未命中。你提到矩形是从图片中“切割”出来的。如果每次“切割”都是从磁盘中读取数据,这将非常低效,并会显著增加执行时间。当你移动窗口(看起来是移动2个像素)时,新窗口中的大部分数据是相同的,尽量避免重新读取这些数据。
  2. 减小窗口大小或增加步长。这显然会影响结果,但根据你试图进行OCR的字符大小,这可能是一个选项。
  3. 如果你在进行OCR时应用了卷积滤波器,考虑通过图像数据的二维FFT进行快速卷积
  4. 如果你的应用程序尚未多线程化,请考虑多线程化。虽然你的问题不是令人尴尬的并行问题,但它可以相对容易地进行多线程处理。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注