Изучение распознавания объектов с помощью службы Azure Custom Vision

Я просматривал свою ценную коллекцию фильмов из моего детства, когда наткнулся на «В поисках Немо». В детстве я всегда хотел помочь Немо вернуться к его отцу. Я просто не знала как.

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

Мы можем использовать Azure, чтобы помочь Марлину найти Немо. Вот что нам понадобится:

  1. Подписка Azure - узнайте, как активировать Azure для студентов
  2. Учетная запись Azure Custom Vision
  3. Фотографии Немо

Что такое Azure Custom Vision?

Azure Custom Vision - это когнитивная служба, которая позволяет нам создавать, развертывать и улучшать наши собственные классификаторы изображений и детекторы объектов. Классификатор изображений - это служба ИИ, которая применяет метки к изображениям в соответствии с их визуальными характеристиками, в то время как детектор объектов - это служба ИИ, которая находит определенные объекты на изображениях, в нашем случае - Nemo.

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

Создание учетной записи Azure Custom Vision

Чтобы приступить к созданию нашего решения AI, сначала нам нужно получить учетную запись Azure Custom Vision. Давайте начнем:

  1. Откройте customvision.ai

2. Войдите в учетную запись Microsoft, связанную с подпиской Azure, и примите условия обслуживания.

Построение модели для распознавания Немо

Теперь мы готовы создать модель машинного обучения, которая сможет распознать Немо и сказать, где он находится. Чтобы использовать Custom Vision Service, нам нужно будет создать ресурсы Custom Vision Training и Prediction на портале Azure. Это создаст ресурсы обучения и прогнозирования.

Создать новый проект

  1. Чтобы создать свой первый проект, выберите Новый проект. Откроется диалоговое окно Создать новый проект.

2. Введите имя и описание проекта. Затем выберите группу ресурсов. Если ваша вошедшая учетная запись связана с учетной записью Azure, в раскрывающемся списке «Группа ресурсов» отобразятся все ваши группы ресурсов Azure, которые включают ресурс Custom Vision Service.

3. Выберите «Обнаружение объектов» в «Типах проектов» и выберите «Общие (компактные)» в списке «Домены». Компактные домены оптимизированы для ограничений обнаружения объектов в реальном времени на мобильных устройствах. Модели, созданные компактными доменами, можно экспортировать для локального запуска.

Классификация и обнаружение объектов. Функциональность Custom Vision можно разделить на две функции. Классификация изображений применяет к изображению одну или несколько меток. Обнаружение объекта аналогично, но оно также возвращает координаты на изображении, где может быть найдена нанесенная метка. Таким образом, мы можем определить положение объекта на изображении.

4. Наконец, выберите Создать проект.

Выберите обучающие изображения

Как минимум, службе Azure Custom Vision требуется не менее 15 изображений на тег для распознавания объектов в начальном наборе обучения. Нам также понадобится несколько дополнительных изображений, чтобы протестировать модель после ее обучения.

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

Кроме того, все обучающие образы должны соответствовать следующим критериям:

  • Формат .jpg, .png или .bmp.
  • не более 6 МБ (4 МБ для изображений для прогнозов)
  • не менее 256 пикселей по кратчайшему краю; любые изображения короче, чем это, будут автоматически увеличены в масштабе Custom Vision Service.

Загрузить и пометить изображения

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

  1. Чтобы добавить изображения, нажмите кнопку «Добавить изображения» и выберите «Обзор локальных файлов». Выберите «Открыть», чтобы перейти к загрузке изображений.

2. В отличие от классификатора, отдельные изображения должны быть помечены вручную после выбора области изображения с помощью Nemo. Щелкните загруженное изображение, чтобы открыть окно добавления тегов.

Обучите модель

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

  1. Нажмите кнопку Train. Служба распознавания объектов использует все текущие изображения для создания модели, которая определяет визуальные качества Nemo.

2. Выберите «Расширенное обучение» с бюджетом на 1 час обучения и нажмите Обучение.

Тренировочный процесс должен занять всего несколько минут. В это время информация о тренировочном процессе отображается во вкладке «Производительность».

Оцените модель

После завершения обучения производительность модели оценивается и отображается. Служба Custom Vision использует изображения, которые мы отправили для обучения, для расчета точности и отзыва, используя процесс, называемый перекрестная проверка в k-кратном размере. Точность и отзывчивость - это два разных показателя эффективности модели:

  • Точность указывает на долю идентифицированных изображений, которые были правильными. Например, если модель распознала 100 изображений как Nemo, а 99 из них действительно имели Nemo, то точность составила бы 99%.
  • Напомнить указывает долю реальных изображений, которые были правильно распознаны. Например, если на самом деле было 100 изображений Nemo, и модель распознала 80 как Nemo, отзыв был бы 80%.

средняя средняя точность (mAP): mAP сообщает общую точность детектора объектов при обнаружении Nemo.

Примечание. Компактные домены имеют меньшую точность, чем общие домены, для построения моделей, которые могут работать локально на смартфонах с ограниченными вычислительными ресурсами.

Порог вероятности

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

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

Тестирование нашей модели

  1. Выберите «Быстрая проверка» справа в верхней строке меню. Это действие открывает окно с надписью Quick Test.

2. В окне Быстрая проверка нажимаем поле Отправить изображение и вводим URL-адрес изображения для проверки. Чтобы использовать вместо этого локально сохраненное изображение, мы нажимаем кнопку Обзор локальных файлов и выбираем локальный файл изображения.

Выбранное изображение появится посередине страницы. Затем результаты появятся под изображением в виде таблицы с двумя столбцами, помеченными как Теги и Уверенность. Мы можем закрыть окно Быстрый тест после просмотра результатов.

Используйте предсказанное изображение для тренировки

Мы можем использовать изображение, отправленное ранее, для обучения, выполнив следующие шаги:

  1. Откройте Веб-страницу Custom Vision и выберите вкладку Прогнозы, чтобы просмотреть изображения, отправленные детектору объектов.

2. Наведите указатель мыши на изображение, чтобы увидеть теги, предсказанные моделью. Чтобы добавить изображение к данным тренировки, выберите изображение, выберите правильную отмеченную область на изображении, а затем нажмите кнопку X в правом верхнем углу окна. Изображение удаляется из прогнозов и добавляется к обучающим изображениям. Его можно просмотреть, выбрав вкладку Обучающие изображения.

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

Наконец, мы построили, обучили и протестировали модель обнаружения объектов с помощью службы Azure Custom Vision, которая теперь может помочь Марлину в поисках Немо.

Что дальше?

Мы экспортируем обученную модель для локального запуска в приложении на iPhone с помощью CoreML.

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