在keras中对单一输入图像进行预测并返回预测结果操作

作者:Kun Li 时间:2023-03-10 10:07:04 

模型经过训练测试之后,我们往往用一两张图对模型预测结果进行分析讨论,那么下面介绍在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))

原问题链接。

来源:https://blog.csdn.net/u012193416/article/details/79375832

标签:keras,图像,预测,结果
0
投稿

猜你喜欢

  • SQL中from_unixtime函数的使用方法实例

    2024-01-14 12:45:01
  • Go本地测试小技巧解耦任务拆解

    2023-08-29 14:09:26
  • 简单了解SQL常用删除语句原理区别

    2024-01-14 22:38:57
  • ASP中使用SQL语句教程

    2008-09-03 12:17:00
  • mysql 5.7.17 winx64解压版安装配置方法图文教程

    2024-01-22 07:47:16
  • 正则表达式语法速查

    2007-11-11 10:43:00
  • PHP实现图片批量打包下载功能

    2024-05-11 09:47:21
  • 什么是XML

    2008-09-05 17:21:00
  • python数值基础知识浅析

    2021-12-10 07:07:49
  • python中__slots__节约内存的具体做法

    2023-04-10 16:28:34
  • Php header()函数语法及使用代码

    2023-09-04 13:32:20
  • 利用python做数据拟合详情

    2023-04-22 15:32:17
  • Bootstrap modal使用及点击外部不消失的解决方法

    2024-04-10 13:56:45
  • python批量读取文件名并写入txt文件中

    2021-02-18 16:32:29
  • Python的dict字典结构操作方法学习笔记

    2022-10-27 10:56:21
  • Python实现Opencv cv2.Canny()边缘检测

    2022-12-01 13:26:37
  • PHP session会话操作技巧小结

    2023-11-16 23:58:20
  • Python实现socket非阻塞通讯功能示例

    2022-05-16 03:18:25
  • PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)

    2023-11-23 11:35:00
  • Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解

    2022-03-02 10:43:08
  • asp之家 网络编程 m.aspxhome.com