我目前正致力于在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
的预测