keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16、Xception、ResNet50、InceptionV3 4个。

VGG19在keras中的定义:

def VGG19(include_top=True, weights='imagenet',

input_tensor=None, input_shape=None,

pooling=None,

classes=1000)

include_top: 是否包含最后的3个全连接层

weights: 定义为‘imagenet’,表示加载在imagenet数据库上训练的预训练权重,定义为None则不加载权重,参数随机初始化

不包含全连接层的VGG19模型文件名称是" vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5 " ,文件大小约80MB;

包含全连接层的VGG19模型文件名称是 " vgg19_weights_tf_dim_ordering_tf_kernels.h5 " ,文件大小约575MB

ubuntu中,下载的VGG19模型文件的本地路径是 ~/.keras/models/ , .keras是一个隐藏文件夹。可以预先下载模型文件放到对应目录下,程序执行时检测到存在模型文件就不会再下载了。

使用VGG19预训练模型分类图片的例子

# coding: utf-8

from keras.applications.vgg19 import VGG19

from keras.preprocessing import image

from keras.applications.vgg19 import preprocess_input

from keras.models import Model

import numpy as np

base_model = VGG19(weights='imagenet', include_top=True)

img_path = 'cat.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) # 预处理到0~1

out = base_model.predict(x) # 预测结果,1000维的向量

print(out.shape) # (1,1000)

程序首先加载带3个全连接层的VGG19模型,然后读入图片并做格式转换和归一化等处理后执行VGG模型预测,预测结果out是一个1000维的向量,代表了预测结果分别属于10000个分类的概率,形状是(1,1000),out内容如下:

使用VGG19预训练模型提取VGG19网络中任意层的输出特征的例子

上个例子可以看到keras对VGG网络的封装异常好,简单几行代码就可以分类图片。keras中VGG预训练参数模型另一个更常用的应用是可以提取VGG网络中任意一层的特征。

以下例子提取的是VGG19网络中第5个卷积层的输出特征(也是第1个全连接层的输入特征)

# coding: utf-8

from keras.applications.vgg19 import VGG19

from keras.preprocessing import image

from keras.applications.vgg19 import preprocess_input

from keras.models import Model

import numpy as np

base_model = VGG19(weights='imagenet', include_top=False)

model = Model(inputs=base_model.input, outputs=base_model.get_layer('block5_pool').output)

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

block5_pool_features = model.predict(x)

print(block5_pool_features.shape) #(1, 7, 7, 512)

base_model.get_layer('block5_pool')中的block5_pool参数定义了获取的是第5个卷积层的输出。第5层的输出是一个 1×7×7×512的向量,如下:

也可以设置为加载最后3个全连接层的VGG19网络,就可以获取最后3个全连接层的输出了:

# coding: utf-8

from keras.applications.vgg19 import VGG19

from keras.preprocessing import image

from keras.applications.vgg19 import preprocess_input

from keras.models import Model

import numpy as np

base_model = VGG19(weights='imagenet', include_top=True)

model = Model(inputs=base_model.input, outputs=base_model.get_layer('fc2').output)

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

fc2 = model.predict(x)

print(fc2.shape) #(1, 4096)

加了全连接层,所以base_model.get_layer('fc2') 里参数也可以是 flatten、fc1、fc2和predictions 。

VGG19各个模块在keras中定义的名称如下,可以根据名称轻松获取该层特征:

