主要是图片处理的几个函数
第一个get_files(file_dir, ratio): 函数,输入获取文件的路径(注意根据函数的写法,路径中包含不同类别的文件夹),验证集所占比例
# step1:返回的四个值,分别是训练集的图片路径数组,训练集图片所属类别的数组;验证集图片路径数组,验证集图片所属类别的数组 def get_files(file_dir, ratio): for file in os.listdir(file_dir + '/speed_detecter'): speed_detecter.append(file_dir + '/speed_detecter' + '/' + file) label_speed_detecter.append(0) for file in os.listdir(file_dir + '/non_speed_detecter'): non_speed_detecter.append(file_dir + '/non_speed_detecter' + '/' + file) label_non_speed_detecter.append(1) # step2:对生成的图片路径和标签List做打乱处理把cat和dog合起来组成一个list(img和lab) image_list = np.hstack((speed_detecter, non_speed_detecter)) label_list = np.hstack((label_speed_detecter, label_non_speed_detecter)) # 利用shuffle打乱顺序 temp = np.array([image_list, label_list]) temp = temp.transpose() np.random.shuffle(temp) # 从打乱的temp中再取出list(img和lab) # image_list = list(temp[:, 0]) # label_list = list(temp[:, 1]) # label_list = [int(i) for i in label_list] # return image_list, label_list # 将所有的img和lab转换成list all_image_list = list(temp[:, 0]) all_label_list = list(temp[:, 1]) # 将所得List分为两部分,一部分用来训练tra,一部分用来测试val # ratio是测试集的比例 n_sample = len(all_label_list) n_val = int(math.ceil(n_sample * ratio)) # 测试样本数 n_train = n_sample - n_val # 训练样本数 tra_images = all_image_list[0:n_train] tra_labels = all_label_list[0:n_train] tra_labels = [int(float(i)) for i in tra_labels] val_images = all_image_list[n_train:-1] val_labels = all_label_list[n_train:-1] val_labels = [int(float(i)) for i in val_labels] return tra_images, tra_labels, val_images, val_labels
调用函数中输入参数打印信息,输出结果如下:
tra_images
['E:\\CNN\\TestImage/speed_detecter/20170929112354600_28.jpg', 'E:\\CNN\\TestImage/speed_detecter/20170930070459340_8.jpg', 'E:\\CNN\\TestImage/speed_detecter/20170928124932890_10.jpg', 'E:\\CNN\\TestImage/speed_detecter/20170929094427000_10.jpg'