如何将模型测试预测转换为 png
Posted
技术标签:
【中文标题】如何将模型测试预测转换为 png【英文标题】:How to convert model test predictions to png 【发布时间】:2021-09-04 07:53:36 【问题描述】:我用图片和面具训练了模型。我正在尝试获取预测的掩码。
model = load_model('unet_brain_mri_seg.hdf5', custom_objects='dice_coef_loss': dice_coef_loss, 'iou': iou, 'dice_coef': dice_coef)
model.compile(optimizer=opt, loss=dice_coef_loss, metrics=["binary_accuracy", iou, dice_coef])
test_gen = train_generator(df2, BATCH_SIZE,
dict(),
target_size=(im_height, im_width))
results = model.evaluate(test_gen, steps=len(df2) / BATCH_SIZE)
print("Test lost: ",results[0])
print("Test IOU: ",results[1])
print("Test Dice Coefficent: ",results[2])
from PIL import Image
i=0
for i in range(30):
index=np.random.randint(1,len(df2.index))
img = cv2.imread(df2['filename'].iloc[index])
img = cv2.resize(img ,(im_height, im_width))
img = img / 255
img = img[np.newaxis, :, :, :]
pred=model.predict(img)
plt.figure(figsize=(12,12))
plt.subplot(1,3,1)
plt.imshow(np.squeeze(img))
plt.title('Original Image')
plt.subplot(1,3,2)
plt.imshow(np.squeeze(cv2.imread(df2['mask'].iloc[index])))
plt.title('Original Mask')
plt.subplot(1,3,3)
plt.imshow(np.squeeze(pred) > .5)
plt.title('Prediction')
plt.show()
pred=np.asarray(pred)
im = Image.fromarray(pred)
im.save(r'C:\Users\Admin\Desktop\saglika2\Test\predicted_maske\''+str(i)+"pred_image.png")
i=i+1
我正在加载模型并获取测试预测,但我不知道如何将预测转换为 png。
【问题讨论】:
您可以简单地将其写入这样的文件:from PIL import Image im = Image.fromarray(pred) im.save("pred_image.png")
当我尝试进入循环时出现错误`无法处理此数据类型:(1, 1, 256, 1), 和UNet网络一样,输出也是图像,你可以像这样将输出保存为图像:
pred = model.predict(img)
pred = np.squeeze(pred, axis=0) #remove batch axis (1,256,256,1) => (256,256,1)
tf.keras.preprocessing.image.save_img("pred.png",pred)
【讨论】:
我收到此错误“无法处理此数据类型:(1, 1, 256, 1),以上是关于如何将模型测试预测转换为 png的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Matlab 中的 PartitionedEnsemble 模型预测新数据(测试集)的标签?
Quanteda 包,朴素贝叶斯:如何预测不同特征的测试数据?
Python使用tpot获取最优模型将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果概率属于哪一折与测试集标签结果概率一并整合输出为结果文件