Соавторами этого сообщения являются JS Tan, Patrick Buehler, Anupam Sharma и Jun Ki Min.

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

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

Тем не менее, эта область не особенно приветствуется для новичков. Без предварительного опыта или руководства создание точного классификатора может занять недели. Если вы не готовы потратить долгое время на изучение компьютерного зрения, будет чрезвычайно сложно овладеть основами, не говоря уже о том, чтобы начать изучать некоторые из передовых технологий в этой области. Даже для специалистов по компьютерному зрению создание быстрого Proof of Concept (POC) может быть нетривиальной задачей, и на ее создание может уйти много дней.

В Microsoft мы много лет работали над разнообразными решениями компьютерного зрения для наших клиентов и собрали наши знания в нашем новом общедоступном репозитории Microsoft: Custom vision repo.

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

Мы начинаем репо с 5 сценариев:

Вы можете найти ссылки на репозитории здесь:

Вместо того, чтобы создавать реализации с нуля, мы используем популярные современные библиотеки (например, fast.ai и torchvision) и создаем дополнительные утилиты для загрузки данных изображений, оптимизации моделей и оценки моделей. Кроме того, мы стремимся ответить на часто задаваемые вопросы, попытаться объяснить интуицию глубокого обучения и выявить распространенные ошибки.

Независимо от того, являетесь ли вы экспертом в области компьютерного зрения или просто намочили руки, мы считаем, что этот репозиторий предлагает что-то для вас. Для новичка это репо проведет вас через построение современной модели и поможет вам развить интуицию для ремесла. Для экспертов этот репозиторий может быстро предоставить вам надежную базовую модель, которую легко расширить с помощью специального кода Python / PyTorch. Кроме того, репозиторий также предназначен для поддержки:

  1. Полный процесс науки о данных.
  2. Инструменты для достижения успеха в Azure.

Мы надеемся, что эти примеры и утилиты упростят и ускорят разработку разработчиками приложений машинного зрения.

Процесс обработки данных

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

  1. Оценка. Оцените свою модель. В зависимости от метрики, которую вы хотите оптимизировать, вы можете изучить различные методы оценки.
  2. Выбор и оптимизация модели. Настройте и оптимизируйте гиперпараметры, чтобы получить наиболее эффективную модель. Поскольку модели компьютерного зрения часто требуют больших вычислительных затрат, мы покажем вам, как легко масштабировать настройку параметров в Azure.
  3. Ввод в действие - приведите в действие модели в производственной среде в Azure, развернув их в Kubernetes.

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

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

Когнитивные службы Azure

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

  • Vision Services - это набор предварительно обученных REST API, которые можно вызывать для тегов изображений, распознавания текста, видеоаналитики и т. Д. Эти API-интерфейсы работают по умолчанию и требуют минимального опыта в машинном обучении, но имеют ограниченные возможности настройки. Просмотрите различные доступные демонстрации, чтобы почувствовать функциональность (например, компьютерное зрение).
  • Custom Vision - это сервис SaaS для обучения и развертывания модели как REST API с учетом предоставленного пользователем набора для обучения. Все шаги, включая загрузку изображений, аннотации и развертывание модели, можно выполнить с помощью пользовательского интерфейса или Python SDK. Классификация обучающих изображений или модели обнаружения объектов могут быть достигнуты с минимальными знаниями в области машинного обучения. Custom Vision предлагает большую гибкость, чем использование предварительно обученных API когнитивных сервисов, но требует, чтобы пользователь приносил и аннотировал свои собственные данные.

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

Чтобы дать вам представление о том, как вы можете использовать наше репо для создания современной модели (SOTA), вот предварительный просмотр того, насколько просто создать модель обнаружения объектов. Конечно, вы можете пойти намного глубже и добавить собственный код PyTorch, но начать работу очень просто:

1. Загрузите свои данные

Первый шаг - загрузить ваши данные - мы поможем вам сделать это с помощью простого объекта, который автоматически анализирует ваши данные и аннотации:

from utils_cv.detection.data import DetectionLoader data = DetectionLoader("path/to/data")

2. Обучите / настройте свою модель

Затем мы создаем объект «учащийся», который помогает вам управлять своей моделью и обучать ее. По умолчанию он будет использовать модель torchvision Faster R-CNN. Но вы можете легко выключить его.

from utils_cv.detection.model import DetectionLearner detector = DetectionLearner(data) detector.fit()

3. Оцените

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

from utils_cv.detection.plot import plot_pr_curves eval = detector.evaluate() plot_pr_curves(eval)

По мере того, как мы продолжаем создавать из репозитория, мы будем искать новые сценарии компьютерного зрения, которые можно разблокировать. Не стесняйтесь обращаться по адресу [email protected] или опубликуйте вопрос, если вы хотите, чтобы мы рассмотрели сценарий.

Дополнительные ресурсы, чтобы узнать больше

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

Первоначально опубликовано на https://techcommunity.microsoft.com 17 декабря 2019 г.