Skip to content

Ultralytics YOLOv5 L'architecture

YOLOv5 (v6.0/6.1) est un puissant algorithme de détection d'objets développé par Ultralytics. Cet article examine en profondeur l'architecture de YOLOv5 , les stratégies d'augmentation des données, les méthodologies d'entraînement et les techniques de calcul des pertes. Cette compréhension globale te permettra d'améliorer ton application pratique de la détection d'objets dans divers domaines, notamment la surveillance, les véhicules autonomes et la reconnaissance d'images.

1. Structure du modèle

YOLOv5L'architecture du site se compose de trois parties principales :

  • Dorsale: Il s'agit du corps principal du réseau. Pour YOLOv5, l'épine dorsale est conçue à l'aide de la fonction New CSP-Darknet53 une modification de l'architecture Darknet utilisée dans les versions précédentes.
  • Cou: Cette partie relie la colonne vertébrale et la tête. Sur YOLOv5, SPPF et New CSP-PAN sont utilisées.
  • Tête: Cette partie est responsable de la production du résultat final. YOLOv5 utilise la fonction YOLOv3 Head à cette fin.

La structure du modèle est représentée dans l'image ci-dessous. Les détails de la structure du modèle se trouvent dans yolov5l.yaml.

yolov5

YOLOv5 introduit quelques changements mineurs par rapport à ses prédécesseurs :

  1. Le Focus que l'on trouvait dans les versions précédentes, est remplacée par une structure 6x6 Conv2d structure. Ce changement renforce l'efficacité #4825.
  2. Le SPP est remplacée par SPPF. Cette modification fait plus que doubler la vitesse de traitement.

Pour tester la vitesse de SPP et SPPFLe code suivant peut être utilisé :

Exemple de profilage de vitesse SPP vs SPPF (cliquer pour ouvrir)
import time
import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool1 = nn.MaxPool2d(5, 1, padding=2)
        self.maxpool2 = nn.MaxPool2d(9, 1, padding=4)
        self.maxpool3 = nn.MaxPool2d(13, 1, padding=6)

    def forward(self, x):
        o1 = self.maxpool1(x)
        o2 = self.maxpool2(x)
        o3 = self.maxpool3(x)
        return torch.cat([x, o1, o2, o3], dim=1)


class SPPF(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    input_tensor = torch.rand(8, 32, 16, 16)
    spp = SPP()
    sppf = SPPF()
    output1 = spp(input_tensor)
    output2 = sppf(input_tensor)

    print(torch.equal(output1, output2))

    t_start = time.time()
    for _ in range(100):
        spp(input_tensor)
    print(f"SPP time: {time.time() - t_start}")

    t_start = time.time()
    for _ in range(100):
        sppf(input_tensor)
    print(f"SPPF time: {time.time() - t_start}")


if __name__ == '__main__':
    main()
résultat :
True
SPP time: 0.5373051166534424
SPPF time: 0.20780706405639648

2. Techniques d'augmentation des données

YOLOv5 utilise diverses techniques d'augmentation des données pour améliorer la capacité du modèle à se généraliser et à réduire la suradaptation. Ces techniques comprennent :

  • Augmentation de la mosaïque: Une technique de traitement d'image qui combine quatre images d'apprentissage en une seule de manière à encourager les modèles de détection d'objets à mieux gérer les différentes échelles et translations d'objets.

mosaïque

  • Augmentation par copier-coller: Une méthode innovante d'augmentation des données qui copie des patchs aléatoires d'une image et les colle sur une autre image choisie au hasard, générant ainsi un nouvel échantillon de formation.

copier-coller

  • Transformations affines aléatoires: Cela comprend la rotation, la mise à l'échelle, la translation et le cisaillement aléatoires des images.

random-affine

  • Augmentation MixUp: Une méthode qui crée des images composites en prenant une combinaison linéaire de deux images et de leurs étiquettes associées.

mélange

  • Albumentations: Une bibliothèque puissante pour l'augmentation des images qui prend en charge une grande variété de techniques d'augmentation.

  • Augmentation HSV: Modifications aléatoires de la teinte, de la saturation et de la valeur des images.

hsv

  • Retournement horizontal aléatoire: Une méthode d'augmentation qui retourne les images horizontalement de façon aléatoire.

retournement horizontal

3. Stratégies de formation

YOLOv5 applique plusieurs stratégies de formation sophistiquées pour améliorer les performances du modèle. Elles comprennent :

  • Formation multi-échelle: Les images d'entrée sont redimensionnées de façon aléatoire dans une fourchette de 0,5 à 1,5 fois leur taille d'origine au cours du processus d'apprentissage.
  • AutoAnchor: Cette stratégie optimise les boîtes d'ancrage préalables pour qu'elles correspondent aux caractéristiques statistiques des boîtes de vérité terrain de tes données personnalisées.
  • Programmation de l'échauffement et du cosinus LR: Une méthode pour ajuster le taux d'apprentissage afin d'améliorer les performances du modèle.
  • Moyenne mobile exponentielle (EMA) : Stratégie qui utilise la moyenne des paramètres sur les étapes passées pour stabiliser le processus de formation et réduire l'erreur de généralisation.
  • Entraînement à la précision mixte: Méthode permettant d'effectuer des opérations en demi-précision, ce qui permet de réduire l'utilisation de la mémoire et d'améliorer la vitesse de calcul.
  • Évolution des hyperparamètres: Une stratégie pour ajuster automatiquement les hyperparamètres afin d'obtenir des performances optimales.

4. Caractéristiques supplémentaires

4.1 Calculer les pertes

La perte sur YOLOv5 est calculée comme une combinaison de trois éléments de perte individuels :

  • Perte de classes (perte BCE): La perte d'entropie croisée binaire, mesure l'erreur pour la tâche de classification.
  • Perte d'objectivité (perte BCE): Une autre perte d'entropie croisée binaire, calcule l'erreur de détection de la présence ou non d'un objet dans une cellule particulière de la grille.
  • Perte de localisation (perte CIoU): La perte de CIoU complète, mesure l'erreur de localisation de l'objet à l'intérieur de la cellule de la grille.

La fonction de perte globale est représentée par :

perte

4.2 Pertes d'équilibre

Les pertes d'objectivité des trois couches de prédiction (P3, P4, P5) sont pondérés différemment. Les poids d'équilibre sont [4.0, 1.0, 0.4] respectivement. Cette approche permet de s'assurer que les prédictions à différentes échelles contribuent de manière appropriée à la perte totale.

obj_loss

4.3 Éliminer la sensibilité à la grille

L'architecture YOLOv5 apporte des changements importants à la stratégie de prédiction des boîtes par rapport aux versions précédentes de YOLO. Dans YOLOv2 et YOLOv3, les coordonnées des boîtes étaient directement prédites à l'aide de l'activation de la dernière couche.

b_x b_y b_w b_h

YOLOv5 calcul de la grille

Cependant, dans YOLOv5, la formule de prédiction des coordonnées de la boîte a été mise à jour pour réduire la sensibilité de la grille et empêcher le modèle de prédire des dimensions de boîte non bornées.

Les formules révisées pour calculer la boîte de délimitation prédite sont les suivantes :

bx par bw bh

Compare le décalage du point central avant et après la mise à l'échelle. La plage de décalage du point central est réglée de (0, 1) à (-0,5, 1,5). Par conséquent, le décalage peut facilement atteindre 0 ou 1.

YOLOv5 mise à l'échelle de la grille

Compare le rapport d'échelle de la hauteur et de la largeur (par rapport à l'ancre) avant et après l'ajustement. Les équations originales de la boîte yolo/darknet présentent un grave défaut. La largeur et la hauteur ne sont absolument pas limitées car elles sont simplement out=exp(in), ce qui est dangereux, car cela peut entraîner des gradients incontrôlés, des instabilités, des pertes NaN et finalement une perte totale de l'entraînement .

