Sensibilité à l'échelle du réseau neuronal convolutif

11

Par exemple, supposons que nous construisons un estimateur d'âge, basé sur l'image d'une personne. Ci-dessous, nous avons deux personnes en costume, mais la première est clairement plus jeune que la seconde.


(source: tinytux.com )

Il existe de nombreuses fonctionnalités qui impliquent cela, par exemple la structure du visage. Cependant, la caractéristique la plus révélatrice est le rapport entre la taille de la tête et la taille du corps :


(source: wikimedia.org )

Supposons donc que nous ayons formé une régression CNN pour prédire l'âge de la personne. Dans de nombreux prédicteurs d'âge que j'ai essayés, l'image ci-dessus de l'enfant semble tromper les prédictions en lui faisant croire qu'il est plus âgé, à cause de la combinaison et probablement parce qu'ils dépendent principalement du visage:

Je me demande à quel point une architecture CNN vanille peut inférer le rapport tête / torse?

Comparé à un RCNN régional, qui est capable d'obtenir des boîtes englobantes sur le corps et la tête, le CNN vanille fonctionnera-t-il toujours moins bien?

Juste avant l'aplatissement global de la vanille CNN (c'est-à-dire juste après toutes les circonvolutions), chaque sortie a un champ récepteur correspondant, qui devrait avoir un sens d'échelle. Je sais que le RCNN plus rapide exploite cela en faisant des propositions de boîte englobante exactement à ce stade, de sorte que tous les filtres convolutionnels précédents s'entraînent automatiquement à toutes les échelles.

Donc, je pense que le CNN vanille devrait être en mesure d'inférer le rapport taille tête / torse? Est-ce correct? Dans l'affirmative, est-ce que le seul avantage d'utiliser un cadre RCNN plus rapide pour exploiter le fait d'avoir été pré-formé à détecter des personnes?

Alex R.
la source
1
Savez-vous exactement où échoue votre recongnizer d'âge? Pourquoi pensez-vous que c'est la proportion de la taille de la tête? Avez-vous regardé la sortie des couches intermédiaires?
Aksakal
@Aksakal Je ne pense pas qu'il ait expérimenté la formation d'un CNN. D'après ce que j'ai compris, il a fait des tests avec les services Web existants: "Dans de nombreux prédicteurs d'âge que j'ai essayés [..]".
DeltaIV

Réponses:

8

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:

  1. 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.
  2. 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.
  3. Diverses poses: Le rapport torse / tête serait très différent pour les personnes vues de face et de côté.
  4. 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.

Jan Kukacka
la source
8

