Цель. Целью этой статьи является знакомство с машинным обучением на Android.

Шаги: мы выполним следующие шаги, которые кратко расскажут о настройке модели машинного обучения в вашем приложении для Android.

  • Обучите простую модель tflite ML, которая решает уравнение y = 2 * x — 1
  • Загрузите эту модель в Firebase
  • Создайте приложение для Android
  • Свяжите приложение Android с Firebase, чтобы загрузить модель
  • Добавьте код в приложение Android для загрузки модели из firebase
  • Используйте модель ML в своем приложении для Android для вывода y для предоставления x

«Начнем»

Шаг 1. Обучите модель машинного обучения tflite, которая решает уравнение y = 2*x — 1

На шаге 1 мы обучим модель линейной регрессии, которая решает уравнение, и преобразуем ее в тип tflite, чтобы ее можно было объединить и использовать в приложениях Android. Шаги, необходимые для обучения модели машинного обучения

  • Создайте новый файл Google Colab
  • Импортируйте библиотеки Python:

  • Сгенерируйте случайные значения x и y, которые будут использоваться при обучении модели:

  • Обучите модель с помощью tensorflow keras

Преобразовать модель в tflite

Сохраните модель в файловой системе, чтобы ее можно было скопировать. В этом примере модель сохраняется на Google Диске.

Полный URL-адрес файла: https://github.com/shtomar-adb/ML-Android/blob/main/Simple_Equation.ipynb

Шаг 2. Настройка Firebase и загрузка модели в Firebase

Второй шаг — загрузить обученную модель в Firebase. Приложение для Android загрузит модель из Firebase и будет использовать ее для прогнозирования. Выполните следующие действия, чтобы загрузить модель в Firebase.

  • Создайте проект на https://console.firebase.google.com/.
  • Откройте проект -> Перейти к Машинному обучению
  • Перейти на пользовательскую вкладку
  • Дайте уникальное имя вашей модели.
  • Импортируйте сохраненную модель и опубликуйте ее.

После публикации модель tflite готова к использованию в приложении для Android.

3. Настройка Android-приложения

  • Загрузите файл «google-services.json» из проекта Firebase, созданного на предыдущем шаге, и добавьте его в «приложение» основной модели.
  • Добавьте следующие зависимости Firebase и Tensorflow в файл gradle на уровне модуля. Зависимость Firebase будет использоваться для загрузки модели tflite в приложение. Зависимость Tensorflow будет использоваться для взаимодействия с моделью tflite.
implementation platform('com.google.firebase:firebase-bom:30.3.1')
implementation 'com.google.firebase:firebase-ml-modeldownloader'
implementation 'org.tensorflow:tensorflow-lite:2.3.0'
  • Загрузите модель tflite в соответствующее место в вашем приложении. В данном примере он загружается в MainActivity сразу после запуска приложения. Фрагмент кода для загрузки модели.
val conditions = CustomModelDownloadConditions.Builder()
    .requireWifi()
    .build()
FirebaseModelDownloader.getInstance()
    .getModel("Equation-model", DownloadType.LOCAL_MODEL, conditions)
    .addOnCompleteListener {it: Task<CustomModel> ->
      val customModel = it.result
      //Use custom model for interpretations
}
  • Используйте пользовательскую модель для выполнения интерпретаций. В нашем случае модель обучена решать линейное уравнение y = 2*x — 1. Мы передадим x в модель в качестве входных данных и должны получить результат y. Фрагмент кода для интерпретации.
//Inference code
val interpreter = Interpreter(it.result.file!!)

val inputVal = FloatArray(1)
inputVal[0] = 10f
val output = Array(1) {
    FloatArray(
        1
    )
}
interpreter.run(inputVal, output)
Log.d("EQUATION MODEL:::", "The output from the model for the input 10 is:: ${output[0][0]}")

4. Проект Android с полным кодом

Пожалуйста, ознакомьтесь с проектом Android с полной реализацией здесь: https://github.com/shtomar-adb/ML-Android.