Light Bulb para entrenar modelos de aprendizaje automático

Light Bulb es una herramienta que nos ayuda a entrenar, etiquetar, probar y desplegar modelos de aprendizaje automático sin ningún tipo de codificación.

Vaya directamente al proyecto Github aquí .

Supongamos que queremos crear una aplicación para compartir fotos, por ejemplo algo así como CatSnap que permite a sus usuarios enviar fotos de gatos, y nada más.

CatSnap

¿Cómo vamos a comenzar? Probablemente podemos pensar en lo siguiente:

  1. Recogemos un gran conjunto de fotos de gatos y otras que no contengan un gato.
  2. Etiquetamos manualmente las publicaciones como gato o no gato .
  3. Dividimos el conjunto de datos en tren, prueba y validación conjuntos .
  4. Entrenamos un modelo (digamos una red neuronal convolucional ) en el conjunto de datos.
  5. Buscamos la precisión del conjunto de pruebas, si no es lo suficientemente bueno, vuelveremos atrás y debemos volve a pensar cada paso.
  6. Guardamos los pesos del modelo y cargamos en un servidor web para comenzar a clasificar las publicaciones nuevas.

Bueno dicho todo lo anterior veamos cómo Light Bulb puede ayudarnos con todo esto.

Presentamos: Light Bulb 💡

Light Bulb es un servicio que integrará de extremo a extremo, desde el etiquetado hasta la producción.

Primero definamos esta configuración:

# config/cat_not_cat.yml
task:
title: Is this a cat?
dataset:
directory: dataset/cat_not_cat/
data_type: images
judgements_file: outputs/cat_not_cat/labels.csv
label:
type: classification
classes:
- Cat
- Not Cat
model:
directory: outputs/cat_not_cat/models/
user: chris

Luego desde la raíz de la aplicación ejecutada:

 make 
 make dataset/cat_not_cat 
 .virt/bin/python code/server.py --config config/cat_not_cat.yml

Que iniciará un servidor en http://localhost:5000

Comenzar etiquetado

Al etiquetar algunas entradas, verá Entrenamiento ícono cambia de No a Sí. Esto significa que un modelo está entrenando activamente en las publicaciones recientemente etiquetadas. A medida que etiqueta más publicaciones, el modelo se vuelve más inteligente.

¡Light Bulb se está volviendo más inteligente!

Después de etiquetar más imágenes (y darle al modelo cierto tiempo para entrenar), verá una Precisión estadística, que muestra qué tan bien está funcionando el modelo. En este caso, nuestro modelo está obteniendo aproximadamente 87% de precisión, lo cual es bastante sorprendente ya que solo etiquetamos 78 imágenes.

Etiquetando 2000 imágenes en 15 minutos

Ahora que nuestro modelo está entrenado, comenzará a ayudarnos a etiquetar más datos 😲. Light Bulb will:

  • Examine el conjunto de datos y etiquete las imágenes con las que se sienta seguro (97% de confianza de hecho).
  • Almacene las etiquetas que asigna el modelo y preséntelas por lotes. Todo lo que tiene que hacer es confirmar que las etiquetas son correctas.
Verificación de las imágenes etiquetadas automáticamente

Con esta función de etiquetado por lotes, logré etiquetar todas las 2000 imágenes en solo 15 minutos.

Modelo de servicio.

Light Bulb también expone una API para su modelo. Puede emitir fácilmente solicitudes de API al servidor y obtener nuevas imágenes.

Veamos en qué piensa nuestro modelo de esta imagen:

Light-Bulb-cat.
Cat.
 curl --header "Content-Type: application/json"  
 --request POST \ 
 --data '{"type": "images", "urls": 
["https://sitiobigdata.com/wp-content/uploads/2019/12/Light-Bulb-cat.jpg"]}' 
\  http: // localhost: 5000 / score 

Que devuelve:

{
 "labels": ["Cat", "Not Cat" ],
 "scores": [
      [0.9971857666969299, # Nuestro modelo cree que es 99% un gato! 
       0.0028141846414655447] 
  ] 
}

Y ahora intentemos algo que no sea un gato :
Light Bulb - dog
Dog.
curl --header "Content-Type: application/json"  
 --request POST  
 --data '{"type": "images", "urls": 
["https://sitiobigdata.com/wp-content/uploads/2019/12/Light-Bulb-dog.jpg"]}' 
\ http://localhost:5000/score

 

Nuestro modelo devuelve:

 
{
 "labels": ["Cat", "Not Cat" ]
 "scores": [
             [ 0.007293896283954382, 
               0.9927061200141907 # Nuestro modelo cree que esto es 99.2% no es un gato! 
           ] 
  ] 
}

¿Cómo funciona?

Light Bulb :Encoder-Decoder
Encoder-Decoder

La ​​mayoría de las tareas de aprendizaje profundo se pueden enmarcar como una arquitectura encoder – decoder.

Imágenes

Para todas las tareas de imagen, utilizamos un Squeeze Net codificador pre-entrenado en Image Net .

Clasificación de imagen: La clasificación de imagen se realiza con un codificador basado en CNN, que se alimenta a un decodificador de perceptrón multicapa.

 

Light Bulb - tiger cat
Clasificación de imágenes.

 

Detección de objetos (trabajo en progreso): La detección de objetos se puede enmarcar como un codificador basado en CNN, que se alimenta a un decodificador de regresión. Para la detección de objetos, el decodificador será un cabezal YOLOv3 preentrenado.

Ejemplo de detección de objetos

Texto

Para todas las tareas de texto, usaremos un codificador LSTM de 3 capas preentrenado como un modelo de lenguaje en Wikitext-103.

Clasificación de texto: La clasificación de texto se puede enmarcar como un codificador LSTM que da salida a un decodificador de regresión logística.

Clasificación de sentimiento es un problema de clasificación de texto clásico

Etiquetado de secuencia (trabajo en progreso): El etiquetado de secuencia se puede enmarcar como un codificador LSTM, donde en cada paso de tiempo, la salida se alimenta a un modelo CRF

 

 

 

 

 

Dejá un comentario