Cree su primer buscador de texto a imagen con TensorFlow Lite Model Maker

Estás leyendo la publicación: Cree su primer buscador de texto a imagen con TensorFlow Lite Model Maker

Tensorflow introdujo un paquete de búsqueda basado en la incrustación en el dispositivo que podría ejecutarse en Android, iOS y aplicaciones web. Se ejecuta con la ayuda de la técnica Edge ML. Este paquete en el dispositivo podría ayudar al usuario a buscar imágenes, texto o audio en un instante. En este artículo, aprenderemos la implementación de la búsqueda de texto a imagen en el dispositivo con TensorflowLite. Los siguientes son los temas a tratar.

Tabla de contenido

  1. ¿Qué es Edge ML?
  2. ¿Qué es una búsqueda en el dispositivo?
  3. ¿Qué es el creador de modelos TensorFlow Lite?
  4. Creación de un modelo de búsqueda de texto a imagen en el dispositivo

Comencemos con la comprensión de Edge ML.

¿Qué es Edge ML?

El crecimiento de IoT trajo una explosión de dispositivos inteligentes vinculados a la nube, pero la red aún no estaba preparada para manejar este aumento en la demanda. Las redes en la nube estaban sobrecargadas y las empresas ignoraron los problemas críticos de la computación en la nube, como la seguridad. Edge ML es la solución.

Edge ML es una tecnología que permite a los dispositivos inteligentes analizar datos localmente (a través de servidores locales o a nivel de dispositivo) utilizando algoritmos de aprendizaje automático y profundo, lo que reduce la dependencia de las redes en la nube. La palabra borde se refiere a los algoritmos de aprendizaje profundo y aprendizaje automático que procesan en el dispositivo o en el nivel local que están más cerca de los componentes que recopilan los datos.

Los dispositivos Edge continúan transmitiendo datos a la nube según sea necesario, pero la capacidad de procesar ciertos datos localmente permite la detección de datos enviados a la nube al tiempo que permite el procesamiento y la reacción de datos en tiempo real.

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

Por lo general, el aprendizaje automático se realiza en servicios en la nube porque requiere una gran cantidad de GPU y TPU. Entonces, Tensorflow lanzó un paquete en el dispositivo que podría usar las capacidades del dispositivo para realizar el aprendizaje automático. Estos dispositivos pueden ser un dispositivo móvil, una computadora portátil o sistemas integrados como raspberry pie, relojes digitales, etc. Se podría decir que estos modelos de aprendizaje automático en el dispositivo son versiones simplificadas que se comparan con los modelos complejos basados ​​en la nube.

🔥 Recomendado:  Algoritmo Crow Search para optimización y sus casos de uso

El modelo de aprendizaje automático utilizará las GPU y CPU locales para procesar la consulta del usuario y buscarla localmente. Esto significa que el modelo podría funcionar sin estar conectado a Internet. En el contexto de estos beneficios, también se podría afirmar que los datos del usuario no se cargarían en ningún servidor, por lo tanto, la privacidad de los datos.

Por ejemplo, debe haber visto o utilizado dichas aplicaciones que utilizan filtros de realidad aumentada (AR) que ayudan a los usuarios a visualizar el producto y comprenderlo mejor.

Tomemos otro ejemplo de aplicaciones de traducción de idiomas como el traductor de Google, una aplicación de aprendizaje automático en el dispositivo que utiliza el dispositivo local para traducir, podría funcionar incluso cuando el dispositivo no está conectado a Internet.

¿Qué es el creador de modelos TensorFlow Lite?

TensorFlow Lite utiliza modelos de TensorFlow que se han comprimido en un formato de modelo de aprendizaje automático (ML) más pequeño y eficiente. TensorFlow Lite le permite utilizar modelos previamente entrenados, cambiar modelos existentes o crear sus propios modelos TensorFlow y luego convertirlos al formato TensorFlow Lite. Al implementar un modelo de red neuronal de TensorFlow para aplicaciones de aprendizaje automático en el dispositivo, se agiliza el proceso de adaptación y conversión del modelo a datos de entrada particulares.

Los modelos TensorFlow Lite pueden manejar prácticamente todas las tareas que un modelo TensorFlow convencional puede realizar con una variedad de tipos de datos de entrada, como fotos, video, audio y texto.

Creación de un modelo de búsqueda de texto a imagen en el dispositivo

Todo el proceso de creación de un modelo de búsqueda de texto a imagen en el dispositivo se puede dividir en tres partes, que se enumeran a continuación.

  1. Entrene un modelo de codificador para la codificación de consultas de imágenes y texto. Los datos que se utilizarían son el conjunto de datos COCO.
  2. Cree un modelo de buscador que pueda buscar imágenes de acuerdo con la descripción del texto. Para ello se utilizaría la API Model Maker Searcher.
  3. Las imágenes recuperadas de la consulta de búsqueda debían mostrarse, lo que se hará mediante la API del buscador de la biblioteca de tareas.

Entrenamiento del codificador

El codificador que se usará en esta implementación es un codificador dual que podría entrenarse en imágenes y texto simultáneamente. Es posible que los codificadores de imagen y texto no produzcan incrustaciones con el mismo número de dimensiones. Deben proyectarse en el mismo espacio de empotramiento.

