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