matlab vgg19提取语义特征,keras中VGG19预训练模型的使用相关推荐

  1. keras中VGG19预训练模型的使用

    keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16.Xception.ResNet50.InceptionV3 4个. VGG19在keras中的定义: ...

  2. AI:2020年6月22日北京智源大会演讲分享之09:40-10:10Mari 教授《基于显式上下文表征的语言处理》、10:10-10:40周明教授《多语言及多模态任务中的预训练模型》

    AI:2020年6月22日北京智源大会演讲分享之09:40-10:10Mari 教授<基于显式上下文表征的语言处理>.10:10-10:40周明教授<多语言及多模态任务中的预训练模型 ...

  3. 周明教授《多语言及多模态任务中的预训练模型》Mari 教授《基于显式上下文表征的语言处理》

    AI:2020年6月22日北京智源大会演讲分享之09:40-10:10Mari 教授<基于显式上下文表征的语言处理>. 10:10-10:40周明教授<多语言及多模态任务中的预训练模 ...

  4. NLP领域中的预训练模型杂谈

    近期NLP领域发生了很多大事,基本都离不开Pretrain这个字眼,比如大名鼎鼎的BERT.GPT等,笔者也是在近期撸了 7篇 近一年内相关的论文及它们的源码,这里就是对这7篇论文进行一个大总结,用更 ...

  5. keras + tensorflow —— 使用预训练模型

    keras 提供了以下图像分类模型的代码和预训练的权重: Xception VGG16 VGG19 ResNet50 Inception v3 Inception-ResNet v2 MobileNe ...

  6. C#中的深度学习:ML.NET中具有预训练模型的硬币识别

    在这里,我们看一下转移学习,调整预定义的CNN以及使用模型生成器扩展来训练我们的模型以解决硬币识别问题. 这次我们将使用ML.NET而不是Keras.NET.为什么不使用Keras.NET?尽管Ker ...

  7. 使用PyTorch中的预训练模型进行图像分类

    PyTorch的TorchVision模块中包含多个用于图像分类的预训练模型,TorchVision包由流行的数据集.模型结构和用于计算机视觉的通用图像转换函数组成.一般来讲,如果你进入计算机视觉和使 ...

  8. 【深度学习】keras框架使用预训练模型进行Finetune的应用

    文章目录 1 概述 2 Keras 3 VGG16 (VGG16) 4 MobileNetV2 (MobileNetV2) 5 盗版ResNetV2 (InceptionResNetV2) 6 盗梦空 ...

  9. 批量提取 caffe 特征 (python, C++, Matlab)(待续)

    本文参考如下: Instant Recognition with Caffe Extracting Features Caffe Python特征提取 caffe 练习4 --利用python批量抽取 ...

  10. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

最新文章

  1. 基于Python的自动特征工程——教你如何自动创建机器学习特征
  2. Spring Autowire自动装配
  3. 万字长文,一文读懂Linux的常规操作(墙裂建议收藏)
  4. jQuery easyUI--下拉菜单的制作
  5. hive explode
  6. 中英文对照 —— 数学
  7. JAVA→XML解析EXtensible Markup Language、JSON解析JavaScript Object Notation
  8. UIImageView contentModel
  9. 微信小程序--点餐系统(本地服务器+源码分享)
  10. 32 位和 64 位版本的 Office 2010 之间的兼容性,同样适用于AutoCAD的VBA兼容性--VBA 64 32 调用dll的区别
  11. excel数据分析——贝叶斯分析预估
  12. 火狐使用谷歌搜索_使Firefox快速搜索使用Google的Beta搜索键
  13. 批量图片验证模型错误: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key conv1_1/bias not found
  14. word 计算机内存不足,word文档保存提示内存不足怎么办
  15. JSAPI 高德地图应用--关键字搜索、POI搜索定位,获取经纬度
  16. Outlook-没有自动回复-使用规则创建外出邮件
  17. ios swift 纯代码自定义view(控件) XYswitchView
  18. unity入门2.0
  19. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java疫情下校园食品安全信息管理系统4r61l
  20. 小米手机 开发app python_python 全栈开发,Day59(小米商城)

热门文章

  1. 不能注册 DLL/OCX:Regsvr32失败的解决办法
  2. 万兆网、10G ethernet subsystem IP核
  3. 使用Blender编辑Character Creater 4的人物形象
  4. xposed框架_免root用Xposed框架!安卓用户一定要学会
  5. 百度定位出现162错误码
  6. 事业单位计算机技术岗工资,事业技术工资待遇
  7. 全国行政区划代码表(天地图)
  8. 易语言网络验证UI界面源码
  9. 中文ocr-Benchmarking Chinese Text Recognition: Datasets, Baselines, andan Empirical Study
  10. MT2503处理器性能介绍,MT2503/MT2503A/MT2503D芯片资料下载