Red de conocimiento informático - Material del sitio web - Cómo utilizar el programa de entrenamiento haar que viene con OpenCV para entrenar a un clasificador

Cómo utilizar el programa de entrenamiento haar que viene con OpenCV para entrenar a un clasificador

Lo primero que hay que tener en cuenta es que las características extraídas por el entrenamiento haar de OpenCV son características haar y el clasificador es el clasificador en cascada AdaBoost (si necesita comprender el algoritmo Adaboost, visite .NET Framework 3.0). El llamado clasificador en cascada consiste en conectar algunos clasificadores de componentes simples (pueden entenderse como clasificadores ordinarios) en secuencia. Los resultados finales de detección y clasificación deben pasar la detección y clasificación de todos los clasificadores de componentes antes de que puedan considerarse efectivos. resultados. De lo contrario, se considerará que no hay ningún objetivo que debamos encontrar en el área de detección actual.

Para utilizar el programa de entrenamiento de pelo propio de OpenCV para entrenar a un clasificador, debe seguir los siguientes pasos:

(1) Recopilar muestras de entrenamiento:

El Las muestras de entrenamiento incluyen muestras positivas y negativas. En términos sencillos, las muestras positivas son imágenes que contienen solo los objetos que necesita. La imagen de muestra negativa solo necesita no contener el objetivo. Pero cabe señalar que las muestras negativas no se seleccionan al azar. Por ejemplo, si el objetivo a detectar es un automóvil, entonces la muestra positiva debe ser una imagen que contenga solo automóviles, mientras que la muestra negativa obviamente no puede ser algunas imágenes que contengan el cielo, el océano o el paisaje. Esto se debe a que, en última instancia, se desea entrenar un clasificador para que detecte automóviles, y los automóviles deben estar en la carretera. En otras palabras, las imágenes finalmente detectadas por el clasificador deben ser imágenes que contengan carreteras, señales de tráfico, edificios, vallas publicitarias, automóviles, motocicletas, triciclos, peatones, bicicletas, etc. Obviamente, las muestras negativas aquí deberían incluir motocicletas, triciclos, bicicletas, peatones, carreteras, arbustos, flores, señales de tráfico, vallas publicitarias, etc.

Además, debe recordarse que el método adaboost también es un algoritmo clásico en el aprendizaje automático, y el requisito previo del algoritmo de aprendizaje automático es que la muestra de prueba y la muestra de entrenamiento sean independientes y estén distribuidas de manera idéntica. . La llamada distribución independiente e idéntica puede entenderse simplemente como: las muestras de entrenamiento deben ser muy cercanas o consistentes con la aplicación final. De lo contrario, los algoritmos basados ​​en aprendizaje automático no pueden garantizar la eficacia del algoritmo. Además, suficientes muestras de entrenamiento (al menos miles de muestras positivas y miles de muestras negativas) también son un requisito previo para garantizar la eficacia del algoritmo de entrenamiento.

Aquí, supongamos que todas las muestras positivas se colocan en la carpeta f:/pos y todas las muestras negativas se colocan en la carpeta f:/neg

(2) Para todos; Las muestras positivas tienen un tamaño normalizado:

Las muestras positivas recopiladas en el paso anterior tienen muchos tamaños, algunas son de 200*300 y otras de 500*800. El propósito de la normalización de tamaño es escalar todas las imágenes al mismo tamaño. Por ejemplo, todos se escalan a un tamaño de 50*60.

(3) Genere un archivo de descripción de muestra positiva:

El llamado archivo de descripción de muestra positiva es en realidad un archivo de texto, pero a muchas personas les gusta cambiar el sufijo del archivo a .dat . El contenido del archivo de descripción de muestra positiva incluye: nombre de archivo, número de objetivo, posición del objetivo en la imagen (x, y, ancho, alto)

Un archivo de descripción de muestra positiva típico es el siguiente:

0.jpg 1 0 0 30 40

1.jpg 1 0 0 30 40

2.jpg 1 0 0 30 40

. .. ..

No es difícil ver que cada muestra positiva en el archivo de descripción de muestra positiva ocupa una línea. Cada línea comienza con la imagen de muestra positiva, seguida del número de muestras positivas en la imagen. (normalmente 1). Y la posición de la muestra positiva en la imagen.

Por ejemplo, supongamos que hay 5000 imágenes de muestra positivas en la carpeta f:\pos y solo hay un objetivo en cada imagen. Luego podemos escribir un programa (recorrer todos los archivos de imagen en la carpeta, escribir el nombre del archivo en el archivo y escribir la ubicación y el tamaño de la muestra positiva en la imagen en el archivo) para generar un archivo pos.dat como archivo de descripción de muestra positiva.