Modelos y plataformas de IA

Julien Rebetez, Ingeniero de Aprendizaje Automático Líder en Picterra – Serie de Entrevistas

mm
Añade Unite.AI a tus fuentes preferidas en Google

Julien Rebetez, es el Ingeniero de Software y Aprendizaje Automático Líder en Picterra. Picterra proporciona una plataforma en la nube geoespacial especialmente diseñada para entrenar detectores basados en aprendizaje profundo, de manera rápida y segura.

Sin una sola línea de código y con solo unas pocas anotaciones hechas por humanos, los usuarios de Picterra crean y despliegan modelos de aprendizaje profundo únicos y listos para usar.

Automatiza el análisis de imágenes satelitales y aéreas, lo que permite a los usuarios identificar objetos y patrones.

¿Qué es lo que te atrajo al aprendizaje automático y la inteligencia artificial?

Empecé a programar porque quería hacer videojuegos y me interesé en la gráfica por computadora al principio. Esto me llevó a la visión por computadora, que es más o menos el proceso inverso donde en lugar de tener la computadora creando un entorno falso, la tienes percibiendo el entorno real. Durante mis estudios, tomé algunos cursos de Aprendizaje Automático y me interesé en el ángulo de visión por computadora de esto. Creo que lo interesante del aprendizaje automático es que está en la intersección entre ingeniería de software, algoritmos y matemáticas, y todavía se siente un poco mágico cuando funciona.

 

Has estado trabajando en el uso del aprendizaje automático para analizar imágenes satelitales durante muchos años. ¿Cuál fue tu primer proyecto?

Mi primera exposición a imágenes satelitales fue el proyecto Terra-i (para detectar la deforestación) y trabajé en él durante mis estudios. Me sorprendió la cantidad de datos satelitales disponibles de forma gratuita que producen las diversas agencias espaciales (NASA, ESA, etc.). Puedes obtener imágenes regulares del planeta de forma gratuita cada día o así, y esto es un gran recurso para muchas aplicaciones científicas.

 

¿Puedes compartir más detalles sobre el proyecto “Terra-i”?

