如何加快我的预测任务

时间:2017-07-04 13:01:39

标签: numpy

我目前正致力于在keras中实施U-net基于:Lung Segmentation

我正在处理非常大的图像(~20000 * ~20000)并获得我的整个图像的概率图我使用了256 * 256个补丁。

目前我正在做如下:

UNet = load_model(model_name)

for posX in range(0,im.level_dimensions[level][0]-256,stride):
    for posY in range(0,im.level_dimensions[level][1]-256,stride):

        xx = np.expand_dims(imload[posY:posY+256,posX:posX+256,:],0)
        yy = maskload[posY:posY+256,posX:posX+256,:]

        #The following line is the bottleneck
        pred = UNet.predict(xx)[..., 0].reshape(patchShape[:2])

        #Reconstruct the probability map
        part=outputProba[posY:posY+256,posX:posX+256]
        part[:,:]+=pred[0:part.shape[0],0:part.shape[1]]
        outputProbaTimes[posY:posY+256,posX:posX+256]+=1

这段代码需要大约1分钟才能执行,步幅设置为256.我会用stride 64运行,但需要大约16分钟。

我对keras和Deep Learning非常陌生,我想知道是否有人会有加速此代码的智能提示。

我环顾四周使用predict_generator,它会很棒,因为它可以利用多处理。但是我不了解预测时生成数据的重点。

感谢您的帮助!

ps:代码在nvidia GTX 1080上运行

ps2:UNet.predict是来自keras

的预测

0 个答案:

没有答案