Разработка приложения для учета и маркировки леса
Цифровизация лесной промышленности не стоит на месте: последние 20 лет отрасль активно осваивает полностью механизированные процессы, которые позволяют отказаться от ручного труда, обеспечить удаленный мониторинг работ, автоматическое управление древесными запасами, цепочкой поставок и продажами.
В этом кейсе рассказываем, как мы приняли участие в разработке и обеспечении качества Android-приложения для учета и маркировки леса с помощью RFID-меток на лесопроизводстве.
Клиент
Партнёр обратился к нам для разработки мобильного приложения для специальных устройств на платформе Android. Продукт клиента — инновационная система, предназначенная для учёта сырья в лесной промышленности.
Задача
Создать с нуля мобильное приложение на Android в рамках единой системы, которая также включает базу данных и web-сервер с интерфейсной частью. Перед нами стояла задача спроектировать основные бизнес-процессы на лесопроизводстве, а также разработать и внедрить в приложение алгоритмы машинного обучения. Их цель — учёт стоячего и спиленного леса («пиловочника») с измерением диаметра стволов деревьев по фото с точностью до сантиметра.
В рамках проекта было необходимо реализовать:
- MVP мобильного приложения;
- бэкенд для мобильного приложения;
- синхронизацию данных между бэкендом и мобильным приложением;
- распознавание диаметра деревьев и пиловочника с помощью машинного обучения;
- чтение и запись RFID-меток, а также взаимодействие с RFID-сканером.
Что сделали
Этап аналитики занял 2 месяца, в течение которых мы обсудили с клиентом необходимые требования, составили техническое задание, подготовили прототипы будущего сервиса, а также исследовали возможность внедрения в мобильное приложение алгоритмов машинного обучения.
Этап прототипирования длился около двух недель. Мы проанализировали требования клиента, погрузились в специфику приложения и изучили устройства для сканирования меток. Технические устройства значительно отличались от обычных смартфонов, и мы спроектировали элементы интерфейса с учетом особенностей пользовательского опыта, условий эксплуатации и окружения.
После этого мы перешли к стадии разработки: в соответствии с ТЗ реализовали основные бизнес-процессы в приложении, интегрировали процесс чтения и записи c RFID-меток в приложение, реализовали API для передачи данных между приложением и системой.
Параллельно мы приступили к разработке алгоритма распознавания. Нашей задачей было создание и обучение нейронной сети для определения диаметра дерева и пиловочника по фотографии. Для её решения мы использовали два подхода.
В основу первого легли алгоритмы машинного зрения: выделение границ объектов и объединение их в контуры с дальнейшим анализом и фильтрацией этих контуров. Этот подход показал низкую эффективность из-за большого количества деталей на фото и сложности их анализа. Поэтому мы решили дополнить этот способ нейросетевым детектором границ. Он позволил повысить точность выделения границ и качество работы алгоритма в целом, однако мы всё ещё встречали трудности в некоторых случаях взаимного расположения объектов.
В ходе работы над проектом команда выдвинула гипотезу, что наиболее качественный результат сможет обеспечить полностью нейросетевой алгоритм, основанный на семантической сегментации объектов на фото. Однако его использование внушало два опасения. Во-первых, имеющихся у нас фото могло не хватить для качественного обучения нейросети. Во-вторых, был риск недостаточной скорости работы нейронной сети при высоком энергопотреблении самого устройства. Тем не менее, опасения не оправдались: эксперименты показали, что модель обучилась на имеющихся данных качественно, а потребление энергии на устройстве не превысило норму.
Особенности работы над проектом
Наибольшим вызовом для команды стала интеграция с RFID-сканером, в документации к SDK которого не было необходимого описания технических нюансов. Мы успешно справились с задачей благодаря опытным специалистам: знание hardware-технологий помогло им быстро разобраться в особенностях считывания меток.
По завершении проекта команда отметила, что задачи были интересными, а полученный в ходе работы опыт — уникальным. Мы проводили тестирование сканирования меток в полях — буквально: специалисты выезжали за город для проведения опытного теста в условиях, приближенных к условиям реального использования приложения на лесном производстве.
Результаты
Тесная коммуникация с командой клиента и налаженные внутренние процессы позволили нам завершить проект в срок. Клиент получил MVP мобильного приложения, аналогов которому на текущий момент нет на российском рынке, и приступил к проработке дальнейших задач.
Технологии
Kotlin, Kotlin Coroutines, Android SDK, Jetpack, Retrofit, OkHttp, Gson, Moshi, Room, SQLite, UHF RFID Reader SDK, Python, Django, PostgreSQL, OpenCV, PyTorch.