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

Vaya directamente al proyecto Github aquí .

Digamos que quiere crea una aplicación para compartir fotos llamada Snapcat que solo permite a los usuarios enviar fotos de gatos, y nada más.

Snapcat

¿Cómo vas a comenzar con esto? Probablemente se verá así:

  1. Recoge un gran conjunto de fotos de gato y no de gato.
  2. Etiquete manualmente las publicaciones como gato o no gato . [19659009] Dividir el conjunto de datos en tren, prueba y validación conjuntos .
  3. Entrenar un modelo (digamos una red neuronal convolucional ) en el conjunto de datos.
  4. Buscar con la precisión del conjunto de pruebas, si no es lo suficientemente bueno, vuelva atrás y vuelva a pensar cada paso.
  5. Guarde los pesos del modelo y cárguelos en un servidor web para comenzar a clasificar las publicaciones nuevas.

Veamos cómo Light Bulb puede ayudarlo con todo esto.

Presentamos: Light Bulb 💡

Light Bulb es un servicio que integrará este extremo a extremo, desde el etiquetado hasta la producción. Primero defina esta configuración:

 # config / cat_not_cat.yml
 task: 
 title: ¿Es este un gato? 
 conjunto de datos: 
 directorio: 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 / 
 usuario: 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 Al servir

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 esta imagen .

 curl --header "Tipo de contenido: aplicación / json"  
 --request POST  
 --data & # 039 ; {"tipo": "imágenes", "URL": [" https://github.com/czhu12/light-bulb/raw/master/docs/images/cat-image-1.jpg  "]} & # 039;   http: // localhost: 5000 / score 

Que devuelve:

{
 "labels": [
 "Cat", 
 "Not Cat" 
 ]]
 "puntajes": [
 [
 0.9971857666969299, # Nuestro modelo cree que es  99% un gato! 
       0.0028141846414655447 
] 
] 
} [19659024] Y ahora intentemos algo que  no sea un gato :
 curl --header "Content-Type: application / json"  
 --request POST  
 --data & # 039; {"type": "images", "urls": [" https://raw.githubusercontent.com/czhualhost: 5000 / score 

Nuestro modelo devuelve:

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

¿Cómo funciona?

Encoder-Deocder

La ​​mayoría de las tareas de aprendizaje profundo se pueden enmarcar como un codificador - arquitectura decodificadora.

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. [19659056] Clasificación de imagen

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