Segmentación de resonancia magnética cerebral | pitón | Flujo de tensor | Keras

En este artículo veremos cómo realizar la segmentación de tumores cerebrales a partir de imágenes de resonancia magnética. Probaremos diferentes arquitecturas que son populares para problemas de segmentación de imágenes.

Empecemos por definir cuál es nuestro problema empresarial.

Problema comercial:

Un tumor cerebral es una masa anormal de tejido en la que las células crecen y se multiplican abruptamente, que permanece sin control por los mecanismos que controlan las células normales.

Los tumores cerebrales se clasifican en tumores benignos o de bajo grado (grado I o II) y malignos o de alto grado (grado III y IV).Los tumores benignos no son cancerosos y se consideran no progresivos, su crecimiento es relativamente lento y limitado.

Sin embargo, los tumores malignos son cancerosos y crecen rápidamente con límites indefinidos. Por lo tanto, la detección temprana de tumores cerebrales es crucial para el tratamiento adecuado y para salvar vidas humanas.

Planteamiento del problema:

El problema que estamos tratando de resolver es la segmentación de imágenes. La segmentación de imágenes es el proceso de asignar una etiqueta de clase (como persona, automóvil o árbol) a cada píxel de una imagen.

Puede pensar en ello como una clasificación, pero a nivel de píxel, en lugar de clasificar la imagen completa bajo una etiqueta, clasificaremos cada píxel por separado.

Conjunto de datos:

El conjunto de datos se descarga de Kaggle.

Este conjunto de datos contiene imágenes de resonancia magnética del cerebro junto con máscaras manuales de segmentación de anomalías FLAIR.

Las imágenes se obtuvieron de The Cancer Imaging Archive (TCIA). Corresponden a 110 pacientes incluidos en la colección de gliomas de grado inferior de The Cancer Genome Atlas (TCGA) con al menos secuencia de recuperación de inversión atenuada por líquido (FLAIR) y datos de grupos genómicos disponibles.

Los grupos genómicos tumorales y los datos del paciente se proporcionan en el archivo data.csv. Las imágenes están en formato tif.

Análisis exploratorio y preprocesamiento:

La siguiente es una imagen de muestra y su máscara correspondiente de nuestro conjunto de datos.

segmentación de imágenes cerebrales

Imprimamos una imagen del cerebro que tiene un tumor junto con su máscara.

segmentación de imágenes cerebrales

Ahora vamos a comprobar la distribución de imágenes tumorales y no tumorales en el conjunto de datos.

Segmentación de resonancia magnética cerebral tumoral vs no tumoral

Aquí 1 indica tumor y 0 indica ausencia de tumor. Disponemos de un total de 2556 imágenes no tumorales y 1373 tumorales.

Como paso previo al procesamiento, recortaremos la parte de la imagen que contiene solo el cerebro. Antes de recortar la imagen, tenemos que lidiar con un problema importante que es el bajo contraste.

Un problema común con las imágenes de resonancia magnética es que a menudo sufren de bajo contraste. Por lo tanto, mejorar el contraste de la imagen mejorará en gran medida el rendimiento de los modelos.

Por ejemplo, eche un vistazo a la siguiente imagen de nuestro conjunto de datos.

imagen de resonancia magnética de bajo contraste

A simple vista no podemos ver nada. Es completamente negro. Intentemos mejorar el contraste de esta imagen.

Hay dos formas comunes de mejorar el contraste.

  1. Ecualización de histogramas y
  2. Ecualización de histograma adaptativo limitado de contraste (CLAHE)

Primero intentaremos la ecualización de histogramas. Podemos usar OpenCV igualarHist()

La siguiente es la imagen ecualizada del histograma.

histograma ecualización cerebro mri

Ahora vamos a aplicar CLAHE. Usaremos OpenCV crearCLAHE()

La siguiente es la imagen después de aplicar CLAHE

Segmentación de imágenes cerebrales CLAHE

De los resultados tanto de la ecualización del histograma como de CLAHE, podemos concluir que CLAHE produce mejores resultados. La imagen que obtuvimos del ecualizador de histograma parece poco natural en comparación con CLAHE.

