Удобная настройка 150 ГБ данных изображения

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

Наборы данных TensorFlow — это такой инструмент обработки наборов данных. С его помощью вы можете удобно получить доступ к разнообразным наборам данных из многих категорий. В большинстве случаев вы можете загрузить данные напрямую из TensorFlow.

Однако ImageNet является исключением; требует ручной настройки. Несмотря на то, что похоже есть некоторые инструкции по достижению этого, они несколько расплывчаты. В результате у меня ушло некоторое время на подготовку набора данных, но в итоге у меня получился лаконичный скрипт. Далее я расскажу вам, как поэкспериментировать с набором данных ImageNet.

Загрузка ImageNet

Прежде чем приступить к какой-либо подготовке, нам нужно получить набор данных. Для этого перейдите на страницу регистрации и создайте учетную запись. После того, как вы сделали это и подали заявку на использование набора данных ImageNet, перейдите на страницу загрузки. В разделе ImageNet Large-scale Visual Recognition Challenge (ILSVRC) выберите версию 2012 года. Это приведет вас на новую страницу:

На этой странице нам нужно загрузить файлы «Обучающие изображения (задача 1 и 2)» и «Проверочные изображения (все задачи)». Поскольку они в сумме составляют 150 ГБ, это займет некоторое время. Если у вас есть доступ к Интернету, предоставляемому университетом, я рекомендую использовать их сеть. Часто они имеют отличную скорость загрузки.

После этого у вас есть два файла. Первый, ILSVRC2012_img_train.tar, содержит тренировочные изображения и их метки. Второй, ILSVRC2012_img_val.tar, содержит проверочные изображения и их метки. Теперь, имея под рукой эти архивы, мы можем подготовить набор данных для фактического использования.

Подготовка набора данных ImageNet

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

Чтобы установить наборы данных TensorFlow, запустите

pip установить наборы данных tensorflow

После необходимых установок и импорта определяем путь, по которому находятся файлы ILSVRC2012_img_train.tar и ILSVRC2012_img_val.tar:

Затем мы устанавливаем некоторые параметры конфигурации. Ключевым здесь является параметр manual_dir. Это гарантирует, что наборы данных TensorFlow будут искать загруженные файлы в указанном нами месте. extracted_dir — это временный каталог, используемый во время подготовки набора данных. Вы можете удалить его позже:

Наконец, мы реализуем фактический процесс строительства. Подготовка выполняется с помощью объекта DatasetBuilder, который «знает», как настроить конкретный набор данных. Например, чтобы получить построитель для ImageNet, мы создаем его экземпляр, передавая «imagenet2012».

Затем мы вызываем фактический метод подготовки, download_and_prepare(), для этого объекта. Единственное, что мы здесь делаем, это передаем наш объект конфигурации:

Это все, что нам нужно сделать на стороне Python.

Запуск скрипта

Для запуска скрипта набираем

python ‹имя_скрипта›.py

Это создает набор данных ImageNet напрямую по умолчанию, ~/tensorflow_datasets/. Чтобы изменить это, мы можем вызвать скрипт с

TFDS_DATA_DIR=‹пользовательский_путь› python ‹имя_сценария›.py

Мы добавляем TFDS_DATA_DIR, чтобы установить переменную среды, отвечающую за расположение сборки, в каталог по нашему выбору. Это в основном полезно в вычислительных кластерах, где несколько рабочих получают доступ к одним и тем же наборам данных.

Краткое содержание

Мы работали над настройкой набора данных ImageNet. К сожалению, мы не можем настроить тестовый набор данных так же удобно. Кроме того, метки не предусмотрены, чтобы предотвратить использование недобросовестных методов. Таким образом, единственный способ оценить свою модель — загрузить файл с сопоставлением меток, предсказанным изображением, на серверы оценивания. Чтобы получить тестовые изображения, загрузите тестовый архив с той же страницы загрузки, что и раньше. Затем извлеките его в каталог по вашему выбору. После этого любая дальнейшая обработка следует типичному конвейеру данных. Однако это выходит за рамки данной статьи. Чтобы пойти дальше, посмотрите на функциональность Keras для достижения этого или получите представление о работе с наборами данных в этом посте.