LoFTR : Comparaison des Stratégies de Correspondance Dual-Softmax (DS) et Transport Optimal (OT)

Introduction aux Stratégies de Correspondance de LoFTR

LoFTR (Detector-Free Local Feature Matching with Transformers) est un modèle novateur dans le domaine de la vision par ordinateur, conçu pour l'appariement de caractéristiques locales sans nécessiter de détecteurs traditionnels. En tirant parti de l'architecture Transformer, LoFTR établit des correspondances denses entre des paires d'images, se distinguant par ses performances dans divers contextes. Le modèle propose deux approches distinctes pour la correspondance : Dual-Softmax (DS) et Transport Optimal (OT). Cet article explore les différences fondamentales entre ces deux versions, leurs cas d'usage optimaux et leurs implications en termes de performance, afin d'aider à choisir la stratégie la plus adaptée à vos besoins.

Présentation Générale de LoFTR

LoFTR représente une avancée significative dans l'appariement de caractéristiques en éliminant le besoin de détecter explicitement les points d'intérêt. Au lieu de cela, il utilise un réseau Transformer pour directement inférer des corespondances fiables. Cette méthode a prouvé son efficacité dans des tâches telles que la reconstruction 3D, le SLAM (Simultaneous Localization and Mapping) et l'estimation de mouvement, tant en environnements intérieurs qu'extérieurs.

Différences Fondamentales entre les Versions DS et OT

1. Mécanismes de Correspondance

La distincsion primaire réside dans la manière dont chaque version établit les correspondances entre les caractéristiques.

  • Version DS (Dual-Softmax) :
    • S'appuie sur un mécanisme de double Softmax pour calculer la matrice de confiance des correspondances.
    • Configurée via MATCH_TYPE = 'dual_softmax' dans les fichiers de configuration (ex: configs/loftr/indoor/loftr_ds.py).
    • Son fonctionnement est simple et sa mise en œuvre est généralement plus rapide en termes de calcul.
    • La netteté des correspondances est influencée par un paramètre de température.
  • Version OT (Optimal Transport) :
    • Utilise un algorithme de Transport Optimal, souvent basé sur l'algorithme de Sinkhorn, pour l'affectation des correspondances.
    • Configurée via MATCH_TYPE = 'sinkhorn' (ex: configs/loftr/indoor/loftr_ot.py).
    • Capacité à gérer des contraintes de correspondance plus complexes, menant potentiellement à des appariements plus robustes.
    • Nécessite généralement des dépendances logicielles supplémentaires pour l'implémentation de l'algorithme de Transport Optimal.

2. Paramétrage des Configurations

Les fichiers de configuration de LoFTR mettent en évidence la principale divergence à travers le paramètre MATCH_COARSE.MATCH_TYPE :

# Configuration pour la version Dual-Softmax
cfg.LOFTR.MATCH_COARSE.MATCH_TYPE = 'dual_softmax'

# Configuration pour la version Optimal Transport
cfg.LOFTR.MATCH_COARSE.MATCH_TYPE = 'sinkhorn'

3. Implémentation du Code

L'implémentation diffère significativement, comme le montrent les extraits de code typiques de src/loftr/utils/coarse_matching.py :

Implémentation DS

La version Dual-Softmax calcule la matrice de confiance en normalisant la matrice de similarité dans les deux dimensions :

import torch.nn.functional as F
import torch

# ... (autres imports et définition de classe)

def calculer_confiance_ds(self, caracteristiques_1, caracteristiques_2):
    """
    Calcule la matrice de confiance des correspondances en utilisant Dual-Softmax.
    """
    # Calcul de la matrice de similarité brute des caractéristiques
    matrice_sim = torch.einsum("nlc,nsc->nls", caracteristiques_1, caracteristiques_2) / self.facteur_temperature

    # Application de la double Softmax pour obtenir la confiance
    confiance_source_vers_cible = F.softmax(matrice_sim, dim=1) # Normalisation sur l'axe des cibles
    confiance_cible_vers_source = F.softmax(matrice_sim, dim=2) # Normalisation sur l'axe des sources

    matrice_finale_confiance = confiance_source_vers_cible * confiance_cible_vers_source
    return matrice_finale_confiance

Implémentation OT

La version Optimal Transport utilise une approche itérative (type Sinkhorn) pour dériver une matrice d'affectation log-optimale :

import torch

# ... (autres imports et définition de classe)

