Мне нужно обучить модель с использованием NIST SD 19. Я скачал набор данных с их веб-сайта и перестроил его так, чтобы у каждого класса был свой собственный каталог с его изображениями внутри.Я не разбил его на поезд и тестовые наборы.
Мне нужно, чтобы они читались или к ним обращались быстрее, например, как TF 2.0 загружает и читает их, если это возможно.
Я сделал классический подход: я перебрал все подкаталоги, имя которыхявляется его классом, затем проходит через каждый файл изображения, считывает его как изображение, добавляет его в список изображений, а его класс (подкаталог, из которого он поступает) в список меток.Затем я создал словарь для перевода имен подкаталогов в целочисленные значения, чтобы модель могла классифицировать его как таковой.
def mapImagesToLabels(dir_dataset):
data_root = pathlib.Path(dir_dataset)
all_image_paths = list(data_root.glob('*/*'))
all_image_paths = [str(path) for path in all_image_paths]
label_names = sorted(item.name for item in data_root.glob('*/') if item.is_dir())
label_to_index = dict((name, index) for index, name in enumerate(label_names))
# print(label_to_index)
all_image_labels = [label_to_index[pathlib.Path(path).parent.name] for path in all_image_paths]
all_images = [cv2.imread(image_path) for image_path in all_image_paths]
print(all_images.shape)
print(all_images[0].shape)
return all_images, all_image_labels
Этот подход был бы приемлем, если бы он не зависал на терминале и медленнокомпьютер при запуске.Я также загружал бы ее каждый раз, когда я повторно тестировал модель, так что я предполагаю, что есть ограничение по времени.