YOLOv5 échelle illimitée

4.4 Objectifs de construction

Le processus de construction de la cible dans YOLOv5 est essentiel pour l'efficacité de la formation et la précision du modèle. Il consiste à attribuer des cases de vérité terrain aux mailles appropriées de la carte de sortie et à les faire correspondre aux cases d'ancrage appropriées.

Ce processus suit les étapes suivantes :

  • Calcule le rapport entre les dimensions de la boîte de vérité terrain et les dimensions de chaque modèle d'ancrage.

rw

rh

rwmax

rhmax

rmax

correspondre

YOLOv5 Calcul de l'IoU

  • Si le rapport calculé est inférieur au seuil, fais correspondre la boîte de la vérité terrain avec l'ancre correspondante.

YOLOv5 chevauchement des grilles

  • Affecte l'ancre correspondante aux cellules appropriées, en gardant à l'esprit qu'en raison de la révision du décalage du point central, une case de vérité terrain peut être affectée à plus d'une ancre. Parce que la plage de décalage du point central est ajustée de (0, 1) à (-0,5, 1,5), la boîte GT peut être assignée à plus d'ancres. La boîte GT peut être assignée à plus d'ancres.

YOLOv5 sélection de l'ancre

De cette façon, le processus de construction des cibles garantit que chaque objet de la vérité terrain est correctement assigné et apparié pendant le processus de formation, ce qui permet à YOLOv5 d'apprendre plus efficacement la tâche de détection d'objets.

Conclusion

En conclusion, YOLOv5 représente une avancée significative dans le développement de modèles de détection d'objets en temps réel. En incorporant diverses nouvelles fonctions, améliorations et stratégies de formation, il surpasse les versions précédentes de la famille YOLO en termes de performance et d'efficacité.

Les principales améliorations apportées à YOLOv5 comprennent l'utilisation d'une architecture dynamique, une gamme étendue de techniques d'augmentation des données, des stratégies d'entraînement innovantes, ainsi que des ajustements importants au niveau des pertes de calcul et du processus de construction des cibles. Toutes ces innovations améliorent considérablement la précision et l'efficacité de la détection d'objets tout en conservant une grande rapidité, ce qui est la marque de fabrique des modèles YOLO .



Créé le 2023-11-12, Mis à jour le 2024-01-14
Auteurs : glenn-jocher (5), sergiuwaxmann (1)

Commentaires