Sunteți pe pagina 1din 7

Algoritmo de Levenberg-Mardquardt

El algoritmo de Levenberg-Marquardt (LM) es un algoritmo iterativo


de optimización en el que el método de iteración presenta una ligera
modificación sobre el método tradicional de Newton. Las ecuaciones
normales N∆=JTJ∆=JTε (J representa el jacobiano de la función, ∆ los
incrementos de los parámetros y ε el vector de errores residuales del
ajuste), son reemplazadas por las ecuaciones normales aumentadas
N’∆=JTε, donde N’ii=(1+λi) Nii y N’ii= Nii para i≠j. El valor de λ es
inicialmente puesto a algún valor, normalmente λ=10-3. SI el valor de
∆ obtenido resolviendo las ecuaciones aumentadas conduce a una
reducción del error, entonces el incremento es aceptado y λ es
dividido por 10 para la siguiente iteración. Por otro lado si si el valor
de ∆ conduce a in aumento del error, entonces λ es multiplicado por
10 y se resuelven de nuevo las ecuaciones normales aumentadas,
este proceso continúa hasta que el valor de ∆ encontrado da lugar
aun decremento del error. Este proceso de resolver repetidamente las
ecuaciones normales aumentadas para diferentes valores de λ hasta
encontrar un valor aceptable de ∆ es lo que constituye una iteración
del algoritmo de LM.

Nota de implementación: Para usar el algoritmo de LM en la


minimización de una función solo es necesario dar una rutina que
calcule la función a minimizar, un vector de observaciones o valores
deseados de la función y una estimación inicial. El cálculo de la matriz
jacobiana se puede llevar a cabo de forma tanto de forma numérica
como dando una función que la calcule..

En el aso de diferenciación numérica, cada variable independiente xi


se incrementa por turnos en xi+δ, se calcula es valor de la función en
el nuevo punto y la derivada se calcula como un cociente. Buenos
resultados han sido encontrados poniendo el valor de δ al máximo
entre |10-4 xi| y 10-6. En la practica no se aprecia ventaja en usar un
método de diferenciación numérica o dar una rutina de cálculo de la
derivada.

Versión para matrices dispersas


La versión antes descrita es adecuada para la minimización con
respecto a un número pequeño de parámetros. Por ejemplo en el
caso de estimación de una homografía, cuando el vector de
parámetros son los elementos de la matriz de la homografía. Sin
embargo, para minimizar funciones con un alto número de
parámetros el algoritmo “clásico” no es muy adecuado. LA razón
principal es que la resolución de las ecuaciones normales tiene
complejidad N3 en el número de parámetros y este paso se repite
muchas veces. Sin embargo en la solución de muchos de los
problemas que se estudian en loe problemas de la geometría de
múltiples vistas, la matriz de las ecuaciones normales presenta un
cierto estructura de bloques dispersos de la cual podemos ahcer uso
para alcanzar un ahorro considerable en el tiempo de cálculo.

Un ejemplo de esta situación es el caso de la estimación de una


homografía en donde suponemos errores en amabas imágenes y
minimizamos el error de máxima verosimilitud. En este caso la
parametrización del problema esta constituida por 2n+9 parámetros,
siendo n el número de correspondencias usado.

Otro ejemplo donde estos métodos son útiles es en le probelam de la


reconstrucción en el cual tenemos correspondencias a través de dos o
más imágenes (vistas) y deseamos estimar los parámetros de las
cámaras de todas las cámaras al mismo tiempo que la posición 3D de
todos los puntos. Podemos asumir cámaras proyectivas cualesquiera
o cámaras parcial o totalmente calibradas. En este caso el problema
puede ser parametrizado por las entradas de todas las cámaras ( es
deir 11m o 12m dependiendo de la parametrización de las cámaras),
mas 3n parámetros para las coordenadas de los puntos 3D.

A continuación se dan algunos resultados que permiten una


