Hyperparamètres de la détection d'objet - Amazon SageMaker

Hyperparamètres de la détection d'objet

Dans la demande CreateTrainingJob, vous spécifiez l'algorithme d'entraînement que vous voulez utiliser. Vous pouvez également spécifier les hyperparamètres propres à l'algorithme qui sont utilisés pour vous aider à estimer les paramètres du modèle à partir d'un ensemble de données d'entraînement. Le tableau suivant répertorie les hyperparamètres fournis par Amazon SageMaker pour entraîner l'algorithme de détection d'objets. Pour plus d'informations sur le fonctionnement de l'entraînement d'objet, consultez Fonctionnement de la détection d'objet.

Nom du paramètre Description
num_classes

Nombre de classes de sortie. Ce paramètre définit les dimensions de la sortie du réseau et est généralement défini en fonction du nombre de classes dans le jeu de données.

Obligatoire

Valeurs valides : nombre entier positif

num_training_samples

Nombre d'exemples d'entraînement du jeu de données en entrée.

Note

En cas de différence entre cette valeur et le nombre d'échantillons de l'ensemble d'entraînement, le comportement du paramètre lr_scheduler_step n'est pas défini et la précision de l'entraînement distribué peut en être affectée.

Obligatoire

Valeurs valides : nombre entier positif

base_network

Architecture du réseau de base à utiliser.

Facultatif

Valeurs valides : « vgg-16 » ou « resnet-50 »

Valeur par défaut : « vgg-16 »

early_stopping

True pour utiliser une logique d'arrêt anticipé pendant l'entraînement. False pour ne pas l'utiliser.

Facultatif

Valeurs valides : True ou False

Valeur par défaut: False

early_stopping_min_epochs

Nombre minimum d'époques devant être exécutées avant de pouvoir invoquer une logique d'arrêt anticipé. Paramètre utilisé uniquement si early_stopping = True.

Facultatif

Valeurs valides : nombre entier positif

Valeur par défaut : 10

early_stopping_patience

Nombre de dates epoch à attendre avant la fin de l'entraînement si aucune amélioration, comme défini par l'hyperparamètre early_stopping_tolerance, n'est apportée à la métrique appropriée. Paramètre utilisé uniquement si early_stopping = True.

Facultatif

Valeurs valides : nombre entier positif

Valeur par défaut : 5

early_stopping_tolerance

La valeur de tolérance qu'apporte l'amélioration relative dans validation:mAP, (mAP), doit être dépassée pour éviter l'arrêt anticipé. Si le résultat de la division de l'amélioration de la précision mAP par la meilleure mAP est inférieur à la valeur early_stopping_tolerance définie, l'arrêt précoce considère qu'il n'y a eu aucune amélioration. Paramètre utilisé uniquement si early_stopping = True.

Facultatif

Valeurs valides : 0 ≤ valeur flottante ≤ 1

Valeur par défaut : 0.0

image_shape

Taille de l'image pour les images en entrée. Nous redimensionnons l'image d'entrée en une image carrée avec cette taille. Nous vous recommandons d'utiliser 300 et 512 afin d'améliorer les performances.

Facultatif

Valeurs valides : nombre entier positif ≥ 300

Par défaut: 300

epochs

Nombre de dates epoch d'entraînement.

Facultatif

Valeurs valides : nombre entier positif

Par défaut: 30

freeze_layer_pattern

Expression régulière (regex) pour bloquer les couches dans le réseau de base. Par exemple, si vous définissez freeze_layer_pattern = "^(conv1_|conv2_).*", toutes les couches avec un nom qui contient "conv1_" ou "conv2_" sont bloquées, ce qui signifie que les pondérations de ces couches ne sont pas mises à jour au cours de l'entraînement. Les noms de couche figurent dans les fichiers de symbole du réseau des fichiers vgg16-symbol.json et resnet-50-symbol.json. Le gel d'une couche signifie que ses pondérations ne peuvent plus être modifiées. Cela peut réduire considérablement le temps d'entraînement en échange de légères pertes de précision. Cette technique est couramment utilisée pour l'apprentissage par transfert où les couches inférieures dans le réseau de base n'ont pas besoin d'être réentraînées.

Facultatif

Valeurs valides : chaîne

Valeur par défaut : pas de couches bloquées.

kv_store

Mode de synchronisation de la mise à jour de pondération utilisé pour l'entraînement distribué. Les pondérations peuvent être mises à jour de manière synchrone ou asynchrone sur plusieurs machines. En général, les mises à jour synchrones offrent une meilleure précision que les mises à jour asynchrones, mais elles peuvent être plus lentes. Pour plus de détails, consultez le didacticiel MXNet sur l'Entraînement distribué.

