图像识别实战(一)----如何根据已有图片生成测试和训练信息并保存到文件
提前知道
本实验为手势识别,具体图片可以参考下图,经过训练我们得知,标签为5.
总体目标
Dataset文件夹下面有0-9十个文件,其中有几十张代表文件夹数值的手势图片。
我们的目标便是将Dataset文件夹下面的图片进行训练,最后得出模型进行预测。
本次目标
将Dataset下面的所有图片的路径及其标签保存到两个文件train.list&test.list中,便于模型训练时调用。
1、导入库
import os
import time
import random
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import paddle
import paddle.fluid as fluid
import paddle.fluid.layers as layers
from multiprocessing import cpu_count
from paddle.fluid.dygraph import Pool2D,Conv2D
from paddle.fluid.dygraph import Linear
导入库的时候可以导入多余的库,所以可以放心导入。
2、生成保存信息的文件
data_path = '/home/aistudio/data/data23668/Dataset'
#每个人的数据都可能保存在不同的路径,所以可以按需修改
character_folders = os.listdir(data_path)
#查询data_path下面的所有文件,本次程序中是0-9是个文件夹
if os.path.exists('./train_data.list'):
os.remove('./train_data.list')
if(os.path.exists('./test_data.list')):
os.remove('./test_data.list')
意义:查询我们需要生成用来保存信息的文件是否已经存在,如果已经存在则删除(后面我们会自行创建),如果不存在则不进行其他任何操作。
目的:为了防止已经存在目标文件,且文件中有数据,造成后续程序运行出错
3、保存图片路径和标签信息
for character_folder in character_folders:
with open('./train_data.list','a') as f_train:
with open('./test_data.list','a') as f_test:
if character_folder = 'DS.Store':
#在解压文件时会产生一些垃圾文件,遇见不处理就行
continue
character_imgs = os.listdir(os.path.join(data_path,character_folder)
count = 0#用来计数,划分测试和训练集
for img in character_imgs:
if count%10 == 0:
f_test.write(os.path.join(data_path,character_folder,img)+
'\t'+character_folder+'\n')
else :
f_train.write(os.path.join(data_path,character_folder,img)+
'\t'+character_folder+'\n')
count+=1
print('文件已经从创建完成!')
with open(’./train_data.list’,‘a’) as f_train:
‘a’,有不存在则创建的含义,和第二步对应。如果想具体了解的话可以点击’a’进行进一步学习。
4、数据提供器
train_reader = paddle.batch(reader = paddle.reader.shuffle(reader = data_reader('./train_data.list'),buf_size = 256),batch_size = 32)
test_reader = paddle.batch(reader = data_reader('./test_data.list'),batch_size = 32)
buf_size-------设置缓冲区大小
batch_size—一次训练所选取的样本数
那么
reader = data_reader('./train_data.list')
代表什么呢?
reader是一种迭代器,每次返回一条数据,本次实验为每次放回一张图片的地址及其对应的标签,however reader需要用户我们自己定义。
So, reader需要怎么定义呢?
请欣赏"图像识别实战(二)"!!!!!!博主会努力更新的,所以也请不要吝啬你们的点赞!!!
如果想了解图像识别实战的全过程,请务必点击博主名字,进入主页查看全部。
对了,老子爱你们!