Описание проекта

Сервис для обучения нейронных сетей

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

Проблемная ситуация

Чтобы обучить нейросеть, необходимо:

  • собрать данные, на которых модель будет обучаться,
  • сделать препроцессинг этих данных,
  • выбрать фрэймворк для обучения нейронной сети,
  • подобрать архитектуру сети,
  • натренировать ее с использованием GPU ресурсов.

А после - запустить весь процесс заново, до тех пор пока не будет достигнута требуемая точность.

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

Как бизнес может поступить?

  • Можно передать обучение модели на аутсорс ИИ разработчикам, которые специализируются на машинлёнинге и нейронках;
  • Можно нанять ML/DL разработчика в штат;
  • А можно найти сервис, который позволит натренировать модель, не обращаясь к сторонним разработчикам.

Разработчиком такого сервиса и стала «Технологика», совместно с AI-стартапом.

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

Бизнес-процесс

Система представляет собой платформу для тренировки моделей. Внутри всё группируется по проектам. Проекты делятся на два типа:

  1. Детекция объектов - детектирование объектов определенного типа;
  2. Классификация объектов - определение типа объекта.

Проекты

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

Интерфейс управления ML проектами  

Датасет

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

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

После этого датасету дается оценка сбалансированности (balancing score) - а именно, каковы у него показатели разметки (сколько объектов, каких видов, сколько размеченных и неразмеченных изображений, оценка качества разметки).

Интерфейс управления разметкой ML проектов  

Тренировка модели по распознаванию изображений

Как только данные подготовлены, можно запускать тренировку модели. Здесь пользователь может согласиться с настройками по-умолчанию, которые подходят для большинства кейсов. А может выбрать фреймворк, конфигурацию (Tensorflow или PyTorch), базовую модель и типы аугментации и пр. В системе предусмотрена возможность конфигурации для более продвинутых пользователей.

 

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

 

Тестирование модели и загрузка данных

После окончания процесса обучения, модель можно или проверить на работоспособность, загрузив фото/видео и получив ответ от модели (inference), или вернуться на шаг назад и добавить больше фото в датасет, если не устраивает точность определения модели.

Последний шаг - обученную модель можно скачать в виде APK, APK source code или в других форматах (TFLite (Quantized/Non-Quantized, Int8/Float16/Float32, Saved Model (.pb)) или YOLOv5 (.pt)), которые устанавливаются на различные камеры, телефоны, IoT девайсы.

Генерация 3D-моделей

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

Процесс разработки

Интерфейс загрузки готовой модели: у каждой модели есть показатели качества и размеченные объекты

Разработка системы состоит из 9 этапов:

  1. Начальное проектирование
  2. Разработка PoC (итеративная по agile)
  3. Разработка MVP (итеративная по agile)
  4. Внутреннее тестирование
  5. Бета-тестирование
  6. Soft Launch;
  7. Доработка и поддержка;
  8. Большой релиз (большого как такового не было);
  9. Доработка и поддержка

На данный момент мы закончили 7 этап проекта: сделали систему рабочей и стабильной, подготовили к soft launch на 10 пользователей. Мягкий запуск позволит разрешить проблемы, которые не выявились на данный момент.

Сейчас стадия пересмотра. Мы сделали MVP, который уже в процессе использования. Постепенно появляются первые пожеланию по доработке системы на основе обратной связи от первых пользователей. У клиента в планах уже следующий этап по расширению поддерживаемых типов ml-задач (будем добавлять решения OCR задач и сегментацию изображений). Также этап доработок будет включать в себя пересмотр.

Хотите обсудить проект?

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