Вы когда-нибудь хотели заняться искусственным интеллектом и машинным обучением, но не умеете кодировать, или хотели упростить конвейер компьютерного зрения на одной платформе? Не волнуйтесь, поскольку с недавно выпущенной платформой Datature вы можете создавать свои собственные модели компьютерного зрения, которые могут обнаруживать объекты на изображениях и многое другое!

Во-первых, что такое компьютерное зрение?

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

  • Распознавание лиц в розничных магазинах для идентификации воров
  • Выявление дефектов продукции при выходе продукции с производственной линии
  • Обнаружение отклонений в медицинских изображениях, таких как МРТ и рентгеновские снимки

В промышленности используются 3 типа моделей CV, а именно модели классификации, обнаружения объектов и модели сегментации экземпляров.

Классификация

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

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

Обнаружение объектов

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

Сегментация экземпляра

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

Как обучить вашу модель

В использовании машинного обучения для обучения модели резюме есть 4 этапа.

  1. Нам нужно собрать фотографии или видео, чтобы модель могла тренироваться.
  2. Затем нам нужно аннотировать наши изображения, то есть извлечь полезные функции из входных данных, которые четко определяют объекты на изображении, которые мы хотим распознать, и присвоить им соответствующие ярлыки.
  3. Теперь модель можно обучить с использованием набора входных данных и аннотаций, которые мы определили.
  4. После обучения модель готова делать прогнозы.

Это повторяется, каждый раз слегка изменяя процесс, пока вы не получите достаточно хорошо работающую модель. Эти шаги традиционно выполняются с использованием другого программного обеспечения, причем шаг два обычно достигается с помощью инструментов аннотации изображений, таких как labelImg, а шаг 3 выполняется с использованием TensorFlow или PyTorch, причем обе технологии требуют знания программирования. Это не только проблема для людей, не обладающих этими знаниями, но и проблема для исследователей, которым приходится использовать несколько платформ и программного обеспечения, что увеличивает время, необходимое для тестирования моделей CV.

Как же тогда решать эти проблемы?

Datature - это платформа, которая позволяет нам как аннотировать данные изображения или видео, так и обучать модели резюме, не касаясь ни единой строчки кода! В этом руководстве мы рассмотрим шаги, необходимые для обучения простой модели обнаружения объектов кошка или собака, но не стесняйтесь следовать им вместе с любым другим набором данных, который у вас может быть. Для этого урока я подготовил небольшой набор данных, состоящий из 100 изображений кошек и 100 изображений собак, которые вы можете скачать здесь. Для этого вам необходимо создать учетную запись Kaggle, но настроить ее довольно просто.

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

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

Нажмите «Загрузить изображения» и выберите файл, содержащий ваш набор данных. Это загрузит все ваши изображения в проект.

Аннотирование наших изображений

Как только этот шаг будет завершен, мы сможем перейти к аннотатору с помощью боковой панели. Здесь нам сначала нужно создать несколько тегов, каждый из которых представляет категорию. Поскольку в наборе обучающих данных есть только кошки и собаки, мы создаем два тега: один «Кошка» и один «Собака».

Используя боковую панель слева, мы можем затем выбрать соответствующие инструменты, которые нам нужны для аннотирования нашего набора данных. В этом уроке мы будем использовать инструмент прямоугольного аннотатора, и мы можем выбрать его с помощью клавиши R. Мы будем переключаться между маркировкой кошек и собак на наших изображениях, что мы можем сделать, выбрав тег на боковой панели или используя сочетания клавиш (в данном случае 1 для кошки и 2 для собаки). Если вы тренируете модель сегментации экземпляра, вы должны использовать инструмент многоугольника вместо того, чтобы соответствовать контурам вашего объекта.

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

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

Создание рабочего процесса

Теперь мы можем приступить к созданию рабочего процесса для нашего проекта. Перейдите в раздел «Рабочий процесс» с помощью боковой панели и выберите «Создать рабочий процесс». При щелчке правой кнопкой мыши по рабочей области откроется меню, показанное ниже:

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

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

Щелкнув левой кнопкой мыши на узле дополнений, мы можем включать и отключать типы дополнений. В этом уроке мы можем включить Яркость, Горизонтальное отражение и Вертикальное отражение.

Затем мы можем передать расширенные изображения в нашу модель. Для обнаружения объектов обычно используется FasterRCNN, поэтому мы будем создавать новый узел из Models ›FasterRCNN Models› FasterRCNN ResNet50 640x640. Подключите этот узел к узлу дополнений.

Обучение нашей модели

После того, как наш рабочий процесс определен, мы можем щелкнуть «Запустить обучение» в правом нижнем углу экрана. это вызовет модальное окно, в котором мы можем выбрать наш тип графического процессора и количество графических процессоров, стратегии контрольных точек и пределы обучения. Обновив свой план, вы получите доступ к более производительным графическим процессорам, но вычислительная мощность не нужна, когда наш набор данных состоит всего из 200 изображений.

Выбор «Начать обучение» запустит облачный экземпляр и обучит вашу модель, остается только подождать! Терпение - это добродетель, особенно если вы исследователь AI / ML. Между тем, ряд линейных графиков обновляется с течением времени для визуализации важной статистики, в том числе:

  • Полная потеря
  • Потеря классификации
  • Потеря локализации (для обнаружения объекта)
  • Потеря регуляризации
  • Средний отзыв
  • Точность / карта

После завершения обучения мы можем вернуться на домашнюю страницу нашего проекта и перейти к «Артефактам» с помощью боковой панели. Щелкните три точки под своим рабочим процессом и выберите «Создать модель TensorFlow».

После генерации снова нажмите на три точки и выберите «Загрузить модель TensorFlow».

Делаем прогнозы

Datature подготовил сценарий с открытым исходным кодом для прогнозирования с использованием вашей модели, который можно скачать здесь. После загрузки файлов замените папку saved_model и label_map.pbtxt соответствующими файлами из папки загруженной модели TensorFlow.

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

После того, как изображения будут готовы, перейдите в каталог предсказаний в вашем терминале и запустите:

pip install -r requirements.txt
python3 prediction.py --input "input" --output "output"

Прогнозы будут в выходной папке.

Если вам нравится Datature и вы хотите поддержать его, проголосуйте за него на нашей странице ProductHunt. Если вас интересуют другие мои проекты, загляните на мой сайт и на мой Github. Если вы хотите связаться со мной по чему-либо, вы можете прокомментировать этот пост или отправить мне сообщение через LinkedIn.