Herramientas de desarrollo para Android

TensorFlow Lite proporciona una serie de herramientas para integrar modelos en apps para Android. En esta página, se describen las herramientas de desarrollo para compilar apps con Kotlin, Java y C++, así como la compatibilidad con el desarrollo de TensorFlow Lite en Android Studio.

Herramientas para compilar con Kotlin y Java

En las siguientes secciones, se describen las herramientas de desarrollo para TensorFlow Lite que usan los lenguajes Kotlin y Java.

Biblioteca de TensorFlow Lite

Usa la biblioteca de TensorFlow Lite en tu app para Android. Para ello, agrega el AAR alojado en MavenCentral a tu proyecto de desarrollo.

Puedes especificar esto en tus dependencias build.gradle de la siguiente manera:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:+'
}

Si usas instantáneas nocturnas, asegúrate de agregar el repositorio de instantáneas de Sonatype a tu proyecto.

Este AAR incluye objetos binarios para todas las ABI de Android. Para reducir el tamaño del objeto binario de tu aplicación, incluye solo las ABI que necesitas admitir.

A menos que orientes tu app a un hardware específico, debes omitir las ABI de x86, x86_64 y arm32 en la mayoría de los casos. Puedes configurar esto con la siguiente configuración de Gradle. Específicamente, solo incluye armeabi-v7a y arm64-v8a, y debería abarcar la mayoría de los dispositivos Android modernos.

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

Para obtener más información sobre abiFilters, consulta ABI de Android en la documentación del NDK de Android.

Biblioteca de compatibilidad de TensorFlow Lite

La biblioteca de compatibilidad de Android para TensorFlow Lite facilita la integración de modelos en tu aplicación. Proporciona APIs de alto nivel que ayudan a transformar los datos de entrada sin procesar en el formato que requiere el modelo y a interpretar el resultado del modelo, lo que reduce la cantidad de código estándar requerido.

Admite formatos de datos comunes para entradas y salidas, incluidas imágenes y arreglos. También proporciona unidades de procesamiento previo y posterior que realizan tareas como cambiar el tamaño de las imágenes y recortarlas.

Usa la biblioteca de compatibilidad en tu app para Android con la biblioteca de compatibilidad AAR de TensorFlow Lite alojada en MavenCentral.

Puedes especificar esto en tus dependencias build.gradle de la siguiente manera:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

Si usas instantáneas nocturnas, asegúrate de agregar el repositorio de instantáneas de Sonatype a tu proyecto.

Si quieres obtener instrucciones para comenzar, consulta la biblioteca de compatibilidad de Android de TensorFlow Lite.

Versiones mínimas del SDK de Android para bibliotecas

Biblioteca minSdkVersion Requisitos del dispositivo
tensorflow-lite 21 -
tensorflow-lite-gpu 21 OpenCL o GLES 3.1 (por lo general, solo disponible en el nivel de API 21 y versiones posteriores)
tensorflow-lite-support 21 -
tensorflow-lite-metadata 21 -

Uso de Android Studio

Además de las bibliotecas de desarrollo descritas anteriormente, Android Studio también admite la integración de modelos de TensorFlow Lite, como se describe a continuación.

Vinculación de modelos de AA de Android Studio

La función de vinculación de modelos de AA de Android Studio 4.1 y versiones posteriores te permite importar archivos de modelo .tflite a tu app para Android existente y generar clases de interfaz para facilitar la integración de tu código con un modelo.

Sigue estos pasos para importar un modelo de TensorFlow Lite (TFLite):

  1. Haz clic con el botón derecho en el módulo que quieres usar el modelo de TFLite o haz clic en File > New > Other > TensorFlow Lite Model.

  2. Selecciona la ubicación de tu archivo de TensorFlow Lite. Ten en cuenta que las herramientas configuran la dependencia del módulo con la vinculación del modelo de AA y agrega automáticamente todas las dependencias necesarias al archivo build.gradle de tu módulo de Android.

  3. Haz clic en Finish para comenzar el proceso de importación. Cuando finaliza la importación, la herramienta muestra una pantalla que describe el modelo, incluidos los tensores de entrada y salida.

  4. Para comenzar a usar el modelo, selecciona Kotlin o Java, y copia y pega el código en la sección Sample Code.

Para volver a la pantalla de información del modelo, haz doble clic en el modelo de TensorFlow Lite en el directorio ml de Android Studio. Para obtener más información sobre el uso de la función de vinculación de modos de Android Studio, consulta las notas de la versión de Android Studio. Para obtener una descripción general del uso de la vinculación de modelos en Android Studio, consulta las instructions de ejemplo de código.

Herramientas para compilar con C y C++

Las bibliotecas de C y C++ para TensorFlow Lite están destinadas principalmente a los desarrolladores que usan el kit de desarrollo nativo (NDK) de Android para compilar sus apps. Existen dos maneras de usar TFLite a través de C++ si compilas tu app con el NDK:

API de TFLite C

El uso de esta API es el enfoque recomendado para los desarrolladores que usan el NDK. Descarga el archivo AAR de TensorFlow Lite alojado en MavenCentral, cámbiale el nombre a tensorflow-lite-*.zip y descomprímelo. Debes incluir los cuatro archivos de encabezado en las carpetas headers/tensorflow/lite/ y headers/tensorflow/lite/c/, y la biblioteca dinámica libtensorflowlite_jni.so correspondiente en la carpeta jni/ de tu proyecto del NDK.

El archivo de encabezado c_api.h contiene documentación básica sobre el uso de la API de TFLite para C.

API de TFLite para C++

Si deseas usar TFLite a través de la API de C++, puedes compilar las bibliotecas compartidas de C++:

armeabi-v7a de 32 bits:

bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so

Arm64-v8a de 64 bits:

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

En la actualidad, no hay una manera directa de extraer todos los archivos de encabezado necesarios, por lo que debes incluir todos los archivos de encabezado en tensorflow/lite/ del repositorio de TensorFlow. Además, necesitarás archivos de encabezado de FlatBuffers y Abseil.