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

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

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

  • Superb AI - это платформа ML DataOps, которая помогает группам компьютерного зрения автоматизировать и управлять всем конвейером данных: от приема и маркировки до оценки и доставки качества данных.
  • Valohai - это платформа MLOps, которая помогает создавать и управлять полностью автоматизированными конвейерами обучения на любом облачном или локальном оборудовании. Идеально подходит для компьютерного зрения и глубокого обучения.

Подробная информация о проекте

  • Репозиторий: https://github.com/valohai/yolov3-tf2
  • Модель: YOLOv3-416 (вес)
  • Фреймворки: Tensorflow 2.4.0 + OpenCV 4.1.
  • Режим: передача обучения
  • Набор данных: ~ 3000 изображений (набор для проверки COCO 2017)
  • Классы: человек, машина, стул, книга, бутылка.

Примечание: конвейер является универсальным, а это означает, что его легко обучить с любым набором данных и любыми классами платформы Superb.ai, используя любые веса, соответствующие модели YOLOv3. Здесь перечислены только те значения по умолчанию, которые мы использовали.

Подготовка данных в Superb AI

Во-первых, нам нужно создать новый проект на платформе Superb AI. Выберите любое имя и описание. В этом примере типом данных будет изображение, а тип аннотации - Поле.

Затем добавьте пять классов (человек, машина, стул, книга, бутылка), чтобы соответствовать нашему набору данных COCO, который мы загрузим на платформу.

Можно также использовать функции автоматической маркировки Superb AI, но в этом примере у нас будут метки уже в наборе данных COCO. Теперь, когда у нас есть наш проект и шаблон набора данных, подготовленный на платформе, пришло время преобразовать и загрузить фактические данные + метки с помощью Superb AI SDK и CLI. Следуйте инструкциям в этом репозитории примеров.

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

Программа обучения Валохай

В Валохае подготовка кадров - ключевой компонент любого успешного проекта. Наш пример конвейера состоит из четырех шагов.

Шаг convert-superbai извлекает данные из Superb.ai, разделяет наборы для обучения и проверки на основе тегов Superb.ai и, наконец, преобразует два набора в файлы .tfrecord для модели.

Шаг weights загружает предварительно обученные веса с веб-сайта Джозефа Редмона, преобразует их в контрольную точку Tensorflow и, наконец, проверяет правильность их работы, выполняя логический вывод для одного изображения.

Шаг train обучает модель в среде графического процессора (другие шаги по умолчанию относятся к ЦП) на основе гиперпараметров.

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

Каждый шаг (обычно) представляет собой отдельный файл Python. Вот исходный код weights.py нашего weights шага. Он имеет один параметр weights_num_classes (сколько классов использовалось для предварительно обученной модели) и один вход weights (фактические предварительно обученные веса).

Параметры и входные данные передаются в valohai.prepare() вызов Valohai SDK. Valohai CLI может анализировать этот вызов для автоматического создания необходимой конфигурации для параметризации шага.

Сам конвейер определен в pipeline.py, который также использует новый SDK.

Установка трубопровода в Валохае

Сначала создайте новый проект в Valohai и свяжите GitHub репозиторий примеров в настройках проекта.

Теперь вы можете создать новый конвейер на вкладке конвейеров и выбрать train-superbai в раскрывающемся списке чертежей.

Интеграция с превосходным искусственным интеллектом

Перед запуском конвейера нужно указать ему, где взять данные. Изображения и метки - это два отдельных URL-адреса, что означает две копии-вставки с Superb.ai на Valohai.

Изображения: Настройки ›Общие (Superb.ai)

Ярлыки: Экспорт ›История экспорта (Superb.ai)

Входы в трубопровод (Valohai)

Запуск трубопровода

Теперь, когда мы интегрированы с нашим набором данных в платформу Superb AI, наш конвейер готов к работе!

Valohai записывает все входные данные, параметры, журналы и показатели для каждого шага конвейера. Это входные данные, параметры, образ Docker, среда и остальная информация для выполнения шага train:

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

Это показатели, распечатанные обучающим кодом. Valohai анализирует весь напечатанный JSON как метрику (называемую метаданными на Valohai).

Наконец, на вкладке «Выходы» шага detect мы можем проверить, как модель работает, с некоторыми реальными изображениями.

Итерации по этикеткам

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

Почему настроить сквозной конвейер для вашей модели YOLOv3 не составляет труда

В этой статье сквозной конвейер построен на основе двух специализированных инструментов: Superb AI для управления данными и Valohai для управления жизненным циклом модели. Вся настройка в этом примере может быть выполнена в течение нескольких часов, но стоимость предварительной работы увеличивается каждый раз, когда модель обучается.

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

Первоначально опубликовано на https://valohai.com.