franyack / IMachineApp

This Android application uses the CIEngine module to automatically manage the photos and images on the device. Then you will be able to manage the result according to your criteria, by moving or erasing images as you want.
1 stars 0 forks source link

Tratamiento de carpetas con pocas imágenes dentro #26

Closed franyack closed 6 years ago

franyack commented 6 years ago

El objetivo de este issue es poner en discusión formas de tratar aquellos escenarios donde el resultado del clustering arroje carpetas con poco porcentaje de imágenes sobre la cantidad de imágenes total (ej: carpetas con una cantidad de imágenes menor al 4% del total). Al final del día, lo que se quisiera lograr es "conglomerar" estas carpetas pequeñas con otras que tengan un grado de similitud alto.

Un caso de estudio podría ser el siguiente:

1- Detectar aquellos cluster que cumplan con la condición nombrada anteriormente (≈ 4% del total) 2- Para TODOS los clusters (tanto los chicos como los grandes): 2.1 - Buscar por cada par de imágenes el número de afinidad que tienen entre sí. 2.2 - Sacar un promedio de todos estos valores y así obtener una "afinidad promedio" por cada cluster. 3- Promediar cada "afinidad promedio" de los grupos pequeños con las demás y observar si empeora o mejora. 4- Volver a medir si algún "nuevo cluster" sigue cumpliendo con la condición de ser muy chico y repetir el proceso, o bien desistir y terminar.

Debería realizarse sobre un caso concreto, afín de poder identificar y medir cuanto es (numéricamente) que empeore o mejore la conglomeración (que mantenga el promedio? que lo supere tanto %?, etc).

ldvignolo commented 6 years ago

Buenas! Me parece muy buena la estrategia que proponés. Lo que me genera duda es el paso 3, donde proponés promediar la afinidad promedio de distintos grupos. Me parece que ese promedio directo no va a representar la afinidad global de un cluster con otro. Para poder decidir a qué cluster "grande" agregarle las imágenes de un cluster "chico" me parece que habría que buscar las afinidades de cada par de imágenes de la suma de ambos ambos clusters. Es decir, para "cada cluster grande candidato" armar un nuevo grupo que contenga las imágenes de éste junto con las imágnes del "cluster chico", y buscar todas las afinidades de a pares en este nuevo cluster. Luego se puede comparar la afinidad promedio de ese nuevo cluster con la de los otros clusters, para ver si conviene o no juntarlos.

2018-07-19 18:20 GMT-03:00 franyack notifications@github.com:

El objetivo de este issue es poner en discusión formas de tratar aquellos escenarios donde el resultado del clustering arroje carpetas con poco porcentaje de imágenes sobre la cantidad de imágenes total (ej: carpetas con una cantidad de imágenes menor al 4% del total). Al final del día, lo que se quisiera lograr es "conglomerar" estas carpetas pequeñas con otras que tengan un grado de similitud alto.

Un caso de estudio podría ser el siguiente:

1- Detectar aquellos cluster que cumplan con la condición nombrada anteriormente (≈ 4% del total) 2- Para TODOS los clusters (tanto los chicos como los grandes): 2.1 - Buscar por cada par de imágenes el número de afinidad que tienen entre sí. 2.2 - Sacar un promedio de todos estos valores y así obtener una "afinidad promedio" por cada cluster. 3- Promediar cada "afinidad promedio" de los grupos pequeños con las demás y observar si empeora o mejora. 4- Volver a medir si algún "nuevo cluster" sigue cumpliendo con la condición de ser muy chico y repetir el proceso, o bien desistir y terminar.

Debería realizarse sobre un caso concreto, afín de poder identificar y medir cuanto es (numéricamente) que empeore o mejore la conglomeración (que mantenga el promedio? que lo supere tanto %?, etc).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/franyack/IMachineApp/issues/26, or mute the thread https://github.com/notifications/unsubscribe-auth/APJ-G6wqafJbX6QeWSwzHJTH29dfoUMFks5uIPgSgaJpZM4VXHHT .

franyack commented 6 years ago

Buenas, cómo andan? Estuve desarrollando un poco la idea de esto, agregando el cambio que sugirió Lelo! Les paso a contar lo que estuve haciendo: Una vez obtenida la matriz clusterizada por el algoritmo de Markov:

Hasta acá es donde llegué. Estuve haciendo debug sobre un lote de imágenes que estoy usando para pruebas y la verdad es que, según entiendo yo, el número que representa a las afinidades no varía entre un grupo de imágenes de perros contra un grupo de imágenes de bebida, por ejemplo:

Por lo que los promedios entre grupos son bastante parecidos, y al sumar una o un par de imágenes y recalcular el promedio no se nota grandes diferentes cuando es sumado al grupo correcto o no.

Así que verdaderamente no estoy muy seguro de que esta idea pueda llegar a servir. De momento, lo que si voy a hacer es aprovechar el desarrollo de la diferenciación entre grupos grandes y chicos para conglomerar a todos los chicos en un solo grupo, y así empezar de alguna manera a evitar una cantidad de carpetas excesivas.

franyack commented 6 years ago

A raíz de un comentario realizado por Lea en #27, donde propone hacer un merging buscando por cada imagen que quedó sola aquella imagen con la cual tenga mayor afinidad y añadirla al cluster de esta última, en el siguiente commit: franyack/IMachineAppV2@5e2570e9836fd6d86a4381b496e0dcf121b3456b se trabajó sobre ello. En principio, se lograron métricas no muy diferentes con respecto a mandarlas a todas en una misma carpeta. Voy a hablar mas de ello en un comentario realizado en #24 mostrando resultados, y en base a ello definimos que camino seguir. De momento yo opino seguir esta última idea, ya que veo que tiene más sentido que la de simplemente poner a todas las imágenes sin cluster en una sola carpeta y ya.

franyack commented 6 years ago

Este issue se puede cerrar. Se optó por seguir con lo realizado en el siguiente commit: franyack/IMachineAppV2@5e2570e