Suivez l’article avec l’implémentation complète du code sur GitHub. Ouvrez le notebook dans Google Colab, importez votre image et exécutez les cellules !
Le détourage d’images est une tâche extrêmement intéressante dont l’objectif consiste à trouver un objet d’intérêt, ou un humain, dans une photo et à retirer son arrière-plan. Cette tâche est difficile en raison de sa complexité : il faut trouver une ou plusieurs personnes, ou des objets, avec un contour parfait. Cet article présente une technique très intéressante qui utilise des algorithmes de base en vision par ordinateur pour accomplir cette tâche : l’algorithme GrabCut. Il est extrêmement rapide, mais peu précis pour les objets complexes comme les humains ou les animaux. Il peut tout de même être pratique dans certains contextes et constitue le projet appliqué idéal pour débuter en vision par ordinateur et en Python ! Comme mentionné plus haut, l’implémentation utilise Google Colab. Elle ne demande donc aucun prérequis ni aucune configuration, ce qui en fait un projet très intéressant à reproduire pour apprendre.
Cette implémentation de l’algorithme GrabCut estime essentiellement la distribution des couleurs de l’élément au premier plan et de l’arrière-plan avec un modèle de mélange gaussien. Nous dessinons un rectangle autour de l’objet d’intérêt, soit le premier plan, puis essayons de façon itérative d’améliorer le résultat en dessinant sur les parties où l’algorithme n’a pas réussi à ajouter des pixels au premier plan ou à en retirer. Voilà pourquoi nous utilisons souvent un « écran vert », qui aide les algorithmes à retirer uniquement les pixels verts et à conserver le reste dans le résultat final. Les résultats ne sont toutefois pas aussi bons lorsque nous n’avons pas accès à un tel écran vert.
Cet algorithme utilise un rectangle dessiné par l’utilisateur pour identifier l’élément au premier plan. L’utilisateur peut ensuite modifier le résultat afin d’ajouter ou de retirer des objets du premier plan. Une fois cette étape terminée, l’algorithme retire l’arrière-plan, le rend transparent en ajoutant un canal alpha, puis enregistre l’image.
Il s’agit d’un notebook simple qui implémente l’algorithme GrabCut présenté dans la vidéo que j’ai réalisée sur ModNet, une nouvelle technique de détourage d’images.
Comment cela fonctionne-t-il ?
- Téléversez votre image. [3e cellule]
- Créez un rectangle sur votre image en y incluant tous les objets au premier plan. [4e cellule]
- Retirez l’arrière-plan avec l’algorithme GrabCut. [5e cellule]
- Si le résultat doit être amélioré, dessinez sur l’image : clic gauche (blanc) = premier plan et clic droit (noir) = arrière-plan. [6e cellule]
- Retirez l’arrière-plan avec l’algorithme GrabCut. [6e cellule]
- Revenez à l’étape 4 ou terminez. [6e cellule]
- Enregistrez vos résultats. [7e cellule]
Note : les [cellules] font référence à l’implémentation du notebook
Démonstrations vidéo
Exemple avec une seule itération qui nécessite uniquement le premier passage de l’algorithme
Voici un exemple où l’algorithme fonctionne au premier essai et où nous avons seulement besoin des étapes 1 à 3. Nous téléversons simplement l’image, dessinons un rectangle autour de l’objet d’intérêt, notre chien, et c’est tout ! Vous pouvez enregistrer l’image avec son canal alpha au format PNG.
Exemple avec une image plus difficile qui nécessite plusieurs itérations
Voici un exemple où l’algorithme fonctionne au premier essai et où nous avons seulement besoin des étapes 1 à 6. Nous téléversons simplement l’image, dessinons un rectangle autour de l’objet d’intérêt, notre deuxième chien, puis entrons dans la boucle de fine-tuning. Ici, nous dessinons simplement des lignes aléatoires avec le clic gauche pour améliorer davantage le résultat. Une fois terminé, vous pouvez enregistrer l’image avec son canal alpha au format PNG en exécutant le reste du code.
Implémentez-le vous-même !
L’implémentation complète du code est disponible sur GitHub ! Vous pouvez facilement l’ouvrir dans une machine Google Colab et l’exécuter immédiatement, sans aucun prérequis ni aucune configuration. Importez simplement vos images dans Google Colab et exécutez le code !
[
louisfb01/iterative-grabcut
Cet algorithme utilise un rectangle dessiné par l’utilisateur pour identifier l’élément au premier plan. L’utilisateur peut ensuite modifier le résultat afin d’ajouter ou de retirer des objets du premier plan. Puis, l’algorithme retire l’arrière-plan et le rend transparent…
GitHublouisfb01

](https://github.com/louisfb01/iterative-grabcut)
Résultats concrets








Venez discuter avec nous dans notre communauté Discord : Learn AI Together et partagez vos projets, vos articles scientifiques et les meilleures formations, trouvez des coéquipiers pour Kaggle et bien plus encore !
Si vous aimez mon travail et souhaitez rester au courant des nouveautés en IA, vous devriez vraiment me suivre sur mes autres réseaux sociaux (LinkedIn, Twitter) et vous abonner à mon infolettre hebdomadaire sur l’IA !
Pour me soutenir :
- La meilleure façon de me soutenir est de devenir membre de ce site ou de vous abonner à ma chaîne YouTube si vous aimez le format vidéo.
- Soutenez financièrement mon travail sur Patreon
Références
Interactive Foreground Extraction using GrabCut Algorithm, OpenCV, (2013), https://docs.opencv.org/4.x/d8/d83/tutorial_py_grabcut.html
FAQ
Que fait le notebook GrabCut ?
Il sépare un sujet au premier plan de son arrière-plan avec un rectangle, des corrections facultatives au pinceau et une segmentation itérative.
GrabCut est-il un bon projet de vision par ordinateur pour débuter ?
Oui. Ce notebook compact présente les tableaux d’images, l’étiquetage interactif, la segmentation, l’itération et l’inspection visuelle.
À quoi sert le rectangle initial ?
Il fournit à l’algorithme une région approximative qui contient le sujet au premier plan et l’arrière-plan probable.
Quand les corrections au pinceau sont-elles nécessaires ?
Elles aident lorsque le premier passage confond le premier plan et l’arrière-plan ou conserve des régions indésirables de l’arrière-plan.
Comment puis-je exécuter cette implémentation ?
Ouvrez le notebook dans Google Colab, importez une image, exécutez les cellules, ajustez le masque et enregistrez le résultat.

