我正在尝试从掌纹做我的人检测项目。
有001、002、003、004、......、091、092形式的文件夹,每个文件夹有7个训练数据。我想把所有的数据一个一个地拿来训练它们。
示例文件路径:
'Dataset/TrainWithROI/001/001-Train1.JPG',
'Dataset/TrainWithROI/001/001-Train2.JPG',
'Dataset/TrainWithROI/001/001-Train3.JPG',
'Dataset/TrainWithROI/001/001-Train4.JPG',
'Dataset/TrainWithROI/001/001-Train5.JPG',
'Dataset/TrainWithROI/001/001-Train6.JPG',
'Dataset/TrainWithROI/001/001-Train7.JPG',
但是在我开始训练模型之前,我遇到了这样的错误。
def open_images(path):
image = load_img(path, color_mode = 'rgb')
image = np.array(image)/255.0
return image
def get_labels(paths):
label = []
for path in paths:
path = path.split('/')[-2]
label.append(labels.index(path))
return label
def data_gen(data_paths, batch_size=1):
img=[]
lab=[]
for i in range(0, len(data_paths), batch_size):
paths = data_paths[i:i+batch_size]
images = open_images(paths)
img.append(open_images(paths).reshape(224, 224, 3))
labels = get_labels(paths)
lab.append(get_labels(paths))
#yield images,np.array(labels)
return np.array(img) , np.array(lab)
模型:
X_train, y_train = data_gen(train_paths)
X_test, y_test = data_gen(test_paths)
错误:
TypeError: 预期的 str、bytes 或 os.PathLike 对象,而不是列表
回答1
您正在提供 open_images
函数的路径列表,但未对其进行编码以支持该路径。你可以修改这个函数来处理这个问题,试试这个代码:
def open_images(path):
images = []
for path in paths:
image = load_img(path, color_mode = 'rgb')
image = np.array(image)/255.0
images.append(image)
return np.array(images)
回答2
您将图像列表传递给您的函数 open_images
,但此函数仅用于打开一个图像,而不是列表。
试试这个:
def data_gen(data_paths, batch_size=1):
img=[]
lab=[]
for i in range(0, len(data_paths), batch_size):
paths = data_paths[i:i+batch_size]
for x in paths:
images = open_images(x)
img.append(open_images(x).reshape(224, 224, 3))
labels = get_labels(x)
lab.append(get_labels(x))