Introduction
Le human matting est une tâche extrêmement intéressante dont l’objectif consiste à trouver toute personne dans une image et à en retirer l’arrière-plan. Elle est très difficile à réaliser en raison de sa complexité, puisqu’il faut repérer la ou les personnes avec un contour parfait. Dans cet article, je passe en revue les meilleures techniques utilisées au fil des ans ainsi qu’une nouvelle approche publiée le 29 novembre 2020. De nombreuses méthodes s’appuient sur des algorithmes classiques de vision par ordinateur, comme GrabCut, qui est extrêmement rapide, mais peu précis.
GrabCut [4]

Image par l’auteur
Cet algorithme GrabCut estime essentiellement la distribution des couleurs de l’objet à l’avant-plan et de l’arrière-plan à l’aide d’un modèle de mélange gaussien. Nous traçons un rectangle autour de l’objet qui nous intéresse, soit l’avant-plan, puis nous essayons d’améliorer le résultat de façon itérative. Il suffit de dessiner sur les zones où l’algorithme a échoué afin d’ajouter des pixels à l’avant-plan ou d’en retirer. Voilà pourquoi nous utilisons souvent un « fond vert ». Il aide les algorithmes à ne supprimer que les pixels verts et à conserver tout le reste dans le résultat final. Mais sans fond vert, les résultats ne sont pas aussi convaincants.
Deep Image Matting [3]
Le deep learning moderne et la puissance de nos GPU ont permis de créer des applications beaucoup plus puissantes, même si elles ne sont toujours pas parfaites. Le meilleur exemple ici est Deep Image Matting, conçu par Adobe Research en 2017. Une version de ce modèle est aujourd’hui utilisée par la plupart des sites Web qui retirent automatiquement l’arrière-plan de vos photos. Malheureusement, cette technique exige deux inputs : une image et son trimap. Un trimap est essentiellement une représentation de l’image en trois niveaux : l’arrière-plan, l’avant-plan et une région où les pixels sont considérés comme un mélange des deux. Voici à quoi cela ressemble.


Un renard roux (à gauche) et son trimap (à droite). Image par l’auteur
Pour réussir à supprimer l’arrière-plan avec Deep Image Matting, il nous faut un réseau puissant capable de localiser la personne avec une certaine précision. Nous produisons ensuite une segmentation où les pixels qui correspondent à la personne prennent la valeur 1, tandis que le reste de l’image prend la valeur 0. Puis, nous utilisons des transformations classiques de vision par ordinateur pour créer un trimap à partir de cette segmentation. Nous commençons par réduire la taille de l’objet segmenté afin de laisser un peu d’espace à la région inconnue. Pour ce faire, nous l’érodons en retirant progressivement des pixels de son contour. Nous ajoutons ensuite cette troisième section, la région inconnue, en dilatant l’objet, donc en ajoutant des pixels autour de son contour. Le résultat ressemble à ceci. Ce trimap est envoyé au modèle Deep Image Matting avec l’image originale pour produire l’output. Vous voyez toute la puissance de calcul nécessaire à cette technique. Il faut utiliser deux modèles puissants pour obtenir des résultats raisonnablement précis.



Progression du trimap. Segmentation de l’objet (à gauche), érosion de la segmentation (au centre), ajout de la région inconnue par dilatation (à droite). Image par l’auteur.
Comme vous venez de le voir dans l’image de couverture, les approches de l’état de l’art actuel sont assez précises, mais elles prennent quelques secondes et parfois jusqu’à plusieurs minutes pour produire le résultat d’une seule image. Imaginez le temps nécessaire pour traiter une vidéo entière.
MODNet [1]

Framework de human matting. « a) Nous entraînons MODNet sur le dataset annoté afin d’apprendre les sous-objectifs du matting à partir d’images RGB. b) Pour nous adapter aux données du monde réel, nous effectuons le fine-tuning de MODNet sur les données non annotées en exploitant la cohérence entre les sous-objectifs. c) Dans une application de human matting vidéo, notre astuce OFD peut aider à lisser les alpha mattes prédites de la séquence vidéo. » Tiré de Ke, Z. (2020) [1]
Heureusement pour nous, cette nouvelle technique peut effectuer le human matting à partir d’une seule image en input, sans fond vert ni trimap, et ce, en temps réel jusqu’à 63 images par seconde ! Les chercheurs ont nommé leur réseau MODNet. Il s’agit d’un réseau léger de décomposition des objectifs du matting, que nous allons maintenant détailler. Ils ont entraîné leur réseau de façon supervisée et autosupervisée. L’approche supervisée reçoit un input et apprend à retirer l’arrière-plan à partir d’une vérité terrain correspondante, comme les réseaux habituels. Vient ensuite le processus d’entraînement autosupervisé. On l’appelle ainsi parce que le réseau n’a pas accès à la vérité terrain des vidéos sur lesquelles il est entraîné. Il utilise des données non annotées et a accès à l’information trouvée à l’étape précédente, soit les paramètres du réseau. En gros, il reprend ce que le premier réseau a appris et comprend la cohérence de l’objet entre chaque image afin de retirer correctement l’arrière-plan. Ces deux entraînements sont effectués sur l’architecture MODNet. MODNet se compose essentiellement de trois branches principales.

