OCR 中的滑动窗口需要大量时间
Posted
技术标签:
【中文标题】OCR 中的滑动窗口需要大量时间【英文标题】:Sliding windows in OCR taking lot of time 【发布时间】:2012-11-15 03:00:38 【问题描述】:我正在实施滑动窗口技术来开发照片 OCR,即从图片中切割出一个特定大小的矩形并检查它是否包含文本。然后矩形再次移动了一些像素。但是这种滑动窗口技术需要很多时间。例如,处理一张 1366x768 的图片需要 6 个小时,步长为 2,窗口大小为 20x25。是否有任何其他可能有用的技术或如何加快该过程?
我正在用 java 编码。
【问题讨论】:
【参考方案1】:如果不了解您的算法/代码的任何细节,很难给出具体的建议。您可以考虑几个潜在的性能改进:
-
最大限度地减少磁盘 I/O 和缓存未命中。你说一个矩形是“从图片中剪下来的”。如果每个“剪切”都是从磁盘单独读取,则效率非常低,并且会显着增加执行时间。当您移动窗口(移动 2 个像素)时,新窗口中的大部分数据都是相同的,因此请尽量避免重新读取这些数据。
减小窗口大小或增加步长。这显然会影响您的结果,但根据您尝试 OCR 的字符大小,这可能是一种选择。
如果您要应用卷积滤波器来执行 OCR,请考虑通过图像数据的 2D FFT 执行 fast convolution。
多线程您的应用程序,如果它还没有。虽然您的问题不是embarrassingly parallel,但它很容易是多线程的。
【讨论】:
感谢您的回答。我无法减小或增大窗口大小,但我绝对可以选择 2 像素相同的数据。而且我已经应用了多线程。【参考方案2】:滑动窗口方法是蛮力的,因此从本质上来说非常缓慢。也许您应该看看基于显着性的技术,这些技术使用过滤器来确定要处理的图像区域的优先级。
这是我比较熟悉的一篇论文:B. Draper 和 A. Lionelle。 “相似变换下选择性注意的评估”,视觉和图像理解,100:152-171,2005
最后,您使用的是什么 ANN 库?确保您的 ANN 代码正在执行矩阵/向量运算,并且它们已尽可能优化!
【讨论】:
以上是关于OCR 中的滑动窗口需要大量时间的主要内容,如果未能解决你的问题,请参考以下文章