Данная работа посвящена решению проблемы интеграции нейросетевых моделей в мультиплатформенные мобильные приложения. Шаги, которые были выполнены в ходе работы:
Исследованы существующие на рынке решения.
Проведен анализ особенностей API библиотеки Tensorflow Lite на платформах Android и iOS.
Сформированы требования к проекту.
Разработан функционально законченный фрагмент кода (модуль) на языке Kotlin для интеграции Tensorflow Lite.
Разработано шахматное мультиплатформенное приложение на языке Kotlin.
Проведено тестирование разработанного решения. Разработка выполнена в среде Android Studio на языке программирования Kotlin. В ходе анализа API TensorFlow Lite были сформулированы требования и выбраны подходы. Спроектирован API для разработанного решения. Разработан модуль для интеграции TensorFlow Lite в Kotlin Multiplatform, после чего проведено функциональное и модульное тестирование с использованием юнит-тестирования. В результате, используя современные инструменты, было разработано решение, удовлетворяющее сформулированным требованиям.
СОДЕРЖАНИЕ
СПИСОК ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ....................................................5
ВВЕДЕНИЕ..............................................................................................................6
1. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ...................................................................8
1.1. Обзор технологий........................................................................................8
1.2. Актуальность темы....................................................................................10
1.3. Анализ предметной области.....................................................................12
2. ЦЕЛЬ ИССЛЕДОВАНИЯ.................................................................................14
3. ИСПОЛЬЗУЕМЫЕ ТЕХНОЛОГИИ И СРЕДСТВА РАЗРАБОТКИ..............15
3.1. Языки программирования.........................................................................15
3.2. Kotlin Multiplatform и используемые плагины.......................................15
3.3. Архитектура приложения и логика..........................................................16
3.4. Машинное обучение..................................................................................16
3.5. Среды и инструменты разработки...........................................................17
4. ПРОЕКТИРОВАНИЕ........................................................................................18
4.1. Анализ API TensorFlow Lite на iOS и Android........................................18
4.2. Требования.................................................................................................23
4.3. Организация вызовов нативных библиотек в Kotlin Multiplatform......24
4.4. API нейросетевого модуля........................................................................26
5. РАЗРАБОТКА.....................................................................................................27
5.1. Общий код..................................................................................................28
5.1.1. Интерфейс Interpreter........................................................................28
5.1.2. Конфигурация инференса: InterpreterOptions и Hardware.............30
5.1.3 Представление данных: Tensor..........................................................32
5.2. Платформенный код..................................................................................37
5.2.1 Android-реализация............................................................................37
5.2.2. iOS-реализация..................................................................................43
6. ТЕСТИРОВАНИЕ..............................................................................................50
6.1. Unit-тестирование сериализации и десериализации тензоров..............50
6.2. Ручное тестирование в приложении........................................................51
6.2.1. Тестирование на платформе Android...............................................53
6.2.2. Тестирование на платформе iOS......................................................55
6.3. Сравнение производительности на Android и iOS используя CPU и GPU....................................................................................................................57
ЗАКЛЮЧЕНИЕ......................................................................................................59
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.............................................61
Приложение 1.........................................................................................................63
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. GitHub. Репозиторий moko-tensorflow – [Электронный ресурс] – URL: https://
2. Google AI for Developers. Вопрос по интеграции KMP и TFL – [Электронный ресурс] – URL: https://
3. Google Trends. Динамика популярности поискового запроса Kotlin Multiplatform – [Электронный ресурс]. – URL:
4. JetBrains. Динамика количества KMP библиотек – [Электронный ресурс] – URL: https://
5. Reddit. Supervised Learning vs Reinforcement Learning – [Электронный ресурс]
всего 10 источников