Actualmente me dedico a la investigación y desarrollo de tecnologías/aplicaciones de "Visión Artificial" mediante la utilización de las librerías OpenCV y TensorFlow sobre lenguajes C# y Python.
Detección, clasificación y rastreo de vehículos en tiempo real.
Detalles técnicos y más información en siguientes videos (ver descripción en YouTube).
Implementación de un detector de carriles para vehículos partiendo de cero. Creación de un auto-encoder y transferencia de conocimiento a una nueva red neuronal.
Videos de prueba (3 y 5 carriles) disponibles (ver descripción en YouTube).
Aumento del número de píxeles de una imagen (multiplicando x4 y x8 cada dimensión) mediante aprendizaje profundo (DLSS).
Una vez ya conocidas las herramientas a bajo nivel de TensorFlow, y esta vez utilizando librerías de mayor nivel (Keras) se reimplementa un DLSS especializado en caras.
Reduciendo la imagen real a una mínima resolución (22x27 pixeles), se trata de multiplicar su tamaño (x8 en cada dimensión) procurando que el resultado sea realista a ojos humanos.
Resumen funcional: "Esto parece una cara. Estas manchas parecen ojos. Sustituyo las manchas de baja resolución por unos ojos a resolución mayor".
Se trata de un analizador (capas convolutivas), una red "generativa" para generar el resultado (ampliación + convolución y deconvolución dieron resultados pobres, así que terminé inspirándola en el PixelShuffle de este artículo) y un "discriminador" o "red antagónica/adversaria" para que el resultado resultara menos sintético (Generative Adversarial Network o GAN).
Como experimento, se utilizó la misma red (especializada en ampliar caras) para ampliar paisajes, obteniendo algunos resultados curiosos.
Los detalles (perdidos durante la reducción) los sustituye mediante formas suavizadas, como ha aprendido, pero cuando encuentra patrones compatibles con caras, aplica la imaginación para completarlas.
(Esquina inferior izquierda)
Se implementa mediante la librería Keras un modelo de lenguaje basado en Transformers (en este caso, un transformer decoder-only) para la generación de texto.
Se experimenta con ajustes de los hiperparámetros mientras se entrena como IA fundacional (sin más propósito que aprender el idioma).
Con "solo" 300 horas de entrenamiento (en un ordenador doméstico) se observan los comportamientos lógicos de este tipo y tamaño de modelo. Hace un uso razonablemente correcto del lenguaje y permite ser influenciado por la ventana de contexto, aunque la coherencia en los textos no es su fuerte.
Se observa un gran condicionamiento al último dataset utilizado en cada momento (textos cortos genéricos, libros, artículos del BOE, noticias ...)
Se adjunta un "cherry-picking" de distintas respuestas. En verde el contexto suministrado y en amarillo el texto generado por el modelo (click derecho y "abrir en nueva pestaña" para poder leerlo).
Se convierte la IA fundacional anterior en un "chatbot" mediante un proceso de ajuste fino.
Pese a las enormes limitaciones lógicas del modelo (escaso tamaño y entrenamiento por estar hecho en un ordenador doméstico), se observa un ligero grado de comprensión del lenguaje. En ocasiones toma palabras o expresiones de su entrada y las utiliza a su salida, intuye el tema sobre el que se le habla, trata de ofrecer información (casi siempre incorrecta) ...
Aunque ha sido entrenado solo en español, las frases en inglés que se encontraban por los textos han sido suficientes como para detectar el idioma de entrada y tratar de utilizarlo en sus respuestas.