Обучение модели обнаружения небольших объектов с помощью AutoML

ОБЛАСТЬ ПРИМЕНЕНИЯ: пакет SDK для Python azure-ai-ml версии 2 (текущая версия)

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

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

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

При мозаичном заполнении каждое изображение делится на сетку фрагментов. Смежные фрагменты перекрываются друг с другом по ширине и высоте. Фрагменты обрезаются из оригинала, как показано на следующем рисунке.

Схема, на которой показано, как изображение делится на сетку перекрывающихся плиток.

Предварительные требования

Поддерживаемые модели

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

Включение мозаичного заполнения во время обучения

Чтобы включить мозаивание, можно задать tile_grid_size для параметра значение 3x2; где 3 — это количество плиток по ширине, а 2 — количество плиток по размеру высоты. Если для этого параметра задано значение "3x2", каждое изображение разбивается на сетку из 3 x 2 плиток. Каждый фрагмент пересекается со смежными фрагментами таким образом, чтобы все объекты, попадающие на границу фрагмента, полностью содержались в одном из фрагментов. Это перекрытие регулируется с помощью параметра tile_overlap_ratio, значение которого по умолчанию равно 25 %.

Если мозаичное заполнение включено, все изображение и созданные из него фрагменты пропускаются через модель. Размеры этих изображений и фрагментов изменяются в соответствии с параметрами min_size и max_size перед передачей в модель. Из-за необходимости обработки этих дополнительных данных время вычисления пропорционально увеличивается.

Например, если tile_grid_size параметр имеет значение "3x2", время вычисления будет примерно в семь раз выше, чем без плитки.

Значение для можно указать в параметрах tile_grid_size обучения в виде строки.

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)

training_parameters:
  tile_grid_size: '3x2'

Значение параметра tile_grid_size зависит от размеров изображения и размера объектов на нем. Например, большое количество фрагментов целесообразно при наличии на изображениях небольших объектов.

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

Мозаичное заполнение во время вывода

При развертывании модели, обученной с помощью мозаичного заполнения, мозаичное заполнение также происходит во время вывода. Для создания фрагментов во время вывода автоматизированное ML использует значение tile_grid_size из обучения. Все изображение и соответствующие фрагменты пропускаются через модель, а предложения объектов из них объединяются в выходные данные конечного прогноза, как на рисунке ниже.

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

Примечание

Один и тот же объект может быть обнаружен на нескольких фрагментах, и для удаления таких дубликатов выполняется обнаружение дубликатов.

Обнаружение дубликатов выполняется путем запуска NMS для предложений из фрагментов и изображения. Если несколько предложений перекрываются, выбирается одно с самым высоким показателем, а другие отбрасываются как дубликаты. Два предложения считаются перекрывающимися, если пересечение над объединением между ними превышает значение параметра tile_predictions_nms_thresh.

Кроме того, можно включить мозаичное заполнение только во время вывода, не включая его для обучения. Для этого задайте параметр tile_grid_size только во время вывода, а не для обучения.

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

Гиперпараметры мозаичного заполнения

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

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

Должен передаваться в виде строки в '3x2' формате .

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

Значение должно быть числом с плавающей точкой в диапазоне [0; 1).
0,25
tile_predictions_nms_thresh Пороговое значение пересечения над объединением, которое используется для неполного подавления (узлов) при слиянии прогнозов с фрагментов и изображений. Доступно во время проверки и вывода. Измените этот параметр, если для каждого объекта в окончательном прогнозе обнаружено несколько полей.

Должно быть значением типа float в диапазоне [0; 1].
0,25

Примеры записных книжек

Подробные примеры кода для настройки и обучения модели обнаружения объектов см. в примере записной книжки обнаружения объектов.

Примечание

Все изображения в этой статье предоставляются в соответствии с разделом о разрешенном использовании соглашения о лицензировании MIT. © Roboflow, Inc., 2020.

Дальнейшие действия