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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

В этой статье вы узнаете, как обучить модель обнаружения объектов для обнаружения небольших объектов в изображениях с высоким разрешением с помощью автоматизированного машинного обучения в Машинное обучение 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 в параметрах обучения в виде строки.

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

training_parameters:
  tile_grid_size: '3x2'

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для 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 только во время вывода, а не для обучения.

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

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

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

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

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

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

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

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

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

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

Примечание.

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

Следующие шаги