- Keras 教程
- Keras - 主页
- Keras - 介绍
- Keras - 安装
- Keras - 后端配置
- Keras - 深度学习概述
- Keras - 深度学习
- Keras - 模块
- Keras - 层
- Keras - 自定义层
- Keras - 模型
- Keras - 模型编译
- Keras - 模型评估和预测
- Keras - 卷积神经网络
- Keras - 利用 MPL 进行回归预测
- Keras - 利用 LSTM RNN 进行时间序列预测
- Keras - 应用
- Keras - ResNet 模型实现实时预测
- Keras - 预训练模型
- Keras 的有用资源
- Keras - 简要指南
- Keras - 有用资源
- Keras - 讨论
ResNet 模型实现实时预测
ResNet 是一个预训练的模型。它是使用 ImageNet 进行训练的。ResNet 模型的权值预训练于 ImageNet。它的语法如下 -
keras.applications.resnet.ResNet50 ( include_top = True, weights = 'imagenet', input_tensor = None, input_shape = None, pooling = None, classes = 1000 )
此处,
include_top 表示网络顶部的全连接层。
weights 表示在 ImageNet 上的预训练。
input_tensor 表示可选的 Keras 张量,用作模型的图像输入。
input_shape 表示可选的形状元组。此模型的默认输入大小为 224x224。
classes 表示对图像进行分类的可选类别数。
让我们通过编写一个简单示例来了解该模型 -
步骤 1:导入模块
让我们加载如下指定的必要模块 -
>>> import PIL >>> from keras.preprocessing.image import load_img >>> from keras.preprocessing.image import img_to_array >>> from keras.applications.imagenet_utils import decode_predictions >>> import matplotlib.pyplot as plt >>> import numpy as np >>> from keras.applications.resnet50 import ResNet50 >>> from keras.applications import resnet50
步骤 2:选择输入
让我们选择一个输入图像,Lotus 如下指定 -
>>> filename = 'banana.jpg'
>>> ## load an image in PIL format
>>> original = load_img(filename, target_size = (224, 224))
>>> print('PIL image size',original.size)
PIL image size (224, 224)
>>> plt.imshow(original)
<matplotlib.image.AxesImage object at 0x1304756d8>
>>> plt.show()
此处,我们加载了一张图片 (banana.jpg) 并显示了它。
步骤 3:将图片转换为 NumPy 数组
让我们将我们的输入,Banana 转换为 NumPy 数组,以便将其传递给模型进行预测。
>>> #convert the PIL image to a numpy array
>>> numpy_image = img_to_array(original)
>>> plt.imshow(np.uint8(numpy_image))
<matplotlib.image.AxesImage object at 0x130475ac8>
>>> print('numpy array size',numpy_image.shape)
numpy array size (224, 224, 3)
>>> # Convert the image / images into batch format
>>> image_batch = np.expand_dims(numpy_image, axis = 0)
>>> print('image batch size', image_batch.shape)
image batch size (1, 224, 224, 3)
>>>
步骤 4:模型预测
让我们将我们的输入输入模型以获得预测
>>> prepare the image for the resnet50 model >>> >>> processed_image = resnet50.preprocess_input(image_batch.copy()) >>> # create resnet model >>>resnet_model = resnet50.ResNet50(weights = 'imagenet') >>> Downloavding data from https://github.com/fchollet/deep-learning-models/releas es/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels.h5 102858752/102853048 [==============================] - 33s 0us/step >>> # get the predicted probabilities for each class >>> predictions = resnet_model.predict(processed_image) >>> # convert the probabilities to class labels >>> label = decode_predictions(predictions) Downloading data from https://storage.googleapis.com/download.tensorflow.org/ data/imagenet_class_index.json 40960/35363 [==================================] - 0s 0us/step >>> print(label)
输出
[
[
('n07753592', 'banana', 0.99229723),
('n03532672', 'hook', 0.0014551596),
('n03970156', 'plunger', 0.0010738898),
('n07753113', 'fig', 0.0009359837) ,
('n03109150', 'corkscrew', 0.00028538404)
]
]
在此,模型正确地将图像预测为香蕉。
广告