在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与shell的3种交互方式介绍
Apr 11 Python
Python2.x中文乱码问题解决方法
Jun 02 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
python 排序算法总结及实例详解
Sep 28 Python
python入门教程之识别验证码
Mar 04 Python
Python3标准库总结
Feb 19 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
python 生成正态分布数据,并绘图和解析
Dec 21 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设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
JS编程小常识很有用
2012/11/26 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
python实现简单点对点(p2p)聊天
2017/09/13 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python绘制汉诺塔
2021/03/01 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
医学护理毕业生自荐信
2013/11/07 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
中学教师教学工作总结
2015/08/13 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript