在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转换摩斯密码示例
Feb 16 Python
python 远程统计文件代码分享
May 14 Python
说一说Python logging
Apr 15 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
Python configparser模块操作代码实例
Jun 08 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
详解python中的lambda与sorted函数
Sep 04 Python
Python urlopen()参数代码示例解析
Dec 10 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
cache_lite试用
2007/02/14 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
firefox下input type="file"的size是多大
2011/10/24 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
Python中bisect的用法
2014/09/23 Python
Python读写zip压缩文件的方法
2018/08/29 Python
OpenCV 边缘检测
2019/07/10 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
纽约海:Sea New York
2018/11/04 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
一道SQL面试题
2012/12/31 面试题
经典的班主任推荐信
2013/10/28 职场文书
护理实习自我鉴定
2013/12/14 职场文书
六十岁生日答谢词
2014/01/10 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
工作失误检讨书范文
2015/01/26 职场文书
个人合作协议范本
2015/08/06 职场文书
2016年党建工作简报
2015/11/26 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书