- Нейронные сети в Android, Google ML Kit и не только
- Как перенести нейросеть на мобильное устройство
- Нейросеть до конвертации.
- Конвертация нейросети.
- Как работает модель в tensorflow-lite
- Загрузка модели, выделение тензоров
- Прогнозирование, использование модели
- Перенос модели на android устройство (мобильный телефон)
- Создаем новый проект в Android Studio
- Теперь добавим в проект саму модель нейросети tf-lite
- Привяжем модель нейросети к android приложению
- Создадим .apk и перенесем его на мобильный телефон
- Искусственный интеллект на Андроид на русском: 5 лучших приложений
- Искусственный интеллект на Андроид и других мобильных ОС
- Приложения на основе ИИ для Андроид
- Заключение
Нейронные сети в Android, Google ML Kit и не только
Итак, вы разработали и натренировали свою нейронную сеть, для выполнения какой-то задачи (например то же распознавание объектов через камеру) и хотите внедрить ее в свое приложение на андроид? Тогда добро пожаловать под кат!
Для начала, следует понять, что андроид в данный момент умеет работать только с сетями формата TensorFlowLite, а это значит, нам необходимо провести какие-то манипуляции с исходной сетью. Предположим, у вас есть уже обученная сеть на фреймворке Keras или Tensorflow. Необходимо сохранить сетку в формате pb.
Начнем со случая, когда вы пишите на Tensorflow, тогда все чуть проще.
Если же вы пишете на Keras, нужно в начале файла, где вы обучаете сеть, создать новый объект сессии, сохранить ссылку на него, и передать в функцию set_session
Отлично, вы сохранили сеть, теперь нужно перевести ее в формат tflite. Для этого нам нужно запустить два небольших скрипта, первый «заморозит» сеть, второй уже переведет в нужный формат. Суть «заморозки» в том, что tf не хранит веса слоев в сохраненном файле pb, а сохраняет их в специальных чекпоинтах. Для последующей конвертации в tflite нужно, чтобы вся информация о нейронной сети была в одном файле.
Обратите внимание, что вам нужно знать имя выходного тензора. В tensorflow вы можете задавать его сами, в случае использования Keras — задаете имя в конструкторе слоя
В таком случае имя тензора обычно выглядит как «result/Softmax»
Если в вашем случае не так, можете найти имя следующим образом
Осталось запустить второй скрипт
Ура! Теперь у вас в папке есть модель TensorFlowLite, дело за малым — правильно интегрировать ее в ваше андроид приложение. Вы можете сделать это с помощью новомодного Firebase ML Kit, но есть и другой способ, о нем чуть позже. Добавляем зависимость в наш файл gradle
Теперь вам нужно решить, будете ли вы держать модель где-то у себя на сервере, либо поставлять с приложением.
Рассмотрим первый случай: модель на сервере. Первым делом не забываем добавить в манифест
Если вы используете модель, включенную в приложение локально, не забудьте добавить в build.gradle файл следующую запись для того, чтобы файл модели не сжимался
После чего, по аналогии с моделью в облаке, нашу локальную нейронку нужно зарегистрировать.
В коде выше предполагается, что ваша модель лежит в папке assets, если это не так, вместо
После чего создаем новые объекты FirebaseModelOptions и FirebaseModelInterpreter
Вы можете использовать одновременно как локальную, так и находящуюся на сервере модель. При этом, по умолчанию будет использоваться облачная, если она доступна, в противном случае локальная.
Почти все, осталось создать массивы для входных/выходных данных, и запустить!
Если же вы не хотите по каким-то причинам использовать Firebase, есть и другой способ, вызывать интерпретатор tflite и скармливать ему данные напрямую.
Добавляем в build/gradle строчку
Создаем интерпретатор и массивы
Кода в этом случае значительно меньше, как вы видите.
Вот и все, что нужно для использования вашей нейронной сети в андроид.
Источник
Как перенести нейросеть на мобильное устройство
В статье поговорим как обучить несложную CNN сеть с помощью tensorflow, конвертировать готовое с помощью tensoflow-lite и перенести на мобильное устройство под управлением android.
Описывается личный опыт автора, поэтому нет претензий на всеохватывающее руководство.
Нейросеть до конвертации.
Для старта возьмем не слишком сложную нейросеть, код которой приведен ниже:
Краткое пояснение по коду. После импорта пакетов tensorflow,numpy мы формируем модель нейросети. Модель представляет из себя только один слой и только один нейрон.
Сама структура модели представляет из себя два набора данных, в которых:
Данные наборы «укладываются» в формулу Y = 2X – 1. Таким образом, для каждого Y из набора прослеживается зависимость.
После формирования модели производится ее компиляция с оптимизатором sgd и функцией потерь mean_squared_error.
Далее в модель попадают наборы данных и производится обучение на протяжении 500 эпох
(model.fit(xs, ys, epochs=500).
*Нейросеть лучше обучать на железе помощнее либо в Google colab для ускорения процесса, так как 500 эпох могут занять до 2-3 часов времени.
И, наконец, модель проверяется путем подачи ей на вход числа 10.0. То есть мы пытаемся выяснить с помощью модели значение Y при X=10.0. В идеале, согласно формуле, Y должен быть 19.0. Но в итоге будет число, сильно приближенное по значению к 19.0.
Так работает созданная нейросеть. Именно ее мы и будем конвертировать и переносить на android устройство.
Конвертация нейросети.
Для целей переноса модели на мобильное устройство воспользуемся tensorflow-lite. Сам по себе tensorflow-lite представляется из себя набор утилит, преследующий две основные цели. Первая из которых — сделать из нейросети модель, приемлемую для мобильного устройства. Обычно под этим подразумевается уменьшение размера и сложности сети, что, в свою очередь, приводит к небольшому падению точности работы. Тем не менее это необходимый компромисс между аккуратностью работы нейросети и ее размерами на мобильном устройстве. Вторая цель — создание среды выполнения для различных мобильных платформ, включая android, ios, микроконтроллеры.
Важной чертой tensorflow-lite является то, что с ее помощью невозможно тренировать модель. Нейросеть должна быть сначала обучена с помощью tensorflow и далее конвертирована в формат tensorflow-lite.
Зачем вообще переносить нейросеть на мобильное устройство?
Вопрос риторический, но из аргументов «за» — приватность используемых данных и отсутствие необходимости использования сетей связи при работе, например, с облачными решениями.
Говоря о конвертации в приемлемый tensorflow-lite формат, вернемся к коду нейросети из предыдущего блока.
Необходимо сперва сохранить готовую модель:
В результате получится файл «model.pb».
Теперь очередь конвертации:
Далее сохраним сконвертированную модель в формате .tflite используя pathlib:
Готовую model.tflite модель можно использовать в различных окружениях, например, android или ios.
Как работает модель в tensorflow-lite
Загрузка модели, выделение тензоров
Загрузим модель в интерпретатор, выделим тензоры, которые будут использоваться для ввода данных в модель для прогнозирования, а затем прочитаем то, что выводит модель.
Здесь проявляется главное отличие tensorflow-lite от Tensorflow. Если во втором случае возможно просто использовать model.predict(что-то) и сразу получить результат, то в tensorflow-lite необходимо поработать с сходными и выходными тензорами, приводя свои данные для соответствия их формату.
Посмотрим как это выглядит:
В результате вывод будет следующим:
В выводе input_details необходимо обратить внимание на shape(размерность) — массив 1,1 и класс данных — numpy.float32. Эти параметры будут определять входные данные и их формат.
Используя данную информацию, определим Y для X=10.0:
В выводе output_details формат данных схож, поэтому ответ нейросети будет в виде [[y]], также как и [[x]]:
Прогнозирование, использование модели
Чтобы заставить интерпретатор выполнить прогнозирование, необходимо задать входной тензор со значением для прогнозирования:
Так как у нас очень простая модель, в которой есть только один параметр ввода, поэтому это input_details[0], к нему мы и обращаемся в индексе.
Затем мы вызываем интерпретатор с помощью метода invoke.
Теперь мы осуществим прогнозирование с помощью модели, используя выражение get_tensor:
Опять же, существует только один выходной тензор, поэтому он будет выглядеть как output_details[0].
В целом код выглядит следующим образом:
Где 10 — это входное значение или X, а 18.97 — предсказанная величина, близкая к 19 (формула нейросети та же Y=2X – 1).
Перенос модели на android устройство (мобильный телефон)
После создания модели нейросети и ее конвертации в формат tensorflow-lite,
создадим приложение для Android.
Для этих целей воспользуемся IDE — Android Studio, которая в особом представлении не нуждается.
Скачивание и установка Android Studio может занять время, поэтому, если с этим возникнут сложности, лучше обратиться к сторонним мануалам. Язык, который будет использоваться при создании нашего приложения — Kotlin.
Приложение, которое будет перенесено на android — это простая нейросеть, которая была создана и конвертирована выше по тексту. При вводе значения Х пользователем, нейросеть будет предсказывать Y, выводя результат на экране смартфона.
Создаем новый проект в Android Studio
Цепочка действий после запуска Android Studio следующая:
File → New → New Project→ Empty Activity
Далее заполним поля проекта, не забыв указать язык — Kotlin:
После нажатия Finish, Android Studio создаст проект.
*На картинке уже готовый проект, при создании дизайн выглядит иначе.
Заменим код, который там приведен на
Это сформирует внешний вид приложения.
Добавим зависимости Tensorflow lite
Нам нужны build.gradle файлы. Их в проекте два, и нужен тот, который содержит app в названии и расположен в директории app:
В этом файле, в конце, надо добавить зависимость tensorflow lite согласно установленной версии на ПК. В моем случае установлен «древний» tensorflow 1.9.0, поэтому добавлена эта зависимость —
*Как узнать версию tensorflow lite? Выполнить в cmd — pip freeze и посмотреть версию tensorflow либо через idle python — import tensorflow as tf; print(tf.__version__) .
В этом же файле также необходимо добавить:
Полностью файл build.gradle будет выглядеть так:
Теперь добавим в проект саму модель нейросети tf-lite
В папке main создадим папку assets и перенесем туда ранее сконвертированную модель —
Привяжем модель нейросети к android приложению
Откроем файл MainActivity.kt:
Перенесем в него
После этого, можно протестировать готовое приложение, нажав на кнопку Run ‘app’
Тестирование проведем в эмуляторе android устройства:
После ввода X, приложение выдаст значение Y, приближенное к расчетному значению по формуле Y=2X-1, то есть нейросеть работает.
Создадим .apk и перенесем его на мобильный телефон
Выберем Build ->Build bundle.
Android Studio сформирует приложение с расширением .apk, которое можно забрать из
\app\build\outputs\apk\debug и, подключив смартфон к ПК, перенести на смартфон.
В принципе, все, теперь простая нейросеть живет на смартфоне, занимая всего 10Мб.
- не конвертированная нейросеть — скачать
- конвертированная в tf-lite нейросеть — скачать
- apk приложение для android — скачать
Может быть интересно:
Источник
Искусственный интеллект на Андроид на русском: 5 лучших приложений
Еще каких-нибудь 9-10 лет назад искусственный интеллект на Анд ро ид — это был предел мечтаний. Да и вообще вопрос об искусственном интеллекте многих бы в то время поставил в ступор.
Но мы, современники, уже знаем многое об ИИ, даже если не работаем в сфере IT. Почему? Да потому что в руках многих из нас сейчас можно увидеть современный смартфон, внутри которого есть функции, построенные на искусственном интеллекте. И если вы не знали , что это именно искусственный интеллект, то сейчас узнаете.
Искусственный интеллект на Андроид и других мобильных ОС
ИИ для Андроид часто используется для распознавания каких-либо объектов на изображениях и не только. Типичным примером такого использования нейросети явля ю тся:
Приложения для камеры, которые могут идентифицировать объект или происходящую сцену. При определении предмета в некоторых приложениях выдается информация об этом предмете из Википедии. При идентификации сцен часто возможна автоподстройка оптимальных настроек: свет, яркость, цвет и т. д.
Всем знакомое распознавание лица владельца смартфона — это т ож е искусственный интеллект на Андроид. Сам процесс происходит таким образом: вас фотографирует фронтальная камера , и потом ваш снимок ИИ сравнивает с имеющимся вашим изображением по нескольким ключевым точкам. Если вы «похожи» на свое изображение, то вам разблокируется телефон, если нет — тогда вы введете пароль вручную. А при этом система «внесет» изменения вашей внешности для будущей разблокировки ; это актуально, если вы начали носить очки, усы, бороду и др.
Распознавание речи. Всем известный «Окей , Гугл!» — это тоже ИИ для Андроид.
Онлайн — переводчики, тот же Google Translate Online. Или другие приложения, способные в онлайн — режиме переводить вашу речь или текст.
Помимо этого , еще есть более «тонкие» устанавливаемые приложения для определения движения объектов онлайн, распознавания жестов, автоматической настройки звука, дополненной реальности, систем навигации и др.
Помимо «видимых» моментов в вашем смартфоне, ИИ применяется для внутренней оптимизации производительности телефона. К примеру, когда вы читаете новости или просто слушаете музыку , телефону не нужно задействовать все свои ресурсы, тогда ИИ для этой работы включает несколько низкопроизводительных, но энергосберегающих ядер смартфона. Ну а если вы решили поиграть в какую-то игрушку, то ИИ может задействовать высокопроизводительные ядра смартфона, которые более требовательны к энергоресурсам.
Первое внедрение искусственного интеллекта непосредственно в систему смартфона на Андроид осуществила компания Huawei в 2017 году. С тех пор это стало нормой для современных смартфонов.
Перспективы внедрения искусственного интеллекта в смартфоны просто огромны, многие гиганты телефонной индустрии лишь понемногу приоткрывают «завесу». К примеру , в скором будущем будет внедрено такое свойство:
Фронтальная камера будет проводить постоянный анализ лица своего владельца, чтобы понимать его состояние, настроение и считывать эмоции. Далее на основе этих данных какой-нибудь помощник будет давать рекомендации, что и как лучше сделать, чтобы улучшить состояние владельца.
Это будет в будущем, а пока давайте посмотрим на 5 самых интересных приложений для Андроид, которые используют искусственный интеллект.
Приложения на основе ИИ для Андроид
Предлагаем посмотреть ТОП-5 интересных приложений для Андроид, которые используют ИИ:
JAESA. Это электронная женщина в вашем смартфоне за небольшие деньги. Она умеет: размышлять, выслушивать, давать советы, оказывать помощь при работе со смартфоном, а также самообучаться. Помимо этого , она способна делать простые вещи: отслеживать календарь, контролировать подключение по Wi — Fi или Bluetooth , переводить текст на нужный язык и др.
Moments. Тем , кто любит делать по пар е сотен фото в день, а потом выбирать , какие из них лучшие, эта программа очень пригоди тся . Она способна выбрать лучшие фотографии из всех сделанных, также она может отослать их вашим друзьям или опубликовать в Фейсбуке. Помимо этого , она способна распознавать лица на фото. К примеру, вы можете задать фото знакомого человека, а программа отберет все фото, где изображен этот человек.
Pic ai. Программа с ИИ для А ндро и д-камеры. Она способна распознать объекты и легко различает происходящую сцену, поэтому может предложить лучшие из возможных настроек съемки.
Musixmatch. Если вы любите слушать музыку и заучивать песни, то это приложение может вам помочь. Это плеер, который способен найти тексты к песням, которые он проигрывает. Если нужно, то он переведет вам текст песни с иностранного языка. Людям, которые играли в казино со смартфона или планшета через браузер, использование отдельного приложения способно существенно облегчить жизнь. Поэтому, если не хочешь расставаться со своим любимым гаджетом, и иметь доступ с любого устройства, переходи в онлайн казино пин ап и наслаждайся круглосуточным доступом к лучшим игровым слотам и оперативным выводом денег. В казино Пин Ап существуют определенные лимиты на денежные выплаты, ознакомиться с ними можно в тематическом разделе.
AM droid. Отследите свой сон. Это «умный» будильник, который не только точно вас разбудит, но и подскажет, что вам пора ложиться спать, чтобы вы успели выспаться.
Заключение
Искусственный интеллект , на самом деле , уже очень плотно зашел в наши Андроид- смартфоны. Приложений, которые используют нейросеть , уже очень много. В обозримом будущем приложений без нейросети просто не будет. ИИ плотно займет свою нишу , хотим мы этого или нет.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник