测试模型
- 1.导入必要的库
- 2.加载测试数据集
- 3.假设CSV文件中的图像文件名是完整的路径
- 4.随机选择一张图片进行展示
- 5.加载图像
- 6.使用模型进行预测
- 7.设置模型的预测结果
- 8.计算准确率
- 9.指定test文件夹路径
- 10.读取名为image_path的图片
- 11.加载图像
- 12.检查图像是否为空
训练的模型是上一篇博客发布的内容,这篇博客我们用上一篇博客发的内容测试一下模型。
1.导入必要的库
pandas as pd
: Pandas是一个强大的数据分析和处理库,它提供了数据结构(如DataFrame)和工具,用于数据操作和分析。
matplotlib.pyplot as plt
: Matplotlib是一个绘图库,pyplot是其中的一个模块,它提供了一个类似于MATLAB的绘图框架。
cv2
: 这是OpenCV库的别名,它是一个强大的计算机视觉库,用于图像和视频处理。
random
: 这是Python的标准库,它提供了生成随机数的函数。
os
: 这是Python的标准库,它提供了与操作系统交互的功能,比如文件和目录操作。
numpy as np
: NumPy是一个用于科学计算的库,它提供了高效的数组处理能力,对于图像处理等任务非常有用。
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import random
import os
import numpy as np
from sklearn.metrics import accuracy_score, precision_recall_fscore_support
2.加载测试数据集
使用pandas读取CSV文件
test_labels_df = pd.read_csv('test_labels.csv')
3.假设CSV文件中的图像文件名是完整的路径
从CSV中提取特征和标签
image='D:/rgzn/face/DATASET/99'
image_paths = test_labels_df['image'].values # 假设'image'列包含了图像文件的路径
true_labels = test_labels_df['label'].values # 假设'label'列包含了对应的标签
4.随机选择一张图片进行展示
random_index = random.randint(0, len(image_paths) - 1)
image_path = image_paths[random_index]
label = true_labels[random_index]
random_index = random.randint(0, len(image_paths) - 1):
random.randint(0, len(image_paths) - 1)
:这个函数调用用于生成一个随机整数,其范围是从0到image_paths列表的长度减1。
random_index
:这个变量存储了随机生成的索引值。
image_path = image_paths[random_index]:
image_paths[random_index]
:这个索引操作符用于根据random_index变量中存储的随机索引值,从image_paths列表中获取对应的图像路径。
image_path
:这个变量存储了随机选择的图像路径。
label = true_labels[random_index]:
true_labels[random_index]
:这个索引操作符用于根据random_index变量中存储的随机索引值,从true_labels列表中获取对应的标签。
label
:这个变量存储了与随机选择的图像路径对应的标签。
5.加载图像
image = cv2.imread(image_path)
cv2.imread(image_path)
:这个函数调用用于读取图像文件。它返回一个NumPy数组,其中包含了图像的像素数据。
image
:这个变量存储了读取到的图像数据,它是一个NumPy数组。
6.使用模型进行预测
test_predictions = model.predict(X_test)
model.predict(X_test)
:这个函数调用用于使用模型对测试数据集X_test进行预测。
test_predictions
:这个变量存储了模型对测试数据集的预测结果。
7.设置模型的预测结果
test_predictions = np.zeros_like(y_test)
np.zeros_like(y_test)
:这个函数调用用于创建一个与y_test形状相同的数组,并将其所有元素初始化为0。
test_predictions
:这个变量存储了转换后的预测结果,其中每个元素都是0。
8.计算准确率
accuracy = accuracy_score(y_test, test_predictions_binary)
print(f'Accuracy: {accuracy:.4f}')
9.指定test文件夹路径
test_folder = 'D:/rgzn/face/DATASET/test'
10.读取名为image_path的图片
# image_path = 'image_path.jpg' # 假设要读取的图片文件名为image_path.jpg
image_full_path = os.path.join(test_folder, image_path)
11.加载图像
image = cv2.imread(image_full_path)
12.检查图像是否为空
if image is None:print("Error: Failed to load image.")
else:# 显示图像plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))plt.title(f'Label: {label} Image: {image_path}')plt.axis('off')plt.show()