implementación simple de este algoritmo haciendo uso de una librería
de cálculo matricial.

Ahora un vector representado por la notación regruesada, a, será un


vector fila.

Partición del vector de parámetros

Como ya hemos visto los problemas que presentan matrices


dispersas por bloques hacen uso de una parametrización en la cual se
pueden distinguir dos tipos distintos de parámetros ( las matrices y
los puntos). Así pues cabe establecer una versión del algoritmo
pensando en una división del vector de parámetros en dos bloques.

Sea P∈RM el vector de parámetros que suponemos se puede dividir


en dos vectores a y b tal que P=(aT,bT)T. Suponemos que tenemos
un vector de medidas X en el espacio RN. Además sea ΣX la matriz de
covarianzas para el vector de medidas. Consideramos una función
general f: RM→ RN que define la estimación del vector de medidas
X̂ =f(P). Notando por ∈= X- X̂ el error entre las observaciones y las
estimaciones lo que buscamos es el conjunto de parámetros que
2
minimizan el cuadrado de la distancia de Mahalanobis ε Σ = ε T Σ −X1 ε .
X
Correspondiendo a la división de parámetros P=(aT,bT)T, la matroiz
jacobiana J=[∂ X̂ /∂P] tiene una estructura de bloque de la forma
J=[A|B] donde las submatrices jacobianas estan definidas por

A=[∂ X̂ /∂a], B=[∂ X̂ /∂b]

El conjunto de ecuaciones Jδ=ε del paso central del algoritmo de LM


toma la forma
δ
Jδ=[A|B] ( a )=ε
δb
Entonces las ecuaciones normales toman la forma

 A T Σ −X1 A A T Σ −X1 B  δ a   A T Σ −X1 ε 


 T −1 T −1  
  =  T −1 
 B Σ X A B Σ X B  δ b   B Σ X ε 

Justo en este paso es donde los bloque diagonales son aumentados


multiplicando sus valores diagonales por un factor 1+λ. Este cambio
modifica las matrices de la diagonal principal. Las matrices
resultantes se notan por (AΣX-1A)* y (BΣX-1B)*.

El conjunto de ecuaciones anterior se puede escribir como


 U * W  δ a   ε a 
 T   =  
W
 V *  δ b   ε b 

Eliminando el bloque superior izquierdo a través de la multiplicación


por la matriz  I − WV  obtenemos
* −1

 
0 I 

 U * − WV * −1 W T 0  δ a   ε a − WV * −1ε b 
   =  

 WT V *  δ b   εb 

De esta ecuación puede despejarse y calcularse el valor de δa


posteriormente el de δb.

Una vez que hemos calculado los incrementos de los parámetros


actuamos igual que en el algoritmo clásico tratando de averiguar si el
nuevo vector P=((a+δa)T, (b+δb)T )T reduce o no el error y en cada caso
actuando como ya se ha establecido.

Aunque en este método se resuelve primero para δa y luego para δb


basándonos en el nuevo valor de a, hemos de insistir que esto no
quiere decir que el método conduzca a iterar sobre a y b de forma
independiente. Si se desea se podrían hacer iteraciones
independientes para a y b pero la convergencia sería sin duda más
lenta.
Matriz de Covarianzas

Hemos visto que la matriz de covarianzas de los parámetros


estimados esta dada por

ΣP=(JTΣX-1J)+
En el caso de sobre-parametrización, esta matriz de covarianzas es
singular, y en particular, a los parámetros no se les permite variar en
las direcciones perpendiculares a la restricción a la superficie, la
varianza es cero en esas direcciones.

En el caso de parámetros separados P=(aT,bT)T la matriz JTΣX-1J la


escribimos en la forma

−1  A T Σ −X1 A A T Σ −X1 B   U W
J Σ J =  T −1
T
T −1 
= T
V 
X
 B Σ X A B Σ X B  W

