Python 猫狗识别:图像数据预处理和训练测试集划分
Python 猫狗识别:图像数据预处理和训练测试集划分
本文将介绍如何使用 Python 进行猫狗图像识别,并重点讲解数据预处理和训练测试集划分步骤。
代码示例:
import os
import cv2
import numpy as np
from sklearn.model_selection import train_test_split
# 设置图片参数
img_width, img_height = 150, 150
input_shape = (img_width, img_height, 3)
# 数据准备
def prepare_data():
data = []
labels = []
cat_path = 'C:/Users/胖虎/Desktop/catsdogs/test/Cat'
dog_path = 'C:/Users/胖虎/Desktop/catsdogs/test/Dog'
# 加载猫的图片
for img in os.listdir(cat_path):
img_array = cv2.imread(os.path.join(cat_path, img))
img_array = cv2.resize(img_array, (img_width, img_height))
data.append(img_array)
labels.append(0) # 猫的标签为0
# 加载狗的图片
for img in os.listdir(dog_path):
img_array = cv2.imread(os.path.join(dog_path, img))
img_array = cv2.resize(img_array, (img_width, img_height))
data.append(img_array)
labels.append(1) # 狗的标签为1
# 数据归一化
data = np.array(data) / 255.0
labels = np.array(labels)
# 数据划分为训练集和测试集
return train_test_split(data, labels, test_size=0.2, random_state=42)
# data 和 labels 里面填什么内容:data 和 labels 里面填的是图片数据和对应的标签。data 是一个列表,每个元素是一张图片的像素值数组,labels 是一个列表,每个元素是对应图片的标签(0 表示猫,1 表示狗)。
代码解析:
- 导入库: 首先导入必要的库,包括 os 用于文件操作、cv2 用于图像处理、numpy 用于数值计算和 sklearn 用于训练测试集划分。
- 设置图片参数: 定义图像宽度、高度和通道数,并用
input_shape表示图像的形状。 - 数据准备函数
prepare_data():- 创建两个空列表
data和labels,分别用于存储图片数据和标签。 - 指定猫和狗图片所在目录。
- 循环读取目录中的每个图片文件:
- 使用
cv2.imread()加载图片。 - 使用
cv2.resize()将图片调整为目标尺寸。 - 将图片数据添加到
data列表,并将对应的标签(0 表示猫,1 表示狗)添加到labels列表。
- 使用
- 使用
np.array()将数据转换成 NumPy 数组,并进行数据归一化。 - 使用
train_test_split()函数将数据划分为训练集和测试集,测试集占总数据的 20%,并设置随机种子random_state=42保证每次划分结果一致。
- 创建两个空列表
- 返回值: 该函数返回训练集数据、训练集标签、测试集数据和测试集标签。
注意: 此代码仅展示数据预处理和训练测试集划分部分,实际猫狗识别需要使用深度学习模型进行训练。
相关资源:
原文地址: https://www.cveoy.top/t/topic/o9uv 著作权归作者所有。请勿转载和采集!