El día anterior a escribir esta entrada parecía que iba a ser un día sencillo en el trabajo. Tras arreglar algunos problemas en la salida de una IA que me tenía que devolver 14.080 imágenes y me devolvía algo más de 11.000. La mañana empezaba bien, solventando rápido el problema que me había atormentado a última hora de la tarde. Ahora sólo tenía que unir esas 14080 imágenes en 4 bandas (B02, B03, B04 y B08 de Sentinel-2) de 3520 teselas que se iban ensamblando de norte a sur y de este a oeste. Parecía que iba a ser sencillo y ya había hecho antes cosas parecidas. Hasta mi primera entrada en este blog trataba sobre cómo separar y ensamblar de forma sencilla imágenes de satélite. Le calculaba un par de horas… pero la cosa se empezó a torcer pronto. Primero organizaba bien sólo las primeras 10 teselas, agrupando las siguientes en un orden que no entendía (pero tenía un por qué), tras solventar eso, sólo cuadra la primera columna, luego la segunda y consecutivas empiezan a acumular una diferencia de una tesela más en cada columna. No sé si os pasa, pero a mí me pasa mucho que hay un momento en el que has dado tantas vueltas a los bucles que te empiezas a alejar de la solución y dejas de pensar con claridad. Pérdida de referencias, lo llaman. Empiezo a consultar mi entrada en este blog que trataba del tema, recurro a stackoverflow, no consigo dar con la tecla, pruebo mil modificaciones a mi código. Entonces, en una notificación de LinkedIn que ojeo en uno de esos momentos en los que ya no puedes más, veo un meme sobre el uso de chatGPT por desarrolladores.
…y si funciona?
Yo sabía que mi código estaba cerca de solucionar el problema, no era muy enrevesado y no usaba muchas librerías, sólo “os” y “numpy”, que son dos librerías básicas que cualquier chatbot que se las dé de saber programar en Python debería conocer. Tampoco estaba yo muy seguro de que fuese a funcionar, sólo había usado ChatGPT para discutir con ella y que reconociese que se puede equivocar (Spoiler: se equivoca mucho, pero jamás reconocerá que lo hace, a pesar de que te pida perdón por hacerlo. En fin… cosas de robots).
Os voy a contar cómo me ayudó a resolver mi problema y voy a ir mostrando las capturas del proceso, pero como esta es una historia real del desarrollo de un trabajo profesional para la empresa y que necesitaba resultados, por el medio faltan algunas capturas, porque me entró la responsabilidad de terminar el trabajo rápido y bien (con “xeito” que diríamos en Galicia) y descuidé la parte de documentar la experiencia.
Como ya sabéis tenía un código que casi resolvía el problema, así que lo primero que hago es abrir chatGPT y como en una de nuestras discusiones insistió en que también hay que ser educado, así que empiezo preguntando si me puede ayudar.
Teniendo ya su permiso y alguna instrucción de cómo hacerlo, pego mi código una descripción del problema.
No voy a mentir, yo tenía esperanza de que al poner esto, me devolviese la solución y todos pudiésemos seguir con nuestra vida, pero no fue lo que sucedió. En vez de eso, me empieza a proponer soluciones que no solventan mi problema. Parece que ChaGPT y yo no nos estamos entendiendo bien.
A ver, no te desvíes, mi código casi funciona, necesito una pistilla y me gustaría más código y menos prosa.
Esto que me dice ahora tiene sentido, pero si estoy usando una IA para que me haga el trabajo, casi prefiero que me lo dé “mascado” y no tener que interpretar lo que me dice. Así que le pido que me proporcione todo el código y lo hace. Así sí.
Lo pruebo y vaya… funciona! Cargo la imagen de “B02” en QGIS y todo está correcto. Las dimensiones, no se ve ninguna tesela que no cuadre con la siguiente. Qué fácil ha sido todo. Esto de programar con ChatGPT es un chollo… oh, espera… al cargar B03 veo que la imagen incluye varias filas del sur de la imagen en el norte y desplazan el resto de la imagen hacia el sur, en B04 y B08 este efecto es acumulativo. Algo no ha ido bien y me empiezo a preocupar, aquí dejo de hacer capturas durante un rato, hay que sacar el trabajo adelante.
Al formular las nuevas objeciones al chatbot, le pasa como a mí y se empieza a alejar de la solución, las cosas que me dicen están cada vez más lejos de mostrar un resultado satisfactorio. Decido parar, recargar la página y empezar una nueva conversación en la que no se sepa nada de lo dicho anteriormente. Con lo aprendido hasta ahora realizo una descripción concisa y detallada de mi problema y los recursos que utilizo, la estructura de carpetas y el sistema de nombres de los archivos. Me genera algún código con muchos más problemas que el que teníamos antes, parece que no voy a poder arreglarlo así y creo que me empiezo a acercar del tiempo que me habría llevado hacerlo a mí solo. Casi me rindo, pero voy a repetir una vez más, iniciando la IA otra vez y cambiando un par de cosas de la descripción.
Esta vez a la primera y sin ningún código de ejemplo me genera un código que casi funciona, pero ordena las teselas primero en horizontal y luego en vertical, pero ya quiero que lo haga ella.
Otra vez parece que vamos a entrar en el bucle de las soluciones que no hacen nada, la verdad es que en este punto el código parece tener fácil arreglo, pero oye, este código ya no es mío hace mucho tiempo, arréglalo tú. Así que te voy a explicar otra vez cómo es el fallo a ver si nos centramos y acabamos ya con esto.
Bien, esto quería yo. Cargo la imagen resultante en QGIS y… perfect! Parece que he ganado, pero me acuerdo de lo que me pasó antes y procedo a comprobar la B03 y resulta que es la misma que B02… y que B04… y que B08… maldita sea! Esto no se acaba nunca. Le pido que me lo arregle y me describe el problema, pero la solución que me da no vale para nada y yo ya estoy cansado y la respuesta es demasiado evidente como para que me pueda el orgullo de que termine ella su código. Añado un pequeño contador para que al principio de cada banda vaya a la primera tesela de la banda que toca en dicha iteración en vez de volver a la primera al reiniciarse la variable idx.
Ahora ya tenemos 4 una imagen de 4 bandas con sus 16640 píxeles de alto y sus 13824 de ancho y con todo en su sitio. Como podéis ver gracias a lo que parece una cuadrícula que enmarca cada tesela, se han ensamblado correctamente y ya puedo seguir con el resto del proyecto, precisamente eliminando esas líneas, que no son otra cosa que un defecto que tienen las teselas obtenidas por la red neuronal que estoy usando, que incluye una fila y una columna de píxeles con valores bajos al sur y el oeste de cada imagen de salida.
Ha sido casi una batalla entre ChatGPT y yo, o más bien una colaboración donde el entendimiento no ha sido siempre fácil. Es verdad que es probable que en un día más lúcido por mi parte o si me hubiese decantado por el uso de OpenCV o patchify para generar mis imágenes la solución hubiese llegado antes, pero la experiencia ha sido enriquecedora y satisfactoria. Comprobar la habilidad de este chatbot para entender tus consultas y ofrecer soluciones distintas a los mismos problemas, observar la capacidad para abordar el mismo asunto con enfoques distintos es algo que a mí me ha impresionado. Puede que aún no estén listas para suplantarnos, pero la ayuda y el incremento en la productividad de los desarrolladores que están produciendo (y que aumentará exponencialmente) supondrá un cambio de paradigma en nuestro mercado laboral. Casi mejor que lo vayamos asumiendo, aprendamos a usarlas a nuestro favor y no estaría mal ir buscando una alternativa por si mañana se necesitan 3 desarrolladores para el trabajo que hoy hacemos 30 y nosotros estamos entre los 27 que sobran.
ChatGPT es un chatbot de uso gratuito, alimentado por un sistema de aprendizaje profundo que ha sido creado por OpenAI.
Puedes preguntarle más sobre sí mismo en: https://openai.com/blog/chatgpt/
Deja tu comentario