5 parallel-processing gpu tesseract opencl
我正在从事一个项目,该项目要求我使用 Tesseract 加快文本识别过程。我看到一篇文章说 Tesseract 正在与 OpenCL 一起工作,以将一些计算密集型任务卸载到可用的 CPU 或 GPU 上。
是否有关于“Tesseract 如何利用 OpenCL 将计算密集型任务卸载到并行 CPU 内核或 GPU”的定性解释?
Tesseract 源的链接在这里https://code.google.com/p/tesseract-ocr/source/browse/#git%2Fopencl
Tesseract 是一种 OCR,因此它可以检测图像中的图案/字母。粗略地说,这是图像处理,其中每个像素都可以并行计算,因此非常适合 GPU(OpenCL/CUDA/等)。
它的详细使用方式很难理解,但基本上它在 OpenCL 中处理以下内容(如分析代码打印的那样):
composeRGBPixel: 0.073872 (w=1.2)
HistogramRect: 0.121674 (w=2.4)
ThresholdRectToPix: 0.050257 (w=4.5)
getLineMasksMorph: 0.350409 (w=5.0)
Run Code Online (Sandbox Code Playgroud)
所以基本上,是在 GPU 中进行一些像素转换(非常高效),然后是直方图,最后对图像进行阈值处理。
分析代码只是测量每个 OpenCL 设备所花费的时间,并选择最好的一个。其他方法也是可能的。
选择最佳设备后,设备的任务就是执行计算负载。对于 GPU,它将使用所有着色核心(计算核心)。如果是 CPU,它将简单地运行一个线程池。但 OpenCL 不会实现 GPU-CPU 工作平衡。