Поделиться через


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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

Внимание

Для использования некоторых команд Azure CLI, приведенных в этой статье, используйте расширение azure-cli-ml (версия 1) для Машинного обучения Azure. Поддержка расширения версии 1 будет прекращена 30 сентября 2025 г. Вы можете установить и использовать расширение версии 1 до этой даты.

Рекомендуется перейти на расширение ml (версия 2) до 30 сентября 2025 г. Дополнительные сведения о расширении версии 2 см. на странице расширения CLI для Azure ML и пакета SDK для Python версии 2.

Внимание

Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

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

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

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

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

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

Необходимые компоненты

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

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

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

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

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

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

Вы можете указать значение tile_grid_size в виде строки в области гиперпараметров.

parameter_space = {
    'model_name': choice('fasterrcnn_resnet50_fpn'),
    'tile_grid_size': choice('(3, 2)'),
    ...
}

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

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

parameter_space = {
    'model_name': choice('fasterrcnn_resnet50_fpn'),
    'tile_grid_size': choice('(2, 1)', '(3, 2)', '(5, 3)'),
    ...
}

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

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

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

Примечание.

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

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

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

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

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

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

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

Кортеж из двух целых чисел, передаваемых в виде строки, например '(3, 2)'.

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

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

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

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

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

Примечание.

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

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