• keras调用预训练模型分类


    在网上看到一篇博客,地址https://www.pyimagesearch.com/2017/03/20/imagenet-vggnet-resnet-inception-xception-keras/,是关于利用keras上预训练的模型进行图像分类的示例,于是我也自己动手运行了一下,效果,一般。

    上代码

    from keras.applications import ResNet50
    from keras.applications import InceptionV3
    from keras.applications import Xception # TensorFlow ONLY
    from keras.applications import VGG16
    from keras.applications import VGG19
    from keras.applications import imagenet_utils
    from keras.applications.inception_v3 import preprocess_input
    from keras.preprocessing.image import img_to_array
    from keras.preprocessing.image import load_img
    import numpy as np
    
    model_xception = Xception(weights="imagenet")
    model_vgg16 = VGG16(weights="imagenet")
    model_vgg19 = VGG19(weights="imagenet")
    model_resnet50 = ResNet50(weights = "imagenet")
    model_inceptionv3 = InceptionV3(weights="imagenet")
    
    image = load_img("./images/cat.jpeg",target_size=(224,224))
    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)
    
    preds = model_xception.predict(image)
    P = imagenet_utils.decode_predictions(preds)
    print(P)

    代码与博客相比有轻微改动,所做的事很简单,就是加载模型及权重,第一次加载权重的时候会从网上下载,速度还是挺快的,vgg16和vgg19稍慢,因为两个的权重都有五百多兆,其它模型在90兆左右。然后加载图像,注意拓展一下维度(也就是代表样本数的维度),之后就可以调用predic方法预测,输出十个(1,1000)的张量,最后调用imagenet_utils模块将输出与类别建立映射。

    看下结果,加载一张猫的图片,vgg与resnet都可以判断出猫类,inception和xception分别预测pitcher和mixing_bowl,有点离谱。

    再加载一个足球的图片,vgg与resnet都正确预测足球,inception与xception预测abacus和pitcher,无语。

    再加载一张哈士奇,vgg预测爱斯基摩犬,resnet预测哈士奇,另外两个依然很迷。

    此时,我无比怀疑inception系列到底是怎么在imagenet上取得好成绩的,这预测根本不靠谱。

    后来,我注意到对于inception或xception,原博客有一步预处理,是inception自带的,经过预处理后,一下子就很准确了。具体来说就是下面这条语句。

    image = preprocess(image)

    里面究竟发生了什么,以后我会研究一下。

  • 相关阅读:
    elasticsearch-排序(六)
    elasticsearch-分词器(五)
    elasticsearch-搜索-基本搜索(四)
    elasticsearch-文档(三)
    elasticsearch-集群(二)
    FFmpeg架构之I/O模块分析
    DirectShow 在 VS2010 中开发环境的设置
    预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
    2012年软件开发者薪资调查报告
    深入了解 VP8
  • 原文地址:https://www.cnblogs.com/wzyuan/p/9702979.html
Copyright © 2020-2023  润新知