Support tasks

Etiquetar con labelme

Segmentar imagenes y convertirlas a formato voc.

https://github.com/wkentaro/labelme/tree/main/examples/semantic_segmentation

Probar modelo con CBIS-DDSM

Construir dataset para CBIS-DDSM

Necesitamos construir el dataset usando Tensorflow como el ejemplo de abajo tal que nos permita entrenar rapidamente un modelo de Deep Learning cuya Base de datos sea CBIS-DDSM y que sea suficientemente flexible para futuros datasets (en particular, para el proporcionado por el hospital).

import tensorflow as tf
import tensorflow_datasets as tfds

# Buscar por defecto en el dataset
# Descargar (vía HTTP) y guardar en el directorio actual
# Cargar en el directorio actual
# El dataset debe permitir cargar diferentes ángulos
# ds: tf.Dataset
ds = tfds.load('cbis-ddsm', split='train', shuffle_files=True)

ds = ds.shuffle(1024).batch(32).prefetch(tf.data.AUTOTUNE)

for example in ds.take(1):
  image, label = example["image"], example["label"]

Lazy loading

El dataset debe permitir la carga de información en memoria de manera perezosa.

tf.data.Dataset.from_generator(
       generate_from_df, 
       args=[index],
       output_signature=(
         (tf.TensorSpec(shape=shape, dtype=tf.int32),
         tf.TensorSpec(shape=shape, dtype=tf.int32)),
         tf.TensorSpec(shape=(), dtype=tf.int32),
        )
).batch(32)

Grid plot

Necesitamos rápidamente visualizar las mamografías listadas tanto como función para Notebook como CLI.

Ejemplo de salida:

Ejemplo de código:

from PIL import Image
import cv2
import requests
import io
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
from skimage.morphology import disk

fig = plt.figure(figsize=(25., 25.))
grid = ImageGrid(fig, 111,nrows_ncols=(4, 4),axes_pad=0.75,)

files = 'experiment-1-preprocessed-mammograms-with-sam/*.npy'
for ax, case in zip(grid,  glob.glob(files)):
    try:
     ax.set_title(case)
     ax.imshow(cv2.cvtColor(load_numpy(case), cv2.COLOR_BGR2RGB))
    except Exception as e:
      print(case, " Error: ",str(e))

Aumento de datos

Aumentar datos en deep learning.

data_augmentation = tf.keras.Sequential([
  layers.RandomFlip("horizontal_and_vertical"),
  layers.RandomRotation(0.2),
])

Referencias

https://www.tensorflow.org/datasets/catalog/curated_breast_imaging_ddsm

https://github.com/sanchezcarlosjr/breast-cancer-toolkit/tree/main