Эта статья переведена с официального сайта tensorflow и добавит несколько собственных практических объяснений, чтобы вы могли быстро запустить первую демо-версию мобильного машинного обучения.
Чтобы вы начали работать с tensorflow на Android, мы рассмотрим два способа создания нашего мобильного примера Tensorflow и развертывания его на устройстве Android.
Почему стоит выбрать один из этих методов?
Самый простой способ использовать Tensorflow на Android — использовать Android Studio. Если вы не планируете настраивать сборку Tensorflow или хотите использовать редактор Android Studio и другие функции для создания приложения и просто хотите добавить TensorFlow, мы рекомендуем использовать Android Studio.
Если вы используете пользовательские операции или у вас есть другие причины для создания Tensorflow с нуля, прокрутите вниз и ознакомьтесь с нашим руководством по использованию.BazelИнструкции по сборке демо.
Создайте образец с помощью Android Studio.
Предварительные условия
Если вы еще этого не сделали, сделайте следующие две вещи:
- УстановитьAndroid Studio, просто следуйте вводу URL. (Примечание: самостоятельно найдите и создайте среду разработки для Android)
- Клонируйте репозиторий Tensorflow с Github.
git clone GitHub.com/tensorflow/…
Построить
1. Откройте Android Studio, на экране приветствия выберитеOpen an existing Android Studio project.
2. Затем найдите выбранный вами складtensorflow/examples/androidкаталог и нажмите OK, чтобы импортировать его в рабочую область.
Если он попросит вас выполнить синхронизацию Gradle, нажмите «ОК».
Возможно, вам потребуется установить различные платформы и инструменты, просто нажмите «Установить».
Примечание. Установите все, чего не хватает, чтобы обеспечить доступность всех необходимых сред.
3. Откройте файл build.gradle под модулем android в проекте, найдите переменную nativeBuildSystem и установите для нее значение none, если она еще не установлена.
// set to 'bazel', 'cmake', 'makefile', 'none'
def nativeBuildSystem = 'none'
Как показано ниже:
4. Нажмите кнопку запуска или используйтеRun-> Run 'android'
из верхнего меню.
Если он попросит вас использоватьInstant Run, нажмитеProceed Without Instant Run.
Кроме того, вам необходимо включить опцию отладки разработки на устройстве, чтобы иметь возможность подключить устройство Android.
Добавьте Tensorflow в свое приложение с помощью Android Studio.
Самый простой способ — добавить следующую строку в файл сборки Gradle:
allprojects {
repositories {
jcenter()
}
}
dependencies {
compile 'org.tensorflow:tensorflow-android:+'
}
Это автоматически загрузит и установит в ваш проект последнюю стабильную версию Tensorflow в виде AAR.
Создание демонстрации с помощью Bazel
Другой способ использования Tensorflow на Android — использоватьBazelСоздайте apk и загрузите его на свое устройство с помощью ADB. Это требует некоторых знаний о системе сборки и инструментах разработчика Android, но здесь мы познакомим вас с основами.
- Во-первых, следуйте нашим инструкциямУстановить из исходников. Это будет знать, что вы проходитеУстановить БазельИ клонируйте код Tensorflow.
- Загрузите Android SDK и NDK, если их еще нет в вашей среде. Вам потребуется как минимум версия 12b NDK, версия 23 и выше SDK.
- В исходном коде Tensorflow обновите файл WORDSPACE, указав локальные пути SDK и NDK, включая
и .
В частности, как показано на рисунке ниже:
- Запустите Bazel, чтобы собрать демонстрационную версию
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
- Используйте ADB для установки apk на ваше устройство
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
На ваше устройство будут установлены три приложения, все из которых являются частью демонстрации Tensorflow. Дополнительные сведения см. в примере приложения для Android.
Давайте посмотрим на эффект от его установки на мобильный телефон, как показано на следующем рисунке:
Примечание: на официальном сайте написано, что есть три примера, но когда я его запустил, я нашел еще один TF Speech, который должен быть приложением, связанным с распознаванием речи, вы можете попробовать его.
Пример приложения для Android
Пример кода Android — это единый проект, в котором создаются и устанавливаются три примера приложений, использующих один и тот же базовый код. Все примеры приложений получают видеовход с камеры телефона:
- TF ClassifyИспользуйте модель Inception v3 для маркировки объектов, выполненных классами из Imagenet. Имея всего 1000 категорий, Imagenet пропускает большинство предметов повседневного обихода и включает в себя множество вещей, с которыми невозможно столкнуться в реальной жизни, поэтому результаты, как правило, очень интересны. Например, нет категории для «людей», вместо этого он имеет тенденцию угадывать вещи, которые обычно ассоциируются с фотографиями людей, такие как ремни безопасности или кислородные маски. Если вы хотите настроить этот пример для идентификации объектов, которые вам нужны, вы можете использоватьTensorflow for Poets codelabВ качестве примера для обучения модели на собственных данных.
- TF DetectИспользуя мультиблочную модель, мы пытаемся нарисовать ограничивающую рамку в положении задачи в камере. Для каждого результата обнаружения поля достоверно аннотируются. Результаты могут быть не идеальными, поскольку этот вид обнаружения объектов все еще является предметом активных исследований. Демонстрация также включает оптическое отслеживание, которое запускается чаще, чем вывод Tensorflow, когда объекты перемещаются между кадрами. Это улучшает взаимодействие с пользователем, так как частота кадров заметно выше, но также позволяет оценить, какие поля указывают на одни и те же объекты между кадрами, что важно для подсчета объектов во времени.
- TF StylizeРеализуйте на камере алгоритм передачи стиля в реальном времени. Вы можете выбрать, какой стиль использовать, и смешать их, используя палитру внизу экрана, или переключить разрешение обработки на более высокое или более низкое разрешение.
Примечание: вы будете сбиты с толку, когда посмотрите на перевод.Просто запустите демонстрацию и посмотрите эффект, чтобы увидеть, для чего используются три примера.
Библиотека рассуждений Android
Поскольку приложения для Android должны быть написаны на Java, а ядро Tensorflow написано на C++, у Tensorflow есть JNI для их связи. Его интерфейс предназначен только для логических выводов, поэтому он предоставляет возможность загружать графики, задавать входные данные и запускать модель для вычисления определенных выходных данных. ты сможешьTensorFlowInferenceInterface.javaПолная документация для минимального набора методов в .
В этих демонстрациях используется этот интерфейс, поэтому они являются хорошим местом для поиска примеров использования. ты сможешьci.tensorflow.orgЗагрузите предварительно созданный двоичный файл jar.