在keras中对单一输入图像进行预测并返回预测结果操作


Posted in Python onJuly 09, 2020

模型经过训练测试之后,我们往往用一两张图对模型预测结果进行分析讨论,那么下面介绍在keras中用已训练的模型经过测试的方法。

下面是以利用预训练的ResNet来展示预测的效果,选了一张狗的图片,是来自一个kaggle比赛的。

预测结果第一个是一种苏格兰品种的狗,我也不知道准不准 == 。

在keras中对单一输入图像进行预测并返回预测结果操作

import numpy as np
from keras.applications.imagenet_utils import decode_predictions
from keras.preprocessing import image
from keras.applications import *
 
import os
 
# 忽略硬件加速的警告信息
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 
file_path = 'images/0a70f64352edfef4c82c22015f0e3a20.jpg'
 
img = image.load_img(file_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
 
model = ResNet50(weights='imagenet')
y = model.predict(x)
# print(np.argmax(y))
print('Predicted:', decode_predictions(y, top=3)[0])

讲几点:

1.输入img转成numpy数组,shape处理成(224,224,3)一般来讲,对于预训练模型是有一个最小的尺寸值,比最小尺寸大就可以了。在ResNet中,尺寸最小大于等于197即可。

2.要对输入shape扩维变成(None,224,224,3),第一个None是batches,模型并不知道你输入的batches是多少,但是维度必须和ResNet的输入要一致。

3.虽然用的是ResNet,自己设计的模型也一个道理,保留一下训练的权重,把model模块和预测模块分开写,这个时候load一下权重,再预测即可。

补充知识:keras:怎样使用 fit_generator 来训练多个不同类型的输出

这个例子非常简单明了,模型由1个输入,2个输出,两个输出的分支分别使用MSE作为损失。

x = Convolution2D(8, 5, 5, subsample=(1, 1))(image_input)
x = Activation('relu')(x)
x = Flatten()(x)
x = Dense(50, W_regularizer=l2(0.0001))(x)
x = Activation('relu')(x)

output1 = Dense(1, activation='linear', name='output1')(x)
output2 = Dense(1, activation='linear', name='output2')(x)

model = Model(input=image_input, output=[output1, output2])
model.compile(optimizer='adam', loss={'output1': 'mean_squared_error', 'output2': 'mean_squared_error'})

产生训练数据的生成器,这里y=[y1,y2].

batch_generator(x, y, batch_size):
  ....transform images
  ....generate batch batch of size: batch_size 
  yield(X_batch, {'output1': y1, 'output2': y2} ))

之后,调用fit_generator

model.fit_generator(batch_generator(X_train, y_train, batch_size))

原问题链接。

以上这篇在keras中对单一输入图像进行预测并返回预测结果操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入讲解Python中面向对象编程的相关知识
May 25 Python
sublime text 3配置使用python操作方法
Jun 11 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
python 寻找离散序列极值点的方法
Jul 10 Python
Python中调用其他程序的方式详解
Aug 06 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 Python
Python 如何实现数据库表结构同步
Sep 29 Python
python反爬虫方法的优缺点分析
Nov 25 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
python求解汉诺塔游戏
Jul 09 #Python
Django中Aggregation聚合的基本使用方法
Jul 09 #Python
Python  word实现读取及导出代码解析
Jul 09 #Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 #Python
实例讲解Python 迭代器与生成器
Jul 08 #Python
opencv 阈值分割的具体使用
Jul 08 #Python
如何表示python中的相对路径
Jul 08 #Python
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
在html页面中包含共享页面的方法
2008/10/24 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
jquery无缝图片轮播组件封装
2020/11/25 jQuery
了解JavaScript中的选择器
2019/05/24 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python数据结构之Array用法实例
2014/10/09 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
编辑个人求职信范文
2013/09/21 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
幼师个人总结范文
2015/02/28 职场文书
裁员通知
2015/04/25 职场文书
迎国庆主题班会
2015/08/17 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js