在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 相关文章推荐
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python验证码识别的方法
Jul 10 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python中扩展包的安装方法详解
Jun 14 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
Django学习教程之静态文件的调用详解
May 08 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 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
PHP缓存技术的多种方法小结
2012/08/14 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php获取文件大小的方法
2014/02/26 PHP
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
js实现简单计算器
2015/11/22 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
javascript实现摄像头拍照预览
2019/09/30 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Python OS模块常用函数说明
2015/05/23 Python
Python yield与实现方法代码分析
2018/02/06 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
python输出数学符号实例
2020/05/11 Python
python 实现简易的记事本
2020/11/30 Python
安全生产先进个人材料
2014/02/06 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
超级礼物观后感
2015/06/15 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
信息技术研修心得体会
2016/01/08 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python