Автор: Илья Бакалец Редактура: Марк Страхов
Для многих задач компьютерного зрения уже есть решения в виде обученных на большом количестве данных DL-моделей. Поэтому вместо разметки данных с нуля логичным кажется использование этих моделей для предварительной разметки данных (особенно в том случае, когда на каждом изображении больше 10 объектов).
В этой статье мы познакомимся с более продвинутыми функциями CVAT (с его помощью можно предразметить данные в самом инструменте) и с возможностью добавления практически любой модели для авто-разметки.
Мы не будем здесь подробно рассказывать о том, как поднять CVAT. Поэтому оставляем вам небольшое напоминание о предыдущих статьях по этой теме:
В CVAT интегрированы модели для автоматической разметки. Их можно запускать на cpu или gpu для быстрого инференса. Но для простой и беспроблемной работы (например, настройки общения между микросервисами или контролирования ресурсов) и универсального процесса интеграции в CVAT были интегрированы также serverless функции.
Serverless — модель облачных вычислений, в которой разработчики могут создавать и запускать приложения без необходимости управления инфраструктурой серверов. То есть это не значит что сервера нет, просто все базовые проблемы поддержки такого сервиса уже решены.
Nuclio — это как раз такая serverless платформа с открытым исходным кодом. Она позволяет разработчикам легко создавать и развертывать serverless функции.
Рисунок 1. Высокоуровневая архитектура Nuclio
Архитектура Nuclio работает на основе модели сервера функций (Function Server), где каждая функция обрабатывает входные события. Когда событие поступает, оно отправляется на HTTP-эндпоинт Nuclio API Gateway, который автоматически масштабируется и балансирует нагрузку между экземплярами Function Server.
Function Server запускается в контейнере Docker и обрабатывает событие, используя заданную функцию. Функция может быть написана на любом языке программирования и иметь зависимости, которые устанавливаются автоматически.
После обработки события Function Server возвращает ответ обратно в Nuclio API Gateway, который, в свою очередь, отправляет его вызывающей стороне.
Таким образом, Nuclio обеспечивает масштабируемую платформу для создания, развертывания и управления функциями, которые могут обрабатывать события в режиме реального времени.
Перед использованием возможностей по предразметке в CVAT нужно развернуть сервис (в нашей предыдущей статье есть инструкция).
Дисклеймер: этот туториал тестировался на Ubuntu 20.04.6 LTS
Проверяем работу сервисов. Все они должны быть подняты. Так можно понять, почему не поднимается сервис — везде должны быть ... working