YOLOv9 : Apprentissage par Informations Gradient Programmables

Résumé

Nous abordons le problème de la perte d'informations dans les réseaux profonds via le concept d'Informations Gradient Programmables (PGI). Cette méthode génère des gradients fiables pour la mise à jour des poids en préservant les caractéristiques cruciales. Nous proposons également l'architecture GELAN, optimisée pour l'efficacité et la précision. Nos expériences sur COCO démontrent des gains significatifs en précision et efficaccité.

Introduction

Les architectures profondes modernes souffrent de la perte d'informations lors de la transformation des données, impactant la qualité de l'apprentissage. PGI résout ce problème en maintenant des gradients fiables même pour les modèles légers.

Architecture GELAN

GELAN combine une planification de chemin de gradient avec des opérateurs convolutionnels standards. Son design permet :

  • Une agrégation hiérarchique efficace
  • Un équilibre paramètres/précision
  • Une extensibilité aux divers blocs de calcul
# Exemple structure GELAN
class BlockConv(nn.Module):
    def __init__(self, entree, sortie):
        super().__init__()
        self.conv = nn.Conv2d(entree, sortie, 3, padding=1)
        self.activation = nn.SiLU()
    
    def forward(self, x):
        return self.activation(self.conv(x))

class GELAN(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.chemins = nn.ModuleList([BlockConv(cfg['in'], cfg['out']) for cfg in config])
    
    def forward(self, x):
        res = []
        for chemin in self.chemins:
            x = chemin(x)
            res.append(x)
        return torch.cat(res, dim=1)

PGI : Mécanisme Clé

PGI introduit trois composants interagissant pendant l'entraînement :

  1. Branche principale : Architecture finale d'inférence
  2. Branche réversible auxiliaire : Générateur de gradients fiables (retirée à l'inférence)
  3. Informations auxiliaires multi-niveaux : Supervision sémantique programmable

Structure PGI### Résultats Expérimentaux

Comparaison sur COCO :

Modèle AP (%) Paramètres (M)
YOLOv7 45.8 36.3
YOLOv9 (Ours) 48.2 28.7

L'analyse des cartes de caractéristiques montre une meilleure rétention d'informations avec GELAN (Figure 1).

Visualisation GELAN### Implémentation

L'intégration de PGI et GELAN suit schéma :

# Pseudo-code intégration
class YOLOv9(nn.Module):
    def __init__(self):
        super().__init__()
        self.backbone = GELAN(config_backbone)
        self.pgi_branch = PGIReversibleBranch()
        self.neck = PAN()
        self.head = DetectionHead()
    
    def forward(self, x, train=False):
        features = self.backbone(x)
        if train:
            grad_info = self.pgi_branch(x)
            return self.head(self.neck(features)), grad_info
        return self.head(self.neck(features))

Étiquettes: YOLOv9 PGI GELAN apprentissage profond détection d'objets

Publié le 28 septembre à 21h26