Изменение обученных изображений для обучения нейронной сети

в настоящее время я пытаюсь сделать программу для дифференциации гнилых апельсинов и съедобных апельсинов исключительно на основе их внешнего вида. Для этого я планирую использовать сверточную нейронную сеть для тренировки с гнилыми апельсинами и нормальными апельсинами. После некоторого поиска я смог найти только одну базу данных approx. 150 гнилых апельсинов и 150 нормальных апельсинов на черном фоне (http://www.cofilab.com/downloads/). Очевидно, что модель машинного обучения будет нуждаться по крайней мере несколько тысяч апельсины для достижения точности выше 90 или около того процентов. Однако могу ли я каким-то образом изменить эти 150 апельсинов, чтобы получить больше фотографий апельсинов? Под alter я подразумеваю добавление разных оттенков апельсина на цитрусовые, чтобы сделать "другой апельсин"."Будет ли это эффективным методом обучения нейронной сети?

4 ответов


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

предполагая, что вы будете тренировать его на изображениях, вот очень хороший репозиторий github, который предоставляет средства для использования этих методов. Эта библиотека python помогает вам с увеличением изображений для ваших проектов машинного обучения. Он преобразует набор входных изображений в новый, гораздо больший набор слегка измененных изображений. Ссылка:https://github.com/aleju/imgaug

характеристики:

  • большинств стандартные методы увеличения доступные.

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

  • определите гибкие стохастические диапазоны для каждого увеличения, например " поворот каждое изображение на значение от -45 до 45 градусов" или "вращать каждый изображение по значению, взятому из нормального распределения N (0, 5.0)".

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

enter image description here


увеличение данных - это то, что вы ищете. В вашем случае вы можете делать разные вещи:

  1. применить фильтры, чтобы получить немного другое изображение, как было сказано, вы можете использовать размытие Гаусса.

  2. отрежьте апельсин и поместите его в разные фоны.

  3. масштаб апельсины с различными масштабами факторов.

  4. поворот изображений.

  5. создать синтетический гнилой апельсины.

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

Я сделал что-то подобное с набором данных из 12.000 изображений, и я могу создать 630.000 образцов


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


увеличение данных-действительно хороший способ повысить набор тренировок, но все же недостаточно, чтобы обучить глубокую сеть от конца до конца самостоятельно, учитывая возможность того, что она будет переоснащена. Вы должны посмотреть адаптацию домена, где вы берете предварительно подготовленную модель, такую как inception, которая обучается набору данных imagenet и finetune для вашей проблемы. Поскольку вы должны изучить только параметры, необходимые для классификации вашего варианта использования, можно достичь хорошей точности с относительно меньшим количеством данных обучения доступный. Я провел демонстрацию классификации с этой техникой здесь. Попробуйте это с помощью набора данных и посмотрите, поможет ли это. Демо заботится о pretrained модели, а также увеличение данных для набора данных, который вы будете загружать.