
Proyecto Asadi — Sesión 1: por qué este proyecto, de dónde vienen las imágenes, y cómo preparar todo para empezar
Con Proyecto Javierre completo, empezamos la Fase 2: el mismo espíritu, pero en vez de cuatro genes en una tabla, vamos a trabajar con imágenes reales de microscopio. Esto exige una herramienta nueva que no hemos usado hasta ahora — una red neuronal convolucional (CNN) — así que antes de escribir ni una línea de esa red, dedicamos esta sesión a preparar el terreno: de dónde vienen las imágenes, qué muestran, y cómo dejar el ordenador listo para trabajar con ellas.
Por qué se llama Proyecto Asadi
Esta vez la conexión con la investigadora es todavía más directa que con Biola Javierre: Farkhondeh Asadi no investiga un tema parecido al nuestro — es una de las autoras del estudio y del propio conjunto de imágenes que vamos a usar.
Farkhondeh Asadi es catedrática (“Professor”, el rango académico más alto) de Gestión de Información Sanitaria en la Universidad de Ciencias Médicas Shahid Beheshti (Teherán), con más de 130 publicaciones y 2.400 citas. Es coautora del artículo “A fast and efficient CNN model for B-ALL diagnosis and its subtypes classification using peripheral blood smear images” (Ghaderzadeh, Aria, Hosseini, Asadi, Bashash y Abolghasemi, International Journal of Intelligent Systems, 2022), el trabajo científico del que sale el dataset de esta fase. Además, tiene un proyecto propio dedicado en concreto a un registro nacional de cáncer infantil (“Developing a Model for the National Pediatric Cancer Registry”) — así que el nombre encaja en los dos sentidos: la persona que ayudó a crear estos datos, y alguien volcada en la investigación del cáncer infantil.
De dónde vienen las imágenes
Las imágenes se prepararon en el laboratorio de médula ósea del Hospital Taleqani, en Teherán. Son fotografías reales de frotis de sangre periférica (una gota de sangre extendida en un cristal y teñida, la técnica de laboratorio más habitual para mirar las células al microscopio) de 89 pacientes con sospecha de leucemia linfoblástica aguda (ALL), tomadas con una cámara Zeiss a 100 aumentos. El diagnóstico definitivo de cada paciente —si tenía ALL de verdad, y de qué subtipo— lo confirmó un especialista con citometría de flujo, la prueba clínica de referencia. Licencia de dominio público (Open Database), acceso libre.
En total hay 3.256 imágenes, repartidas en dos grandes grupos:
- Benignas: 504 imágenes de hematogones, un tipo de célula inmadura pero sana.
- Malignas: 2.752 imágenes de blastos leucémicos reales, repartidos en tres subtipos según su grado de maduración (Early Pre-B, Pre-B y Pro-B ALL).
Por qué hace falta una IA para esto
Aquí está la clave de todo el proyecto: los hematogones sanos y los blastos leucémicos se parecen mucho al microscopio. Es precisamente esa dificultad de distinguirlos a simple vista lo que hace que el diagnóstico manual sea lento y propenso a errores — y lo que convierte este problema en un caso real donde un modelo entrenado con miles de ejemplos puede ayudar de verdad al personal de laboratorio, no sustituirlo, sino ser una segunda mirada más rápida.
Para empezar, vamos a simplificar el problema a dos clases: benigno frente a maligno (juntando los tres subtipos de ALL en una sola categoría “maligno”). Ya llegaremos, si hace falta, a distinguir los tres subtipos por separado — un problema con más clases es un concepto nuevo que no toca meter todavía en la primera sesión de esta fase.
Cómo preparar el ordenador antes de la próxima sesión
Estos son los pasos, en orden, para tener todo listo:
- Descargar el dataset. Entra en
kaggle.com/datasets/mehradaria/leukemiacon tu cuenta de Kaggle y pulsa el botón “Download”. Se descarga un archivo.zipde 116 MB. - Descomprimirlo en una carpeta propia. Crea una carpeta llamada
imagenes_asadidentro de tu carpeta del proyecto, y descomprime ahí el contenido del zip. Dentro encontrarás dos carpetas,OriginalySegmented, y dentro de cada una, cuatro subcarpetas:Benign,Early,PreyPro. Para esta fase vamos a trabajar conOriginal(las imágenes tal cual, sin procesar). - Instalar TensorFlow, la librería que usaremos para construir la red neuronal. Desde una terminal, o desde una celda de Jupyter con
!delante:
pip install tensorflow
No hace falta tarjeta gráfica: con unos pocos miles de imágenes, entrenar en un procesador normal es perfectamente asumible.
Primer vistazo a las imágenes
Con todo instalado y descomprimido, comprobamos que podemos acceder a los datos. Primero, contamos cuántas imágenes hay en cada carpeta:
import os
carpeta_datos = "imagenes_asadi/Original"
for clase in os.listdir(carpeta_datos):
ruta_clase = os.path.join(carpeta_datos, clase)
numero_imagenes = len(os.listdir(ruta_clase))
print(f"{clase}: {numero_imagenes} imágenes")
Deberíais ver algo parecido a Benign: 504, Early: 985, Pre: 963, Pro: 804.

Ahora, para comprobar con nuestros propios ojos eso de que “se parecen mucho”, mostramos una imagen benigna y una maligna una al lado de la otra:
import matplotlib.pyplot as plt
from PIL import Image
# Cogemos la primera imagen de cada carpeta
carpeta_benigno = os.path.join(carpeta_datos, "Benign")
carpeta_maligno = os.path.join(carpeta_datos, "Early")
imagen_benigna = Image.open(os.path.join(carpeta_benigno, os.listdir(carpeta_benigno)[0]))
imagen_maligna = Image.open(os.path.join(carpeta_maligno, os.listdir(carpeta_maligno)[0]))
fig, ejes = plt.subplots(1, 2, figsize=(8, 4))
ejes[0].imshow(imagen_benigna)
ejes[0].set_title("Benigno (célula sana)")
ejes[0].axis("off")
ejes[1].imshow(imagen_maligna)
ejes[1].set_title("Maligno (blasto de ALL)")
ejes[1].axis("off")
plt.show()
[COMPLETAR EN CLASE: ¿a simple vista, os resulta fácil o difícil distinguir cuál es cuál?]

Próximo paso
En la próxima sesión construiremos nuestra primera red neuronal convolucional con Keras, y la entrenaremos para que aprenda, por sí sola a partir de estas imágenes, a distinguir lo que a nosotros nos ha costado distinguir a simple vista.



