欢迎访问宙启技术站
智能推送

用Python编写的VGG16模型的图像分类示例代码

发布时间:2023-12-15 18:14:25

以下是一个使用Python编写的VGG16模型的图像分类示例代码:

import tensorflow as tf
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
import numpy as np

# 加载VGG16模型
model = VGG16(weights='imagenet')

# 加载图像并进行预处理
img_path = 'example.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

# 使用VGG16模型进行预测
preds = model.predict(x)
decoded_preds = decode_predictions(preds, top=3)[0]

# 打印预测结果
for pred in decoded_preds:
    print(f"类别:{pred[1]}, 概率:{pred[2]*100}%")

在上面的代码中,我们首先使用tensorflow.keras.applications.vgg16模块中的VGG16类加载了预训练好的VGG16模型。然后,我们通过tensorflow.keras.preprocessing.image模块中的load_img函数加载了待分类的图像,并将其调整为VGG16模型需要的尺寸(224x224像素)。接下来,我们将图像转换为numpy数组,并使用preprocess_input函数对图像进行预处理,以便与VGG16模型的训练数据具有相同的输入格式。

接下来,我们使用VGG16模型的predict方法进行预测。predict方法接受一个numpy数组作为输入,并返回预测结果。预测结果是一个包含1000个类别的概率分布。为了方便查看,我们使用decode_predictions函数将预测结果转换为易于阅读的形式。上述代码中,我们选择了前三个概率最高的类别打印出来。

最后,我们可以将上述代码保存为一个Python脚本,例如image_classification.py,并将待分类的图像命名为example.jpg(可以根据实际需求修改路径和图像名称)。然后,在命令行中运行以下命令来运行脚本并查看分类结果:

python image_classification.py

这样,你将会看到打印出的图像分类结果,包括类别和对应的概率。