Hola a todos. you hemos visto los ingredientes principales de un detector de objetos y métricas para evaluarlos. Además hemos visto como anotar muestras para aprender modelos que serán usados en los clasificadores de objetos. En este vídeo lo que vamos a ver es cómo utilizar esas muestras correctamente para evaluar la capacidad de generalización de detector y también para optimizar algunos de los parámetros que están involucrados en el desarrollo de ese detector. Bien, dado un conjunto de muestras, lo que queremos hacer es aprender un modelo a partir de ellas y también evaluar el clasificador asociado a ese modelo o incluso el detector compelto. Sin embargo, si utilizamos las mismas muestras para aprender el modelo y evaluar el clasificador o el detector asociado lo único que vamos a obtener es el error de clasificación y de hecho lo normal es que durante el proceso de aprendizaje del modelo sea justamente ese el error que hemos minimizado. Por tanto, esto no nos interesa y lo que queremos realmente es conocer la capacidad de generalización de el clasificador asociado al modelo que hemos aprendido. Y para esto ha de suceder que los conjuntos de entrenamiento y evaluación sean realmente diferentes. Un método que podemos utilizar para usar muestras distintas de cara a entrenar modelos y evaluar es el que en inglés se conoce como hold-out. Por cierto, you habéis visto que uso la palabra entrenar o aprender indistintamente. Bien, en este caso lo que se trata es de tener un cierto porcentaje de las muestras para entrenar y el resto para evaluar. Usualmente podemos usar por ejemplo un 50%. Si este es nuestro conjunto de muestras, la manera de coger ese porcentaje, por ejemplo un 50% pues puede ser desde simplemente dividir el conjunto de esta manera o incluso podemos utilizar algún tipo de mecanismo de selección de muestras aleatoriamente, por ejemplo cojo esta muestra, cojo esta, cojo esta, cojo esta, otra por aquí, otra por aquí, hasta completar ese porcentaje. Además este procedimiento de entrenar y evaluar podemos completarlo un número de veces que nos interesa, por ejemplo k veces y promediar el resultado de las evaluaciones esas k veces. Otro método muy utilizado es el que se conoce como validación cruzada o en inglés cross-validation. En este caso partimos de un conjunto de m muestras y lo que hacemos es dado un número entero k dividir ese conjunto en subconjuntos cada uno de m partido por k. De esta manera vamos a tener k subconjuntos. Bien, ahora se trata de utilizar todos esos subconjuntos en la evaluación del clasificador que estemos que estemos entrenando o el detector global que estemos utilizando. Es decir, tendremos k subconjuntos en la primera ronda, por ejemplo podemos utilizar este subconjunto para evaluar y el resto para entrenar. En la siguiente ronda lo que haríamos es utilizar este de aquí y el resto para entrenar y así sucesivamente hasta completar k rondas. De esta manera podemos promediar el resultado de las evaluaciones que estarán basadas pues en una métrica u otra las que se han visto. Y de esa manera pues el resultado de ese promedio me puede informar de la capacidad de generalización que tiene el clasificador o globalmente el detector que estamos entrenando. Así pues con el método de validación cruzada, todas las muestras se utilizan tanto para entrenar como evaluar, aunque en rondas distintas. Con el método de hold-put esto no se garantiza. El método de hold-out puede también utilizarse una o varias veces de ser un promediado. En el caso de la validación cruzada esto es necesario, siempre se hace k veces, por eso suele ser más costoso, o sea que a veces lo podemos utilizar y otras veces no debido al coste computacional que tiene. En cualquier caso ambos métodos sirven como recetas para entrenar y evaluar con muestras distintas. Además de eso como vamos a ver estos métodos también sirven para seleccionar el modelo que vamos a utilizar o que mas nos va a convenir para el problema, también nos van a servir estos métodos para ajustar meta parámetros del algoritmo de aprendizaje, por ejemplo en el caso del descenso al gradiente que vimos en relación a la regresión logística, el parámetro alfa la velocidad de aprendizaje es uno de esos ejemplos de meta parámetros. Y también nos van a servir estos métodos para ajustar parámetros del descriptor, por ejemplo cuando hablábamos de bloques de histogramas de LBP para describir ventanas, pues el tamaño de esos bloques puede ser uno de esos parámetros que podemos ajustar. En definitiva hay que probar distintos valores de los distintos parámetros que forman el conjunto de los ingredientes que dan lugar al descriptor, perdón al detector de objetos. Aquí vemos un esquema general de como utilizar las muestras anotadas para desarrollar un detector de objetos y evaluar su capacidad de generalización, es decir lo bien que detecta los objetos en imágenes que no ha visto durante su desarrollo. Por tanto del conjunto de muestras se ha de reservar una parte para esta fase de evaluación. Muy bien, además durante el desarrollo del detector las muestras también las vamos a dividir en dos partes, unas propiamente de entrenamiento y otras que vamos a llamar de validación. Esto es así porque en realidad en el detector de objetos están involucrados diversos parámetros, y claro hemos de asignar un valor a esos parámetros, pero qué valor pues diríamos de manera simple, el mejor valor. Pero para saber cuál es ese mejor valor muchas veces lo que tenemos que hacer es probar diversos valores y quedarnos con aquel que da mejor resultados, aquellos que dan mejor resultado. Por tanto, el digamos conjunto de muestras de entrenamiento lo que vamos a hacer realmente es desarrollar el detector, y con estas muestras de validación que no se utilizan durante el entrenamiento lo que vamos a hacer es ver qué resultado da ese detector para un determinado conjunto de valores de parámetros. Y lo que vamos a hacer finalmente es quedarnos con el conjunto de valores y su detector asociado que dan mejor resultado en este conjunto de validación, independientemente de la métrica que estemos utilizando para evaluar. Por tanto, aunque intuitivamente pueda parecer que el conjunto de validación y el de evaluación son muy similares, en realidad no es así porque lo que estamos haciendo en esta parte del desarrollo es buscar parámetros que son los que mejor resultados dan para este conjunto de validación realmente. Por tanto, si queremos evaluar la capacidad de generalización del detector, realmente hemos de usar un conjunto de evaluación aparte. También hay que decir que esta manera de ir dividiendo los conjuntos, los subconjuntos de muestras pues puede basarse o en hold-out o en validación cruzada depende del caso. Eso habría que pensarlo en cada tipo de aplicación viendo cuantas muestras tenemos, cuanto cuesta hacer estos entrenamientos, etcétera. Bien, finalmente comentar que los conceptos claves que hemos visto en este vídeo son en qué consiste el hold-out, en qué consiste la validación cruzada y también en qué consisten los conjuntos de entrenamiento, validación y evaluación.