Por tanto la matriz de covarianzas es la pseudoinversa de esta


matriz. Bajo la hipótesis de que V es invertible, redefinimos Y=WV-1.
Entonces la matriz puede ser diagonalizada de acuerdo a

 U
−1 W   I Y T  U − WV −1 W T 0  I 0
J Σ J= T
T
=   T
V  0 I   I 
X
W 0 V  Y

Asumiendo que se verifica la propiedad (GHGT)+=G-TH+G-1 para


matrices G y H con G invertible, se puede dar una expresión final
para la pseudo-inversa

 X − XY 
Σ P = J T Σ −X1 J =  −1 
− Y X Y XY + V 
T T

-1 T +
donde X=(U - WV W ) .

Este resultado nos permite también obtener las matrices de


covarianza de los parámetros a y b de forma separada. (Σa =X ,
Σb=YTΣaY+V-1).

Método de LM-Disperso General

A continuación vamos a ver que la generalización de la técnica que


acabamos de describir puede ser usada con ventaja en un caso
general sin la matriz jacobiana presenta una condición de dispersión
particular que analizaremos.

Supongamos que el vector de medidas X∈RN puede ser partido en


trozos como X=( X1T, X2T, ..., XnT)T, de forma similar suponemos que el
vector de parámetros P∈RM, puede dividirse en P=(aT, b1T,b2T,...,bnT)T .
Los valores estimados de Xi correspondientes a un conjunto de
ˆ .
parámetros dado se notará por X i

Haremos la hipótesis de dispersión que cada X̂ i solo depende de a y


bi pero de ninguno de los otros bj para j≠i. En este caso ∂ X̂ i /∂bi=0
para i≠j. No se hace ninguna hipótesis sobre ∂ X̂ i /∂a. Esta situación se
presenta en los problemas de reconstrucción ya comentados con
anterioridad, ya que en este caso bi es el vector de parámetros del i-
ésimo punto, y X̂ i es el vector de medidas de la imagen de este
punto en todas las vistas. En este caso ya que la imagen de un punto
no depende de ningún otro punto se verifica la hipótesis de
dispersión. Definimos las matrices jacobianas por

Ai=[∂ X̂ i /∂a], Bi=[∂ X̂ i /∂bi]

Dado un vector de errores de la forma ε=(ε1T, ε2T, ...,εnT)T=X- X̂ el


conjunto de ecuaciones Jδ=ε tiene ahora la forma

 A1 B1  δ a 
A  δ   ε 1 
Jδ =  2
B2  b1  =  M 
 M O  M   
   εn
A n B n  δ bn   
Suponemos además que todas las medidas Xi son independientes con
matrices de covarianza ΣX= diag( Σ X1 , Σ X 2 ..., Σ X n ).

En la notación del algoritmo anterior tenemos

A=[A1T , A2T ,...,AnT ]T


B=diag(B ,B ,...,B )
ΣX= diag( Σ X1 , Σ X 2 ..., Σ X n )
δb=( δ bT1 , δ bT2 , …, δ bTn )T
ε=(ε1T, ε2T, ...,εnT)T

Ahora es una tarea directa sustituir estas formulas en el algoritmo


anterior. El resultado es el algoritmo que se presenta a continuación.
Es importante resaltar que de esta forma cada paso del algoritmo
requiere tiempo lineal en n. Sin la ventaja resultante de la estructura
dispersa el algoritmo tendría una complejidad de n3.
Algoritmo LM para matrices dispersas (2 vistas)

1. Calcular las matrices derivadas Ai=[∂ X̂ i /∂a], Bi=[∂ X̂ i /∂bi] y el


vector de errores εi=Xi- X̂ i .
2. Calcular los valores intermedios
U = ∑ A Ti Σ −X1i A i
i

V = diag (V1 , V2 , L , Vn ) donde Vi = B Ti Σ −X1i B i


