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

使用Keras应用程序包中的VGG19模型进行图像识别的实例演示

发布时间:2023-12-18 03:45:48

Keras是一个用于构建神经网络的高级API,它提供了许多预训练的模型,其中包括VGG19模型。VGG19是VGGNet网络的一个变体,它使用了19层的卷积和全连接层。在本示例中,我们将使用Keras的VGG19模型进行图像识别任务。

首先,我们需要安装Keras库,并且需要一些额外的库来处理输入图像和显示结果。可以使用pip命令来安装这些依赖项:

pip install keras
pip install pillow
pip install matplotlib

接下来,我们将编写一个Python脚本,加载VGG19模型并使用它来识别图像。

import numpy as np
from keras.applications.vgg19 import VGG19, preprocess_input, decode_predictions
from keras.preprocessing import image
import matplotlib.pyplot as plt

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

# 加载并预处理图像
img_path = 'test_image.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)

# 使用VGG19模型进行预测
preds = model.predict(x)
# 将预测结果转换为类标签
decoded_preds = decode_predictions(preds, top=3)[0]
# 打印预测结果
for i, (class_id, class_name, prob) in enumerate(decoded_preds):
    print(f'{i + 1}. {class_name}: {prob * 100:.2f}%')

# 显示原始图像
plt.imshow(img)
plt.axis('off')
plt.show()

在上述代码中,我们首先导入所需的库。然后使用VGG19函数加载预训练的VGG19模型,weights='imagenet'参数表示我们要使用在ImageNet数据集上预训练的权重来初始化模型。

接下来,我们加载并预处理输入图像。首先我们使用image.load_img函数加载图像,并将其大小调整为VGG19模型所需的224x224尺寸。然后使用image.img_to_array将图像转换为NumPy数组,并使用np.expand_dims函数添加一个维度,使其成为一个四维数组,以符合模型的输入要求。最后,我们调用preprocess_input函数来对图像进行预处理,包括像素值归一化和通道重新排序。

接下来,在完成了预处理后,我们调用model.predict函数,将图像作为输入传入VGG19模型,以获得预测结果。预测结果是一个包含1000个类概率的向量。为了方便理解,我们可以使用decode_predictions函数将预测结果转换为类标签,其中top=3参数表示我们只显示概率最高的三个类别。

最后,我们迭代预测结果并打印出类标签和对应的概率。然后使用matplotlib.pyplot库显示原始图像,并使用plt.imshow函数将图像显示在屏幕上。

要运行此示例,只需将上述代码保存到一个Python文件中,并将test_image.jpg替换为您要识别的图像文件的路径。然后运行脚本,即可看到VGG19模型对图像进行的预测结果,并显示原始图像。

使用Keras的VGG19模型进行图像识别的实例演示,展示了如何使用预训练的模型进行图像分类任务。通过使用Keras的丰富功能和易用性,我们可以很容易地构建和部署强大的神经网络模型。