Descripcion del entrenamiento

Introducción

La deteccion de objetos mediante vision esta implementado en un sistema basado en aprendizaje. En este sistema se aprenden los razgos característicos de una clase a través de un conjunto de ejemplos etiquetados como positivos y negativos.

Se parte de un conjunto de ejemplos positivos y negativos, y mediante un algoritmo de aprendizaje se aprenden los rasgos representativos de cada conjunto de entrenamiento. Utilizamos las técnicas de clasificación basadas en límites de decision. Con este fin se utiliza las support vector machine (SVM), en particular el modelo lineal.

Las imágenes se transforman en otro espacio con el objeto de reducir su dimensionalidad. Como resultado, el clasificador aprende el patrón o modelo del objeto deseado.

El clasificador utilizado es HOG. El descriptor HOG está basado en el análisis de contornos mediante el cálculo de gradientes. La idea subyacente que presenta este descriptor es que la apariencia y forma de un objeto en una imágen puede ser representado por la distribución de la orientación de los gradientes. El descriptor HOG es invariante ante transformaciones geométricas y fotométricas

Los pasos de entrenamiento son

Se crea el set de imagenes normalizadas positivas y negativas

Del set de imagenes se crea un subconjunto de test positivo y negativo para verificar el proceso de deteccion.

De las imagenes negativas se realiza 10 crop random de imagenes negativas para realizar el entrenamiento.

Se obtienen los HOG de las imagenes positivas y negativas

Se entrena un clasificador. Si es la primera vez que se entrena el modelo se debe establecer cual es el modelo y los

parametros de entrenamiento mas optimos para el set.

Se busca falsas positivas (hard examples) con el modelo obtenido en las imagenes negativas y se guardan. Si las imagenes falsas positivas son demasiadas, se puede extraer una porcion.

Se suman las imagenes falsas positivas a las negativas y se vuelve a entrenar el modelo (modelo hard)

Se realiza el testeo del descriptor.

Se realiza el testeo del proceso de deteccion.

Programas

Se extraen 10 imagenes aleatorias crop de las imagenes negativas

La funcion esta implementada en el directorio crop_random.

parametros

-data listado de imagenes negativas

-count cantidad de imagenes

-size tamaño minimo de la extraccion (66x130)

-directory_out Directorio de salida de las imagenes

Ejemplo: crop_random/crop -data listas/list_neg.txt -count 10 -size 66x130 -directory_out ../Imagenes/NEG

Calcula el hog para las imagenes positivas y negativas_crop

Esta implementado en el directorio hog

parametros

-data listado de imágenes a extraer el hog

-param parametros de hogs

-directory_out Directorio de salida de los hogs

Ejemplo: hog/hog -param parameters -data listas/list_pos.txt -directory_out datapos

Se entrena la SVM Lineal. Se obtiene el modelo

libsvm/libsvm-2.89/svm-train -c 0.1 -t 0 -e 0.1 -h 0 -m 800 -v 5 svm/svm_train.txt > c01.txt libsvm/libsvm-2.89/svm-train -c 0.1 -t 0 -e 0.1 -h 0 -m 800 svm/svm_train.txt svm/svm.model

Se busca en las imagenes negativas personas con el modelo obtenido

Esta implementado en el directorio buscar_neg. Se le tiene que pasar los parametros y el listado de las imagenes negativas.

Ejemplo: buscar_neg/buscar_neg parameters listas/list_neg.txt

Se crean los hog de las imagenes falsas positivas obtenidas en el paso anterior

Con estas nuevas imagenes realizaremos un entrenamiento hard

Entreno el modelo con las imagenes falsas positivas obtenidas

Creo el nuevo modelo hard

Testeo las imagenes con el nuevo model hard. La serie de imagenes a utilizar es para test.

Esta implementado en el directorio test_images. Obtemnemos un archivo con los valores svm de las imagenes testeadas. Debemos realizarlo tanto para las imagenes de testeo positivas (70x134) como para las imagenes negativas (600x400)

Ejemplo: test_images/test_images parameters listas/list_test_pos.txt

Realiza un conteo e imprime los resultados. Los valores son almacenado en valores.txt

Se encuentra implementado en el directorio contar.

Para mas informacion ver Makefile