在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中使用语句导入模块或包的机制研究
Mar 30 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Python创建xml文件示例
Mar 22 Python
Python切片操作实例分析
Mar 16 Python
Python解析并读取PDF文件内容的方法
May 08 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
详解用python写一个抽奖程序
May 10 Python
Python发展史及网络爬虫
Jun 19 Python
简单了解python反射机制的一些知识
Jul 13 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
Python实现钉钉订阅消息功能
Jan 14 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
php后门URL的防范
2013/11/12 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
vue组件间通信解析
2017/03/01 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
pip命令无法使用的解决方法
2018/06/12 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
Why we need EJB
2016/10/20 面试题
党员批评与自我批评总结
2014/10/15 职场文书
员工工作能力评语
2014/12/31 职场文书
导游词开场白
2015/01/31 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
python实现层次聚类的方法
2021/11/01 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server