測試模型
- 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()