web-dev-qa-db-fra.com

Comprendre les fichiers de configuration yolo.cfg de darknet

J'ai cherché sur Internet mais j'ai trouvé très peu d'informations à ce sujet, je ne comprends pas ce que chaque variable/valeur représente dans les fichiers .cfg De yolo. J'espérais donc que certains d'entre vous pourraient m'aider, je ne pense pas que je suis le seul à avoir ce problème, donc si quelqu'un connaît 2 ou 3 variables, veuillez les poster afin que les personnes qui ont besoin de telles informations à l'avenir puissent les trouver.

Les principaux que j'aimerais savoir sont:

  • lot
  • subdivisions

  • pourriture

  • élan

  • canaux

  • filtres

  • activation

16
Reda Drissi

Voici ma compréhension actuelle de certaines des variables. Pas nécessairement correct cependant:

[net]

  • lot: que de nombreuses images + étiquettes sont utilisées dans la passe avant pour calculer un gradient et mettre à jour les poids via la rétropropagation.
  • subdivisions: le lot est subdivisé en ce nombre de "blocs". Les images d'un bloc sont exécutées en parallèle sur le GPU.
  • désintégration: Peut-être un terme pour diminuer les poids pour éviter d'avoir de grandes valeurs. Pour des raisons de stabilité, je suppose.
  • canaux: mieux expliqué dans cette image:

Sur la gauche, nous avons un seul canal avec 4x4 pixels, la couche de réorganisation réduit la taille de moitié, puis crée 4 canaux avec des pixels adjacents dans différents canaux. figure

  • momentum: je suppose que le nouveau gradient est calculé par momentum * previous_gradient + (1 - momentum ) * gradient_of_current_batch . Rend le dégradé plus stable.
  • adam: utilise l'optimiseur adam? Ne fonctionne pas pour moi cependant
  • burn_in: Pour les x premiers lots, augmentez lentement le taux d'apprentissage jusqu'à sa valeur finale (votre learning_rate valeur du paramètre). Utilisez-le pour décider d'un taux d'apprentissage en surveillant jusqu'à quelle valeur la perte diminue (avant qu'elle ne commence à diverger).
  • policy = steps: utilisez les paramètres des étapes et des échelles ci-dessous pour ajuster le taux d'apprentissage pendant la formation
  • steps = 500,1000: Ajustez le taux d'apprentissage après 500 et 1000 lots
  • échelles = 0,1,0,2: après 500, multipliez le LR par 0,1, puis après 1000, multipliez à nouveau par 0,2
  • angle: augmenter l'image par rotation jusqu'à cet angle (en degrés)

couches

  • filtres: Combien de noyaux convolutionnels il y a dans une couche.
  • activation: fonction d'activation, relu, relu qui fuit, etc. Voir src/activations.h
  • stopbackward: Effectuez une rétropropagation jusqu'à ce calque uniquement. Placez-le dans la couche de convolution panultième avant la première couche yolo pour former uniquement les couches derrière cela, par exemple lors de l'utilisation de poids pré-entraînés.
  • aléatoire: mettez les couches yolo. S'il est défini sur 1, augmentez les données en redimensionnant les images à des tailles différentes tous les quelques lots. Utilisez pour généraliser la taille des objets.

Beaucoup de choses sont plus ou moins explicites (taille, foulée, batch_normalize, max_batches, largeur, hauteur). Si vous avez d'autres questions, n'hésitez pas à commenter.

Encore une fois, veuillez garder à l'esprit que je ne suis pas sûr à 100% de bon nombre d'entre elles.

22
FelEnd

lot le nombre d'images choisies dans chaque lot pour réduire les pertes

subdivisions division de la taille du lot en no. de sous-lots pour traitement parallèle

décroissance est un paramètre d'apprentissage et comme spécifié dans le journal, un élan de 0,9 et une décroissance de 0,0005 sont utilisés

momentum est un paramètre d'apprentissage et comme spécifié dans le journal, un momentum de 0,9 et une décroissance de 0,0005 sont utilisés

canaux Canaux fait référence à la taille de canal de l'image d'entrée (3) pour une image BGR

filtres le nombre de filtres utilisés pour un algorithme CNN

activation la fonction d'activation de CNN: principalement la fonction Leaky RELU est utilisée (ce que j'ai vu principalement dans les fichiers de configuration)

2
code-freeze

Bien qu'il s'agisse d'une demande d'aide assez ancienne, pour les futurs utilisateurs à la recherche d'une réponse, vous pouvez trouver toutes les explications sur la page Wiki à l'intérieur de la fourchette la plus célèbre du projet Yolo original https://github.com/AlexeyAB/darknet/wiki

En particulier, copier et coller uniquement la partie [net] de ici comme suit:

[net]

  • batch=1 - nombre d'échantillons (images, lettres, ...) qui seront précossés en un seul lot
  • subdivisions=1 - nombre de mini-lots dans un lot, taille mini_batch = batch/subdivisions, donc le GPU traite mini_batch échantillons à la fois, et les poids seront mis à jour pour batch échantillons (1 processus d'itération batch images)
  • width=416 - taille du réseau (largeur), donc chaque image sera redimensionnée à la taille du réseau pendant la formation et la détection
  • height=416 - taille du réseau (hauteur), donc chaque image sera redimensionnée à la taille du réseau pendant la formation et la détection
  • channels=3 - taille du réseau (canaux), donc chaque image sera convertie en ce nombre de canaux pendant la formation et la détection
  • inputs=256 - la taille du réseau (entrées) est utilisée pour les données non-image: lettres, prix, toutes les données personnalisées

Quoi qu'il en soit, vous devriez même essayer de chercher dans le relatif partie Github/issues quelque chose, même naïf, que vous voulez savoir, car généralement il a déjà été demandé et répondu.

Bonne chance.

1
l.fabbrini