Está en la página 1de 7

Claro, puedo explicarte cada celda de este notebook paso a paso:

Celda 1:

```python

from google.colab import drive

drive.mount('/content/drive')

```

Esta celda monta Google Drive en Google Colab. Esto permite acceder y trabajar con archivos
almacenados en tu Google Drive desde el entorno de Colab.

Celda 2:

```python

!pip uninstall umap

```

Esta celda desinstala la biblioteca "umap" si está instalada. Esto puede ser necesario si necesitas
actualizar o reinstalar la biblioteca.

Celda 3:

```python

!pip install umap-learn

```

Esta celda instala la biblioteca "umap-learn". UMAP es una técnica de reducción de


dimensionalidad que se utiliza en este notebook para la visualización de modelos.

Celda 4:

```python

import tensorflow as tf

import numpy as np

import cv2

import gc
import umap.umap_ as umap

#from umap import UMAP

from tensorflow import keras

import matplotlib.pyplot as plt

```

Esta celda importa diversas bibliotecas y módulos necesarios para el notebook. Incluye TensorFlow
para el aprendizaje profundo, NumPy para manipulación de matrices, OpenCV (cv2) para
procesamiento de imágenes, gc para la recolección de basura, UMAP para reducción de
dimensionalidad y Matplotlib para trazar visualizaciones.

Celda 5:

```python

def __image_to_uint_255__(image:np.ndarray):

"""

Convert float images to int 0-255 images.

Args:

image (numpy.ndarray): Input image with values between [0, 255], [0, 1] or [-1, 1]

"""

if image.dtype == np.uint8:

return image

if image.min() < 0:

image = (image + 1.0) / 2.0

return (image * 255).astype("uint8")

```

Esta es una función que convierte una imagen en formato de punto flotante en una imagen de tipo
entero en el rango de 0 a 255. Toma como entrada una matriz NumPy que representa una imagen
y realiza la conversión adecuada.

Celda 6:
```python

def get_GradCam_model(data_shape:tuple, model:tf.keras.Model):

"""

Function that generates the GradCAM's model for the model and data shape given.

This method returns a tf.keras.Model instance.

Args:

data_shape: A tuple with 3 or 4 Dimensions, the shape of data (Images or volumes).

model: A tensorflow keras Model instance with convolutional layers.

"""

# Get the last convolutional layer in the model

# ...

# (Esta función se trunca aquí por simplicidad, pero continúa en la celda siguiente)

```

Esta es una función que crea un modelo GradCAM a partir de un modelo de TensorFlow Keras
dado y una forma de datos dada. El modelo GradCAM se utiliza para generar mapas de activación
de clase para visualizar qué partes de una imagen son importantes para una clase específica.

La función busca la última capa convolucional en el modelo dado y luego calcula los gradientes con
respecto a esa capa.

Celda 7:

```python

def get_GradCam_heatmap(data:np.ndarray, grad_model:tf.keras.Model, class_index:int,


alpha_img, alpha_heatMap):

"""

Function that returns an array with the attention heatmap (In what part of the data the

network focuses) of the model with a given class using the GradCAM method.

Args:

data: A numpy array with 3 or 4 Dimensions (Images or volumes).

grad_model: A tensorflow keras Model instance of GradCAM.


class_index: An integer to guide the gradients with the specified class.

"""

with tf.GradientTape() as tape:

# ...

# (Esta función se trunca aquí por simplicidad, pero continúa en la celda siguiente)

```

Esta es una función que genera un mapa de calor de atención utilizando el método GradCAM.
Toma como entrada una matriz NumPy que representa una imagen, un modelo GradCAM, un
índice de clase y algunos parámetros para ajustar la visualización.

La función calcula los gradientes con respecto a la capa convolucional específica para la clase de
interés y luego utiliza esos gradientes para generar un mapa de calor que resalta las áreas
importantes de la imagen para esa clase.

Celda 8:

```python

# Aplicando

```

Esta celda es un comentario que indica que a partir de aquí se aplicarán las funciones definidas
anteriormente.

Celda 9:

```python

path = '/content/drive/MyDrive/Trabajo de
grado/Polipos/notebooks/DealingWithVideos/weights(3clases)/refinamFALSEVGG163CLASESNBIvi
deo1.h5'

model = tf.keras.models.load_model(path, compile = False)

print("modelo cargado!")

```
Esta celda carga un modelo preentrenado desde un archivo HDF5 (con extensión `.h5`). El modelo
se carga en la variable `model`. El parámetro `compile=False` indica que el modelo no se compilará
después de cargarse.

Celda 10:

```python

model.summary()

```

Esta celda imprime un resumen del modelo cargado, mostrando las capas y el número de
parámetros de cada capa.

Celda 11:

```python

gradCamModel = get_GradCam_model((112,112,3), model)

gradCamModel.output

```

Esta celda crea un modelo GradCAM (`gradCamModel`) basado en el modelo cargado


anteriormente. Se especifica la forma de datos `(112, 112, 3)` como entrada al modelo GradCAM.

Celda 12:

```python

path = '/content/drive/MyDrive/Trabajo de
grado/Polipos/notebooks/DealingWithVideos/DataSet/PolypDatasetProcesed/NBI/
adenoma_NBI/video_1/adenoma_NBI_video_1_img_0.png'

img = keras.preprocessing.image.load_img(path, target_size=(112, 112))

img_array = keras.preprocessing.image.img_to_array(img)

img_array = img_array* 1./255.

img_expand = tf.expand_dims(img_array, 0)

predictions = model.predict(img_expand)

print("predicciones: ", predictions)


indice = np.argmax(predictions)

print("indice de la clase: ", indice)

print("dim de la img_array: ", img_array.shape)

print("dtype img_array: ", img_array.dtype)

```

Esta celda carga una imagen de un archivo en una variable llamada `img_array`. Luego, normaliza
los valores de píxeles en el rango [0, 1] y la expande a una forma de 4 dimensiones para que
coincida con la entrada del modelo. Luego, realiza predicciones sobre la imagen utilizando el
modelo cargado y muestra

las predicciones y otros detalles sobre la imagen.

Celda 13:

```python

heatMap = get_GradCam_heatmap(img_array, gradCamModel, indice, 1, 0.5)

plt.imshow(heatMap, cmap='jet')

plt.colorbar()

```

Esta celda genera un mapa de calor de atención utilizando la función `get_GradCam_heatmap` en


la imagen cargada y el modelo GradCAM. Luego, muestra el mapa de calor utilizando Matplotlib y
agrega una barra de color para indicar los valores.

Celda 14:

```python

plt.figure(figsize=(10,10))

plt.subplot(121); plt.imshow(img_array); plt.title("Original"); plt.axis('off')

plt.subplot(122); plt.imshow(heatMap, cmap='jet'); plt.title("Overlapping"); plt.axis('off')#;


plt.colorbar(fraction=0.046, pad=0.04)

```
Esta celda crea una figura de Matplotlib con dos subtramas. En la primera subtrama, muestra la
imagen original. En la segunda subtrama, muestra el mapa de calor generado. También agrega
títulos a las subtramas y desactiva los ejes.

Celda 15:

```python

heatMap.shape

```

Esta celda muestra la forma del mapa de calor generado, que puede ser útil para verificar las
dimensiones del resultado.

Espero que esta explicación te haya ayudado a comprender el notebook. Si tienes más preguntas
sobre partes específicas del código o cómo funcionan las funciones, no dudes en preguntar.

También podría gustarte