请问 ModelScope ocr_recognition = pipeline(Tasks.ocr_recognition, model='damo/cv_convnextTiny_ocr-recognition-general_damo')
能多进程么?我每次开起来都卡住了 卡在 ocr_recognition(image_crop)
这一步
可能和硬件有关,试了一下,cpu推理也很快。https://modelscope.cn/models/damo/cv_convnextTiny_ocr-recognition-general_damo/quickstart 模型推理 / 代码范例
此回答整理自“魔搭ModelScope开发者联盟群 ①”。
)
ModelScope 本身不支持多进程。它是一个用于加载和预处理模型的工具,而不是用于执行模型推理的工具。ModelScope 的主要目的是提高模型加载速度和内存使用效率。要实现多进程,您需要在使用 ModelScope 加载模型后,使用其他库(如多线程或多进程库)并行处理图像。
对于 OCR 识别任务,您可以考虑使用多线程来提高处理速度。这里有一个使用 Python 的多线程库concurrent.futures和Pillow库的示例:
import os
from PIL import Image
from concurrent.futures import ThreadPoolExecutor
from model_scope import ModelScope
def ocr_recognition(image_path):
# 使用 ModelScope 加载模型
model_scope = ModelScope(model='damo/cv_convnextTiny_ocr-recognition-general_damo')
model = model_scope.load_model()
# 打开图像
image = Image.open(image_path)
# 对图像进行预处理(例如调整大小、颜色空间等)
#...
# 使用模型进行 OCR 识别
#...
return result
def process_image(image_path):
result = ocr_recognition(image_path)
# 处理识别结果,例如保存到文件或输出到控制台
#...
with ThreadPoolExecutor() as executor:
for image_path in image_paths:
executor.submit(process_image, image_path)
CopyCopy
在这个示例中,我们使用concurrent.futures.ThreadPoolExecutor创建一个线程池来并行处理图像。process_image函数将图像路径作为参数传递给ocr_recognition函数。这样,您可以同时处理多个图像,从而提高 OCR 识别的速度。