3 votos

Aprendizaje automático - PCA y KNN en imágenes rgb son demasiado lentos

Trabajo con python e imágenes de tablas (tomadas de arriba). Mi objetivo es tomar una foto de una tabla al azar y luego encontrar las tablas más parecidas a ella en mi base de datos. Obviamente, la principal característica que distingue a las mesas es su forma (cuadrada, rectangular, redonda, ovalada), pero también hay otros detalles.

Por ahora, sólo estoy ejecutando un PCA y un KNN sobre las imágenes rgb de las tablas para encontrar las tablas más similares en la base de datos para cada una de las tablas de la base de datos.

El problema es que cuando aumento el número de imágenes rgb de las tablas, por ejemplo, de 400 a 500, el tiempo de procesamiento aumenta considerablemente. Mi objetivo final es ejecutar este programa con 2000 o incluso 4000 imágenes de tablas por lo que necesito un algoritmo de aprendizaje automático más eficiente para mi tarea.

¿Me pueden recomendar otro algoritmo de aprendizaje automático más eficiente para esta tarea?

3voto

Even Mien Puntos 10122

Depende de muchos parámetros. Llamada a $h$ la altura, $w$ la anchura de la imagen y $n_{channels}$ entonces el número de canales, probablemente 3, entonces definimos $p=h*w*n_{channels}$ .

El paso PCA tiene una complejidad de $O(np^2+p^3)$ para la formación y O( $np$ ) para las predicciones. Llamada a $p'$ el número de componentes principales que mantiene, ejecutando un (ingenuo) $k$ La búsqueda de vecinos más cercanos en los puntos tendrá una complejidad de $O(p'n)$ .

Así que aumentar el tamaño del entrenamiento en un 20% debería aumentar el tiempo que se tarda en un 20%, lo que me parece un poco desconcertante (a no ser que tengas problemas de memoria y pasen otras cosas).

Además, si quieres que tu método sea más rápido, basándote en la definición de $p$ puede observar que el tamaño de la imagen es fundamental. Dividiendo $w$ y $h$ por dos puede dividir el tiempo de la PCA por $(2*2)^2=16$ .

En cuanto al paso de kNN, cabe señalar que hay muchas implementaciones inteligentes que se basan en quadtrees (en R SearchTrees por ejemplo) que disminuyen significativamente el tiempo de predicción.

2voto

Boris Tsirelson Puntos 191

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X