Python制作并读取⼆分类数据集(猫狗⽰例)Python制作并读取⼆分类数据集(猫狗⽰例)
⼀、新建⽂件⽬录
1.新建⽂件⽬录datasets保存两个⼦⽬录(两个类别):
datasets
cats
cat01.jpg
dogs
dog01.jpg
⼆、导⼊所需的第三⽅库
import  os
import cv2
import numpy as np
import random
del_selection import train_test_split
from keras.utils import np_utils
三、读取并⽣成对应的标签
1.输⼊图⽚⽂件夹的路径,保存⽂件夹下所有的图⽚的路径进⼀个列表⾥⾯:
def get_files(input_dir):
file_list =[]
for(path, dir_name, file_names)in os.walk(input_dir):
# path: 顶层⽂件夹
# dir_name:(如果有)当前⽂件夹下的⽂件夹
# file_names: 包含当前⽂件夹下所有⽂件名的列表
for file_name in file_names:
if dswith('.jpg')or dswith('.png')or dswith('.bmp'):
# 完成的图⽚路径
full_img_path = os.path.join(path, file_name)
# 将图⽚路径添加进列表⾥⾯
file_list.append(full_img_path)
return file_list
2.读取图⽚并调整图⽚的⼤⼩,⽣成对应的label列表:
def read_img_label(file_list, label, size):
imges =[]
labels =[]
for img_path in file_list:
img = cv2.imread(img_path)
# 调整图像⼤⼩
img = size(img,(size, size))
imges.append(img)
labels.append(label)
return imges, labels
3.读取含有两个类别的数据集⽂件夹,设置标签值, 合并图⽚列表和标签列表:
def read_datasets(data_dir, class_1, class_2, size):
# data_dir: 数据集⽬录名
# class_1: 类别1⽬录名
# class-2:类别2⽬录名
label_1 =0
label_2 =1
class_dir_1 = os.path.join(data_dir, class_1)
class_dir_2 = os.path.join(data_dir, class_2)
file_path_1 = get_files(class_dir_1)
file_path_2 = get_files(class_dir_2)
imges_1, labels_1 = read_img_label(file_path_1, label_1, size)
imges_2, labels_2 = read_img_label(file_path_2, label_2, size)
img_array = np.array(imges_1 + imges_2)
label_array = np.array(labels_1 + labels_2)
return img_array, label_array
四、划分成训练集和测试集
def load_data(data_dir, class_1, class_2, size):
imges, labels = read_datasets(data_dir, class_1, class_2, size)
imges = shape(imges.shape[0], size, size,3)
x_train, x_test, y_train, y_test = train_test_split(imges, labels, test_size=0.3, random_state=random.randint(0,100)) return(x_train, y_train),(x_test, y_test)
读取数据集并进⾏归⼀、独热转化
(x_train, y_train),(x_test, y_test)= load_data('./datasets','cats','dogs',416)
python怎么读取桌面上的文件
x_train = x_train.astype('float32')/255
x_test = x_test.astype('float32')/255
y_train = _categorical(y_train,2)
y_test = _categorical(y_test,2)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。