Увеличение данных после сегментации изображения

#python #keras #image-segmentation #data-augmentation

#python #keras #изображение-сегментация #увеличение данных

Вопрос:

Предположим, у меня есть небольшой набор данных. Я хочу реализовать увеличение данных. Сначала я реализую сегментацию изображения (после этого изображение будет двоичным изображением), а затем реализую увеличение данных. Это хороший способ?

Ответ №1:

Для увеличения изображения при сегментации и сегментации экземпляров вам необходимо либо не изменять положения объектов, содержащихся в изображении, например, манипулируя цветами, либо изменять эти позиции, применяя переводы и поворот.

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

В случае, если у вас есть:

  • Семантическая сегментация: каждый пиксель вашего изображения имеет строку i и столбец j , которые помечены как его окружающий объект. Это означает, что ваше основное изображение I и изображение метки L с одинаковым размером связывают каждый пиксель с его меткой объекта. В этом случае ваше увеличение данных применяется к обоим I и L , что дает комбинацию двух преобразованных изображений.
  • Сегментация экземпляра: здесь мы генерируем маску для каждого экземпляра исходного изображения, и увеличение применяется ко всем из них, включая оригинал, затем из этих преобразованных масок мы получаем наши новые экземпляры.

РЕДАКТИРОВАТЬ: взгляните на CLoDSA (средство расширения классификации, локализации, обнаружения и сегментации), это может помочь вам реализовать вашу идею.

Комментарии:

1. У меня есть набор данных биомедицинских изображений. Я реализую архитектуру U-Net для сегментации изображений. После этой сегментации у меня есть двоичные изображения. (Пиксели опухоли белые (1), неопухолевые пиксели черные (0)). И затем я реализую переводы для увеличения данных в этих сегментированных двоичных изображениях. Для классификации я использовал vgg-16. Точность модели в наборе данных проверки хороша для меня. Я был уверен, что это хорошая идея или нет.

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

3. В моей проблеме область опухоли может быть в любом месте изображения. Таким образом, перевод подходит для этой проблемы. Сначала я разделяю случайным образом как поезд и проверку. После этого я реализую такое же увеличение данных для обучения и проверки. Можем ли мы назвать эту операцию увеличением данных во время тестирования?

4. Нет, это немного отличается, поскольку мы имеем в виду тестовый набор данных, а не проверочный (что означает, что модель остается неизменной). Идея проста: чтобы протестировать данную модель, мы увеличиваем тестовый набор данных, и для каждого изображения делается прогноз, и каждое предсказание содержит вероятность принадлежности изображения к каждому классу, и мы применяем средневзвешенный ансамблевый подход для получения прогноза. Это легко реализовано в Keras, надеюсь, это поможет вам: Руководство по TTA

5. Я понимаю. Спасибо за отзыв. Могу я спросить последнее? Можно ли реализовать такое же увеличение данных при обучении и проверке после разделения? Потому что все показатели проверки метрик настолько близки к показателям обучения. Можем ли мы назвать хорошую модель?

Ответ №2:

Если ваш набор данных невелик, вам следует добавить увеличение данных во время обучения. Важно изменить исходное изображение и цели (маски) таким же образом!!.

Например, если изображение повернуто на 90 градусов, то его маска также должна быть повернута на 90 градусов. Поскольку вы используете библиотеку Keras, вам следует проверить ImageDataGenerator , изменяет ли она также целевые изображения (маски) вместе с входными данными. Если этого не произойдет, вы можете реализовать дополнения самостоятельно. Этот репозиторий показывает, как это делается в OpenCV здесь: https://github.com/kochlisGit/random-data-augmentations