Note

Ce paramètre n'est pas applicable à l'entraînement de machine unique.

Facultatif

Valeurs valides : 'dist_sync' ou 'dist_async'

  • 'dist_sync': les dégradés sont synchronisés après chaque lot avec tous les exécuteurs. Avec 'dist_sync', la taille de lot représente désormais la taille de lot utilisée sur chaque machine. Par conséquent, si vous disposez de n machines et que vous utilisez la taille de lot b, dist_sync se comporte comme une seule machine avec une taille de lot n*b.

  • 'dist_async': effectue des mises à jour asynchrones. Les poids sont mis à jour chaque fois que des dégradés sont reçus de n'importe quelle machine ; les mises à jour de poids sont atomiques. Toutefois, l'ordre n'est pas garanti.

Par défaut : -

label_width

Largeur de l'étiquette de remplissage de force utilisée pour la synchronisation sur les données d'entraînement et les données de validation. Par exemple, si une image des données contient au plus 10 objets et que chaque annotation d'objet est spécifiée avec 5 nombres, [class_id, left, top, width, height], label_width ne doit pas être inférieur à (10*5 + longueur des informations d'en-tête). La longueur des informations d'en-tête est généralement 2. Nous vous recommandons d'utiliser une valeur label_width légèrement plus élevée pour l'entraînement, telle que 60 dans cet exemple.

Facultatif

Valeurs valides : nombre entier positif assez grand pour accueillir la plus grande longueur d'informations d'annotation dans les données.

Par défaut: 350

learning_rate

Le taux d'apprentissage initial.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.001

lr_scheduler_factor

Ratio de réduction du taux d'apprentissage. Utilisation conjointe avec le paramètre lr_scheduler_step défini comme lr_new = lr_old * lr_scheduler_factor.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.1

lr_scheduler_step

Époques auxquelles le taux de formation est réduit. Le taux d'apprentissage est réduit de lr_scheduler_factor aux dates epoch répertoriées dans une chaîne séparée par des virgules : « epoch1, epoch2,... ». Par exemple, si la valeur est définie sur « 10, 20 » et que lr_scheduler_factor a la valeur 1/2, le taux d'apprentissage est réduit de moitié après la 10e date epoch, et à nouveau après la 20e date epoch.

Facultatif

Valeurs valides : chaîne

Par défaut : chaîne vide

mini_batch_size

Taille de lot pour l'entraînement. Dans un paramètre de machine unique à plusieurs GPU, chaque GPU gère mini_batch_size/num_gpu exemples d'entraînement. Pour l'entraînement à plusieurs machines en mode dist_sync, la taille de lot réelle est mini_batch_size * nombre de machines. Une taille mini_batch_size élevée conduit généralement à un entraînement plus rapide, mais elle peut entraîner un problème de mémoire insuffisante. L'utilisation de la mémoire est liée à l'architecture mini_batch_size, image_shape et base_network. Par exemple, sur une même instance p3.2xlarge, la plus grande valeur de mini_batch_size sans erreur de mémoire insuffisante est 32 avec base_network défini sur « resnet-50 » et image_shape sur 300. Avec la même instance, vous pouvez utiliser 64 comme mini_batch_size avec le réseau de base vgg-16 et image_shape ayant la valeur 300.

Facultatif

Valeurs valides : nombre entier positif

Par défaut: 32

momentum

Vitesse pour sgd. Ignoré pour les autres optimiseurs.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.9

nms_threshold

Seuil de suppression non maximal.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.45

optimizer

Types d'optimiseur. Pour plus d'informations sur les valeurs de l'optimiseur, consultez API MXNet.

Facultatif

Valeurs valides : ['sgd', 'adam', 'rmsprop', 'adadelta']

Valeur par défaut : « sgd »

overlap_threshold

Seuil de chevauchement de l'évaluation.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.5

use_pretrained_model

Indique s'il convient d'utiliser un modèle préentraîné pour l'entraînement. Lorsque cet indicateur est défini sur 1, le modèle préentraîné avec l'architecture correspondants est chargé et utilisé pour l'entraînement. Dans le cas contraire, le réseau est intégralement entraîné.

Facultatif

Valeurs valides : 0 ou 1

Par défaut: 1

weight_decay

Coefficient de dégradation de pondération pour sgd et rmsprop. Ignoré pour les autres optimiseurs.

Facultatif

Valeurs valides : nombre flottant de l'intervalle [0,1]

Par défaut: 0.0005