Architecture de MODNet. Image tirée de Ke, Z. (2020) [1]
Une branche à basse résolution estime la sémantique humaine. Ensuite, à partir de ces résultats, de l’image originale et de sa vérité terrain, une branche à haute résolution se concentre sur la détection précise des contours humains. Enfin, une branche de fusion, elle aussi supervisée par l’ensemble de l’alpha matte de vérité terrain, prédit l’alpha matte final qui servira à retirer l’arrière-plan de l’image en input. Cette architecture de réseau est beaucoup plus rapide parce qu’elle commence par estimer directement la sémantique à l’aide d’un décodeur simple dans la branche à basse résolution, ce qui accélère énormément le traitement. Comme vous pouvez le voir, le réseau se compose surtout de réductions de résolution, de convolutions et d’augmentations de résolution. On peut utiliser n’importe quelle architecture CNN là où les convolutions sont effectuées. Dans ce cas-ci, les chercheurs ont choisi MobileNetV2 parce qu’elle a été conçue pour les appareils mobiles. C’est un petit réseau extrêmement efficace comparativement aux autres architectures de l’état de l’art. Si vous ne connaissez pas les réseaux de neurones convolutifs, ou CNNs, je vous invite à regarder la vidéo dans laquelle j’explique leur fonctionnement.
La réduction de résolution et l’utilisation de moins de couches convolutives dans la branche à haute résolution servent à diminuer le temps de calcul. Cette branche de fusion n’est qu’un module CNN qui combine la sémantique et les détails. Une augmentation de résolution est nécessaire si nous voulons conserver des détails précis autour des régions sémantiques. Enfin, les résultats sont mesurés à l’aide d’une loss fortement inspirée de l’article Deep Image Matting. Elle calcule la différence absolue entre l’image en input et l’image composite obtenue à partir de l’avant-plan et de l’arrière-plan de vérité terrain. Il reste maintenant une dernière étape dans l’architecture de ce réseau. En revenant à l’architecture complète, nous voyons que les chercheurs appliquent ce qu’ils appellent un délai d’une image. Celui-ci utilise l’information de l’image précédente et de l’image suivante pour corriger les pixels inconnus qui hésitent entre l’avant-plan et l’arrière-plan.

Image tirée de Ke, Z. (2020) [1]
Vous voyez ici un exemple où l’avant-plan se déplace légèrement vers la gauche dans trois images consécutives et où les pixels ne correspondent pas à ce qu’ils devraient être. Le pixel rouge clignote lors de la deuxième itération.
Vous obtenez ensuite le résultat final avec l’objet à l’avant-plan extrait, soit une personne dans ce cas-ci, que vous pouvez placer sur de nombreux arrière-plans différents.

Exemple de résultat avec MODNet. Image tirée du projet GitHub de MODNet [2].
Conclusion
Bien sûr, il ne s’agissait que d’un aperçu simple de ce nouvel article scientifique. Je vous recommande fortement de lire l’article [1] pour comprendre cette nouvelle technique plus en profondeur. Le code et un modèle préentraîné seront également bientôt accessibles sur leur GitHub [2], comme ils l’indiquent sur leur page. Les deux liens se trouvent dans les références ci-dessous.
Si vous aimez mon travail et souhaitez me soutenir, je vous serais très reconnaissant de me suivre sur mes réseaux sociaux :
- La meilleure façon de me soutenir est de me suivre sur Medium.
- Abonnez-vous à ma chaîne YouTube.
- Suivez mes projets sur LinkedIn
- Apprenons l’IA ensemble. Rejoignez notre communauté Discord, partagez vos projets, vos articles scientifiques et vos meilleurs cours, trouvez des coéquipiers pour Kaggle, et bien plus encore !
Références
[1] Ke, Z. et al., Is a Green Screen Really Necessary for Real-Time Human Matting? (2020), https://arxiv.org/pdf/2011.11961.pdf
[2] Ke, Z., GitHub for Is a Green Screen Really Necessary for Real-Time Human Matting? (2020), https://github.com/ZHKKKe/MODNet
[3] Xu, N. et al., Deep Image Matting: Adobe Research (2017), https://sites.google.com/view/deepimagematting
[4] Algorithme GrabCut d’OpenCV, https://docs.opencv.org/3.4/d8/d83/tutorial_py_grabcut.html
FAQ
Qu’est-ce que le matting d’image en temps réel ?
Il estime une valeur de transparence nuancée pour chaque pixel afin de séparer une personne de l’arrière-plan en direct.
Pourquoi le matting est-il plus difficile qu’un masque de segmentation net ?
Les cheveux, le flou de mouvement, les bordures transparentes et les détails fins contiennent des mélanges d’avant-plan et d’arrière-plan.
Comment GrabCut supprime-t-il un arrière-plan ?
Il sépare de façon itérative l’avant-plan et l’arrière-plan à partir d’une région initiale définie par l’utilisateur et de corrections facultatives.
Pourquoi les anciennes méthodes de deep matting étaient-elles difficiles à utiliser pour la vidéo ?
Un traitement précis pouvait prendre plusieurs secondes, voire plusieurs minutes par image, ce qui rendait la vidéo continue beaucoup trop lente.
Qu’améliore MODNet ?
MODNet vise un human matting rapide à partir d’une seule image, sans exiger de fond vert ni de trimap préparé manuellement.


