Path: blob/master/site/es-419/lite/guide/build_ios.md
25118 views
Generar builds de TensorFlow Lite para iOS
Este documento describe cómo generar la librería de TensorFlow Lite para iOS por su cuenta. Normalmente, no necesita generar localmente la librería TensorFlow Lite para iOS. Si sólo desea usarla, la forma más sencilla es usar las versiones estables o nocturnas precompiladas de los CocoaPods de TensorFlow Lite. Consulte el Inicio rápido de iOS para más detalles sobre cómo usarlas en sus proyectos iOS.
Generación local
En algunos casos, es posible que desee usar una compilación local de TensorFlow Lite, por ejemplo, cuando desee realizar cambios locales en TensorFlow Lite y analizar esos cambios en su app iOS o prefiera usar un framework estático en lugar del dinámico que le proporcionamos. Para crear un framework universal iOS para TensorFlow Lite localmente, necesita construirlo usando Bazel en una máquina macOS.
Instale Xcode
Si aún no lo ha hecho, tendrá que instalar Xcode 8 o posterior y sus herramientas, usando xcode-select
:
Si se trata de una nueva instalación, deberá aceptar el acuerdo de licencia para todos los usuarios con el siguiente comando:
Instale Bazel
Bazel es el principal sistema de compilación para TensorFlow. Instale Bazel siguiendo las instrucciones de la página web de Bazel. Asegúrese de elegir una versión entre _TF_MIN_BAZEL_VERSION
y _TF_MAX_BAZEL_VERSION
en el archivo configure.py
en la raíz del repositorio tensorflow
.
Configure WORKSPACE y .bazelrc
Ejecute el script ./configure
en el directorio raíz de TensorFlow checkout, y responda "Sí" cuando el script le pregunte si desea generar TensorFlow con soporte para iOS.
Genere el framework dinámico TensorFlowLiteC (recomendado)
Nota: Este paso no es necesario si (1) está usando Bazel para su app, o (2) sólo quiere analizar cambios locales en las API de Swift u Objective-C. En dichos casos, pase a la sección siguiente Utilice en su propia aplicación.
Una vez que Bazel esté correctamente configurado con soporte para iOS, puede generar el framework TensorFlowLiteC
con el siguiente comando.
Este comando generará el archivo TensorFlowLiteC_framework.zip
bajo el directorio bazel-bin/tensorflow/lite/ios/
dentro de su directorio raíz de TensorFlow. De forma predeterminada, el framework generado contiene un binario "gordo", que contiene armv7, arm64 y x86_64 (pero no i386). Para ver la lista completa de indicadores de compilación utilizados cuando se especifica --config=ios_fat
, consulte la sección de configuración de iOS en el archivo .bazelrc
.
Genere el framework estático TensorFlowLiteC
De forma predeterminada, sólo distribuimos el framework dinámico a través de Cocoapods. Si desea usar el framework estático en su lugar, puede generar el framework estático TensorFlowLiteC
con el siguiente comando:
El comando generará un archivo llamado TensorFlowLiteC_static_framework.zip
bajo el directorio bazel-bin/tensorflow/lite/ios/
dentro de su directorio raíz de TensorFlow. Este framework estático puede usarse exactamente igual que el dinámico.
Genere selectivamente frameworks TFLite
Puede generar frameworks más pequeños que tengan como objetivo sólo un conjunto de modelos utilizando la generación selectiva, que omitirá las operaciones no utilizadas en su conjunto de modelos y sólo incluirá los kernels op necesarios para ejecutar el conjunto de modelos dado. El comando es el siguiente:
El comando anterior generará el framework estático bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
para las ops incorporadas y personalizadas de TensorFlow Lite; y opcionalmente, genera el framework estático bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
si sus modelos contienen ops Select TensorFlow. Tenga en cuenta que puede usar el indicador --target_archs
para especificar sus arquitecturas de implementación.
Utilice en su propia aplicación
Desarrolladores en CocoaPods
Existen tres CocoaPods para TensorFlow Lite:
TensorFlowLiteSwift
: Brinda las API Swift para TensorFlow Lite.TensorFlowLiteObjC
: Aporta las API de Objective-C para TensorFlow Lite.TensorFlowLiteC
: Pod base común, que incorpora el core runtime de TensorFlow Lite y expone las APIs base en C usadas por los dos pods mencionados anteriormente. No está pensado para ser usado directamente por los usuarios.
Como desarrollador, debe elegir el pod TensorFlowLiteSwift
o TensorFlowLiteObjC
en función del lenguaje en el que esté escrita su app, pero no ambos. Los pasos exactos para usar compilación local de TensorFlow Lite difieren, dependiendo de la parte exacta que desee compilar.
Usar las API locales de Swift u Objective-C
Si está usando CocoaPods y sólo desea analizar algunos cambios locales en las APIs Swift o Objective-C de TensorFlow Lite, siga estos pasos.
Realice cambios en las API de Swift u Objective-C en su checkout de
tensorflow
.Abra el archivo
TensorFlowLite(Swift|ObjC).podspec
y actualice esta línea:
s.dependency 'TensorFlowLiteC', "#{s.version}"
para que sea
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
Esto es para asegurar que está generando sus APIs Swift u Objective-C en base a la última versión nocturna disponible de las APIsTensorFlowLiteC
(generadas cada noche entre 1-4 a. m. hora del Pacífico) en lugar de la versión estable, que puede ser obsoleta en comparación con su checkout local detensorflow
. Alternativamente, podría elegir publicar su propia versión deTensorFlowLiteC
y usar esa versión (vea la sección Usar el core local de TensorFlow Lite más abajo).En el
Podfile
de su proyecto iOS, cambie la dependencia de la siguiente manera para que apunte a la ruta local de su directorio raíztensorflow
.
Para Swift:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir}'
Para Objective-C:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
Actualice la instalación de su pod desde el directorio raíz de su proyecto iOS.
$ pod update
Vuelva a abrir el espacio de trabajo generado (
<project>.xcworkspace
) y recompile su app dentro de Xcode.
Usar el core local de TensorFlow Lite
Puede configurar un repositorio privado de especificaciones de CocoaPods y publicar su framework personalizado TensorFlowLiteC
en su repositorio privado. Puede copiar este archivo podspec y modificar algunos valores:
Después de crear su propio archivo TensorFlowLiteC.podspec
, puede seguir las instrucciones sobre el uso de CocoaPods privados para usarlo en su propio proyecto. También puede modificar el TensorFlowLite(Swift|ObjC).podspec
para que apunte a su pod personalizado TensorFlowLiteC
y usar el pod Swift u Objective-C en su proyecto de app.
Desarrolladores en Bazel
Si está usando Bazel como herramienta principal de generación, puede simplemente añadir la dependencia TensorFlowLite
a su destino en su archivo BUILD
.
Para Swift:
Para Objective-C:
Cuando usted genera el proyecto de su app, cualquier cambio en la librería TensorFlow Lite será captado e incorporado a su app.
Modifique directamente los ajustes del proyecto Xcode
Es muy recomendable usar CocoaPods o Bazel para añadir la dependencia de TensorFlow Lite en su proyecto. Si aún desea añadir el framework TensorFlowLiteC
manualmente, tendrá que añadir el framework TensorFlowLiteC
como framework incorporado a su proyecto de aplicación. Descomprima el archivo TensorFlowLiteC_framework.zip
generado a partir de la compilación anterior para obtener el directorio TensorFlowLiteC.framework
. Este directorio es el framework real que Xcode puede entender.
Una vez que haya preparado el TensorFlowLiteC.framework
, primero tiene que añadirlo como binario incrustado al objetivo de su app. La sección exacta de ajustes del proyecto para esto puede diferir según su versión de Xcode.
Xcode 11: Vaya a la pestaña "General" del editor de proyectos para el destino de su app y añada
TensorFlowLiteC.framework
en la sección "Frameworks, bibliotecas y contenido integrado".Xcode 10 e inferiores: Vaya a la pestaña "General" del editor de proyectos para el destino de su app y añada el
TensorFlowLiteC.framework
en "Binarios integrados". El framework también debería añadirse automáticamente en la sección 'Frameworks y librerías vinculadas'.
Cuando añada el framework como un binario incrustado, Xcode también actualizará la entrada "Rutas de búsqueda del framework" en la pestaña "Ajustes de compilación" para incluir el directorio padre de su framework. En caso de que esto no ocurra automáticamente, deberá añadir manualmente el directorio padre del directorio TensorFlowLiteC.framework
.
Una vez realizados estos dos ajustes, debería poder importar y llamar a la API en C de TensorFlow Lite, definida por los archivos de cabecera bajo el directorio TensorFlowLiteC.framework/Headers
.