如何将模型测试预测转换为 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), 【参考方案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), 是的,我现在添加了。我正在尝试制作 256x256 1 通道 8 位 mask.png 但我仍然有同样的错误:(无法处理此数据类型:(1, 1, 256, 1), |u1 如果有帮助请不要忘记接受 ;-)

以上是关于如何将模型测试预测转换为 png的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Matlab 中的 PartitionedEnsemble 模型预测新数据(测试集)的标签?

python如何预测下一年的数据

Quanteda 包,朴素贝叶斯:如何预测不同特征的测试数据?

模型测试集评价指标(模型泛化能力)

Python使用tpot获取最优模型将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果概率属于哪一折与测试集标签结果概率一并整合输出为结果文件

使用交叉验证时如何使用测试数据集进行预测?