2. Imagen: conjunto denso de patches fijos.
◦ Ej: patches de 24x24 pixeles cada 4 pixeles.
Cada patch descrito por un vector de
features.
Asumo que existe un diccionario visual que
indexa a cada patch.
2
3. N patches, con índice i = 1, …, N
L clases, con índice y = 1, …, L
K palabras visuales, con índice k = 1, …, K
M imágenes, con índice j = 1, …, M
F features por patch. El vector de features del
patch i es fi.
En cada imagen, se define un vector z de tamaño
N como el vector de asignaciones de palabras a
patches.
3
4. Por cada imagen, defino el histograma de las
asignaciones de palabras a patches como h(z)
(BoF).
Se desea aprender un clasificador que separe
las clases de imágenes y además que aprenda
las asignaciones a partir de los features.
4
5. Función de energía que se desea maximizar (por
imagen) N
E x, y , z αT h z
y ωTi f i
z
i 1
En forma alternativa:
N K
E x, y , z yk ωT f i
k zi k
i 1 k 1
Expresa la energía en términos de la clase y las
palabras de diccionario que representan a los
patch.
5
6. En forma vectorial:
0
hz En posición según
α1
T
α T | ω1
T
ωT clase „y‟
L K
0
W
N
sk sk fi zi k
i 1
x, y, z
6
7. Encontrar
fW x arg max W, x, y , z
( y ,z )
Problema se resuelve con SVM estructural con
variable latente z, donde
zi k if k arg max ym ωT fi
m
m 1, ..., K
Dada la clase y el vector W, puedo inferir la mejor
asignación del vector z para cada imagen.
7
8. 1 2
min W 2 j
2
s. to
WT xj, yj,z j WT x j , y, v y j , y, v j
N
j 1, ...,M , y 1, ...,L, v 1, ...,K
y yj
En la formulación se reescala el margen de acuerdo a la función
de pérdida y j , y, v .
8
9. Se usa un esquema similar a EM
◦ Si asumo conocidos los vectores zj, puedo
encontrar W SVM estructural.
◦ Con W conocido, encuentro las nuevas asignaciones
en cada imagen tal que:
zi k if k arg max ym ωT fi
m
m 1, ..., K
El esquema es análogo a una implementación
de latent-SVM.
9
10. Se usa API de Latent-SVM estructural
◦ http://www.cs.cornell.edu/~cnyu/latentssvm/
Método CCCP.
Editar las funciones del API 10 funciones
◦ 5 de entrada/salida e inicialización
◦ 5 de core
10
11. x
◦ Matriz de features, un „x‟ por imagen.
y
◦ Clase.
z
◦ Vector de asignaciones de palabras a patches.
Cada imagen tiene asociado un vector .
11
12. Core
1. ( ) = psi(x,y,z)
2. (loss) = loss(y,yhat,zhat)
3. (ybar, zbar) = classify_struct_example(x)
4. (yhat,zhat) =
find_most_violated_constraint_marginrescaling(x,y)
5. (zbar) = infer_latent_variables(x,y)
En 3,4 y 5 se usa
zi k if k arg max ym ωT fi
m
m 1, ..., K
12
13. ( ) = psi(x,y,z)
◦ Genero h(z).
◦ Por cada patch, sumo los fi en la posición
correspondiente a zi.
0
hz En posición según
α1
T
α T | ω1
T
ωT clase „y‟
L K
0
W
N
sk sk fi zi k
i 1
x, y, z
13
14. (loss) = loss(y,yhat,zhat)
Por ahora, zero/one
loss = 0 si y = yhat
loss = 100 si y ≠ yhat.
14
15. (ybar, zbar) = classify_struct_example(x)
Ya está calculado el vector W = α1 α T | ω1 ωT
T T
L K
Para cada clase ybar (L)
Para cada patch i (N)
Encuentro la palabra k (K) tal que
zbar i k if k arg max α ybar m ωT fi
m
m 1, ..., K
Calculo el score dado por WT (x, ybar, zbar), y me quedo con
la clase que otorgue el mayor score.
15
16. (yhat,zhat) =
find_most_violated_constraint_marginrescaling(x,y)
Para cada clase yhat ≠ y (L-1)
Para cada patch i (N)
Encuentro la palabra k (K) tal que
z hat i k if k arg max α yhat m ωT fi
m
m 1, ..., K
Calculo el score dado por WT (x, yhat, zhat) + loss(y,yhat,zhat).
Entrego el (yhat,zhat) tal que conformen el mayor score.
16
17. (zbar) = infer_latent_variables(x,y)
Para cada patch i (N)
Encuentro la palabra k (K) tal que
zbar i k if k arg max α ym ωT f i
m
m 1, ..., K
17
18. Se usa descriptor HoG
◦ Patch de 24x24 pixeles (fijo)
◦ Dos niveles (45 features por patch).
Asignación inicial: k-means general.
18
19. 4 clases, 300 imágenes por clase de 64x86
pixeles (reducidas de 240x320) del set
Caltech.
◦ 150 train, 150 test (random)
200 palabras.
Feature Hog piramidal (2), patch de 24x24
pixeles 45 features por patch.
= 6, produciendo 77 patches por imagen.
19
21. Clase “cars”, “faces” y “motorbikes” buen
resultado.
◦ Menos clutter, mejor alineadas y menos variabilidad
intraclase.
Posible sesgo en asignación inicial.
◦ Variación: k-means por cada clase asigno cada
patch a cluster más cercano.
21
23. Bajo rendimiento en sólo una clase.
Usando mismos parámetros y features, BoF +
SVM multiclase entrega un 97.5% de
rendimiento.
23
24. Supuesto: esquema piramidal aporta mayor
información local.
(n,p,q) indexan las subdivisiones
Por cada valor de n = 1,…,
◦ {pn} = {1,…,2n}
◦ {qn} = {1,…,2n}
n=0 n=1 n=2
24
25. Cada subdivisión es un histograma dentro del vector W.
La energía queda definida como
N
y T
E x, y , z α npq h npq z ωTi f i
z
npq i 1
En forma alternativa:
N K
E x, y, z yk
Si ωT f i
k zi k
i 1 k 1 Si
Si (n, p, q) : patch i Superpatch (n, p, q)
25
26. Modificaciones a representación vectorial
0
Hz En posición según
Α1
T
Α T | ω1
T
ωT clase „y‟
L K
0
W
N
sk sk fi zi k
i 1
x, y, z
T T
AT
l [α l011 α lnpq ] H(z) [h011 (z)T hnpq (z)T ]T
26
27. La formulación es análoga a esquema simple.
Para la asignación, tenemos que
zi k if k arg max ym
Si ωT f i
m
m 1, ..., K Si
El cambio en implementación viene dado por
armar los conjuntos Si y cambiar la estructura
de .
Si (n, p, q) : patch i Superpatch (n, p, q)
27
29. Mejora con respecto a esquema simple pero no como se
esperaba.
Cambios en la formulación del problema:
◦ Se presume que existe realimentación positiva para aquellos
asignaciones más repetidas.
0
hz En posición según
α T
1 α |ω
T
L
T
1 ω T
K clase „y‟
0
W
N
sk sk fi zi k
i 1
x, y, z
zi k if k arg max ym ωT fi
m
m 1, ..., K
29
30. Cuatro cambios:
1. Normalización de h(z).
2. Cambiar sk por la máxima activación en vez de la
suma.
3. Cambiar sk por el promedio en vez de la suma.
4. Considerar los bias (b) en los vectores y
30
31. Normalización de h(z). N = número de patches en
imágenes. N
E x, y , z α y h N z
T
ωTi f i
z
i 1
hNy z h(z) / N
N K
yk
E x, y, z ωT f i
k zi k
i 1 k 1 N
ym
zi k if k arg max ωT f i
m
m 1, ..., K N
31
32. 0
hN z En posición según clase „y‟
α1
T
α T | ω1
L
T
ωT
K
0
W
N
sk sk fi zi k
i 1
x, y, z
32
33. Cambiar sk por la máxima activación en vez de la
suma
K
E x, y, z α hzT
y max {ωT fi ( zi
k k )}
i 1,..., N
k 1
0
hz En posición según
α T
1 α |ω
T
L
T
1 ω T
K clase „y‟
0
W
sk sk max {ωT fi
k zi k}
i 1,..., N
x, y, z
Zi se busca en forma exhaustiva (por mientras).
33
34. Consideraciones de implementación:
◦ Al inicio, supp(W) = 0, por lo que sk no considerará
los vectores k y será el feature de un patch
asignado aleatorio.
◦ El vector depende de W, lo que posiblemente
puede ser problemático para la convergencia.
Propuesta 1: no hacer nada y ver cómo se comporta.
Propuesta 2: actualizar cada n iteraciones
34
35. Cambiar sk por el promedio en vez de la
suma
N N
fi
E x, y, z α hzT
y ω T
zi
N zi (z ) ( zi k)
i 1 N zi ( z ) i 1
0
hz En posición según
α T
1 α |ω
T
L
T
1 ω T
K clase „y‟
0
W
N
sk fi
sk ( zi k)
i 1 N k (z )
x, y, z
35
36. fi
zi k if k arg max ym ωT
m
m 1, ..., K N m (z )
Como el número de patches que pertenezcan
a una palabra depende de las asignaciones zi,
se itera:
◦ Se asume conocido Nm
◦ Se encuentran las asignaciones zi
◦ Se recalcula Nm
◦ Etc.
36
37. Considerar los bias (b) en los vectores y .
N
E x, y, z α hz
T
y y (ωTi f i bzi )
z
i 1
Consideraciones:
y será distinto de cero sólo si supp(h(z)) > 0
Se cumple por construcción, fijando la clase „y‟ siempre existirá
algún hk(z) mayor que cero.
bzi será distinto de cero sólo cuando la palabra asociada sea
asignada.
Se cumple ya que aparece b asociado a los zi, no aparecerá si la
palabra no es asignada a algún patch.
37
38. Alternativamente:
N
E x, y, z α hzT
y y (ωTi f i bzi )
z
i 1
K N
E x, y, z yk ωT fi bk
k ( zi k) y
k 1 i 1
zi k if k arg max ym ωT f i
m bm
m 1, ..., K
En desarrollo…
38
39. Usar más palabras, imágenes completas
Patch de 32x32
Ver k-SVD
Analizar instancias de entrenamiento
Implementar el máximo y bias
39
41. No considerar el problema como de variable
latente, basado en formulación original.
◦ Dejar fijas las asignaciones
◦ Aprender sólo los pesos
◦ Resultado: No se llega a una buena clasificación.
41
42. Psi no es discriminativo con las asignaciones
iniciales, las clases no son 100% separables
mediante la formulación. Resolviendo un SVM
multiclase con sólo los histogramas, se llega a
error menor (~2%) en test y 0% en train.
Las asignaciones son función de la posición del
plano de separación encontrar la restricción
más violada es comparar dos cosas distintas, ya
que comparo el vector Psi con las asignaciones
originales (que no dependen de W) versus
vectores con las asignaciones dependientes de W,
debido al esquema EM de latent-SVM.
42