- Para poder realizar esta actividad debes haber revisado la lectura correspondiente a la semana.
- Crea una carpeta de trabajo y guarda todos los archivos correspondientes (notebook y csv).
- Una vez terminada la actividad, comprime la carpeta y sube el
.zip
a la sección correspondiente
- Para este ejercicio trabajaremos de manera conjunta identificando la paleta de colores de carátulas de álbumes.
- Las imágenes se encuentran en una carpeta con el nombre
album_covers
- Cada imagen tiene la siguiente nomenclatura:
artista-nombre-del-album.jpg
.
- Las imágenes se encuentran en una carpeta con el nombre
- El objetivo es generar un método que nos permita identificar la dominancia de una cantidad finita de colores.
- Para importar imágenes y visualizarlas, vamos a importar las siguientes librerías:
- Partamos por incluír las librerías clásicas:
pandas
,numpy
ymatplotlib.pyplot
. sklearn.cluster.KMeans
: para extraer los principales componentes de una matriz numérica.skimage.io
: Para poder ingresar y leer imágenes.
- Partamos por incluír las librerías clásicas:
- Partamos por ingresar una imágen a nuestro ambiente de trabajo. Para ello ocuparemos
io.imread
. ¿Qué devuelve? - Para visualizar la imágen en el notebook, ocupe
io.imshow
.
- Con la representación numérica de la imágen, vamos a extraer la altura, el ancho y la cantidad de canales mediante
shape
. - Posteriormente redimensionaremos la imágen con
reshape
. - Partamos por inicializar nuestro algoritmo
KMeans
con unk=8
, ¿Qué significará esto? - Vuelva a implementar el mismo algoritmo con
MiniBatchKMeans
. ¿Qué diferencia existe conKMeans
?
- Ahora extraeremos las etiquetas predichas con
labels_
. Hasta el momento las etiquetas hacen referencia a cada centroide. Para imputar sentido en éstos, debemos extraer los valores de los centroides. - Para extraer los centroides (valores característicos), utilicemos el atributo
cluster_centers_
. - Con las etiquetas, generaremos un conteo de ocurrencia con
np.unique
. Para extraer el conteo, debemos implementar la opciónreturn_counts=True
.
- Con los centroides, vamos a convertirlos a formato hexadecimal. Vamos a generar una función y la pasaremos con
map
por cada centroide.
- Ahora generaremos un
DataFrame
con las siguientes variables:- El color
hex
. - La ocurrencia del color en cada pixel
count
. - El porcentaje de ocurrencia de cada color respecto a
cluster_centers_
.
- El color
- Posteriormente ordenaremos los colores de forma descendente por el porcentaje de ocurrencia.
- Genere un gráfico de barras donde presente el porcentaje de cada color. Las barras deben estar coloreadas con el color inferido.