Искусственный интеллектПродвинутыйСкоро
Курс Мобильный ИИ
Нейросеть внутри Android-приложения: Kotlin и LiteRT, квантование, замеры латентности и размера — модель работает без сервера.
Курс готовится к публикации
Материалы курса написаны и проверены, идёт подготовка к выходу на сайте: программа ниже — настоящая. Открытые курсы можно читать уже сейчас, а о запуске этого напишите — ответим, когда он появится.
- Модулей
- 12
- Ак. часов
- 108
- Разделов
- 103
Что нужно знать заранее. опыт программирования на любом языке (переменные, функции, классы, циклы) и работа в терминале; Kotlin и Android Studio даются в курсе, Python в модулях 4 и 5 нужен на базовом уровне.
Программа курса
12 модулей; каждый — полноценное занятие с теорией, листингами, практикой и домашним заданием.
- 1
Зачем считать нейросеть на самом устройстве
Почти всё, что сегодня называют искусственным интеллектом в телефоне, в действительности работает не в телефоне…
Сервер против устройстваЧто умеет телефонИнструменты и гигабайтыЭмулятор или реальное устройствоПервый проектСборка из терминала
- 2
Устройство Android-проекта
В модуле 1 мы установили инструменты, создали проект по шаблону и увидели строку BUILD SUCCESSFUL…
Дерево проектаGradle и каталог версийKotlin внутри AGPМанифестРесурсы и assetsЖурнал и отладка
- 3
Интерфейс на Compose и разрешения
В модуле 2 мы разобрали проект по файлам: где находится код, что делает Gradle, зачем нужен манифест…
Интерфейс как функцияСостояние и перерисовкаColumn, Row, BoxРазрешения в рантаймеКартинка из галереиЭкран определителя
- 4
Форматы моделей и квантование
Три предыдущих модуля обходились без самой нейросети. Мы собрали рабочее место (модуль 1), разобрали устройство Android-проекта (модуль 2), научились рисовать…
Модель как файлТензор и формаВнутри файла tflitefloat32, float16, int8Три числа моделиГде брать модели
- 5
Конвертация модели в формат устройства
В модуле 4 разбирались чужие модели: содержимое файла tflite, его вход и выход, отличие float32 от int8 и понятие квантования. Все модели там были скачанными…
Зачем конвертацияОкружение PythonМодель на KerasКонвертер TFLiteConverterКалибровочный наборПроверка модели
- 6
Первый инференс на устройстве
К этому моменту у нас есть две половины, которые до сих пор не были соединены. С одной стороны — приложение: проект собирается, экран нарисован, картинка выбирается…
Модель в assetsПодключение LiteRTЗагрузка и буферыНормализация входаЛогиты и вероятностиОсвобождение ресурсов
- 7
Готовые решения вместо ручного инференса
В модуле 6 мы прошли путь от файла модели до слова на экране полностью самостоятельно…
Когда ручной инференс не нуженПодключение MediaPipe TasksКлассификация изображенийОбнаружение объектовМетки в метаданныхMediaPipe против ручного LiteRT
- 8
Камера и модель в реальном времени
До сих пор модель работала по нажатию кнопки. Пользователь выбирал картинку, приложение считало один раз и показывало ответ…
CameraX и варианты использованияКадр и обязательный closeПоворот кадраФормат кадра и растрОчередь кадровКадры в секунду
- 9
Текст, распознавание и речь офлайн
До этого модуля вся работа шла с картинками и числами. Мы передавали в модель растровое изображение, получали список вероятностей и называли класс словом…
Текст без интернетаML Kit и распознаваниеБлоки, строки, элементыЛатиница и кириллицаКлассификация текстаГраницы распознавания речи
- 10
Ускорители и производительность
К этому моменту приложение работает: модель лежит внутри, картинка или кадр превращаются во вход, ответ появляется на экране…
Честный замерМедиана и разбросПроцессор, графика, нейронный блокПрогрев и первый вызовПолный путь кадраНагрев и троттлинг
- 11
Размер приложения и доставка модели
К этому моменту приложение работает целиком. Экран нарисован (модуль 3), модель лежит внутри и считает на процессоре телефона (модуль 6), готовые задачи подключены…
Из чего складывается APKЧетыре архитектурыМодель в assets и отображение в памятьЗагрузка после установкиОбновление без релизаВерсия и контрольная сумма
- 12
Итоговый проект: офлайн-определитель с историей
Одиннадцать модулей мы собирали приложение по частям. В модуле 3 появился экран, в модуле 6 — первый инференс, в модуле 7 — готовые задачи MediaPipe, в модуле 8 —…
Постановка задачиАрхитектура приложенияКамера и распознаваниеИстория в RoomПроверка офлайнСборка и размер