村建站属于哪个部门,合肥快速做网站,应用市场下载手机版,装修设计费收费标准2022目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明
本篇文章是对上篇文章猫狗大战训练的模型进行测试。… 目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明
本篇文章是对上篇文章猫狗大战训练的模型进行测试。首先是将训练好的模型进行重新加载然后采用opencv对图片进行加载最后将加载好的图片输送给模型并且显示结果。
2. IKUN模型的CNN模型测试
2.1 导入相关库
在这里导入需要的第三方库如cv2如果没有则需要自行下载自行下载时候一般建议镜像源这样下载的快。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np
# 导入tensorflow
import tensorflow as tf
# 导入keras
from tensorflow import keras2.2 加载模型
把训练好的模型也加载进来这里不用加载数据因为数据是自制的。
# 加载my_ikun.h5文件重新生成模型对象
recons_model keras.models.load_model(my_ikun.h5)2.3 设置保存图片的路径
将数据集的某个数据以图片的形式进行保存便于测试的可视化这里在之前已经分了测试集因此设置图片路径即可。 在这里设置图片存储的位置便于将图片进行存储。
# 创建图片保存路径
test_file_path os.path.join(sys.path[0], imgs, test1, 4.jpg)上述代码是将test文件夹里面的4.jpg进行测试如果想测试其它的只需改为x.jpg即可。
2.4 加载图片
采用cv2对图片进行加载用opencv库也就是cv2读取图片的时候图片是三通道的而训练的模型是三通道的因此不只用取单通道而是三通道这里和之前的灰度图不同。
# 加载本地test.png图像
image cv2.imread(test_file_path)
# 复制图片
test_img image.copy()
# 将图片大小转换成(150,150)
test_img cv2.resize(test_img, (150,150))2.5 图片预处理
对图片进行预处理即进行归一化处理和改变形状处理这是为了便于将图片输入给训练好的模型进行预测。因此在这里将形状改变为1501503的前面的1是样本数所以是(1,150,150,3)。
# 预处理: 归一化 reshape
new_test_img (test_img/255.0).reshape(1, 150,150, 3)2.6 对图片进行预测
将图片输入给训练好我的模型并且进行预测。 因为是二分类所以预测的结果是1个概率值所以需要进行处理 大于0.5的是坤坤小于0.5的是鸡。
# 预测
y_pre_pro recons_model.predict(new_test_img, verbose1)
# 哪一类
class_id np.argmax(y_pre_pro, axis1)[0]
print(test.png的预测概率, y_pre_pro)
print(test.png的预测概率, y_pre_pro[0, class_id])
if y_pre_pro[0, class_id] 0.5:print(png的所属类别, 坤哥)
else:print(png的所属类别, 鸡哥)2.7 显示图片
对预测的图片进行显示把预测的数字显示在图片上。 下面5行代码分别是创建窗口设定窗口大小显示图片停留图片清除内存。
# # 显示
cv2.namedWindow(img, 0)
cv2.resizeWindow(img, 500, 500) # 自己设定窗口图片的大小
cv2.imshow(img, image)
cv2.waitKey()
cv2.destroyAllWindows()3. 完整代码和显示结果
以下是完整的代码和图片显示结果。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np
# 导入tensorflow
import tensorflow as tf
# 导入keras
from tensorflow import keras# 加载my_ikun.h5文件重新生成模型对象
recons_model keras.models.load_model(my_ikun.h5)
# 创建图片保存路径
test_file_path os.path.join(sys.path[0], imgs, test1, 4.jpg)
# 加载本地test.png图像
image cv2.imread(test_file_path)
# 复制图片
test_img image.copy()
# 将图片大小转换成(150,150)
test_img cv2.resize(test_img, (150,150))
# 预处理: 归一化 reshape
new_test_img (test_img/255.0).reshape(1, 150,150, 3)
# 预测
y_pre_pro recons_model.predict(new_test_img, verbose1)
# 哪一类
class_id np.argmax(y_pre_pro, axis1)[0]
print(test.png的预测概率, y_pre_pro)
print(test.png的预测概率, y_pre_pro[0, class_id])
if y_pre_pro[0, class_id] 0.5:print(png的所属类别, 坤哥)
else:print(png的所属类别, 鸡哥)
# # 显示
cv2.namedWindow(img, 0)
cv2.resizeWindow(img, 500, 500) # 自己设定窗口图片的大小
cv2.imshow(img, image)
cv2.waitKey()
cv2.destroyAllWindows()
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
1/1 [] - 0s 315ms/step
test.png的预测概率 [[1.]]
test.png的预测概率 1.0
png的所属类别 坤哥4. 多张图片进行测试的完整代码以及结果
为了测试更多的图片引入循环进行多次测试效果更好。
from tensorflow import keras
import skimage, os, sys, cv2
from PIL import ImageFont, Image, ImageDraw # PIL就是pillow包(保存图像)
import numpy as np# 加载my_ikun.h5文件重新生成模型对象
recons_model keras.models.load_model(my_ikun.h5)prepicture int(input(input the number of test picture :))
for i in range(prepicture):path1 input(input the test picture path:)# 创建图片保存路径test_file_path os.path.join(imgs, test1, path1)# 加载本地test.png图像image cv2.imread(test_file_path)# 复制图片test_img image.copy()# 将图片大小转换成(150,150)test_img cv2.resize(test_img, (150, 150))# 预处理: 归一化 reshapenew_test_img (test_img / 255.0).reshape(1, 150, 150, 3)# 预测y_pre_pro recons_model.predict(new_test_img, verbose1)# 哪一类数字class_id np.argmax(y_pre_pro, axis1)[0]print(test.png的预测概率, y_pre_pro)print(test.png的预测概率, y_pre_pro[0, class_id])if y_pre_pro[0, class_id] 0.5:print(png的所属类别, 坤哥)else:print(png的所属类别, 鸡哥)# # 显示cv2.namedWindow(img, 0)cv2.resizeWindow(img, 500, 500) # 自己设定窗口图片的大小cv2.imshow(img, image)cv2.waitKey()cv2.destroyAllWindows()To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
input the number of test picture :2
input the test picture path:3.jpg
1/1 [] - 0s 170ms/step
test.png的预测概率 [[0.99739295]]
test.png的预测概率 0.99739295
png的所属类别 坤哥input the test picture path:10.jpg
1/1 [] - 0s 163ms/step
test.png的预测概率 [[0.09064844]]
test.png的预测概率 0.09064844
png的所属类别 鸡哥