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

模型经过训练测试之后,我们往往用一两张图对模型预测结果进行分析讨论,那么下面介绍在keras中用已训练的模型经过测试的方法。

下面是以利用预训练的ResNet来展示预测的效果,选了一张狗的图片,是来自一个kaggle比赛的。

预测结果第一个是一种苏格兰品种的狗,我也不知道准不准 == 。

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中对单一输入图像进行预测并返回预测结果操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

以下是一个使用Tensorflow实现的单一物体位置预测程序的示例代码,该程序主要使用卷积神经网络(CNN)进行图像处理和位置预测: ```python import tensorflow as tf # 定义输入图像的大小和通道数 input_shape = (256, 256, 3) # 定义卷积神经网络模型 model = tf.keras.Sequential([ tf.keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=input_shape), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(128, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(128, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(256, (3, 3), activation='relu'), tf.keras.layers.Flatten(), tf.keras.layers.Dense(256, activation='relu'), tf.keras.layers.Dense(4) # 输出层,4个输出值分别表示物体的左上角和右下角坐标 ]) # 编译模型并设置损失函数和优化器 model.compile(optimizer='adam', loss='mse') # 训练模型 model.fit(train_images, train_labels, epochs=10, batch_size=32, validation_data=(val_images, val_labels)) # 使用模型进行位置预测 test_image = load_test_image() predicted_position = model.predict(test_image) print("Predicted position:", predicted_position) ``` 在上面的代码,卷积神经网络模型包含了多个卷积层和池化层,最后通过一个全连接层和输出层进行位置预测。损失函数使用均方误差(MSE),优化器使用Adam算法。训练完成后,可以使用模型对新的图像进行位置预测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值