Incluso si el aprendizaje automático en teléfonos móviles ya no pasará como la «próxima gran novedad» en 2020, Apple también proporcionará el marco CoreML con funciones útiles adicionales este año.
Un punto culminante de WWDC 2019, al menos para los desarrolladores, fue el anuncio de Apple de que la versión 3 de Machine Learning Framework CoreML se ejecutará en las plataformas del sistema tvOS, macOS, watchOS, iOS y iPadOS y ahora también aprendizaje automático directamente en el dispositivo, p. Ej. con fines de personalización («Personalización del modelo»).
Comparado con esto, las noticias y mejoras en CoreML han sido mucho más modestas este año. Incluso parece que Apple eliminó el número de versión: si la actualización del año pasado se llamaba CoreML 3, ahora simplemente se llama Core ML, incluso si CoreMLTools indica la versión 4.
Apple CoreML (4): esto es nuevo
Hablando de herramientas CoreML: crear sus propios modelos con el marco Create ML ML es divertido para proyectos simples. En la práctica, sin embargo, los modelos de TensorFlow o PyTorch son más comunes. Para usar un modelo de este tipo con Core ML, los desarrolladores de aplicaciones primero deben convertirlo al formato de archivo mlmodel. Esto es para lo que están destinadas las CoreMLTools mencionadas anteriormente.
Con la nueva versión de CoreML existe una posibilidad interesante de intercambiar los modelos (archivo mlmodel) en lugar de publicarlos con una actualización de la aplicación. Para ser justos, hay que decir que esta no es una idea nueva, varios SDK de terceros ya la ofrecen. La gran ventaja de la solución interna es que los modelos están alojados en la nube de Apple. Como desarrollador de aplicaciones Si tiene más de un modelo en su aplicación, puede usar el nuevo concepto de colecciones de modelos para agrupar varios modelos usando el panel de CloudKit. Para preparar un modelo principal de ML para la implementación en la nube, ahora hay un botón Crear archivo de modelo en Xcode. Esto crea un archivo.mlarchive. Si echas un vistazo a este mlarchive, notarás que aparentemente es «sólo» un archivo zip con las carpetas mlmodelc. Los desarrolladores pueden cargarlos en el panel de CloudKit e incluirlos en una colección de modelos.
Otra buena característica nueva es que puede proporcionar diferentes colecciones de modelos para diferentes usuarios de aplicaciones. Por ejemplo, la cámara del iPhone es diferente de la cámara del iPad, por lo que es posible que desee crear dos versiones de un modelo y enviar una a los usuarios de iPhone de la aplicación y la otra a los usuarios de iPad. Los desarrolladores de aplicaciones pueden usar reglas de segmentación para la clase de dispositivo (iPhone / iPad/ TV / Watch), el sistema operativo y la versión, el código de región, el código de idioma y la versión de la aplicación. Una nueva versión de modelo no siempre está disponible de inmediato. Más bien, en algún momento, la aplicación «reconoce» de forma independiente que hay un nuevo modelo disponible, descarga el modelo automáticamente y lo almacena en su caja de arena. Sin embargo, los desarrolladores de aplicaciones parecen no tener control sobre cuándo y cómo sucede esto.
Si bien esta es una solución conveniente y los desarrolladores de aplicaciones no tienen que preocuparse por alojar los modelos ellos mismos, tenga en cuenta que los modelos están en CloudKit. Esto ejerce presión sobre las cuotas de almacenamiento del editor de la aplicación y la descarga de los modelos se cuenta como tráfico de red.
Modelo de aprendizaje automático: cifrado contra ladrones
Hasta ahora, era muy fácil robar su modelo principal de ML y usarlo en su propia aplicación. Esto cambia con iOS 14 / macOS 11.0: el nuevo CoreML puede cifrar y descifrar modelos automáticamente para que los extraños ya no puedan mirar en su carpeta mlmodelc. Puedes usar cifrado utilizar con o sin la nueva implementación de CloudKit. El entorno de desarrollo de Xcode cifra el modelo compilado, mlmodelc, y no el archivo mlmodel original. El modelo siempre permanece en forma encriptada en el dispositivo del usuario. Solo cuando la aplicación crea una instancia del modelo, CoreML lo descifra automáticamente. Esta versión descifrada solo existe en la memoria, no se guarda como un archivo en ningún lugar. Para que esto funcione, un desarrollador de aplicaciones primero necesita una clave de cifrado. Xcode ofrece un botón para esto. Si un desarrollador selecciona este botón, Xcode genera una nueva clave de cifrado, que vincula a la cuenta del equipo de desarrollo de Apple.
En términos concretos, este proceso crea un archivo.mlmodelkey, del cual cada desarrollador de aplicaciones recibe una copia local para trabajar. Los desarrolladores de aplicaciones no tienen que incrustar esta clave de cifrado en su aplicación, ¡ni deberían hacerlo! La razón de esto: la clave también se almacena en los servidores de Apple. Para descifrar el modelo cuando la aplicación crea una instancia, CoreML debe obtener la clave de cifrado de los servidores de Apple a través de la red. En consecuencia, si la red falla antes de que se haya descargado la clave de cifrado, la aplicación no puede crear una instancia del modelo CoreML. Por esta razón, los desarrolladores de aplicaciones deberían usar la nueva función YourModel.load (). Tiene un controlador de finalización con el que una aplicación puede reaccionar a los errores de carga.
Aprendizaje automático: otros marcos de Apple
Hay varios marcos de alto nivel en los SDK de iOS / iPadOS que realizan tareas relacionadas con el aprendizaje automático. Estos son tan antiguos como el propio CoreML. Por un lado, está el marco de visión, que también recibió una serie de funciones nuevas. Vision ya disponible a través de modelos de reconocimiento para rostros, marcas faciales y cuerpos humanos, se agregan las siguientes características en la nueva versión: Para los SDK de iOS / iPadOS, existen varios marcos de alto nivel que realizan tareas relacionadas con
Detección de posición de la mano (VNDetectHumanHandPoseRequest)
Detección de poses de cuerpo entero para varias personas (VNDetectHumanBodyPoseRequest)
En particular, la grabación del reconocimiento de poses de cuerpo entero de varias personas es una característica interesante. Hay diferentes modelos de código abierto en el mercado, pero no son realmente buenos ni lentos. Las soluciones comerciales, por otro lado, son caras. Además de las imágenes estáticas, el marco de Apple también puede analizar videos, ya sea como un archivo o desde la cámara en tiempo real.
También es nuevo VNDetectContoursRequest para reconocer los contornos de los objetos en una imagen. Estos luego se devuelven como rutas vectoriales. VNGeometryUtils, a su vez, tiene funciones auxiliares para el posprocesamiento de los contornos reconocidos, como simplificarlos a formas geométricas básicas. Se puede suponer que PencilKit también usa esta función de forma geométrica básica para la entrada de lápiz. Para el procesamiento del lenguaje, los desarrolladores de aplicaciones pueden usar el Marco de lenguaje natural de Apple.usar. También hay algunas características nuevas aquí:
NLTagger y NLModel ahora pueden encontrar múltiples etiquetas y predecir su relación.
Incrustar oraciones: después de que ya fuera posible utilizar la incrustación de palabras, NLEmbedding ahora también admite oraciones. Se utiliza una red neuronal incorporada para codificar la oración completa en un vector de 512 dimensiones. Esto ayuda a comprender el contexto.
En el ámbito del Speech & SoundAnalysis Framework, sin embargo, no parece haber novedades. (mb / fm)