在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、Javascript中的闭包比较
Feb 04 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python设计模式之代理模式简单示例
Jan 09 Python
Pycharm更换python解释器的方法
Oct 29 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
python3多线程知识点总结
Sep 26 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
Python如何绘制日历图和热力图
Aug 07 Python
python库sklearn常用操作
Aug 23 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
Python切片知识解析
2016/03/06 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python怎么判断模块安装完成
2020/06/19 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
我未来的职业规划范文
2014/01/11 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
质量安全标语
2014/06/07 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
休假证明书
2015/06/24 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android