Обучение и подготовка¶
Получение данных¶
Для работы системы, необходимо проверить, и при необходимости (скорее всего) переобучить нейронную сеть. Для этого следует снять некое количество скриншотов изображения (минимум 50). Скриншоты изображения должны охватаывать наибольшее количество различных компонентов. Возможен подход, когда пользователь вручную проходит ТК и снимает скриншоты с каждого шага.
Снятые скриншоты необходимо разметить. Для разметки скриншотов
сущесвует платформа CVAT
. В помощь разметки введены функции превадрительной
автоматической разметки с помощью лямбда-функций Nuclio. В этом случае
изображения сначала размечаются уже существующими сетями и правится пользователем
Перед обучением, производится анализ скриншотов, при необходимости производится аугментация изображений. После обучения рассматриваются результаты обучения, метрики, изображения, где нейронная сеть отработало хуже всего, после чего принимаются решения по увеличению эффективности.
Процесс обучения логируется в систему W&B
в реальном времени, что позволяет
оперативно наблюдать за процессом обучения и при необходимости вносить изменения
Веса также сохраняются на платформе W&B
Результаты обучения, значения метрик прогона на тестовом наборе, для простоты записываются в Google Таблицы.
Добавление модели в сервис¶
После обучения модели, для работы с ней, необходимо добавить полученные веса в сервис Yolov5.
Сервис способен загружать новые модели, которые находятся в хранилище Minio, поэтому необходимо первым делом загрузить веса в хранилище
Сделать это можно как с помощью UI, так и из кода
Для загрузки через UI (как самый простой вариант) необходимо перейти на minio
и загрузить модельку в директорию models
. Внутри директории можно создавать
новые папки, куда можно загрузить модель.
После загрузки на Minio, необходимо сказать сервису, чтобы он ее выгрузил и сделал активной. Для этого существуют два энподинта, обратиться к ним можно как и с помощью запросов (например, curl, или requests) так и через Swagger
Выгрузка модели с хранилища¶
За загрузку модели отвечает необходимо отправить на след запрос
POST /models/add?name={name}
, где {name} имя вашей загруженной модели
Активация модели¶
За активацию модели отвечает запрос PUT /models/activate/{version}?name={name}
Здесь {version}
- это адрес ресурса, через который можно будет обратиться к модели
Версия является целым числом, не менее 0. Вы можете указать уже существующий ресурс
и тогда модель будет перезаписана. Указание версии модели не терпит пропусков
Если вы указаываете число, на котором модели еще нет
модель будет записана на последнее место.
Например, у нас в сервисе уже активировано две модели, на 1 и 2 версии
Мы хотим поставить новую модель на ресурс с индексом 3 и для этого отправляем запрос
PUT /models/activate/3?name={name}
. В ответ (если было задано
корректное имя модели) придет ответ с успехом и указанием на какой ресурсе
находится модель:
Теперь у нас занято 3 ресурса (1, 2, 3) и мы хотим добавить модель на 5 ресурс В этом случае, модель добавится на 4 индекс, соответсвующая версия будет указана в ответе
Если же модель не найдено, в ответ придет следующее сообщение
{
"msg": "Model not found",
"name_model": "bestv2.pt"
}