En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
Paramètres des cookies
En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
Explorez l'algorithme SIFT. Découvrez ce qu'est SIFT et ses puissantes fonctionnalités pour la vision artificielle invariante à l'échelle. Améliorez votre traitement d'image.
De nos jours, bon nombre des appareils intelligents que nous utilisons, des téléphones et des caméras aux systèmes domotiques intelligents, sont équipés de solutions d'IA capables de reconnaître les visages, les objets et même des scènes visuelles entières. Cette capacité provient de la vision par ordinateur, un domaine de l'intelligence artificielle qui permet aux machines de comprendre et d'interpréter les images et les vidéos.
Par exemple, si vous prenez une photo de la Tour Eiffel sous n'importe quel angle ou distance, votre appareil peut généralement la reconnaître grâce à la vision par ordinateur et l'organiser dans le dossier approprié de votre galerie. Bien que cela semble simple, la reconnaissance d'objets n'est pas toujours facile. Les images peuvent sembler très différentes selon leur taille, leur angle, leur échelle ou leur éclairage, ce qui rend difficile pour les machines de les identifier de manière cohérente.
Pour résoudre ce problème, des chercheurs ont développé un algorithme de vision par ordinateur appelé Scale Invariant Feature Transform, ou SIFT. Cet algorithme permet de détecter des objets dans différentes conditions de visualisation. Créé par David Lowe en 1999, SIFT a été conçu pour trouver et décrire des points clés uniques dans une image, tels que les coins, les bords ou les motifs qui restent reconnaissables même lorsque l'image est redimensionnée, pivotée ou éclairée différemment.
Avant que les modèles de vision par ordinateur basés sur l'apprentissage profond, tels que Ultralytics YOLO11, ne deviennent populaires, SIFT était une technique largement utilisée en vision par ordinateur. C'était une approche standard pour des tâches telles que la reconnaissance d'objets, où le but est d'identifier un élément spécifique dans une photo, et la mise en correspondance d'images, où les photos sont alignées en trouvant des caractéristiques d'image qui se chevauchent.
Dans cet article, nous allons explorer SIFT avec un aperçu rapide de ce que c'est, de son fonctionnement à un niveau élevé et de son importance dans l'évolution de la vision par ordinateur. Commençons !
Pourquoi l'algorithme SIFT est-il essentiel pour la vision par ordinateur ?
Dans une image, un objet peut apparaître de différentes manières. Par exemple, une tasse à café peut être photographiée d'en haut, de côté, en plein soleil ou sous une lampe chaude. La même tasse peut également paraître plus grande lorsqu'elle est proche de la caméra et plus petite lorsqu'elle est plus éloignée.
Toutes ces différences rendent l'apprentissage de la reconnaissance d'un objet par un ordinateur une tâche compliquée. Cette tâche de vision par ordinateur, connue sous le nom de détection d'objets, exige que les modèles de Vision IA identifient et localisent les objets avec précision, même lorsque leur taille, leur angle ou leurs conditions d'éclairage changent.
Pour rendre cela possible, la vision par ordinateur repose sur un processus appelé extraction de caractéristiques ou détection. Au lieu d'essayer de comprendre l'ensemble de l'image en une seule fois, un modèle recherche des caractéristiques d'image distinctives telles que des coins pointus, des motifs uniques ou des textures qui restent reconnaissables quels que soient les angles, les échelles et les conditions d'éclairage.
En particulier, c'est ce que le Scale Invariant Feature Transform, ou SIFT, a été conçu pour faire. SIFT est un algorithme de détection et de description de caractéristiques qui peut identifier de manière fiable les objets dans les images, quelle que soit la manière dont ils sont capturés.
Atteindre l'invariance d'échelle
L'algorithme SIFT possède quelques propriétés importantes qui le rendent utile pour la reconnaissance d'objets. L'une des propriétés clés est appelée invariance d'échelle. Cela signifie que SIFT peut reconnaître diverses parties d'un objet, qu'il apparaisse grand et proche de la caméra ou petit et éloigné. Même si l'objet n'est pas complètement visible, l'algorithme peut toujours identifier les mêmes points clés.
Il le fait en utilisant un concept appelé théorie de l’espace d’échelle. En termes simples, l’image est floutée à différents niveaux pour créer plusieurs versions. SIFT examine ensuite ces versions pour trouver des motifs et des détails qui restent les mêmes, quelles que soient les modifications de taille ou de netteté de l’image.
Par exemple, un panneau de signalisation photographié à quelques mètres de distance apparaîtra beaucoup plus grand que le même panneau capturé à distance, mais SIFT peut toujours détecter les mêmes caractéristiques distinctives. Cela permet de faire correspondre correctement les deux images, même si le panneau apparaît à des échelles très différentes.
Assurer l'invariance à la rotation
Les objets dans les images peuvent également apparaître pivotés, parfois même à l'envers. SIFT gère cela grâce à une propriété appelée invariance de rotation. Pour chaque point clé qu'il détecte, l'algorithme attribue une orientation cohérente basée sur les gradients d'image locaux. De cette façon, le même objet peut être reconnu quelle que soit sa rotation.
Vous pouvez considérer cela comme le marquage de chaque point clé avec une petite flèche indiquant sa direction. En alignant les caractéristiques sur ces orientations, SIFT garantit que les points clés correspondent correctement, même lorsque l'objet est pivoté. Par exemple, un point de repère capturé dans une photo de paysage peut toujours être identifié correctement, même si une autre photo de celui-ci est prise avec l'appareil photo incliné.
Résilience aux autres variations d'image
Au-delà de la taille et de la rotation, les images peuvent également changer d'autres manières, comme les changements d'éclairage. L'éclairage d'un objet peut passer de clair à sombre, l'angle de la caméra peut légèrement changer, ou l'image peut être floue ou bruitée.
SIFT est conçu pour gérer ces types de variations. Pour ce faire, il se concentre sur les points clés qui sont distinctifs et à contraste élevé, car ces caractéristiques sont moins affectées par les changements d'éclairage ou les petits décalages de point de vue. Par conséquent, SIFT a tendance à être plus fiable que les simples méthodes de détection des bords ou des coins, qui échouent souvent lorsque les conditions changent.
Fig. 1. Points clés SIFT extraits de (a) une image pluvieuse et (b) son image d'entrée propre correspondante. (Source)
Prenons l'exemple d'une peinture dans une galerie. Elle peut toujours être reconnue, qu'elle soit photographiée sous une lumière naturelle douce, sous des projecteurs artificiels lumineux, ou même avec un léger flou de mouvement provenant d'un appareil photo tenu à la main. Les points clés restent suffisamment stables pour une correspondance précise malgré ces différences.
Fonctionnement de l'algorithme SIFT (Scale-Invariant Feature Transform)
Ensuite, examinons le fonctionnement de l'algorithme SIFT. Ce processus peut être décomposé en quatre étapes principales : la détection des points clés, la localisation des points clés, l'attribution de l'orientation et la description des points clés.
Étape 1 : Détection des extrema dans l'espace d'échelle
La première étape consiste à trouver et à détecter les points clés, qui sont des points distinctifs dans l'image, tels que les coins ou les changements brusques de texture, qui aident à suivre ou à reconnaître un objet.
Pour s'assurer que ces points clés potentiels peuvent être reconnus à n'importe quelle taille, SIFT construit ce que l'on appelle un espace d'échelle. Il s'agit d'une collection d'images créées en floutant progressivement l'image originale avec un filtre gaussien, qui est une technique de lissage, et en regroupant les résultats en couches appelées octaves. Chaque octave contient la même image à des niveaux de flou croissants, tandis que l'octave suivante est une version plus petite de l'image.
En soustrayant une image floue d'une autre, SIFT calcule la différence de gaussiennes (DoG), qui met en évidence les zones où la luminosité change brusquement. Ces zones sont choisies comme points clés candidats, car elles restent cohérentes lorsque l'image est agrandie ou réduite.
Fig. 2. DoG met en évidence les structures clés en soustrayant des images floutées à différents niveaux. (Source)
Étape 2 : Localisation des points clés
Tous les points clés candidats ne sont pas utiles, car certains peuvent être faibles ou instables. Pour les affiner, SIFT utilise une méthode mathématique appelée développement en série de Taylor, qui permet d'estimer la position exacte d'un point clé avec une plus grande précision.
Au cours de cette étape, les points non fiables sont supprimés. Les points clés à faible contraste, qui se fondent dans leur environnement, sont écartés, ainsi que ceux qui se trouvent directement sur les bords, car ils peuvent se déplacer trop facilement. Cette étape de filtrage ne laisse derrière elle que les points clés les plus stables et les plus distinctifs.
Étape 3 : Attribution de l’orientation
Une fois que les points clés stables sont identifiés, SIFT les rend invariants à la rotation, ce qui signifie qu'ils peuvent toujours être mis en correspondance même si l'image est tournée sur le côté ou à l'envers. Pour ce faire, SIFT analyse la façon dont la luminosité change autour de chaque point clé, ce qui est connu sous le nom de gradient. Les gradients montrent à la fois la direction et la force du changement d'intensité des pixels, et ensemble, ils capturent la structure locale autour du point.
Pour chaque point clé, SIFT considère les gradients dans une région environnante et les regroupe dans un histogramme d'orientations. Le pic le plus élevé de cet histogramme indique la direction dominante du changement d'intensité, qui est ensuite attribuée comme orientation du point clé. Les directions du gradient, qui montrent où l'intensité change, et les amplitudes du gradient, qui indiquent la force de ce changement, sont utilisées pour construire cet histogramme.
S'il existe d'autres pics presque aussi forts, SIFT attribue plusieurs orientations au même point clé. Cela empêche la perte de caractéristiques importantes lorsque les objets apparaissent sous des angles inhabituels. En alignant chaque point clé avec son orientation, SIFT garantit que les descripteurs générés à l'étape suivante restent cohérents.
En d'autres termes, même si deux images du même objet sont pivotées différemment, les points clés alignés sur l'orientation correspondront toujours correctement. Cette étape est ce qui donne à SIFT sa forte capacité à gérer la rotation et le rend beaucoup plus robuste que les méthodes de détection de caractéristiques antérieures.
Fig 3. Un regard plus attentif à l'étape 3 de l'algorithme SIFT (Source)
Étape 4 : Descripteur de point clé
La dernière étape de SIFT consiste à créer une description de chaque point clé afin qu'il puisse être reconnu dans d'autres images.
SIFT y parvient en examinant un petit patch carré autour de chaque point clé, d'environ 16 pixels sur 16. Ce patch est d'abord aligné sur l'orientation du point clé afin que la rotation ne l'affecte pas. Le patch est ensuite divisé en une grille de 4 carrés plus petits sur 4.
Dans chaque petit carré, SIFT mesure la façon dont la luminosité change dans différentes directions. Ces changements sont stockés dans quelque chose appelé un histogramme, qui est comme un graphique montrant quelles directions sont les plus courantes. Chaque carré reçoit son propre histogramme, et ensemble, les 16 carrés produisent 16 histogrammes.
Enfin, ces histogrammes sont combinés en une seule liste de nombres, 128 au total. Cette liste est appelée vecteur de caractéristiques, et elle agit comme une empreinte digitale pour le point clé. Parce qu'elle capture la texture et la structure uniques autour du point, cette empreinte digitale permet de faire correspondre le même point clé à travers différentes images, même si elles sont redimensionnées, pivotées ou éclairées différemment.
Fig. 4. Aperçu du fonctionnement de SIFT (Source).
Principales applications de SIFT dans la vision par ordinateur
Maintenant que nous comprenons mieux ce qu'est SIFT et comment il fonctionne, explorons quelques-unes de ses applications concrètes dans la vision par ordinateur.
Reconnaissance et détection d'objets
L'une des principales utilisations de SIFT est la reconnaissance et la détection d'objets. Cela implique d'apprendre à un ordinateur à reconnaître et à localiser des objets dans des images, même lorsque les objets ne se présentent pas toujours de la même manière. Par exemple, SIFT peut détecter un livre, qu'il soit proche de la caméra, plus éloigné ou tourné selon un certain angle.
La raison pour laquelle cela fonctionne est que SIFT extrait des points clés très distinctifs et stables. Lorsque ces points clés sont associés à des descripteurs SIFT, ils forment des caractéristiques SIFT, qui fournissent un moyen fiable de faire correspondre le même objet à travers différentes images. Ces caractéristiques capturent des détails uniques de l'objet qui restent cohérents, permettant une correspondance fiable des caractéristiques à travers les images, même lorsque la taille, la position ou l'orientation de l'objet change.
Fig 5. Utilisation de SIFT pour reconnaître la couverture d'un livre dans une nouvelle image prise dans une orientation différente de l'original. Image par l'auteur.
Avant que l'apprentissage profond ne devienne populaire, SIFT était l'une des méthodes les plus fiables pour construire des systèmes de reconnaissance d'objets. Il était largement utilisé dans la recherche et les applications qui nécessitaient la mise en correspondance d'objets à travers de grands ensembles de données d'images, même s'il exigeait souvent des ressources informatiques importantes.
Assemblage d'images et création de panoramas
SIFT peut également être utilisé pour créer des images panoramiques, qui sont de larges photos réalisées en assemblant plusieurs images. En utilisant SIFT, des points clés distinctifs sont trouvés dans les parties qui se chevauchent de différentes images, puis mis en correspondance les uns avec les autres. Ces correspondances agissent comme des ancres, guidant le processus d'assemblage sur la façon dont les photos doivent être alignées.
Une fois la correspondance terminée, des algorithmes d'assemblage peuvent être utilisés pour calculer l'alignement correct, souvent en utilisant des transformations géométriques qui mappent une image sur une autre. Les images sont ensuite fusionnées de sorte que les joints disparaissent. Le résultat final est un panorama homogène qui ressemble à une seule photo large, même s'il a été créé à partir de plusieurs prises de vue.
Reconstruction 3D et robotique
Une autre application intéressante de SIFT est la reconstruction 3D, où plusieurs photos 2D prises sous différents angles sont combinées pour construire un modèle tridimensionnel. SIFT fonctionne en trouvant et en faisant correspondre les mêmes points sur ces images.
Une fois les correspondances établies, les positions 3D de ces points peuvent être estimées à l'aide de la triangulation, une méthode qui calcule la profondeur à partir de différents points de vue. Ce processus fait partie de la structure à partir du mouvement (SfM), une technique qui utilise plusieurs images se chevauchant pour estimer la forme 3D d'une scène ainsi que les positions des caméras qui ont pris les photos.
Le résultat est généralement un nuage de points 3D, une collection de points dans l'espace qui délimite l'objet ou l'environnement. SIFT a été l'un des premiers outils qui ont rendu la structure à partir du mouvement pratique. Bien que les techniques plus récentes soient plus rapides et plus courantes aujourd'hui, SIFT continue d'être appliqué lorsque la précision est plus importante que la vitesse.
SIFT a également été utilisé en robotique, en particulier dans le SLAM visuel (Simultaneous Localization and Mapping - Localisation et cartographie simultanées). Le SLAM permet à un robot de déterminer où il se trouve tout en construisant une carte de son environnement en même temps.
Les points clés SIFT agissent comme des points de repère fiables qu'un robot peut reconnaître d'une image à l'autre, même lorsque l'éclairage ou les angles changent. En suivant ces points de repère, le robot peut estimer sa position et mettre à jour sa carte à la volée. Bien que des détecteurs de caractéristiques plus rapides soient plus souvent utilisés en robotique aujourd'hui, SIFT a joué un rôle important dans les premiers systèmes SLAM et reste essentiel dans les cas où la robustesse est plus critique que la vitesse.
Avantages et considérations de SIFT
Bien que l'algorithme SIFT ait été largement utilisé dans la vision par ordinateur et soit connu pour être une méthode fiable, il présente également certains inconvénients. C'est pourquoi il est important de peser le pour et le contre avant de décider s'il convient à un projet. Ensuite, passons en revue ses principaux atouts et ses limites.
Principaux avantages de SIFT
Voici quelques avantages liés à l'utilisation de l'algorithme SIFT :
Invariance d'échelle et de rotation : SIFT fournit des points clés invariants d'échelle qui restent relativement stables lorsque les objets apparaissent à différentes tailles ou orientations, ce qui représente un progrès significatif par rapport aux détecteurs de caractéristiques antérieurs.
Robustesse modérée aux changements d'éclairage et de point de vue : SIFT peut gérer les changements de luminosité, de contraste ou les petits décalages de point de vue, bien qu'il soit moins fiable dans des conditions plus extrêmes.
Capacité à fonctionner dans des scènes encombrées ou partiellement cachées : Étant donné que SIFT détecte de nombreux points clés locaux, il peut souvent encore identifier un objet même si une partie de celui-ci est couverte ou si l'arrière-plan est complexe.
Considérations de performance et alternatives
Voici quelques inconvénients liés à l'utilisation de l'algorithme SIFT :
Coûteux en calcul : Le processus en plusieurs étapes et les descripteurs détaillés de SIFT le rendent plus lent et plus gourmand en ressources que les détecteurs de caractéristiques modernes. Pour améliorer cela, les chercheurs ont développé l'algorithme SURF (Speeded-Up Robust Features), qui utilise des calculs plus rapides pour trouver et décrire les caractéristiques. SURF est moins précis que SIFT dans certains cas, mais il s'exécute beaucoup plus rapidement, ce qui le rend plus pratique pour les tâches sensibles au facteur temps.
Pas idéal pour une utilisation en temps réel : En raison de son coût de calcul, SIFT a du mal lorsqu’il s’agit d’applications où la vitesse est essentielle, comme le suivi en temps réel ou la robotique mobile.
Polyvalence limitée : Bien que robuste dans de nombreux cas, SIFT est moins efficace en cas de changements extrêmes de luminosité, de changements de point de vue importants ou de scènes très dynamiques où les algorithmes plus récents ou les méthodes d'apprentissage automatique sont plus performants.
Lors de l'exploration des avantages et des inconvénients de SIFT, vous remarquerez peut-être que bon nombre de ses limitations ont ouvert la voie à des techniques plus avancées. Plus précisément, les réseaux neuronaux convolutifs (CNN) sont apparus comme une alternative puissante.
Un CNN est un type de modèle d'apprentissage profond inspiré par le fonctionnement du système visuel humain. Il traite une image en couches, en commençant par des motifs simples comme les bords et les textures, et en construisant progressivement des formes et des objets plus complexes. Contrairement aux règles de caractéristiques artisanales de SIFT, les CNN apprennent les représentations de caractéristiques directement à partir des données.
Cet apprentissage basé sur les données signifie que les CNN peuvent surpasser SIFT dans les tâches de correspondance de descripteurs et de classification. Les CNN sont également plus expressifs et robustes, s'adaptant mieux à la variabilité et à la complexité des données visuelles.
Par exemple, les modèles basés sur CNN ont obtenu des résultats révolutionnaires sur ImageNet, un ensemble de données de référence massif contenant des millions d'images étiquetées dans des milliers de catégories. Conçu pour tester la capacité des algorithmes à reconnaître et à classer des objets, ImageNet est capable de mettre en évidence l'écart entre les anciennes méthodes basées sur les caractéristiques et l'apprentissage profond.
Les CNN ont rapidement surpassé SIFT en apprenant des représentations beaucoup plus riches et plus flexibles, leur permettant de reconnaître des objets sous un éclairage changeant, à partir de différents points de vue, et même lorsqu'ils sont partiellement cachés, des scénarios où SIFT a souvent du mal.
Principaux points à retenir
L'algorithme SIFT (Scale Invariant Feature Transform) occupe une place importante dans l'histoire de la vision par ordinateur. Il a fourni un moyen fiable de détecter les caractéristiques, même dans des environnements changeants, et a influencé de nombreuses méthodes utilisées aujourd'hui.
Bien que les nouvelles techniques soient plus rapides et plus efficaces, SIFT a jeté les bases de ces dernières. SIFT montre où les progrès actuels de la vision par ordinateur ont commencé et souligne le chemin parcouru par les systèmes d'IA de pointe.