Определяемое пользователем преобразование в CNTK

Постановка задачи

  • У меня есть набор данных с N изображениями.

  • Определенная сеть (например, Alexnet) должна быть обучена с нуля на этом наборе данных.

  • Для каждого изображения должны быть созданы 10 дополненные версии. Эти дополнения включают изменение размера, обрезку и отражение. Например, размер изображения должен быть изменен с минимальным размером 256 пикселей, а затем необходимо случайным образом обрезать его 224 x 224. Затем его нужно перевернуть. 5 такие случайные урожаи должны быть взяты, а также должны быть подготовлены их перевернутые версии.

  • Эти дополненные версии должны быть отправлены в сеть для обучения вместо исходного изображения.

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

    1. The reason is that we would not ideally like multiple augmented versions of the same image going into the network for training simultaneously.

Контекст

  1. Это не случайное требование функции. Есть некоторые документы, такие как OverFeat, в которых упоминаются такие дополнения. Более того, такое случайное обучение может быть очень хорошей идеей для улучшения обучения сети.

Мое понимание

В меру своих поисков я не смог найти внутри CNTK ни одного фреймворка, который мог бы это сделать.

Вопросы

  1. Можно ли добиться в CNTK?

person Ujjwal    schedule 23.03.2017    source источник


Ответы (1)


Пожалуйста, взгляните на учебник CNTK 201:

https://github.com/Microsoft/CNTK/blob/penhe/reasonet_tutorial/Tutorials/CNTK_201B_CIFAR-10_ImageHandsOn.ipynb

Средство чтения изображений имеет встроенные преобразования, отвечающие многим вашим требованиям. К сожалению, его нет в GPU.

person Sayan Pathak    schedule 24.03.2017