Closed domingomery closed 3 years ago
Hola a tod@s,
Quizás algunos se han encontrado con el siguiente error al usar haralick con la imagen ISIC_0029755_00.jpg y su segmentación ISIC_0029755_00_seg.jpg
Investigando el código de la librería, descubrí que este error es producto de una división 0/0 que desencadena una serie de problemas dentro de la librería. Por esta razón hice una PR con una solución para que no pase aquí: https://github.com/mbucchi/pybalu/pull/6 .
De todas formas dudo que me la acepten en un corto plazo, asi que si desean pueden instalar la librería usando mi fork: https://github.com/gregschuit/pybalu. En colab pueden instalarlo así:
!git clone https://github.com/gregschuit/pybalu.git
!pip install ./pybalu
Con eso dejará de ocurrir el error mencionado.
Otro detalle que cabe mencionar, es que si están obteniendo este error:
Es porque la librería espera que el tipo de los datos de segmentación sea np.int. Pueden corregirlo con astype
así:
haralick_features(img[:,:,0], region=seg.astype(np.int), distance=1)
Eso es todo, Saludos!
Mil gracias @gregschuit por tu aporte!
Hola! Bajo qué métrica debemos evaluar el desempeño de nuestros clasificadores? Ya que el accuracy que hemos visto es más bien binario.
Bajo qué métrica debemos evaluar el desempeño de nuestros clasificadores?
Se debe reportar el Accuracy y la Matriz de Confusión.
Ya que el accuracy que hemos visto es más bien binario.
Binario? el accuracy visto en clases (desde las primeras clases, tarea 01, reconocimiento facial, etc.) es siempre el porcentaje de muestras correctamente bien clasificadas, es decir la suma de la diagonal de la matriz de confusión dividido por el total de muestras. Esto se aplica para K clases, con K mayor o igual a 2. Te recomiendo revisar la clase sobre la Matriz de Confusión y el Trabajo en Clases 11.
Los conceptos TPR y FPR es para clasificación binaria (como la tarea 03). En el proyecto no hay que medir estas dos métricas de desempeño.
Hola profesor,
Estabamos revisando las imágenes segmentadas y vemos que hay algunas donde el lunar esta representado por pixeles blancos y el fondo negro, y otras donde el lunar es lo negro y el fondo blanco. Aquí hay un ejemplo: test / clase 0 / ISIC_0024372_00_seg:
test / clase 0 / ISIC_0026171_00_seg:
Nos parece muy raro, pero son varias las que estan invertidas
Claramente esto es un error humano de quien realizó la base de datos. La imagen correcta en estos casos debe ser la imagen negativa. Si hay alguien del curso puede arreglar este problema se lo agradecería muchísimo, de lo contrario tendremos que seguir trabajando con datos que no son perfectos.
Dejo un zip usable como reemplazo a lunares7p con las segmentaciones arregladas. Es posible que algunas sigan estando mal o que algunas que estaban bien ahora estén mal. Se cambian aprox 5% de las imágenes de segmentación. El archivo: fixed.zip El truco:
# Cargar imagen original
img = (plt.imread(segmentation_path) > 127) * 1
# Sumar bordes
top = img[0,:].sum()
bottom = img[-1,:].sum()
left = img[:,0].sum()
right = img[:,-1].sum()
total = top + bottom + left + right
# Invertir si:
if (total > 800 or
(total > 200 and img[127,127] == 0)):
img *= -1
Dejo un zip usable como reemplazo a lunares7p con las segmentaciones arregladas...
Mil gracias @nico-mac !
Comentar, preguntar todo lo relacionado con el proyecto...