Используйте изображения в s3 с SageMaker без файлов .lst - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать (как я думал, был) простой конвейер классификации изображений между s3 и SageMaker.

Изображения хранятся в корзине s3 с метками классов в именах файлов, например,

My-s3-ковшового реж

cat-1.jpg
dog-1.jpg
cat-2.jpg
..

Я пытался использовать несколько связанных примеров .py скриптов, но большинство, похоже, загружают наборы данных уже в формате .rec или содержат специальные файлы манифеста или аннотации, которых у меня нет.

Все, что мне нужно, это передать изображения с s3 алгоритму классификации изображений SageMaker, который находится в том же регионе, учетной записи IAM и т. Д. Я полагаю, это означает, что мне нужен файл .lst

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

Как я могу автоматически сгенерировать файл .lst (или иным образом отправить изображения / классы для обучения)?

То, что я прочитал, показалось, что im2rec.py было решением, но я не понимаю, как. Пример, с которым я сейчас работаю:

Image-classification-fulltraining-highlevel.ipynb

но, похоже, данные загружаются как .rec,

download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec')
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec')

, который просто пропускает работу с файлами .jpeg. Я нашел другой, который преобразует их в .rec, но опять-таки он имеет .lst уже как .json и просто преобразует его.

В основном я работал с ноутбуком Python Jupyter в консоли AWS (в моем браузере), но я также пытался использовать их графический интерфейс.

Как можно просто и автоматически сгенерировать .lst или иным образом получить данные / информацию о классе в SageMaker, не создавая файл .lst вручную?

Обновление

Похоже, что im2py не может быть запущен против s3. Вам нужно будет полностью загрузить все данные из всех корзин s3 в хранилище ноутбука ...

Обратите внимание, что [...] im2rec.py работает локально, поэтому не может принимать входные данные из корзины S3. Сформировать список файл, вам нужно скачать данные, а затем использовать инструмент im2rec. - Команда AWS SageMaker

1 Ответ

2 голосов
/ 08 июня 2019

Существует 3 варианта предоставления аннотированных данных для алгоритма классификации изображений: (1) упаковка меток в файлах recordIO, (2) хранение меток в файле манифеста JSON (опция «расширенный манифест»), (3) хранение меток в файл списка. Все варианты описаны здесь: https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html.

Параметр «Augmented Manifest» и «.lst files» выполняется быстро, например, для этого нужно просто создать файл аннотации с обычно быстрым циклом for. RecordIO требует, чтобы вы использовали im2rec.py инструмент, что немного больше работы.

Использование .lst файлов - это еще один вариант , который достаточно прост: вам просто нужно создать их аннотацию с быстрым циклом for, например:

# assuming train_index, train_class, train_pics store the pic index, class and path

with open('train.lst', 'a') as file:
    for index, cl, pic in zip(train_index, train_class, train_pics):
        file.write(str(index) + '\t' + str(cl) + '\t' + pic + '\n')
...