Я обучаю модель распознавания лиц, поэтому для Triplet Loss я должен сгенерировать пакет таким образом, чтобы он содержал фиксированное количество изображений с каждой метки. Например, Я говорю, что берет 8 изображений из 3 случайных меток каждый раз, когда он генерирует пакет для обучения, как предлагается в этом Проблема Github .
В моей папке набора данных У меня есть подпапка, которая переименована в ярлык и содержит изображения этой папки.
В данной проблеме представлено решение,
import numpy as np
import cv2
num_labels = len(path_list)
num_classes_per_batch = 3
num_images_per_class = 8
image_dirs = ["/content/drive/My Drive/smalld_processed/train/{:d}".format(i) for i in
range(num_labels)]
## Create the list of datasets creating filenames
#datasets = [tf.data.Dataset.list_files(f"{image_dir}/*.jpg" for image_dir in image_dirs)]
datasets = [tf.data.Dataset.list_files(f"{image_dir}/*.jpg") for image_dir in image_dirs]
adk = ["{}/*.jpg".format(image_dir) for image_dir in image_dirs]
print(adk)
def generator():
while True:
# Sample the labels that will compose the batch
labels = np.random.choice(range(num_labels),
num_classes_per_batch,
replace=False)
for label in labels:
for _ in range(num_images_per_class):
yield label
choice_dataset = tf.data.Dataset.from_generator(generator, tf.int64)
dataset = tf.data.experimental.choose_from_datasets(datasets, choice_dataset)
## Now you read the image content
def load_image(filename):
image = cv2.imread(filename,1)
image = dataset.map(image, num_parallel_calls=tf.data.experimental.AUTOTUNE)
image = image[...,::-1]
label = int(os.path.split(os.path.dirname(filename))[1])
image=dataset1.append()
label=dataset2.append
return image, label
dataset = dataset.map(load_image, num_parallel_calls=tf.data.experimental.AUTOTUNE)
batch_size = num_classes_per_batch * num_images_per_class
dataset = dataset.batch(batch_size)
dataset = dataset.prefetch(None)
С этим я не может загружать изображения, и он показывает мне эту ошибку.
SystemError: <built-in function imread> returned NULL without setting an error
Не могли бы вы помочь мне исправить ошибку или любое другое предложение о том, как загружать изображения . Заранее спасибо !!