Profile picture

Soy Isaac Zepeda. En esta bitácora personal registro el progreso de lo que estudio y aprendo sobre Machine Learning. Sígueme en Twitter

  1. December 18, 2022

    Dreambooth es un técnica con la cuál podemos hacer un ajuste o afinación al modelo pre-entrenado de Stable Diffusion. Coloquialmente esto también es conocido como re-entrenar el modelo.

    Básicamente se trata de darle un número “pequeño” de fotos de una persona, cosa, estilo, etc. También hay que indicar que es la foto y cual es su identificador. Con esta información se meten estos nuevos conceptos tanto como al text-encoder como la UNET, ambos partes de Stable Diffusion.

    Usando un par de Google Colab notebooks disponibles en github puedes crear un modelo de Stable Diffusion que sabe como dibujar tu cara, cuerpo, tu estilo de pintura o cine.

    Después de algunos intentos e invertir $208 MXN en Compute Engines para Google Colab (la memoria del GPU no era suficiente en la versión gratuita) pude entrenar un modelo con algunas fotos de mi cara y generar unos pocos avatares muy buenos.

    Aquí algunas de las fotos más interesantes que pude generar. Los atributos alt y title de algunas de las imágenes continenen el prompt que usé. Por cierto algunos de los prompts los copié de un hilo en twitter que publicó @FridaRuh


  2. November 10, 2022

    Primero intenté correr Stable Diffusion localmente en con un Docker para CPU, pero no pude lograrlo.

    Después encontré un tutorial de como correrlo localmente en el chip M1 de Mac. Lo seguí y por fin pude correr Stable Diffusion localmente.

    Debo decir que es extremadamente lento, ~30 min o mas para crear una imagen, usuando parámetros que a mi entender sería más rápido el procesamiento.

    Modifiqué algunos de los parámetros y le pedí tres imagenes de pikachu y el tiempo estimado de procesamiento era 9 horas, no lo dejé terminar.

    Aquí un par de imágenes generadas localmente en mi computadora:

    “a red juicy apple floating in outer space, like a planet” a red juicy apple floating in outer space, like a planet

    “a human with a horse face riding a bicycle on a road through interstellar space” "a human with a horse face riding a bicycle on a road through interstellar space"


  3. November 08, 2022

    Hugging Face proporciona una librería llamada diffusers para facilitar el uso de estos modelos.

    https://github.com/huggingface/diffusers

    Ya jugué un poco con ese código en un notebook pudiendo generar imagenes proporcionando un prompt y otras más proporcionando una imagen como template.

    Notebook: https://colab.research.google.com/drive/1P8cuo8JAFVxWQWsXgcUC78I6kihCXyJR#scrollTo=pVtXMKSdF_nu

    Prompt: “Medieval army fighting on new york city”

    Imagen generado por un modelo de machine learning llamado stable diffusion que preseunta un ejército medieval luchando en la ciudad de New York

    Luego seguí jugando agregando una imagen mia:

    Prompt: “A fantasy landscape, trending on artstation” img001

    Prompt: “Nordic warrior face” img002

    Prompt: “Male with beard painted by monet” img003


  4. November 03, 2022

    Continué con el siguiente video sobre Stable Diffusion, esta vez es sobre código, donde de nuevo hace un gran trabajo explicando como usar un modelo pre-entrenado, preparar y codificar el prompt y demás entradas, algunos trucos y como los hiperparámetros influyen en la salida final del sistema.

    Aún me falta explorarlo más detenidamente, entender cada una de sus partes más a detalle, entender como encodear las entradas, obtener la intuición en qué forma dichas entradas impactan en el resultado final, entre otras cosas.

    Esto es una continuación a Stable Diffusion: Primer vistazo, mirada general.

    Notebook aquí y en la descripción del video.

    https://www.youtube.com/watch?v=-lz30by8-sU



  5. October 17, 2022

    El fin de semana el Punksolid me alborotó mostrándome repositorios con modelos para mejorar la calidad y resolució de imágenes y videos. Eso me llevó a un agujero sin fondo y descubrí algunas cosas interesantes como que el problema es llamado Image/Video Super Resolution.

    Descubrí que para este problema se usan Generative Adversarial Networks (GAN). Aquí listo algunos de los links más interesantes que encontré, definitivamente va a ser un tema que estudiaré en los próximos meses.


  6. September 16, 2022

    Hace un par de semanas empecé a leer el libro Practical Natural Language Processing: A Comprehensive Guide to Building Real-World NLP Systems, escrito por Sowmya Vajjala, Bodhisattwa Majunder, Anuj Gupta y Harshit Surana.

    Ya leí los primeros cuatro capítulos.

    - El primero es una introducción a NLP.

    - El segundo describe los métodos actuales de pre-procesamiento de texto y su recolección de texto de diversas fuentes así como la limpieza de los mismos.

    - El tercero habla de como representar el texto para que sea una entrada adecuada para entrenar un modelo usando Machine Learning, e.g. one-hot encoding, bag of words y embeddings.

    - El cuarto ya entra a clasificar texto usando diferentes formas de representación de texto, como entrenar tus propios embeddings o usar embeddings pre-entrenados como word2vec, también usar redes convolucionales de una dimensión, arquitecturas Long-Short Term Memory (LSTM) que es una arquitectura Redes Neuronales Recurrentes (RNN), así como también usar modelos pre-entrenados como BERT para dichas tareas de clasificación.

    Voy empezando el capítulo cinco que habla de Extracción de Información o en inglés Information Extraction (IE). En siguientes entradas les comentaré mi progreso sobre el tema.

    Aquí la portada del libro.

    Libro títulado en inglés Practical Natural Language Processing, de portada tienen un pájaro parecido a un cotorro de color rojo con la panza púrpura parado en una pata sobre una rama


  7. August 23, 2022

    El mes pasado hice un clasificador de texto con un 90% de accuracy, mi primer pensamiento fue que algo estaba mal ya que era un accuracy muy alto para un modelo muy sencillo, solo un par de simples RNN (Recurrent Neural Networks).

    Después de crear el reporte de clasificación con scikit learn con las predicciones del testset me quedó claro que hay algunas clases que están siendo mal clasificadas.

    Classification report generado por sckitlearn

    La definición de precision es dados todos los casos positivos, ¿Cuántos fueron clasificados correctamente?.

    La definición de recall es dadas todas las predicciones positivas del modelo, ¿Cuántas son de verdad positivas?

    En la clase subrayada en el screenshot podemos ver que el modelo solo pudo clasificar correctamente 56% de los casos positivos, mientras que de todas las veces que clasificó en ese clase solo el 36% fueron correcto.

    Analizando el reporte podemos ver que este modelo clasifica pobremente en muchas de las clases del dataset. Por lo tanto es trabajar para mejorar los números en todas estas clases.

    Siguiente pasos:

    • Entrenar un modelo usando técnicas para datasets no balanceados (unbalanced datasets)
    • Entrenar un modelo usando transfer learning, e.g. BERT u otro modelo disponible en huggingface

  8. July 16, 2022

    Ya hace varias semanas un amigo me proporcionó un dataset donde una persona entra un texto y selecciona una categoría para clasificar ese texto. La idea es poder clasificar ese texto automáticamente.

    Hice dos modelos: el primero un baseline con una capa de Embedding y una capa Fully-Connected, y otra con una capa de Embedding y una simple RNN (Recurrent Neural Network)

    El modelo me dio un accuracy de 90% en ambos lo cual me pareció muy raro, después de analizar me di cuenta que el dataset esta desbalanceado la mayoría de los labels son de una sola categoría, mi conclusión por lo tanto es que estoy usando la métrica equivocada.

    En estos días lo voy a intentar de nuevo pero usando micro f1 score como métrica.




  9. April 22, 2022

    La semana pasada trabajé en un proyecto personal como parte del proceso de Onboarding en mi nuevo trabajo en commit.dev.

    Llamé al proyecto “Face-Tagging” es un app simple en react al cual subes imágenes y te detecta y agrupa las caras encontradas en las imágenes.

    Para detectar y reconocer las caras utilicé face-api.js, ya viene con modelos pre-entrenados para hacernos la vida más fácil.

    Aquí la liga al github del proyecto: https://github.com/keogh/face-tagging


  10. April 01, 2022

    Ayer usando el primer dataset de la conferencia matutina de AMLO que mencioné el otro día hice una nube de palabras (wordcloud), esto es una forma de visualizar que tantas veces aparece una palabra.

    Hubo algunas palabras que tuve que ignorar ya que desde mi análisis y perspectivas no son palabras significativas que deban a aparecer.

    nube de palabras de las conferencias matutinas de AMLO

    También ayer un amigo, Enrique Noriega, me recomendó aplicar un Part Of Speech (POS) Tagging para solo incluir sustantivos, verbos y adjetivos.


  11. March 30, 2022

    Hice un scraper para sacar las versiones estenográficas de las conferencias matutinas y otros discursos del Presidente de México Andrés Manuel López Obrador (AMLO). Esta es la primera versión, guarda el título and el contenido en archivos txt en carpetas ordenadas por fecha.

    Traté de obtener todas las desde hoy hasta 2018 pero que no pude obtener debido a que mi scraper se basa en la fecha del link y algunos links de 2018 y principios de 2019 no tienen ese formato, también hay varias que tienen mal la fecha, fuera de esos detalles que solucionaré luego pude sacar 55 MB de texto.

    Los próximos pasos son: mejorar el scraper, subir el código a github, subir el dataset a kaggle (o plataformas similares), jugar con el dataset y crear algunos modelos NLP.

    Por lo pronto aquí comparto el link a la primera versión de este dataset.


  12. March 28, 2022

    Ayer me encontré un tweet interesante sobre una persona que hizo un dataset con tweets del llamado “tech twitter” en español. El autor del dataset hizo un worldcloud con ese dataset, eso me dio la idea de hacer un wordcloud usando otros datasets, pronto publicaré los resultados.

    Por lo pronto este es el dataset y este un notebook en kaggle de como hizo el worldcloud


  13. March 21, 2022

    He creado un par de repositorios de algunos proyectos viejos que tenía en mi computadora si haberlos subido a Github.

    Uno es keras-playground que es algunos inicios donde jugaba con Keras y otros modelos como face recognition y yolov3.

    Dlgo-project. Este es un proyecto en progreso en que estoy tratando de crear un bot de Go basado en el libro Deep Learning and the Game of Go de Max Pumperla y Keving Ferguson. Conforme este proyecto avance iré posteando en esta bitacora.


  14. December 28, 2021

    La idea de llevar una bitácora sobre mi progreso en Machine Learning surgió cuando hice mi #66DaysofData en twitter.

    A veces me es imposible hacer algo de Machine Learning diariamente por lo que decidí iniciar este proyecto.

    Aquí llevaré registro de cualquier avance que haga en mi camino sobre Machine Learning, sin importan cuán pequeño, grande o esporádico sea.

    Bienvenidos! :)


© 2021 - 2023, Bitácora ML