2

Мне нужно сделать увеличение в реальном времени на моем наборе данных для ввода в CNN, но мне очень сложно найти подходящие библиотеки для этого. Я пробовал caffe, но DataTransform не поддерживает многие дополнения в реальном времени, такие как вращение и т. Д. Так что для удобства внедрения я установил Lasagne. Но, похоже, он также не поддерживает увеличение в реальном времени. Я видел некоторые должности, связанные с Facial Keypoints detection, где он использует Batchiterator из nolearn.lasagne. Но я не уверен, будет ли это в реальном времени или нет. Для этого нет правильного учебника. Итак, наконец, как я должен делать увеличение в реальном времени в Lasagne либо через nolearn, либо в противном случае?Увеличение данных в реальном времени в Lasagne

ответ

1

Вы можете использовать Keras framework для получения данных в режиме реального времени для обучения CNN. Here - пример кода для набора данных CIFAR10 от github. Вы также можете изменить его, чтобы адаптировать ваши потребности или скопировать исходный код и добавить в проект лазаньи, но я еще не пробовал импортировать в лазаньи раньше. Основная идея этого - случайное увеличение данных в каждой партии. Если у вас есть цикл партий, который подходит для сети, вы можете вызвать свою функцию расширения до отправки данных в сеть.

+1

Этот ответ не о Лазанье –

1

Да, вы можете делать увеличение данных в реальном времени в Лазанье. Самый простой способ - использовать GaussianNoiseLayer. Просто вставьте его после слоя ввода. Если гауссовский шум не то, что вам нужно, то, по крайней мере, у вас есть GaussianNoiseLayer в качестве примера того, как реализовать свои собственные.

Обратите внимание, как параметр deterministic используется в Лазанье. По умолчанию он выключен, поэтому во время тренировки добавляется шум. Во время тестирования вы устанавливаете deterministic=True, а аугментацию просто избегают.

+1

Вы можете увеличить время в реальном времени с помощью «BatchIterator» nolearn в Лазанье. Раньше (при публикации) проблема заключалась в ограничении числа функций реального времени, которые мы могли бы связать с итератором. Я нашел довольно приличный способ решить эту проблему. Скоро обновит его. – whitewalker

0

Да, учебное пособие Facial Keypoints Recognition, которое вы упомянули, использует в режиме реального времени (на лету) дополнение для случайного переключения входных изображений (и целевых координат).

В библиотеке nolearn-utils имеется множество примеров итераторов, которые выполняют несколько видов аугментации. Например. AffineTransformBatchIteratorMixin делает случайные аффинные преобразования на лету.

Смежные вопросы