Trouver les sources : « Classificateurs en cascade » – actualités – journaux – livres – érudit – JSTOR (juin 2019) (Apprenez quand et comment supprimer ce message modèle)
Mise à l’échelle et rotationsModifier
On peut voir dans cette description que le classificateur n’acceptera pas les visages qui sont à l’envers (les sourcils ne sont pas dans une position correcte) ou sur le côté du visage (le nez n’est plus au centre, et les ombres sur le côté du nez pourraient manquer). Des classificateurs en cascade séparés doivent être entraînés pour chaque rotation qui n’est pas dans le plan de l’image (côté du visage) et devront être réentraînés ou exécutés sur les caractéristiques de rotation pour chaque rotation qui est dans le plan de l’image (visage à l’envers ou incliné sur le côté). La mise à l’échelle n’est pas un problème, puisque les caractéristiques peuvent être mises à l’échelle (les pixels centraux, les pixels gauches et les pixels droits ont une dimension uniquement relative au rectangle examiné). Dans les cascades récentes, la valeur des pixels d’une partie d’un rectangle par rapport à une autre a été remplacée par des ondelettes de Haar.
Propriétés des étapesModifier
Pour avoir de bonnes performances globales, les critères suivants doivent être respectés :
- Chaque étape doit valider tous les visages, et peut produire de nombreux faux positifs. Par exemple, si l’étape 1 devait marquer comme ‘ne contient pas de visage’ 20% des rectangles contenant un visage (taux de faux négatifs=20%), alors la performance totale de la chaîne ne peut être supérieure à 80% de vrais positifs, quelles que soient les étapes suivantes, puisque 20% des visages ont déjà été rejetés.
- Cela suggère qu’une bonne étape doit avoir 100% de vrais positifs et par exemple 40% de faux positifs, c’est-à-dire accepter tous les rectangles contenant des visages et marquer par erreur de nombreux rectangles comme contenant potentiellement un visage, à éliminer par les étapes suivantes. Pour une première étape, 100% de vrais positifs et 40% de faux positifs donne encore beaucoup de faux négatifs, si seulement 1 rectangle sur 1000 dans une image contient un visage, il y aura encore 400 à 1 faux visages possibles après la première étape.
- Si la première étape est très rapide (quelques opérations), on a éliminé très rapidement 60% des rectangles ne contenant pas de visage.
La procédure d’entraînement pour une étape est donc d’avoir beaucoup d’apprenants faibles (opérateurs simples de différence de pixels), de les entraîner en groupe (augmenter leur poids s’ils donnent un résultat correct), mais de faire attention à n’avoir que quelques apprenants faibles actifs pour que le temps de calcul reste faible.
Le premier détecteur de Viola & Jones avait 38 étapes, avec 1 caractéristique dans la première étape, puis 10, 25, 25, 50 dans les cinq étapes suivantes, pour un total de 6000 caractéristiques. Les premiers étages éliminent rapidement les rectangles indésirables pour éviter de payer les coûts de calcul des étages suivants, de sorte que le temps de calcul est consacré à l’analyse profonde de la partie de l’image qui a une forte probabilité de contenir l’objet.
Entraînement en cascadeModification
Les cascades sont généralement effectuées par ADAboost sensible au coût. Le seuil de sensibilité (0,8 dans notre exemple) peut être ajusté pour qu’il y ait près de 100% de vrais positifs et quelques faux positifs. La procédure peut alors être recommencée pour l’étape 2, jusqu’à ce que la précision/temps de calcul souhaitée soit atteinte.
Après l’algorithme initial, on a compris que l’entraînement de la cascade dans son ensemble peut être optimisé, afin d’obtenir un taux de détection vrai souhaité avec une complexité minimale. Des exemples de tels algorithmes sont RCBoost, ECBoost ou RCECBoost. Dans leurs versions les plus élémentaires, ils peuvent être compris comme un choix, à chaque étape, entre l’ajout d’un étage ou l’ajout d’un apprenant faible à un étage précédent, selon ce qui est le moins coûteux, jusqu’à ce que la précision souhaitée soit atteinte. Chaque étape du classificateur ne peut avoir un taux de détection (sensibilité) inférieur au taux désiré, il s’agit donc d’un problème d’optimisation sous contrainte. Pour être précis, la sensibilité totale sera le produit des sensibilités des étages.
Les classificateurs en cascade sont disponibles dans OpenCV, avec des cascades pré-entraînées pour les visages frontaux et le haut du corps. L’entraînement d’une nouvelle cascade dans OpenCV est également possible avec les méthodes haar_training ou train_cascades. Ceci peut être utilisé pour la détection rapide d’objets plus spécifiques, y compris des objets non humains avec des caractéristiques de type Haar. Le processus nécessite deux ensembles d’échantillons : négatif et positif, où les échantillons négatifs correspondent à des images arbitraires de non-objets. La contrainte de temps dans la formation d’un classificateur en cascade peut être contournée en utilisant des méthodes de cloud-computing.