开发者社区 > ModelScope模型即服务 > 计算机视觉 > 正文

请问 ModelScope 能多进程么?

请问 ModelScope ocr_recognition = pipeline(Tasks.ocr_recognition, model='damo/cv_convnextTiny_ocr-recognition-general_damo')
能多进程么?我每次开起来都卡住了 卡在 ocr_recognition(image_crop)
这一步

展开
收起
2401。 2023-09-03 12:56:59 179 0
2 条回答
写回答
取消 提交回答
  • 可能和硬件有关,试了一下,cpu推理也很快。https://modelscope.cn/models/damo/cv_convnextTiny_ocr-recognition-general_damo/quickstart 模型推理 / 代码范例
    此回答整理自“魔搭ModelScope开发者联盟群 ①”。
    )

    2023-09-05 12:54:10
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    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
    

    定义一个函数,用于将图像路径作为参数传递给 ocr_recognition 函数

    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 识别的速度。

    2023-09-04 07:44:21
    赞同 展开评论 打赏

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

相关电子书

更多
视觉AI能力的开放现状及ModelScope实战 立即下载
ModelScope助力语音AI模型创新与应用 立即下载
低代码开发师(初级)实战教程 立即下载