Encontrar fuentes: «Clasificadores en cascada» – noticias – periódicos – libros – scholar – JSTOR (junio de 2019) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)
Escalado y rotacionesEditar
De esta descripción se desprende que el clasificador no aceptará rostros que estén al revés (las cejas no están en una posición correcta) o el lado de la cara (la nariz ya no está en el centro, y podrían faltar las sombras en el lado de la nariz). Hay que entrenar clasificadores en cascada separados para cada rotación que no esté en el plano de la imagen (lado de la cara) y habrá que volver a entrenarlos o ejecutarlos con características rotadas para cada rotación que esté en el plano de la imagen (cara al revés o inclinada hacia un lado). El escalado no es un problema, ya que las características pueden ser escaladas (centerpixel, leftpixels y rightpixels tienen una dimensión sólo relativa al rectángulo examinado). En cascadas recientes, el valor de los píxeles de alguna parte de un rectángulo comparado con otro se ha sustituido por ondículas de Haar.
Propiedades de la etapaEditar
Para tener un buen rendimiento general, deben cumplirse los siguientes criterios:
- Cada etapa debe validar todas las caras, y puede producir muchos falsos positivos. Por ejemplo, si la etapa 1 marcara como «no contiene una cara» el 20% de los rectángulos que contienen una cara (tasa de falsos negativos=20%), entonces el rendimiento total de la cadena no puede ser superior al 80% de verdaderos positivos, sean cuales sean las etapas siguientes, ya que el 20% de las caras ya han sido rechazadas.
- Esto sugiere que una buena etapa debe tener un 100% de verdaderos positivos y, por ejemplo, un 40% de falsos positivos, es decir, aceptar todos los rectángulos que contengan caras y marcar erróneamente muchos rectángulos como que potencialmente contienen una cara, para ser eliminados por las etapas posteriores. Para una primera etapa, el 100% de verdaderos positivos y el 40% de falsos positivos sigue dando muchos falsos negativos, si sólo 1 de cada 1000 rectángulos de una imagen contiene una cara, seguirá habiendo entre 400 y 1 posibles caras falsas después de la primera etapa.
- Si la primera etapa es muy rápida (unas pocas operaciones), hemos eliminado el 60% de los rectángulos que no contienen una cara muy rápidamente.
El procedimiento de entrenamiento para una etapa es, por tanto, tener muchos aprendices débiles (simples operadores de diferencia de píxeles), entrenarlos en grupo (aumentar su peso si dan un resultado correcto), pero tener en cuenta tener sólo unos pocos aprendices débiles activos para que el tiempo de cálculo siga siendo bajo.
El primer detector de Viola & Jones tenía 38 etapas, con 1 característica en la primera etapa, luego 10, 25, 25, 50 en las siguientes cinco etapas, para un total de 6000 características. Las primeras etapas eliminan rápidamente los rectángulos no deseados para evitar el pago de los costes computacionales de las siguientes etapas, de modo que el tiempo computacional se dedica a analizar en profundidad la parte de la imagen que tiene una alta probabilidad de contener el objeto.
Entrenamiento en cascadaEditar
Las cascadas se realizan normalmente a través de ADAboost consciente de los costes. El umbral de sensibilidad (0,8 en nuestro ejemplo) se puede ajustar para que haya cerca del 100% de verdaderos positivos y algunos falsos positivos. El procedimiento puede entonces iniciarse de nuevo para la etapa 2, hasta que se alcance la precisión/tiempo de cálculo deseado.
Después del algoritmo inicial, se entendió que el entrenamiento de la cascada en su conjunto puede ser optimizado, para lograr una tasa de detección verdadera deseada con una complejidad mínima. Ejemplos de estos algoritmos son RCBoost, ECBoost o RCECBoost. En sus versiones más básicas, pueden entenderse como la elección, en cada paso, entre añadir una etapa o añadir un aprendiz débil a una etapa anterior, lo que sea menos costoso, hasta alcanzar la precisión deseada. Cada etapa del clasificador no puede tener una tasa de detección (sensibilidad) inferior a la deseada, por lo que se trata de un problema de optimización con restricciones. Para ser precisos, la sensibilidad total será el producto de las sensibilidades de las etapas.
Los clasificadores en cascada están disponibles en OpenCV, con cascadas pre-entrenadas para caras frontales y parte superior del cuerpo. También es posible entrenar una nueva cascada en OpenCV con los métodos haar_training o train_cascades. Esto puede utilizarse para la detección rápida de objetos más específicos, incluidos los objetos no humanos con características similares a las de Haar. El proceso requiere dos conjuntos de muestras: negativo y positivo, donde las muestras negativas corresponden a imágenes arbitrarias no objetuales. La limitación de tiempo en el entrenamiento de un clasificador en cascada puede eludirse utilizando métodos de computación en la nube.