You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在外部代码中调用多进程细胞检测函数并获取返回值

多进程细胞检测跨文件调用解决方案

问题说明

为解决deepcell处理大图像效率低的问题,将大图像切割为小图块后用多进程检测,需要在独立文件中调用检测函数并获取返回值,但原代码结构无法实现跨文件调用。

修改后的code1

需调整以下核心点:

  • 避免全局初始化模型和图像,防止多进程重复加载引发冲突
  • 修正多进程参数传递逻辑(Pool.map仅支持单参数,多参数需用starmap)
  • 暴露检测函数,确保跨文件可调用
import numpy as np
import cv2 as cv
from multiprocessing import Pool
from deepcell.mesmer import Mesmer

def deepcell_detection(image0, mpp):
    # 每个进程单独初始化Mesmer,规避多进程共享实例的冲突
    app = Mesmer()
    image = np.stack((image0, image0), axis=-1)
    image = np.expand_dims(image, 0)
    labeled_image, coords = app.predict(image, image_mpp=mpp)
    return coords

def pool_cell_detection(img_channel):
    r, c = img_channel.shape[0:2]
    mpp = 2
    rstep = r // 10
    cstep = c // 10
    patches = []
    for i in range(10):
        for j in range(10):
            img_patch = img_channel[i*rstep:(i+1)*rstep, j*cstep:(j+1)*cstep]
            # 将多参数打包为元组,适配starmap的参数传递规则
            patches.append((img_patch, mpp))
    
    with Pool(4) as p:
        # 用starmap处理多参数函数调用
        allPoints = p.starmap(deepcell_detection, patches)
    return allPoints

# 保留main函数用于单独测试
def main():
    blevel_image = cv.imread("./images/blevel_eq_p.png", 0)
    allPoints = pool_cell_detection(blevel_image)
    print(f"检测到的细胞坐标组数:{len(allPoints)}")

if __name__ == '__main__':
    main()

code2的实现

在code2中直接导入code1的检测函数,传入目标图像即可获取返回值:

import cv2 as cv
import code1

def func_something():
    # 加载需要处理的大图像
    blevel_image = cv.imread("./images/blevel_eq_p.png", 0)
    # 调用检测函数并接收结果
    allPoints = code1.pool_cell_detection(blevel_image)
    # 后续可对allPoints进行分析或存储
    print(f"获取到的细胞坐标组数:{len(allPoints)}")

if __name__ == '__main__':
    func_something()

关键说明

  • 多进程参数传递:原代码用map传递列表参数会触发参数不匹配错误,starmap支持直接传递元组形式的多参数,适配deepcell_detection的参数需求。
  • 模型初始化:将Mesmer实例化放到检测函数内部,让每个进程单独创建模型实例,避免多进程共享同一实例导致的资源冲突。
  • 函数可访问性:pool_cell_detection未被if __name__ == '__main__'包裹,因此能被其他文件导入并调用。

内容的提问来源于stack exchange,提问作者Maryam Sadeghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:09:30