Les CNN sont une classe de modèles trop importante pour répondre à cette question. LeNet, AlexNet, ZFNet et VGG16 se comporteront très différemment de GoogLeNet, qui a été construit spécifiquement pour faire la plupart de ce que fait R-CNN, avec une architecture CNN (vous connaissez peut-être GoogLeNet avec le nom d'Inception, même si Inception à proprement parler est juste l'unité de base (sous-réseau) sur laquelle GoogLeNet est construit). Enfin, ResNets se comportera différemment. Et toutes ces architectures n'ont pas été construites pour classer les classes d'âge, mais les 1000 classes ImageNet, qui ne contiennent pas de classes d'âge pour les humains. On pourrait utiliser l' apprentissage par transfert(si vous avez suffisamment d'images de formation) pour former l'un des modèles formés largement disponibles ci-dessus et voir comment ils fonctionnent. En général, cependant, en particulier les architectures plus anciennes (disons jusqu'à VGG16) ont du mal à apprendre les "fonctionnalités globales" qui nécessitent de se renseigner sur "tête" (déjà une caractéristique complexe), "torse" (une autre caractéristique complexe) et leur (ce qui nécessite également que les deux entités soient dans une certaine relation spatiale). Ce genre de choses est ce que Capsule Networks aurait dû faire.

Les convnets sont nés pour faire exactement le contraire: être sensibles aux caractéristiques locales et relativement insensibles à leur position / échelle relative. Un bon Convnet devrait reconnaître "chat blanc", que l'image soit en gros plan ou en plan américain. La combinaison de couches convolutives (qui sont sensibles aux caractéristiques locales) avec des couches de mise en commun (qui suppriment une partie de la sensibilité aux variations d'échelle ou à la traduction de l'image) vous donne une architecture qui, dans sa forme la plus élémentaire, n'est pas excellente pour apprendre le type d'espace les relations entre les objets que vous recherchez. Il y avait un exemple quelque part (mais je ne le trouve plus) où, après avoir divisé une image de chat en différentes tuiles rectangulaires non superposées et les avoir assemblées dans un ordre aléatoire, le CNN continuerait à identifier l'image commecat. Cela indique que les CNN sont plus sensibles aux caractéristiques locales (textures ou quelque chose comme ça) qu'à la relation spatiale entre les caractéristiques de haut niveau. Voir également le document sur les réseaux de capsules pour une discussion à ce sujet. Hinton a également montré un exemple de cela dans une vidéo sur les limites des convnets .

Je suppose que l'une des architectures récentes serait parfaitement capable (avec suffisamment de données) de discerner les hommes des enfants, mais pas à cause d'un "seuil" sur une relation métrique entre des caractéristiques de haut niveau telles que "tête" et "torse" . Il apprendrait une certaine régularité statistique, peut-être complètement imperceptible pour les humains, qui sépare les images adultes des images enfants dans l'ensemble d'entraînement.

DeltaIV
la source
J'apprécie votre réponse, mais j'ai du mal à accepter. Les architectures RCNN ont essentiellement la même structure de filtres que les convnets d'objets, par exemple VGG et Resnet. Et comme RCNN peut détecter l'échelle et la position relative, il s'ensuit que VGG et Resnet devraient également être capables de détecter l'échelle. Cependant, les architectures RCNN s'appuient sur des propositions de boîte, dont elles font des milliers par image, après quoi chaque proposition de boîte est évaluée. Il semble donc que si j'intègre au moins certaines de ces propositions de boîte, un CNN vanille devrait mieux détecter l'échelle. Je ne sais tout simplement pas si c'est nécessaire.
Alex R.
RCNN n'est pas CNN. Non seulement vous manquez la recherche sélective des boîtes englobantes, mais vous manquez également les étapes SVM linéaire et les régresseurs des boîtes englobantes. En outre, il existe une grande différence entre la capacité de détecter l'échelle d'AlexNet (qui est le CNN utilisé dans l'article RCNN original), ou VGG, et la capacité de GoogLeNet ou ResNet: GoogLeNet a été développé précisément pour faire ce que fait RCNN. Je pense que GoogLeNet et ResNet seraient en mesure de classer l'âge, mais il n'y a aucun moyen de savoir s'ils le feraient en utilisant une fonctionnalité qui a du sens pour nous (rapport tête / torse) ou en trouvant des statistiques 1 /
DeltaIV
2 / régularités qu'un humain ne remarquerait jamais. Je vous suggère d'expérimenter et d'essayer, mais malheureusement, seule la création de la base de données d'images serait un projet de recherche en soi (sauf si vous travaillez dans une entreprise de mode).
DeltaIV
1
Mes excuses pour la confusion. Je sais qu'il existe environ 20 architectures RCNN différentes, chacune affirmant que les autres sont obsolètes.
Alex R.
1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Aussi, un problème différent, mais toujours lié à la correspondance de texture, et de chercheurs plus respectés, arxiv.org/pdf/ 1703.06857
DeltaIV
0

Eh bien, tout dépend de la façon dont votre ensemble de données est construit. D'après mon expérience, les réseaux de neurones ont tendance à chercher des explications les plus simples. Et déduire l'âge de la tenue est en fait plus simple que d'utiliser le rapport tête / corps. Si vous pouvez étendre votre ensemble de données en gardant cela à l'esprit, votre CNN devrait fonctionner comme prévu.

Lugi
la source