def calculer_confiance_ot(self, descripteurs_A, descripteurs_B):
    """
    Calcule la matrice de confiance des correspondances via le Transport Optimal.
    """
    # Calcul de la matrice de similarité initiale
    matrice_similarite = torch.einsum("nlc,nsc->nls", descripteurs_A, descripteurs_B)

    # Dérivation de la matrice d'affectation logarithmique via un algorithme de Transport Optimal (ex: Sinkhorn)
    # Les paramètres comme 'cout_non_apparie' et 'iterations_sinkhorn' sont internes à l'implémentation OT.
    log_matrice_affectation = self.executer_transport_optimal_log(
        matrice_similarite, self.cout_non_apparie, self.iterations_sinkhorn_algo
    )

    # Conversion en matrice d'affectation réelle (exponentiation)
    matrice_affectation = log_matrice_affectation.exp()

    # Extraction de la matrice de confiance en excluant les scores des éléments non appariés (bordures)
    matrice_confiance_final = matrice_affectation[:, :-1, :-1]
    return matrice_confiance_final

Analyse des Caractéristiques de Performance

1. Efficacité Computationnelle

  • Version DS : Présente une complexité computationnelle moindre et un temps d'inférence plus rapide, ce qui la rend idéale pour les applications en temps réel ou avec des contraintes de latence.
  • Version OT : Nécessite des itérations pour optimiser le transport, entraînant un coût de calcul plus élevé et une vitesse d'inférence plus lente.

2. Précision des Correspondances

  • Version DS : Offre une bonne précision dans les scénarios standard avec des transformations géométriques modérées.
  • Version OT : Démontre un avantage en termes de robustesse et de précision face à des transformations géométriques complexes ou des scènes avec un bruit important.

3. Consommation de Mémoire

  • Version DS : Requiert une quantité de mémoire relativement faible, car elle ne stocke pas de matrices intermédiaires complexes pour l'optimisation.
  • Version OT : Peut avoir une empreinte mémoire plus importante en raison de la nécessité de stocker des matrices de transport supplémentaires pendant le processus d'optimisation.

Scénarios d'Application Concrets

LoFTR fournit des configurations optimisées pour différents types de scènes :

  • Correspondance en Scènes Intérieures :
    • DS : configs/loftr/indoor/loftr_ds.py
    • OT : configs/loftr/indoor/loftr_ot.py
  • Correspondance en Scènes Extérieures :
    • DS : configs/loftr/outdoor/loftr_ds.py
    • OT : configs/loftr/outdoor/loftr_ot.py

Configuration pour l'Entraînement et les Tests

Les scripts d'entraînement dans le répertoire scripts/reproduce_train/ utilisent des configurations distinctes pour chaque version :

  • Entraînement DS : main_cfg_path="configs/loftr/indoor/loftr_ds_dense.py"
  • Entraînement OT : main_cfg_path="configs/loftr/indoor/loftr_ot_dense.py"

De même, les phases de test nécessitent l'utilisation du fichier de configuration correspondant au modèle choisi (loftr_ds.py pour DS et loftr_ot.py pour OT).

Conseils pour le Déploiement et l'Utilisation

1. Prérequis Environnementaux

La version OT, s'appuyant sur des algorithmes comme ceux utilisés dans SuperGlue, peut nécessiter des composants spécifiques pour l'implémentation de son transport optimal. Assurez-vous que toutes les bibliothèques requises pour l'algorithme de Sinkhorn ou équivalent sont correctement installées dans votre environnement.

2. Guide de Sélection du Modèle

  • Pour les débutants ou le prototypage rapide : La version DS est recommandée pour sa simplicité de déploiement et sa rapidité d'exécution.
  • Pour les exigences de haute précision : La version OT est à privilégier, surtout dans les scénarios où les transformations géométriques sont complexes ou les conditions d'éclairage variables.
  • Pour les environnements à ressources limitées : La version DS sera plus adaptée en raison de ses moindres besoins en mémoire et en puissance de calcul.

3. Optimisation des Performances

Les deux versions offrent des paramètres ajustables pour affiner leurs performances :

  • Version DS : Le paramètre de température DSMAX_TEMPERATURE peut être modifié pour contrôler la "douceur" de la distribution Softmax.
  • Version OT : Le nombre d'itérations de Sinkhorn (SKH_ITERS) peut être ajusté pour équilibrer précision et coût de calcul.
  • Un seuil de confiance (THR) est souvent utilisé pour filtrer les correspondances de faible qualité dans les deux versions.

Étiquettes: LoFTR transformer Feature Matching Dual-Softmax Optimal Transport

Publié le 23 juin à 19h45