Hola de nuevo. En el vídeo anterior vimos el DPM como una alternativa a los modelos holísticos que habíamos ido utilizando hasta la fecha. En el vídeo de hoy vamos a ver otra alternativa a la que podríamos llamar conjunto de expertos locales. Como comentamos en el vídeo anterior en los modelos holísticos se examina toda la ventana de interés simultáneamente para ver si tenemos uno de los objetos que nos interesan o no. Y también vimos y comentamos que eso hace que si esos objetos en realidad tienen partes móviles y podemos verlos desde distintos puntos de vista, pues, los propios modelos son o pueden ser excesivamente borrosos a priori. Vimos como decía anteriormente una alternativa que era el DPM. Y aquí vamos a ver otra alternativa que en cierta manera se parece pero es diferente. En este caso lo que vamos a hacer es ver un modelo que no necesita tener en cuenta toda la ventana simultáneamente para tomar la decisión de si esa ventana contiene el objeto que nos interesa o no. La idea de este conjunto de expertos locales la podemos ilustrar de la siguiente manera. Supongamos que tenemos estas cuatro ventanas y tenemos que determinar si contienen o no peatones. Vemos que en cada una de ellas hay zonas sin información que están en blanco y hay zonas que sí que tienen un trozo de imagen y por tanto hay información. Bien, yo creo que todos podemos decir que aquí sí hay un peatón, aquí también, mientras que aquí y aquí lo más probable es que tengamos fondo. Entonces la idea es que vamos a tener distintas regiones. Esta es una que acabo de marcar, esta es otra, esta es otra, esta es otra. Vamos a tener un conjunto de regiones y asociado a cada región va a haber un experto. Por eso hablamos del conjunto de expertos y decimos locales porque como vimos estas regiones son solo un trocito de la, dentro de la ventana que queremos clasificar. Y, ¿por qué le llamamos experto a, a lo que vamos a asociar a cada región? Bueno, pues, porque en realidad se va a tratar de un clasificador que nos dirá si de acuerdo con su conocimiento o mejor dicho con su entrenamiento lo que hay dentro de esa región corresponde o no a el contenido típico de, de un, de un peatón. you se ve también que con un solo experto, es decir por ejemplo si nos fijáramos solo en esto, pues es difícil tomar una decisión o si nos fijáramos solo en, en esto de aquí es difícil tomar una decisión. Por eso se necesitan no uno sino varios expertos. Bien, para llevar esa idea a la práctica lo que vamos a hacer es utilizar árboles de decisión binarios. Partimos de la raíz de uno de estos árboles y esta, esta raíz, este nodo raíz será experto en una cierta región de la ventana que queremos clasificar. Ser experto quiere decir que sabe cómo obtener un descriptor de esa zona y además tiene un modelo asociado de tal forma que el modelo eh, producto escalar, el descriptor nos dará un valor que podremos umbralizar de forma que podamos tomar una decisión de clasificación. Y según esa decisión, pues, iremos a la izquierda o a la derecha. Supongamos que vamos a la izquierda, pues, aquí nos encontramos con otro nodo que es análogo al anterior y con la única diferencia de ser experto en otra región diferente de la ventana. Pero ese nodo operará exactamente igual. Y así iremos haciendo hasta que por un camino u otro lleguemos a los nodos finales del árbol. En estos nodos final lo que tenemos son las probabilidades de pertenecer a la clase o lo contrario de no pertenecer a la clase. Entonces bueno, pues, cada uno de estos nodos tienen sus valores de probabilidad. Entonces según lleguemos a un nodo u otro vemos que intuitivamente habremos visitado unas regiones u otras. Por ejemplo este nodo corresponde a haber tenido en cuenta esta región, y esta otra. Mientras que este nodo de aquí, pues, ha tenido en cuenta esta región, esta otra, esta otra y esta otra. Muy bien, ¿cómo se obtienen estos árboles? Bueno, pues, los detalles de cómo se aprende serían muy largos ahora para explicar, os recomiendo que consultéis esta referencia donde damos esas explicaciones. Pero intuitivamente os, os diré que, digamos un hiper-parámetro, es decir que lo tenemos que seleccionar a mano es la profundidad del árbol. Pero por lo demás todos estos modelos, todos estos umbrales y qué regiones se acaban usando exactamente, todo eso se aprende. En realidad a la hora de clasificar una cierta ventana no vamos a utilizar un solo árbol sino que vamos a utilizar N árboles. Empezarémos eso sí con el primero y lo que haremos es procesar esa ventana con, con ese árbol que quiere decir que la ventana recorrerá un cierto camino en el árbol hasta llegar a las hojas o nodos finales. Y al llegar a una hoja determinada, pues la ventana recibirá una probabilidad de contener el objeto y su complementaria, la de no contenerlo. you se ve que cada uno de estos nodos corresponde a una cierta configuración de regiones. Y bueno, pues, un árbol estará contemplando a través de sus nodos, pues, un conjunto de esas configuraciones. Sin embargo un solo árbol no suele ser suficiente para tener buenos resultados y por eso en lugar de un solo árbol se pueden utilizar varios árboles. Y lo único que hacemos es para cada uno de ellos repetir exactamente el mismo proceso de forma que al final a partir de cada árbol tenemos un, una probabilidad de contener el objeto o no contenerlo. Entonces lo que se hace finalmente es lo que se expone aquí que es un promediado de todas esas probabilidades. Esta b sub A mayúscula sub a minúscula quiere decir que es la probabilidad del árbol a minúscula. Muy bien pues como decía al final es un simple promedio. Como tenemos muchos árboles, hablamos de bosque o es inglés forest y en realidad la implementación nuestra sigue la idea de random forest que es una, un nombre de hecho registrado. Y este, esta aleatoriedad, este random viene dada porque en el proceso de selección de estos, de estas regiones que, que estamos utilizando pues, se introduce una componente de aleatoriedad. Es decir durante el proceso de aprendizaje, luego you pues evidentemente en el proceso de detección estas regiones están fijadas. Bien, finalmente comentar que aquí you véis que podemos, no hemos hablado como en el caso del DPM de tener componentes pero en realidad podríamos digamos tener un, unos árboles o un pequeño bosque para tratar componentes de un, de una determinada forma. Por ejemplo peatones que los vemos de lado y por otro lado podemos tener otro bosque para peatones que los vemos de frente. Es decir que cuando entrenamos esos bosques, pues, los entrenamos teniendo en cuenta solo un tipo u otro de peatones. Y en, y en, luego finalmente para tomar la decisión final podemos simplemente promediar el resultado de un bosque con el resultado de otro bosque porque al final juntar dos bosques es simplemente tener más árboles y por tanto esta regla todavía sigue siendo aplicable. Llegados a este punto hemos de concretar en qué consisten los expertos locales. En realidad tendríamos distintas posibilidades. Nosotros lo que hemos propuesto es usar unos expertos locales que consisten en lo siguiente. Como descriptores de la región a la que está asociada el experto local usamos el HOG y el LBP. Es decir ese será nuestro descriptor. Y como modelo con el que haremos el producto escalar del descriptor, pues, como modelo como decía obtenemos unos parámetros mediante el algoritmo de SVM. Y bueno pues finalmente este modelo obtenido mediante el algoritmo SVM, producto escalar y el descriptor pues lo compararemos con un cierto umbral que como decía anteriormente este umbral también se ha aprendido durante el proceso de formación de los árboles. Así pues un árbol lo podemos ver también como un ensamblado de expertos locales. Este mecanismo tiene ciertas similitudes con el procedimiento de HAAR. Por ejemplo, el HAAR más Adaboost en el sentido de que, bueno pues, tenemos aquí un algoritmo como es el Adaboost, que lo que intenta es utilizar clasificadores más simples para digamos, obtener un clasificador más, más complejo y más robusto, y una serie de características sencillas en las que basar esos clasificadores más simples. Sin embargo, en nuestro caso, una de las diferencias precisamente es que no usamos clasificadores simples, como estos que se utilizaban basados en Haar, que simplemente necesitaban ser un poco mejor que una decisión aleatoria, que un clasificador aleatorio, y en nuestro caso, como decía, lo que hacemos es usar realmente expertos, o sea, estos son clasificadores bastante más, a priori, ¿eh?, a priori bastante más precisos que simplemente basar las decisiones en, por ejemplo, filtros de Haar y sus clasificadores sencillos asociados. Por otra parte, el algoritmo de Adaboost, el aprendizaje de, de un clasificador basado en Adaboost pues es diferente del aprendizaje de un clasificador basado en, en el random forest. Pero sí que tienen en común esta idea de ensamblar piezas más sencillas para obtener clasificadores más robustos. Y de hecho, si buscáis información, los ensembles en inglés, o ensamblaje de clasificadores es un tema también muy popular y muy estudiado. Otra cosa que sí que comparte este algoritmo del random forest y la, el Adaboost es que aquí también podemos definir el concepto de cascada, de forma que, bueno pues, digamos que analizando, no todos los árboles que hemos aprendido sino parte de ellos, pues podemos llegar a tomar decisiones de clasificación. Por ejemplo podemos rechazar rápidamente ventanas que claramente no contienen el objeto que nos interesa. Si no estamos seguros vamos al siguiente nivel, y a lo mejor allí sí que estamos seguros de que esa, ese conjunto de árboles nos indican you que no, la ventana no contiene el objeto que nos interesa, y así sucesivamente hasta llegar a evaluar todos los árboles, que idealmente solo se haría para aquellos aquellas ventanas que sí que contienen el objeto de interés. Por ejemplo, en el caso de los peatones pues si tenemos una típica imagen con diez peatones, pues idealmente llegaríamos solo a evaluar todos los árboles pues para esas pocas ventanas. Pocas en relación al gran número de ventanas que hay en una imagen, que you you lo comentamos en su día. Bien, os he incluido un par de vídeos de ejemplo de utilización de este detector de objetos para el caso de personas. En el primer vídeo está mi equipo de trabajo haciendo un cameo un día que fuimos a hacer una demostración en el hospital San Pau de Barcelona, un hospital modernista, y bueno, es una demostración que hicimos pues para explicar a la gente en qué consisten estos sistemas. Como es una zona muy turística pues habría muchas nacionalidades allí. Bien, vemos el vídeo, y me interesa un caso concreto, a ver si puedo pararlo aquí, incluso, aquí, fijaos que aunque la persona está ocluida, bueno, pues el detector es capaz de detectarla todavía. De todas formas hay que decir que detección de personas a partir de la apariencia en caso de oclusión es un reto bastante grande. En principio, en los modelos tipo DPM, o este que hemos visto hoy de expertos locales, basado en random forest, deberían ser más robustos a este tipo de situaciones que un modelo totalmente holístico, y en general es así. Lo que pasa es que, por ejemplo, el DPM si no se entrena explícitamente para, digamos manejar estos casos, pues, no da por defecto unos resultados muy buenos. Y aquí en estos random, este random forest de expertos locales, pues un poco le pasa lo mismo. Pero a priori está mejor preparado que un modelo holístico, you que como hemos visto le bastan unas cuantas componentes para poder tomar la decisión definitiva. O sea, no necesita, por ejemplo en esta zona de aquí, no necesita detectar la pierna, sino que you se puede basar en esta de aquí, seguramente en esta zona del hombro, en esto que se ve de la cabeza, para tomar la decisión final. Bueno, en fin, continuamos con el resto de vídeos. En este caso estaba el coche parado para hacer la demostración, pero bueno, en el caso siguiente pues tenemos el coche en movimiento, incluso se ve la probabilidad que recibe cada ventana, como es un promedio de probabilidades, pues el número final está entre cero y uno. Y bueno aquí os he seleccionado pues varias situaciones para que veáis en qué consiste. Bien, pues aquí acaba, acaba el vídeo. Así pues, en este vídeo hemos visto lo que es un random forest, también hemos hablado de cómo se pueden formar random forest a partir de expertos locales, y en esa combinación de expertos locales y random forest, lo que hemos hecho es definir un detector de objetos a partir de una especie de configuración de partes aprendidas.