keras 预训练模型的使用方法

32 篇文章 0 订阅
20 篇文章 1 订阅

Tensorflow 几个最新版本的更新大力推崇 Keras 相当于官宣啊

相信Keras的可用性给大家做深度学习带来方便 畅快的同时

逐渐会变成主流的开发组件

 

0、官方资料

Imagenet的图像识别任务目睹了近几年人工神经网络的进展

其中有很多里程碑式的进展 keras在应用模块(keras.applications)中提供了带有预训练权值的深度学习模型,这些模型可以用来进行预测、特征提取和微调(fine-tuning)。

中文官方资料:https://keras.io/zh/applications/

 

1、模型下载 (不推荐)

使用预训练模型可以事先下载好模型

https://github.com/fchollet/deep-learning-models/releases/

下载好的模型要放在本地目录:

      Linux下是放在“~/.keras/models/”中

      Win下则放在Python的“settings/.keras/models/”中

之后就可以脱机使用

 

2、使用预训练模型

为什么不推荐直接下载的模型呢

因为我发现下载的文件并不是keras最新版(当前2.2.4)里指定模型文件

也就是说下载的模型不一定完全能用

所以建议有条件联网的同志直接联网使用模型

初次使用会自动下载h5文件到上述目录中

 

不过无论怎么说 使用模型的代码都是一样的

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(weights='imagenet')

img_path = 'demo.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)

preds = model.predict(x)
print('Predicted:', decode_predictions(preds, top=5)[0])

上述示例使用 ResNet50 识别 demo.jpg 图像中的内容

其他使用模型的案例见中文文档

值得说明的是:

每种网络有自己的图像预处理方法 虽然很简单但是会不同

因此 preprocess_input 函数需要根据网络不同而区分

但是decode_predictions都是一样的 不需要针对每个网络使用不同的函数

 

3、试验结果

预训练模型识别准确率

预训练模型识别结果
 名称top5准确率top1准确率
1'DenseNet201'0.9728571428571430.854835164835165
2'InceptionResNetV2'0.9858461538461540.893714285714286
3'InceptionV3'0.9834505494505490.884351648351648
4'MobileNet'0.9704175824175830.850483516483517
5'MobileNetV2'0.9621758241758240.823494505494506
6'NASNetMobile'0.9520219780219780.809714285714286
7'ResNet50'0.9456043956043960.791252747252747
8'VGG16'0.9122197802197800.729208791208791
9'VGG19'0.9129670329670330.731472527472527
10'Xception'0.9815164835164840.881626373626374

上表是各个模型识别 Imagenet 中45500幅图像的结果,与官方文档中给出的结果基本一致

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值