Привет всем, я энтузиаст Data Science, стремящийся учиться всеми средствами, всеми методами, используемыми для получения информации из текущих данных в любом секторе и получения качественных результатов для своевременного улучшения общества.

Я начал изучать Pytorch неделю назад и счел важным написание этого блога для людей, испытывающих трудности с загрузкой пользовательских данных (изображений) в предварительно обученную нейронную сеть. Этот пост в блоге решает проблему, используя API DataLoader от Pytorch в четыре основных шага.

1. Настройка каталога

- Сохраняйте изображения в две отдельные папки: одну для обучения (../traindata), а другую для тестирования (../validationdata).

- В каждом каталоге создайте дополнительные папки, каждая из которых соответствует названию класса изображения. Например, если у вас есть 3 класса, автомобили, самолеты и лодки, у вас должно быть 3 папки, названные в честь этих классов, как в родительской папке для обучения, так и для проверки.

- Заполните каждую папку класса соответствующей копией изображения.

Выше приведена только структура каталогов, которую вы должны получить, с автомобилями, самолетами и лодками в качестве классов обучения/проверки.

2. Импорт необходимых библиотек

Здесь необходимы две основные библиотеки:

  • «DataLoaders» из «torch.utils.data»
  • «преобразования» и «наборы данных» из «torchVision

3. Преобразование примеров классов данных с помощью преобразований

Преобразования класса имеют конструктор Compose, который просто принимает ряд параметров, описывающих типы преобразований, которые вы хотели бы иметь на своих изображениях. Такими преобразованиями могут быть повороты, переводы, обрезка по центру, нормализация изображений и, конечно же, наиболее важной будет «transforms.ToTensor ()», которая является фундаментальной функцией, которую должен иметь каждый набор данных, учитывая, что Pytorch принимает данные только в тензорах. Ниже приведен пример преобразования для обучения наших классов с предварительно обученной моделью в pytorch.

4. Создание набора данных с примененными преобразованиями

Это довольно прямолинейно. Просто создайте экземпляр набора данных и вызовите его метод ImageFolder с указанными выше преобразованиями в качестве второго параметра, из которых первый должен быть:

- Путь к каталогу, содержащему данные

train_data = набор данных.ImageFolder («../поезд», train_transform = преобразование)

5. Создание каждого загрузчика данных из соответствующего набора данных

На этом последнем шаге создайте экземпляр Data Loader и в зависимости от того, как вы хотите, чтобы ваши данные загружались для обучения и тестирования, определите следующие параметры:

- Вышеуказанные созданные наборы данных, конечно (как для обучения, так и для проверки)

- Размер партии: указывает количество образцов изображения, которые необходимо собрать за одну итерацию.

- Shuffle: логическое значение, указывающее, где данные должны быть перетасованы или объединены. Это обычно устанавливается в целях обучения, чтобы улучшить показатели классификации:

train_loader = torch.utils.data.DataLoader (train_data, batch_size = 30, перемешивание = True)

Приведенный выше код перемешивает набор данных и собирает по 30 изображений за раз для обучения.

validation_Loader очень похож, только у него есть собственный набор данных, а для shuffle установлено значение false:

validation_loader = torch.utils.data.DataLoader (validation_data, batch_size = 30, перемешивание = False)

Тщательное применение приведенного выше алгоритма должно дать аналогичный результат ниже:

NB: Практически один и тот же процесс применялся как к тестированию, так и к обучению с небольшими изменениями в преобразованиях. Это вполне логично в том смысле, что мы хотим, чтобы наша модель производила метрики движения, сохраняя при этом обобщенный формат, чтобы избежать переобучения. Последнее лучше всего делать в тренировочном процессе.

Тем не менее, теперь мы готовы обучить и проверить наши новые изображения, сделанные на заказ, в предварительно обученную нейронную сеть с Pytorch. Следите за следующей записью в блоге о переносе обучения с Pytorch.

Удачи !