🔥 Recomendado:  Cómo jugar Grand Theft Auto 5 en dispositivos móviles con xCloud y otros

Para incrustar el texto y la imagen en la misma proyección dimensional, debe crear funciones utilizando ReLU (Unidad lineal rectificada) de TensorFlow que devolvería 0 si la entrada es negativa, pero si es positiva, devuelve ese valor. Después de obtener el valor, esos valores se normalizarían L2 porque sería más fácil recuperarlos para entrenar el codificador dual.

Crear un modelo de buscador

Este modelo buscará la imagen según la descripción del texto en el conjunto de datos COCO. El modelo ScaNNOption ha sido utilizado para esta tarea por el modelo de fabricación de TensorFlow. Esto utiliza un algoritmo de búsqueda basado en incrustaciones.

La búsqueda basada en incrustaciones es una excelente estrategia para responder preguntas que dependen de la comprensión semántica en lugar de simplemente atributos indexables. Los modelos de aprendizaje automático se entrenan en este enfoque para asignar consultas y objetos de bases de datos a un espacio de incrustación vectorial compartido, de modo que la distancia entre las incrustaciones tenga un significado semántico, es decir, las cosas comparables estén más cerca unas de otras.

Recuperando las imágenes

La consulta se ha calculado y la resultante se almacena en la variable. El resultado son las cinco búsquedas principales con la distancia de vecino más cercana a la consulta de búsqueda. La imagen se vería en la URL de Flickr.

El entrenamiento del codificador dual y el modelo basado en búsqueda llevaría tiempo. Entonces, debido a limitaciones de tiempo, este artículo usaría el modelo previamente entrenado en el conjunto de datos COCO.

Instale el paquete de soporte de TFlite para desempaquetar el modelo y también los paquetes de texto y audio de TensorFlow.

!pip install -q -U tflite-support !pip install -q -U tensorflow-text==2.10.0b2 !sudo apt-get -qq install libportaudio2

Si usa el cuaderno de Google Colab, instale esta dependencia.

! pip install tf-estimator-nightly==2.8.0.dev2021122109

Importación de las bibliotecas necesarias.

importar tensorflow como tf importar tensorflow_hub como concentrador importar pandas como pd importar matplotlib.pyplot como plt desde tflite_support.task importar texto desde tflite_support.task importar core

Estamos listos para desempaquetar el modelo ScanN.

options = text.TextSearcherOptions( base_options=core.BaseOptions( file_name=”buscador_modelo.tflite”)) options.search_options.max_results = 5 tflite_searcher = text.TextSearcher.create_from_options(opciones)

El modelo preentrenado se puede descargar desde aquí y almacenar el modelo en el directorio actual con el mismo nombre que se usó anteriormente. Las opciones resultantes se han limitado a 5, podría ser según el deseo del usuario.

🔥 Recomendado:  Aumente los vínculos de retroceso de alta calidad con los consejos de la historia de éxito de 360 ​​Learning

Veamos el resultado bruto del modelo.

tflite_searcher.search(‘Un perro sentado en una silla’)

Revista de análisis de la India

Como se puede observar en la imagen de arriba, el modelo calcula la distancia más cercana en el espacio incrustado. Los más cercanos se dan como salida utilizando la búsqueda basada en incrustaciones.

Ahora los metadatos deben extraerse de los resultados y se generará una URL de Flickr.

Vamos a crear una función para extraer y mostrar la imagen de los metadatos.

def text_to_image_searcher(query_str, show_images=False): vecinos = tflite_searcher.search(query_str) for i, vecino en enumerar(vecinos.cercano_vecinos): metadata = vecino.metadata.decode(‘utf-8’).split(‘_’ ) flickr_id = metadatos[0]
print(‘URL de Flickr para %d: http://flickr.com/photo.gne?id=%s’ % (i + 1, flickr_id)) if show_images: plt.figure(figsize=(20, 13)) para i, vecino en enumerar (vecinos.vecinos_más cercanos): ax = plt.subplot(2, 3, i + 1) ax.set_title(‘%d: Similitud: %.05f’ % (i + 1, -neighbor.distance )) metadatos = vecino.metadatos.decodificar(‘utf-8’).split(‘_’) image_path=”_”.join(metadatos[1:]) imagen = tf.image.decode_jpeg( tf.io.read_file(image_path), canales=3) / 255 plt.imshow(imagen) plt.axis(‘off’)

Usemos la función y generemos las URL.

text_to_image_searcher(‘Un perro sentado en una silla’)

Revista de análisis de la India

Similitud = 0.6987

Similitud = 0.6910

Similitud = 0.6848

Similitud = 0.6737

Similitud = 0.6693

Entonces, el modelo funcionó bastante bien en la búsqueda de estas imágenes del conjunto de datos COCO. y el tiempo de ejecución fue inferior a 0,2 segundos.

Conclusiones

El aprendizaje automático en el dispositivo utiliza una versión simplificada del aprendizaje automático basado en la nube. Utiliza el dispositivo local para realizar la acción necesaria que reduce la latencia, aumenta la privacidad de los datos del usuario y las inferencias se pueden ejecutar en cuestión de milisegundos. Con este artículo práctico, pudimos comprender el aprendizaje automático en el dispositivo e implementarlo para crear un modelo de búsqueda de texto a imagen con TensorFlowLite.

Referencias

Tabla de Contenido