Лабораторная работа 2 (Запуск приложения с встроенной нейронной сетью на Android или iOS устройстве)
Каждый студент, выполняющий лабораторную работу выбирает свой вариант. В соответствии с выбранным вариантом необходимо будет работать с определенными видами объектов. Также проект необходимо вести в открытом GitHub репозитории.
1. Необходимо взять за основу готовую реализацию приложения для Android/iOS с задачей детекции объектов (в лекции 3 можно найти ссылки на соответсвующие репозитории)
2. По инструкции, описанной в лабораторной работе 1 обучить собственную модель YOLOv26. Классы выбираются в соответствии с выбранным вариантом. Списки наименований классов представлены ниже в описании лабораторной работы.
3. Далее необходимо экспортировать модель в целевой фреймворк. Для iOS устройств следует выбирать CoreML, для Android можно воспользоваться либо LiteRT, либо ExecuTorch.
4. Собрать решение и запустить на мобильном устройстве данную модель, оценить скорость работы архитектуры (добавить профилирование времени работы вызова функции с моделью).
5. Необходимо продемонстрировать работу модели на тестовых изображениях. Тестовый набор данных с разметкой будет предоставляться при сдачи задания группой. Для успешной сдачи на тестовой выборке модель должна достигать значений метрики mAP@0.5 не ниже 0.8.
Наборы классов для каждого варианта:
1. зубная щетка, тюбик зубной пасты, мыло (твердое, при желании можно добавить 4-й класс с тарой жидкого мыла)
2. кабачок, помидор, огурец
3. денежная купюра, монета, банковская карта
4. классическая гитара, акустическая гитара, электрогитара (при желании можно добавить 4-й класс с полуакустической гитарой)
5. стул, стол, кровать, диван
6. кружка, стакан, бокал (при желании можно добавить 4-й класс, чашка с блюдцем)
7. шариковая ручка, простой карандаш, маркер (при желании можно добавить 4-й класс, текстовыделитель)
8. кроссовки, ботинки, туфли
9. смартфон, планшет, ноутбук
10. молоток, отвёртка, плоскогубцы (при желании можно добавить 4-й класс, гаечный ключ)
Требования к репозиторию и проводимым экспериментам:
- Проводимые эксперименты должны быть воспроизводимы, следовательно следует прикрепить ссылку на размеченный набор данных
- Репозиторий YOLO (если выбрана другая реализация, то её репоизиторий соответственно) необходимо добавить к репозиторию в качестве submodule, про это можно почитать в данном описании.
- Код для обучения должен запускаться из Docker контейнера, поэтому необходимо обернуть проведение экспериментов в Docker образ. При создании контейнера для экспериментов передаются следующие параметры: директория с размеченным набором данных (разбиение на тренировочную и валидационную части можно произвести заранее), директория с результатами обучения и логированием эксперимента (в неё можно скопировать всё содержимое папки runs/train/exp*/) Ознакомиться с созданием Docker образов можно по следующей ссылке.
Для оптимизации процесса разметки можно воспользоваться онлайн-сервисом для создания наборов данных Roboflow. А также можно использовать систему LabelStudio или сгенерировать разметку автоматически через VLM.