解决基于keras的inception_v3预训练模型无法下载问题并进行简单调用

keras的inception_v3是个图片进行分类模型,使用keras简单调用内置的inception_v3模型非常简单,只需要一行代码:

#导入所需要的库
import tensorflow as tf
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.inception_v3 import preprocess_input, decode_predictions
import numpy as np

#下载、读取预训练模型,创建模型实例
model = tf.keras.applications.inception_v3.InceptionV3()

运行后报错:无法下载预训练模型

报错

Exception: URL fetch failure on https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5: None -- [Errno 111] Connection refused

以上语句可以自行下载预训练模型,但是由于墙的原因,在国内运行会导致报错。

解决方法:

由于程序的运行顺序是先检查keras的缓存文件夹里有没有对应文件,如果没有才会去下载,所以可以预先下载预训练模型并放入缓存文件夹,跳过下载的过程。

下载链接

链接:https://pan.baidu.com/s/1PJXqL-dUbjRw69dE5tBIDg
提取码:y3tq

压缩包中包括:

inception_v3_weights_tf_dim_ordering_tf_kernels.h5 #预训练模型文件
inceptionv3.py #示例代码
cropped_panda.jpg #示例图片

将下载下来的模型文件:inception_v3_weights_tf_dim_ordering_tf_kernels.h5,放到缓存文件夹即可。

我的系统是ubuntu缓存文件夹是:/home/用户名/.keras/models
Windows系统的缓存文件夹应该是:C:\Users\用户名.keras\models

使用模型分类图片

这里使用了一张熊猫的图片cropped_panda.jpg作为输入示例,完整代码为:

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


if __name__=='__main__':
    #下载、读取预训练模型,创建模型实例
    model = tf.keras.applications.inception_v3.InceptionV3()
    #读取输入图片,模型默认图片输入大小为(299,299)
    img_path = "cropped_panda.jpg"
    img = image.load_img(img_path, target_size=(299, 299))

    # 图片预处理
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    x = preprocess_input(x)

    #预测
    preds = model.predict(x)

    #将预测结果解码成(类别、描述、概率)的元组
    decode_predictions(preds, top=3)
    print('Predicted:', decode_predictions(preds, top=3)[0])

最终输出为:

扫描二维码关注公众号,回复: 12252990 查看本文章

Predicted:
[(‘n02510455’, ‘giant_panda’, 0.81923896),
(‘n02500267’, ‘indri’, 0.008909277),
(‘n04266014’, ‘space_shuttle’, 0.0051425514)]

可以看到结果输出了概率最大的三个类别,其中giant_panda类别概率最大,说明本示例中,结果正确。

猜你喜欢

转载自blog.csdn.net/wmq104/article/details/103826978