Как проводить исследование данных для сегментации изображений и обнаружения объектов

 

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

 - Почему это так? Для этого есть две основные причины: 
  1. Люди не разбираются в моделях обнаружения объектов и сегментации изображений и рассматривают их как черные ящики, в этом случае они даже не знают, на что смотреть и каковы предположения. 
  2. Это может быть довольно утомительно с технической точки зрения, поскольку у нас нет хороших инструментов для исследования данных изображений. 
  

Качество данных и общие проблемы


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

Общие проблемы с данными при обучении моделям обнаружения объектов и сегментации изображений включают:

  • Размеры и пропорции изображения (особенно при работе с экстремальными значениями)
  • Композиция надписей – дисбалансы, размеры ограничивающих рамок, соотношения сторон (например, множество мелких объектов)
  • Подготовка данных не подходит для вашего набора данных.
  • Подход к моделированию, не согласованный с данными. 

Это будет особенно важно, если вы обучаетесь на пользовательских наборах данных, которые значительно отличаются от типичных эталонных наборов данных, таких как COCO.  

Общее качество данных

Этот шаг прост и довольно очевиден, также этот шаг будет одинаковым для всех проблем с изображениями, а не только для обнаружения объектов или сегментации изображений. Что вам здесь нужно сделать, так это:
  • Получите общее представление о наборе данных и осмотрите его визуально. 
  • Убедитесь, что он не поврежден и не содержит каких-либо очевидных артефактов (например, изображения только черного цвета).  
  • Убедитесь, что все файлы доступны для чтения – вы же не хотите узнать об этом в середине вашего обучения. 
Выход - визуализировать как можно больше картинок. Есть несколько способов сделать это. В зависимости от размера наборов данных некоторые из них могут быть более подходящими, чем другие.
  • Визуализируйте их в jupyter с помощью matplotlib.
  • Используйте специальные инструменты, такие как google facets, для изучения данных изображений
  • Используйте HTML-рендеринг для визуализации.


Рис. 1. 500 изображений coco, визуализированных с помощью миниатюр в формате html



Размеры и пропорции изображений

В реальном мире наборы данных вряд ли будут содержать изображения одинаковых размеров и пропорций. Проверка базовых статистических данных наборов данных, таких как соотношение сторон, ширина и высота изображения, поможет вам принимать важные решения:

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


Рис. 2 и 3. Примеры изображений с экстремальными соотношениями сторон из набора данных coco

Частично помеченные данные 


При создании и маркировке набора данных обнаружения изображений отсутствие аннотаций может стать серьезной проблемой. Худший сценарий - это когда у вас уже есть ложные срабатывания (false negatives) в ваших ground truth значениях. Таким образом, по сути, вы не аннотировали объекты, даже если они присутствуют в наборе данных.  

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

Это также причина, по которой вы не можете смешивать наборы данных с непересекающимися классами и обучать одну модель (хотя есть способ смешивать наборы данных - например, путем мягкой маркировки одного набора данных моделью, обученной на другой)

Рис. 4. Показывает проблему смешивания наборов данных – обратите внимание, например, что на правом изображении человек не помечен.

Дисбалансы

Дисбаланс классов может быть небольшой проблемой, когда дело доходит до обнаружения объектов.  Обычно, например, при классификации изображений можно легко передискретизировать или уменьшить выборку набора данных и контролировать вклад каждого класса в потери. 
Рис. 5. Количество объектов в классе
В этом случае у вас возникнет та же проблема, что и с частично помеченными данными. Как только вы начнете повторную выборку на уровне изображения, вы должны быть осведомлены о том факте, что несколько классов будут подвергнуты повторной выборке одновременно.

Заключение

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