Tout d'abord, merci d'avoir posté une question très intéressante.
Pour y répondre rapidement, un convnet vanille formé end-2-end pour prédire l'âge d'une photo sera généralement enclin à mal classer les images telles que celle que vous avez publiée . Deuxièmement, notez que l' estimation précise de l'âge d'une personne est une tâche presque impossible 1 .
La principale différence avec l'approche que vous proposez d'utiliser certains détecteurs d'objets (que ce soit RCNN, Faster RCNN, YOLO ou SSD) est que vous utilisez différentes informations pour former les modèles. Le CNN est formé uniquement sur les images et doit trouver lui-même toutes les fonctionnalités nécessaires. Il va très probablement trouver diverses caractéristiques faciales, mais il dépendra également des vêtements et peut-être des caractéristiques de la scène (les enfants peuvent souvent être sur la photo avec certains jouets, les adultes seront plus susceptibles dans les environnements de bureau, etc.). Ces fonctionnalités ne seront pas robustes à votre contre-exemple.
D'un autre côté, si vous entraînez le réseau à détecter explicitement des objets comme "torse" et "tête", vous fournissez des informations supplémentaires sur le fait que ces objets sont importants pour la tâche, et simplifiez ainsi le problème 2 .
Bien que l'approche consistant à détecter la tête et le torse puis à évaluer le rapport de taille des boîtes englobantes semble intéressante, je peux voir plusieurs obstacles:
- Obtention de données: je ne suis pas au courant de la disponibilité d'un grand ensemble de données où les cases d'âge et de délimitation seraient présentes.
- FOV imparfait: dans la plupart des images (par exemple dans vos deux exemples), les personnes ne sont pas affichées entières. Il faudrait faire face au fait que les boîtes de délimitation du torse ne seraient pas toujours parfaites simplement parce qu'une partie de la personne n'est pas dans l'image et le filet devrait deviner la grande partie manquante (et les boîtes de délimitation de la vérité au sol seraient les plus probablement pas saisir cette information). De plus, les détecteurs d'objets susmentionnés ne gèrent pas toujours correctement les prédictions d'objets partiels. Cela pourrait introduire trop de bruit dans le modèle.
- Diverses poses: Le rapport torse / tête serait très différent pour les personnes vues de face et de côté.
- Adultes: Il semble que le ratio fonctionne bien pour prédire les âges entre 0 et 21 ans, mais je ne vois pas comment cela aiderait à prédire les âges des adultes (je suppose que le ratio ne change pas à un âge plus avancé).
Tous ces problèmes suggèrent que l'approche du rapport tête / torse ne fonctionnera pas non plus parfaitement, même si elle pourrait être plus robuste pour votre contre-exemple particulier.
Je suppose que la meilleure façon d'accomplir cette tâche serait de 1) détecter le visage, 2) prédire l'âge uniquement à partir du recadrage du visage (supprime les informations potentiellement trompeuses). Notez que certaines architectures de type R-CNN utilisant le ROI-pooling pourraient être formées pour ce faire de bout en bout.
1 Même en utilisant des méthodes médicales très sophistiquées (qui sont sans doute beaucoup plus informatives qu'une photo de la personne), il n'est pas possible de le faire avec précision. Voir ce fil Quora pour plus d'informations .
2 Consultez l'article Knowledge Matters: Importance of Prior Information for Optimization pour un exemple montrant comment la fourniture de connaissances intermédiaires sur la tâche peut simplifier considérablement l'apprentissage.