Нейронные сети для андроида

Нейронные сети в 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.
Описывается личный опыт автора, поэтому нет претензий на всеохватывающее руководство.

Читайте также:  Android tv launcher mockup

Нейросеть до конвертации.

Для старта возьмем не слишком сложную нейросеть, код которой приведен ниже:

Краткое пояснение по коду. После импорта пакетов 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.

Читайте также:  Sonic debug mode 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. Почему? Да потому что в руках многих из нас сейчас можно увидеть современный смартфон, внутри которого есть функции, построенные на искусственном интеллекте. И если вы не знали , что это именно искусственный интеллект, то сейчас узнаете.

Искусственный интеллект на Андроид и других мобильных ОС

ИИ для Андроид часто используется для распознавания каких-либо объектов на изображениях и не только. Типичным примером такого использования нейросети явля ю тся:

Приложения для камеры, которые могут идентифицировать объект или происходящую сцену. При определении предмета в некоторых приложениях выдается информация об этом предмете из Википедии. При идентификации сцен часто возможна автоподстройка оптимальных настроек: свет, яркость, цвет и т. д.

Всем знакомое распознавание лица владельца смартфона — это т ож е искусственный интеллект на Андроид. Сам процесс происходит таким образом: вас фотографирует фронтальная камера , и потом ваш снимок ИИ сравнивает с имеющимся вашим изображением по нескольким ключевым точкам. Если вы «похожи» на свое изображение, то вам разблокируется телефон, если нет — тогда вы введете пароль вручную. А при этом система «внесет» изменения вашей внешности для будущей разблокировки ; это актуально, если вы начали носить очки, усы, бороду и др.

Читайте также:  Android view ip address

Распознавание речи. Всем известный «Окей , Гугл!» — это тоже ИИ для Андроид.

Онлайн — переводчики, тот же Google Translate Online. Или другие приложения, способные в онлайн — режиме переводить вашу речь или текст.

Помимо этого , еще есть более «тонкие» устанавливаемые приложения для определения движения объектов онлайн, распознавания жестов, автоматической настройки звука, дополненной реальности, систем навигации и др.

Помимо «видимых» моментов в вашем смартфоне, ИИ применяется для внутренней оптимизации производительности телефона. К примеру, когда вы читаете новости или просто слушаете музыку , телефону не нужно задействовать все свои ресурсы, тогда ИИ для этой работы включает несколько низкопроизводительных, но энергосберегающих ядер смартфона. Ну а если вы решили поиграть в какую-то игрушку, то ИИ может задействовать высокопроизводительные ядра смартфона, которые более требовательны к энергоресурсам.

Первое внедрение искусственного интеллекта непосредственно в систему смартфона на Андроид осуществила компания Huawei в 2017 году. С тех пор это стало нормой для современных смартфонов.

Перспективы внедрения искусственного интеллекта в смартфоны просто огромны, многие гиганты телефонной индустрии лишь понемногу приоткрывают «завесу». К примеру , в скором будущем будет внедрено такое свойство:

Фронтальная камера будет проводить постоянный анализ лица своего владельца, чтобы понимать его состояние, настроение и считывать эмоции. Далее на основе этих данных какой-нибудь помощник будет давать рекомендации, что и как лучше сделать, чтобы улучшить состояние владельца.

Это будет в будущем, а пока давайте посмотрим на 5 самых интересных приложений для Андроид, которые используют искусственный интеллект.

Приложения на основе ИИ для Андроид

Предлагаем посмотреть ТОП-5 интересных приложений для Андроид, которые используют ИИ:

JAESA. Это электронная женщина в вашем смартфоне за небольшие деньги. Она умеет: размышлять, выслушивать, давать советы, оказывать помощь при работе со смартфоном, а также самообучаться. Помимо этого , она способна делать простые вещи: отслеживать календарь, контролировать подключение по Wi — Fi или Bluetooth , переводить текст на нужный язык и др.

Moments. Тем , кто любит делать по пар е сотен фото в день, а потом выбирать , какие из них лучшие, эта программа очень пригоди тся . Она способна выбрать лучшие фотографии из всех сделанных, также она может отослать их вашим друзьям или опубликовать в Фейсбуке. Помимо этого , она способна распознавать лица на фото. К примеру, вы можете задать фото знакомого человека, а программа отберет все фото, где изображен этот человек.

Pic ai. Программа с ИИ для А ндро и д-камеры. Она способна распознать объекты и легко различает происходящую сцену, поэтому может предложить лучшие из возможных настроек съемки.

Musixmatch. Если вы любите слушать музыку и заучивать песни, то это приложение может вам помочь. Это плеер, который способен найти тексты к песням, которые он проигрывает. Если нужно, то он переведет вам текст песни с иностранного языка. Людям, которые играли в казино со смартфона или планшета через браузер, использование отдельного приложения способно существенно облегчить жизнь. Поэтому, если не хочешь расставаться со своим любимым гаджетом, и иметь доступ с любого устройства, переходи в онлайн казино пин ап и наслаждайся круглосуточным доступом к лучшим игровым слотам и оперативным выводом денег. В казино Пин Ап существуют определенные лимиты на денежные выплаты, ознакомиться с ними можно в тематическом разделе.

AM droid. Отследите свой сон. Это «умный» будильник, который не только точно вас разбудит, но и подскажет, что вам пора ложиться спать, чтобы вы успели выспаться.

Заключение

Искусственный интеллект , на самом деле , уже очень плотно зашел в наши Андроид- смартфоны. Приложений, которые используют нейросеть , уже очень много. В обозримом будущем приложений без нейросети просто не будет. ИИ плотно займет свою нишу , хотим мы этого или нет.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Оцените статью