El proyecto Terra-i (http://terra-i.org/terra-i.html) fue iniciado por el profesor Andrez Perez-Uribe, de HEIG-VD (Suiza) y ahora es liderado por Louis Reymondin, de CIAT (Colombia). La idea del proyecto es detectar la deforestación utilizando imágenes satelitales disponibles de forma gratuita. En ese momento, trabajamos con imágenes MODIS (resolución de píxel de 250m) porque proporcionaban una cobertura uniforme y predecible (tanto espacial como temporalmente). Obteníamos una medición para cada píxel cada pocos días y, a partir de esta serie temporal de mediciones, podías intentar detectar anomalías o novedades, como las llamamos en aprendizaje automático a veces.

Este proyecto fue muy interesante porque la cantidad de datos fue un desafío en ese momento, y también había algún ingeniería de software involucrada para hacer que funcionara en varias computadoras, etc. Desde el lado del aprendizaje automático, utilizamos una Red Neuronal Bayesiana (no muy profunda en ese momento) para predecir qué debería ser la serie temporal de un píxel. Si la medición no coincidía con la predicción, entonces teníamos una anomalía.

Como parte de este proyecto, también trabajé en la eliminación de nubes. Tomamos un enfoque de procesamiento de señales tradicional, donde tienes una serie temporal de mediciones y algunas de ellas estarán completamente fuera de lugar debido a una nube. Utilizamos un enfoque basado en Fourier (HANTS) para limpiar la serie temporal antes de detectar novedades en ella. Una de las dificultades es que si la limpiábamos demasiado, también eliminaríamos novedades, así que hubo muchos experimentos para encontrar los parámetros adecuados.

 

También diseñaste e implementaste un sistema de aprendizaje profundo para la clasificación automática de tipo de cultivo desde imágenes aéreas (de dron) de campos de cultivo. ¿Cuáles fueron los principales desafíos en ese momento?

Esta fue mi primera exposición real al aprendizaje profundo. En ese momento, creo que el principal desafío fue más sobre hacer que el marco funcionara y utilizara adecuadamente una GPU que sobre el aprendizaje automático en sí. Utilizamos Theano, que fue uno de los antepasados de Tensorflow.

El objetivo del proyecto era clasificar el tipo de cultivo en un campo, a partir de imágenes de dron. Intentamos un enfoque donde el modelo de aprendizaje profundo utilizaba histogramas de color como entradas, en lugar de solo la imagen cruda. Para hacer que esto funcionara de manera razonablemente rápida, recuerdo haber tenido que implementar una capa personalizada de Theano, todo el camino hasta algún código CUDA. Esto fue una gran experiencia de aprendizaje en ese momento y una buena manera de profundizar un poco en los detalles técnicos del aprendizaje profundo.

 

Eres oficialmente el Ingeniero de Software y Aprendizaje Automático Líder en Picterra. ¿Cómo describirías tus actividades diarias?

Realmente varía, pero mucho de ello es mantener un ojo en la arquitectura general del sistema y del producto en general, y comunicarme con las diversas partes interesadas. Aunque el aprendizaje automático está en el núcleo de nuestro negocio, pronto te das cuenta de que la mayoría del tiempo no se pasa en el aprendizaje automático en sí, sino en todas las cosas que lo rodean: gestión de datos, infraestructura, UI/UX, prototipado, comprensión de los usuarios, etc. Esto es bastante un cambio desde la academia o experiencias anteriores en empresas más grandes, donde estás mucho más enfocado en un problema específico.

Lo interesante de Picterra es que no solo ejecutamos modelos de aprendizaje profundo para los usuarios, sino que también les permitimos entrenar sus propios modelos. Esto es diferente de muchos flujos de trabajo de aprendizaje automático típicos, donde tienes un equipo de aprendizaje automático que entrena un modelo y luego lo publica en producción. Lo que esto significa es que no podemos jugar manualmente con los parámetros de entrenamiento como a menudo se hace. Tenemos que encontrar algún método de entrenamiento que funcione para todos nuestros usuarios. Esto nos llevó a crear lo que llamamos nuestro ‘marco de experimentos’, que es un gran repositorio de conjuntos de datos que simula los datos de entrenamiento que nuestros usuarios construirían en la plataforma. Luego podemos probar fácilmente cambios en nuestra metodología de entrenamiento contra estos conjuntos de datos y evaluar si ayudan o no. Así que, en lugar de evaluar un solo modelo, estamos evaluando más una arquitectura + metodología de entrenamiento.

Otro desafío es que nuestros usuarios no son practicantes de aprendizaje automático, así que no necesariamente saben qué es un conjunto de entrenamiento, qué es una etiqueta, etc. Construir una UI para permitir que los no practicantes de aprendizaje automático construyan conjuntos de datos y entrenen modelos de aprendizaje automático es un desafío constante, y hay mucho vaivén entre los equipos de UX y aprendizaje automático para asegurarnos de que guiemos a los usuarios en la dirección correcta.

 

Algunas de tus responsabilidades incluyen prototipar nuevas ideas y tecnologías. ¿Cuáles son algunos de los proyectos más interesantes en los que has trabajado?

Creo que el más interesante en Picterra fue el prototipo de Detector Personalizado. Hace 1,5 años, teníamos ‘detectores integrados’ en la plataforma: esos eran detectores que nosotros mismos habíamos entrenado y habíamos hecho accesibles a los usuarios. Por ejemplo, teníamos un detector de edificios, un detector de coches, etc.

Esto es básicamente el flujo de trabajo de aprendizaje automático típico: tienes un ingeniero de aprendizaje automático que desarrolla un modelo para un caso específico y luego lo sirve a tus clientes.

Pero queríamos hacer algo diferente y empujar un poco los límites. Así que dijimos: “¿Qué pasa si permitimos a los usuarios entrenar sus propios modelos directamente en la plataforma”? Había algunos desafíos para hacer que esto funcionara: primero, no queríamos que esto tomara varias horas. Si quieres mantener esta sensación de interactividad, el entrenamiento debe tomar como máximo unos pocos minutos. Segundo, no queríamos requerir miles de anotaciones, lo que es típicamente lo que necesitas para grandes modelos de aprendizaje profundo.

Así que empezamos con un modelo super simple, hicimos un montón de pruebas en Jupyter y luego intentamos integrarlo en nuestra plataforma y probar todo el flujo de trabajo, con una UI básica, etc. Al principio, no funcionaba muy bien en la mayoría de los casos, pero había algunos casos en los que sí funcionaba. Esto nos dio esperanza y empezamos a iterar sobre la metodología de entrenamiento y el modelo. Después de algunos meses, pudimos llegar a un punto en el que funcionaba bien, y ahora tenemos a nuestros usuarios utilizando esto todo el tiempo.

Lo interesante de esto es el doble desafío de mantener el entrenamiento rápido (actualmente unos pocos minutos) y, por lo tanto, el modelo no demasiado complejo, pero al mismo tiempo lo suficientemente complejo como para que funcione y resuelva los problemas de los usuarios. Además, funciona con pocas (<100) etiquetas en muchos casos.

También aplicamos muchas de las “Reglas de aprendizaje automático” de Google (GOOGL ), en particular las que se refieren a implementar toda la canalización y métricas antes de empezar a optimizar el modelo. Esto te pone en modo de “pensamiento de sistema” donde te das cuenta de que no todos tus problemas deben manejarse por el núcleo del aprendizaje automático, sino que algunos de ellos pueden empujarse a la UI, algunos de ellos pre/procesados, etc.

 

¿Qué tecnologías de aprendizaje automático se utilizan en Picterra?

En producción, actualmente estamos utilizando Pytorch para entrenar y ejecutar nuestros modelos. También utilizamos Tensorflow de vez en cuando, para algunos modelos específicos desarrollados para clientes. Aparte de eso, es una pila científica de Python bastante estándar (numpy, scipy) con algunas bibliotecas geoespaciales (gdal) incluidas.

 

¿Puedes discutir cómo funciona Picterra en el backend una vez que alguien sube imágenes y desea entrenar la red neuronal para anotar objetos adecuadamente?

Claro, así que primero, cuando subes una imagen, la procesamos y la almacenamos en un formato “Cloud-Optimized-Geotiff” (COG) en nuestro almacén de blobs (Google Cloud Storage), lo que nos permite acceder rápidamente a bloques de la imagen sin tener que descargar toda la imagen más tarde. Esto es un punto clave porque las imágenes geoespaciales pueden ser enormes: tenemos usuarios que trabajan rutinariamente con imágenes de 50.000×50.000 píxeles.

Luego, para entrenar tu modelo, tendrás que crear tu conjunto de datos de entrenamiento a través de nuestra UI web. Lo harás definiendo 3 tipos de áreas:

  1. Áreas de ‘entrenamiento’, en las que dibujarás etiquetas de entrenamiento
  2. Áreas de ‘prueba’, donde el modelo predecirá para que puedas visualizar algunos resultados
  3. Área de ‘precisión’, donde dibujarás etiquetas también, pero que no se utilizarán para entrenamiento, solo para puntuación

Una vez que hayas creado este conjunto de datos, simplemente puedes hacer clic en ‘Entrenar’ y entrenaremos un detector para ti. Lo que sucede a continuación es que ponemos en cola un trabajo de entrenamiento, tenemos uno de nuestros trabajadores de GPU que lo recoge (nuevos trabajadores de GPU se inician automáticamente si hay muchos trabajos concurrentes), entrenamos tu modelo, guardamos sus pesos en el almacén de blobs y finalmente predecimos en el ‘área de prueba’ para mostrar en la UI. Desde allí, puedes iterar sobre tu modelo. Normalmente, detectarás algunos errores en ‘áreas de prueba’ y agregarás ‘áreas de entrenamiento’ para ayudar al modelo a mejorar.

Una vez que estés satisfecho con la puntuación de tu modelo, puedes ejecutarlo a gran escala. Desde la perspectiva del usuario, esto es realmente simple: solo haz clic en ‘Detectar’ junto a la imagen que deseas ejecutar. Pero es un poco más involucrado detrás de escena si la imagen es grande. Para acelerar las cosas, manejar fallos y evitar que las detecciones tomen varias horas, dividimos las detecciones grandes en celdas de cuadrícula y ejecutamos un trabajo de detección independiente para cada celda. Esto nos permite ejecutar detecciones a gran escala. Por ejemplo, tuvimos un cliente que ejecutó una detección sobre todo el país de Dinamarca en imágenes de 25 cm, lo que está en el rango de terabytes de datos – para un solo proyecto. Hemos cubierto un proyecto similar en este post de Medium.

 

¿Hay algo más que te gustaría compartir sobre Picterra?

Creo que lo genial de Picterra es que es un producto único, en la intersección entre aprendizaje automático y geoespacial. Lo que nos diferencia de otras empresas que procesan datos geoespaciales es que equipamos a nuestros usuarios con una plataforma de autoservicio. Pueden encontrar fácilmente ubicaciones, analizar patrones y detectar y contar objetos en imágenes de observación de la Tierra. Sería imposible sin aprendizaje automático, pero nuestros usuarios ni siquiera necesitan habilidades básicas de codificación – la plataforma hace el trabajo basándose en unas pocas anotaciones hechas por humanos. Para aquellos que quieren profundizar y aprender los conceptos básicos de aprendizaje automático en el dominio geoespacial, hemos lanzado un curso en línea integral.

Lo que también vale la pena mencionar es que las posibles aplicaciones de Picterra son infinitas – los detectores construidos en la plataforma se han utilizado en gestión urbana, agricultura de precisión, gestión forestal, gestión de riesgos humanitarios y de desastres, agricultura, etc., solo por nombrar las aplicaciones más comunes. Básicamente, nos sorprenden todos los días con lo que nuestros usuarios intentan hacer con nuestra plataforma. Puedes probarlo y hacernos saber cómo funcionó en las redes sociales.

Gracias por la gran entrevista y por compartir con nosotros lo poderoso que es Picterra, los lectores que deseen aprender más deben visitar el sitio web de Picterra.

Antoine es un líder visionario y socio fundador de Unite.AI, impulsado por una pasión inquebrantable por dar forma y promover el futuro de la IA y la robótica. Como empresario serial, cree que la IA será tan disruptiva para la sociedad como la electricidad, y a menudo se le escucha hablando con entusiasmo sobre el potencial de las tecnologías disruptivas y la AGI.

Como futurista, está dedicado a explorar cómo estas innovaciones darán forma a nuestro mundo. Además, es el fundador de Securities.io, una plataforma enfocada en invertir en tecnologías de vanguardia que están redefiniendo el futuro y remodelando sectores enteros.