语义分割-FCN8S(案例)测试(2)

本案例通过加载权重文件,读取图片,生成分割图

准备图片:

加载模型

import tensorflow as tf
import matplotlib.pyplot as plt

model=tf.keras.models.load_model("/Users/mym/Desktop/ai/fcn8s/fcn32_vgg8s.h5")

定义读取图片函数

IMG_WIDTH=224
def read_img(path):
    img=tf.io.read_file(path)
    img=tf.image.decode_jpeg(img,channels=3)
    img=tf.image.resize(img,(IMG_WIDTH,IMG_WIDTH))
    img=img/255
    return img

读取图片并预测

img_data=read_img("VOCdevkit/VOC2007/JPEGImages/000122.jpg")
print(img_data.shape)
img_data_batch=tf.expand_dims(img_data,axis=0)
print(img_data_batch.shape)

prd=model.predict(img_data_batch)
print(prd.shape)

执行结果:

(224, 224, 3)
(1, 224, 224, 3)
(1, 224, 224, 3)

将预测结果处理,并显示成图片

prd_arr=tf.argmax(prd[0],axis=2)

plt.imshow(prd_arr)
plt.show()