Mean shift es una técnica no paramétrica de análisis matemático del espacio de características para localizar los máximos de una función de densidad, un algoritmo denominado de búsqueda de modos.[1] Entre los ámbitos de aplicación se incluyen el análisis de clúster en visión por ordenador y el procesamiento de imágenes.[2]
El procedimiento de mean shift suele atribuirse a los trabajos de Fukunaga y Hostetler en 1975,[3] pero recuerda a los de Schnell en 1964.[4]
Mean shift es un procedimiento para localizar los máximos -las modas- de una función de densidad dados datos discretos muestreados a partir de dicha función.[1] Se trata de un método iterativo, y partimos de una estimación inicial . Se da la siguiente función kernel . Esta función determina el peso de los puntos cercanos para la reestimación de la media. Normalmente se utiliza un kernel gaussiano sobre la distancia a la estimación actual, . La media ponderada de la densidad en la ventana determinada por es:
Donde, es la vecindad de , un conjunto de puntos para los que .
La diferencia se denomina mean shift en Fukunaga y Hostetler.[3] El algoritmo de mean shift establece ahora y repite la estimación hasta que converja.
Aunque el algoritmo de desplazamiento de la media se ha utilizado ampliamente en muchas aplicaciones, todavía no se conoce una prueba rígida de la convergencia del algoritmo utilizando un núcleo general en un espacio de alta dimensión.[5] Aliyari Ghassabeh demostró la convergencia del algoritmo de desplazamiento de la media en una dimensión con una función de perfil diferenciable, convexa y estrictamente decreciente.[6] Sin embargo, el caso unidimensional tiene aplicaciones limitadas en el mundo real. También se ha demostrado la convergencia del algoritmo en dimensiones superiores con un número finito de puntos estacionarios (o aislados),[5][7] pero no se han proporcionado las condiciones suficientes para que una función de núcleo general tenga puntos estacionarios (o aislados) finitos.
El mean shift gaussiano es un algoritmo esperanza-maximización.[8]
Sean los datos un conjunto finito incrustado en el espacio euclidiano de dimensión . Sea un núcleo plano que es la función característica de la bola 𝜆 en .
En cada iteración del algoritmo, es realizado para todos los de forma simultánea. La primera cuestión es cómo estimar la función de densidad a partir de un conjunto disperso de muestras. Uno de los enfoques más sencillos consiste en suavizar los datos, por ejemplo, convolviéndolos con un núcleo fijo de anchura :
Donde son las muestras de entrada y es la función kernel (o ventana de Parzen). es el único parámetro del algoritmo y se denomina ancho de banda. Este enfoque se conoce como estimación de la densidad del kernel o técnica de la ventana de Parzen. Una vez calculado de la ecuación anterior, podemos encontrar sus máximos locales utilizando el ascenso gradiente o alguna otra técnica de optimización. El problema de este planteamiento de «fuerza bruta» es que, para dimensiones mayores, resulta prohibitivo desde el punto de vista informático evaluar sobre el espacio de búsqueda completo. En su lugar, el desplazamiento medio utiliza una variante de lo que se conoce en la literatura de optimización como descenso de gradiente de reinicio múltiple. Empezando con una estimación de un máximo local, , que puede ser un punto de datos de entrada aleatorio , el desplazamiento medio calcula el gradiente de la estimación de la densidad en y da un paso cuesta arriba en esa dirección.[9]
La definición de kernel dice: Dejar que sea sea el espacio euclidiano 𝑛-dimensional . La norma de es un número no negativo, . La función se dice que es un núcleo si existe un perfil, , de forma que:
y
Los dos perfiles de kernel más utilizados para el desplazamiento de la media son:
Donde el parámetro de desviación típica funciona como parámetro de ancho de banda, .[10]
Consideremos un conjunto de puntos en un espacio bidimensional. Supongamos una ventana circular centrada en y con radio como kernel. El desplazamiento medio es un algoritmo de escalada que consiste en desplazar este núcleo de forma iterativa a una región de mayor densidad hasta la convergencia. Cada desplazamiento se define mediante un vector de desplazamiento medio. El vector de desplazamiento medio siempre apunta hacia la dirección del aumento máximo de la densidad. En cada iteración, el núcleo se desplaza hacia el centroide o la media de los puntos que lo componen. El método de cálculo de esta media depende de la elección del núcleo. En este caso, si se elige un núcleo gaussiano en lugar de un núcleo plano, se asignará primero a cada punto un peso que decaerá exponencialmente a medida que aumente la distancia al centro del núcleo. En el momento de la convergencia, no habrá ninguna dirección en la que un desplazamiento pueda acomodar más puntos dentro del núcleo.
El algoritmo de desplazamiento medio puede utilizarse para el seguimiento visual. El algoritmo más sencillo crearía un mapa de confianza en la nueva imagen basado en el histograma de color del objeto en la imagen anterior, y utilizaría el desplazamiento medio para encontrar el pico de un mapa de confianza cerca de la antigua posición del objeto. El mapa de confianza es una función de densidad de probabilidad en la nueva imagen, que asigna a cada píxel de la nueva imagen una probabilidad, que es la probabilidad de que el color del píxel se encuentre en el objeto de la imagen anterior. Algunos algoritmos, como el seguimiento de objetos basado en kernel,[11] el seguimiento de conjuntos,[12]CAMshift[13][14] amplían esta idea.
Dejemos que y sea el 𝑑-dimensionales de entrada y los píxeles de la imagen filtrada en el dominio conjunto espacio-rango. Para cada píxel,
Se pueden encontrar variantes del algoritmo en paquetes de aprendizaje automático y procesamiento de imágenes: