- Cuente los valores de cada clase.
brain_df['mask'].value_counts()
- Mostrar aleatoriamente una imagen de resonancia magnética del conjunto de datos.
image = cv2.imread(brain_df.image_path[1301]) plt.imshow(image)
Image_path almacena la ruta de la resonancia magnética del cerebro para que podamos mostrar la imagen usando matplotlib.
Sugerencia: la parte verdosa de la imagen de arriba se puede considerar como el tumor.
- Además, muestre la imagen de máscara correspondiente.
image1 = cv2.imread(brain_df.mask_path[1301]) plt.imshow(image1)
Ahora, es posible que haya captado la pista de lo que realmente es la máscara. La máscara es la imagen de la parte del cerebro afectada por un tumor de la imagen de resonancia magnética correspondiente. Aquí, la máscara es de la resonancia magnética cerebral que se muestra arriba.
- Analice los valores de píxeles de la imagen de la máscara.
cv2.imread(brain_df.mask_path[1301]).max()
Salida: 255
El valor máximo de píxeles en la imagen de la máscara es 255, lo que indica el color blanco.
cv2.imread(brain_df.mask_path[1301]).min()
Salida: 0
El valor mínimo de píxeles en la imagen de la máscara es 0, lo que indica el color negro.
- Visualización de la resonancia magnética del cerebro, la máscara correspondiente y la resonancia magnética con la máscara.
count = 0 fig, axs = plt.subplots(12, 3, figsize = (20, 50)) for i in range(len(brain_df)): if brain_df['mask'][i] ==1 and count <5: img = io.imread(brain_df.image_path[i]) axs[count][0].title.set_text('Brain MRI') axs[count][0].imshow(img) mask = io.imread(brain_df.mask_path[i]) axs[count][1].title.set_text('Mask') axs[count][1].imshow(mask, cmap = 'gray') img[mask == 255] = (255, 0, 0) #Red color axs[count][2].title.set_text('MRI with Mask') axs[count][2].imshow(img) count+=1 fig.tight_layout()
- Elimine la identificación, ya que no es necesaria para su procesamiento.
# Drop the patient id column brain_df_train = brain_df.drop(columns = ['patient_id']) brain_df_train.shape
Obtendrá el tamaño del marco de datos en la salida: (3929, 3)
- Convierta los datos en la columna de máscara de formato entero a formato de cadena, ya que necesitaremos los datos en formato de cadena.
brain_df_train['mask'] = brain_df_train['mask'].apply(lambda x: str(x)) brain_df_train.info()
Como puede ver, ahora cada característica tiene el tipo de datos como objeto.
- Divida los datos en conjuntos de prueba y de tren.
# split the data into train and test data from sklearn.model_selection import train_test_split train, test = train_test_split(brain_df_train, test_size = 0.15) |
- Aumente más datos con ImageDataGenerator. ImageDataGenerator genera lotes de datos de imágenes de tensores con aumento de datos en tiempo real.
Referir aquí para obtener más información sobre ImageDataGenerator y los parámetrosLos "parámetros" son variables o criterios que se utilizan para definir, medir o evaluar un fenómeno o sistema. En diversos campos como la estadística, la informática y la investigación científica, los parámetros son fundamentales para establecer normas y estándares que guían el análisis y la interpretación de datos. Su adecuada selección y manejo son cruciales para obtener resultados precisos y relevantes en cualquier estudio o proyecto.... en detalle.
Crearemos un train_generator y validation_generator a partir de los datos del tren y un test_generator a partir de los datos de prueba.
# create an image generator from keras_preprocessing.image import ImageDataGenerator #Create a data generator which scales the data from 0 to 1 and makes validation split of 0.15 datagen = ImageDataGenerator(rescale=1./255., validation_split = 0.15) train_generator=datagen.flow_from_dataframe( dataframe=train, directory= './', x_col="image_path", y_col="mask", subset="training", batch_size=16, shuffle=True, class_mode="categorical", target_size=(256,256)) valid_generator=datagen.flow_from_dataframe( dataframe=train, directory= './', x_col="image_path", y_col="mask", subset="validation", batch_size=16, shuffle=True, class_mode="categorical", target_size=(256,256)) # Create a data generator for test images test_datagen=ImageDataGenerator(rescale=1./255.) test_generator=test_datagen.flow_from_dataframe( dataframe=test, directory= './', x_col="image_path", y_col="mask", batch_size=16, shuffle=False, class_mode="categorical", target_size=(256,256))