W = (W1 , W2 , L , Wn ) donde Wi = A Ti Σ −X1i B i
ε A = ∑ A Ti Σ −X1i ε i
i

(
ε B = ε TB1 , ε TB2 , L , ε TBn )T
donde ε Bi = B Ti Σ −X1i ε i
Yi=WiVi*-1

3. Calcular δa a partir de la ecuación


 * T 
 U − ∑ Yi Wi δ a = ε A − ∑ Yi ε B i
 i  i

4. Calcular por turnos cada δbi a partir de la ecuación


δ b i = Vi* −1 (ε B i − WiT δ a )

Covarianza

1.- Redefinir Yi=WiVi-1


2.- Σa=(U- ∑ Yi WiT )+
i

3.- Σ b i b j =YiTΣa-1 Yj+δijVi-1


4.- Σ ab i = − Σ a Yi

Aplicaciones a la estimación de una homografía y la matriz


fundamental

El algoritmo dado puede ser aplicado de forma directa al caso de la


estimación por máxima verosimilitud de una homografía o de la
matriz fundamental sin más que calcular los valores de las matrices
derivadas Ai y Bi y vista su estructura tratar de obtener la máxima
ventaja de la misma a la hora de realizar los cálculos.

En el caso de la matriz fundamental en el que la parametrización se


realiza a través de la matriz de segunda cámara y los valores 3D, es
posible obtener la matriz de covarianza de F a través de la expresión
que relaciona F y P’=[M|m] . Supuesto que ||F||=1, podemos expresar
F=[m]xM/(||[m]xM||) lo que nos permite definir F como una función
sencilla de P’ y calcular el jacobiano de la transformación. Entonces
obtenemos

ΣF=J ΣP’ JT
y ΣP’ dada por el algoritmo anterior.

Algoritmo LM para matrices dispersas (n vistas)

Supongamos ahora que disponemos de n>2 vistas simultaneas y


correspondencias de puntos a través de ellas. Por simplicidad en la
notación supondremos que los puntos aparecen en todas las vistas
(cosa que no tiene que ser verdad). Esta extensión es va´lida tanto
para la estimación de los tensores de orden superior (trifocal y
cuadrifocal) como para llevar a cabo un ajuste global de n imágenes

Ahora tomaremos ventaja no solo de la ausencia de interacción de


unos puntos con otros si no también de la ausencia de interacción de
los parámetros de unas cámaras con otras. Usando la misma
notación del algoritmo anterior, el vector de medidas X puede
descomponerse en subvectores Xi=(xi1T, xi2T, ..., ximT)T donde xij es la
imagen del i-ésimo punto en la j-ésima imagen. El vectyor de los
parámetros de la cámara puede también partirse en m sub-vectores
representando los parámetros de cada una de las cámaras a=(a1T,
a2T, ...,amT)T donde aj son los parámetros de la j-ésima cámara.

Ahora teniendo en cuanta las hipótesis de dispersión asumida


∂ x̂ ij /∂ak=0 a menos que j=k y ∂ x̂ ij /∂bk=0 a menos que i=k.

Las matrice jacobianas definidas en el algoritmo de 2-vistas ahora


son Ai=[∂ X̂ i /∂a] es una matriz diagonal por bloques
Ai=diag(Ai1, Ai2,..., Aim) donde Aij=∂ x̂ ij /∂aj

De forma similar, la matriz Bi=[∂ X̂ i /∂bi] se descompone como


Bi=[Bi1T, Bi2T,..., BimT]T donde Bij=∂ x̂ ij /∂bi

Respecto de la matriz de covarianzas puede suponerse que tiene una


estructura diagonal
ΣXi= diag( Σ Xi1 , Σ Xi 2 ..., Σ X in )
dando por bueno que las medidas de distintas imágenes son
incorreladas.

Usando estas expresiones el algoritmo de dos vistas puede adaptarse


fácilmente al caos de n-vistas.

S-ar putea să vă placă și