Ahora podemos proceder a recortar la imagen.

El siguiente es el procedimiento que seguiremos para recortar una imagen.

1) Primero cargaremos la imagen.

2) Luego aplicaremos CLAHE para potenciar el contraste de la imagen.

3) Una vez que se mejore el contraste, detectaremos los bordes en la imagen.

4) Luego aplicaremos la operación de dilatación para eliminar pequeñas regiones de ruidos.

5) Ahora podemos encontrar los contornos en la imagen. Una vez que tengamos los contornos buscaremos los puntos extremos del contorno y recortaremos la imagen.

resonancia magnética del cerebro

La imagen de arriba muestra el proceso de mejora del contraste y recorte de una sola imagen. De manera similar, haremos esto para todas las imágenes en el conjunto de datos.

El siguiente código realizará el paso de procesamiento previo y guardará las imágenes recortadas y sus máscaras.

Métricas de evaluación:

Antes de continuar con la parte de modelado, debemos definir nuestras métricas de evaluación.

Las métricas más populares para los problemas de segmentación de imágenes son el coeficiente de dados y la intersección sobre unión (IOU).

pagaré:

IoU es el área de superposición entre la segmentación predicha y la verdad básica dividida por el área de unión entre la segmentación predicha y la verdad básica.

pagaré = frac

Coeficiente de dados:

El coeficiente de dados es 2 * el área de superposición dividida por el número total de píxeles en ambas imágenes.

Coeficiente de dados = frac

1 – El coeficiente de dados nos dará la pérdida de dados. Por el contrario, la gente también calcula la pérdida de dados como -(coeficiente de dados). Podemos elegir cualquiera de los dos.

Sin embargo, el rango de pérdida de dados difiere según cómo lo calculemos. Si calculamos la pérdida de dados como 1-dice_coeff entonces el rango será [0,1] y si calculamos la pérdida como -(dice_coeff) entonces el rango será [-1, 0].

Si desea obtener más información sobre el pagaré y el coeficiente de dados, puede leer esto excelente articulo por Ekin Tiu.

Modelos:

He entrenado totalmente a tres modelos. Son

  1. Red totalmente convolucional (FCN32)
  2. U-NET y
  3. red de resUstos

Los resultados de los modelos se encuentran a continuación.

Resultados de la segmentación del cerebro

Como puede ver en los resultados anteriores, el modelo ResUNet funciona mejor en comparación con otros modelos.

Sin embargo, si observa los valores del pagaré, está cerca de 1, lo que es casi perfecto. Esto podría deberse a que el área no tumoral es grande en comparación con la tumoral.

Entonces, para confirmar que el IOU de prueba alto no se debe a eso, calculemos los valores de IOU para las imágenes tumorales y no tumorales por separado.

Primero dividiremos nuestros datos de prueba en dos conjuntos de datos separados. Uno con imágenes tumorales y otro con imágenes no tumorales.

Una vez que hayamos dividido el conjunto de datos, podemos cargar nuestro modelo ResUnet y hacer las predicciones y obtener las puntuaciones de los dos conjuntos de datos por separado.

Los siguientes son los resultados por separado en las imágenes tumorales y no tumorales.

resolución

Los números se ven bien. Por lo tanto, podemos concluir que la puntuación no es alta debido al sesgo hacia las imágenes no tumorales que tienen un área relativamente grande en comparación con las imágenes tumorales.

Los siguientes son los resultados de muestra del modelo ResUNet.

resultados de segmentación de resonancia magnética cerebral

Los resultados se ven bien. La imagen de la izquierda es la imagen de entrada. La del medio es la verdad básica y la imagen que está a la derecha es la predicción de nuestro modelo (ResUNet).

Para obtener el código completo de este artículo, visite este Repositorio de Github.

Referencias:

1) https://www.pyimagesearch.com/

2) https://opencv-python-tutroals.readthedocs.io/en/latest/index.html

3) https://www.kaggle.com/bonhart/brain-mri-data-visualization-unet-fpn

4) https://www.kaggle.com/monkira/brain-mri-segmentation-using-unet-keras

Fuente del artículo

Deja un comentario