Explication détaillée des paramètres d'exécution de la ligne de commande yolov8

Préface

Organisez certains paramètres de ligne de commande couramment utilisés à partir des documents officiels yolov8, des documents officiels YOLOv8 Docs

Le format d'exécution unifié de la ligne de commande yolov8 est :

yolo TASK MODE ARGS

Il y a trois parties principales du transfert de paramètres :

  • TASK (facultatif) est l'un des [détecter, segmenter, classer]. S'il n'est pas transmis explicitement, YOLOv8 essaiera de deviner TASK à partir du type de modèle.
  • MODE (obligatoire) est l'un des [train, val, prédire, exporter]
  • ARGS (facultatif) est un nombre quelconque de paires arg=value personnalisées, telles que imgsz=320, remplaçant la valeur par défaut.

1. Paramètres de formation

Exemple de ligne de commande de formation :

# 从YAML中构建一个新模型,并从头开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# 从预先训练的*.pt模型开始训练
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# 从YAML中构建一个新的模型,将预训练的权重传递给它,并开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

Exemple de code python correspondant :

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # 从YAML中构建一个新模型
model = YOLO('yolov8n.pt')  #加载预训练的模型(推荐用于训练)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # 从YAML构建并传递权重

# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)

Certains des paramètres les plus couramment utilisés :

clé expliquer
modèle Le fichier model.yaml ou model.pt transmis est utilisé pour construire le réseau et l'initialiser. La différence est que si seul le fichier yaml est transmis, les paramètres seront initialisés de manière aléatoire.
données Fichier yaml de configuration de l'ensemble de données d'entraînement
époques Tours d'entraînement, par défaut 100
patience Le nombre de tours pour l'entraînement et l'observation à arrêt précoce est par défaut de 50. S'il n'y a pas d'amélioration de la précision en 50 tours, le modèle arrêtera directement l'entraînement.
lot Lot de formation, par défaut 16
images Taille de l'image d'entraînement, 640 par défaut
sauvegarder Enregistrez le processus d'entraînement et les poids d'entraînement, activés par défaut
période_de_sauvegarde Pendant le processus de formation, le modèle de formation est enregistré tous les x tours, la valeur par défaut est -1 (non activé)
cache S'il faut utiliser la RAM pour le chargement des données. La définition de True accélérera la formation, mais ce paramètre consomme beaucoup de mémoire et est généralement défini par les serveurs.
appareil Le périphérique sur lequel s'exécuter, c'est-à-dire cuda device =0 ou Device =0,1,2,3 ou device=cpu
ouvriers Le nombre de threads pour charger les données. Windows est généralement 4 et le serveur peut être plus grand. Ce paramètre sous Windows peut provoquer des erreurs de thread. Si vous constatez que des erreurs de thread sont signalées, vous pouvez essayer de réduire ce paramètre. Ce paramètre a la valeur par défaut 8, et la plupart d'entre elles doivent reduire.
projet Le nom du dossier du projet, par défaut, exécute
nom Utilisé pour enregistrer le nom du dossier de formation, exp par défaut, accumulé dans la séquence
existe_ok S'il faut écraser le dossier de sauvegarde existant, la valeur par défaut est False
pré-entraîné S'il faut charger des poids pré-entraînés, la valeur par défaut est Flase
optimiseur Sélection de l'optimiseur, SGD par défaut, facultatif [SGD, Adam, AdamW, RMSProP]
verbeux S'il faut imprimer une sortie détaillée
graine Graine aléatoire, utilisée pour reproduire le modèle, par défaut 0
déterministe Définir sur True pour garantir la reproductibilité des expériences
single_cls Entraînez les données multicatégories dans une seule catégorie et traitez toutes les données comme une seule catégorie pour l'entraînement. La valeur par défaut est Flase.
image_weights Utiliser la sélection d'images pondérées pour l'entraînement, la valeur par défaut est Flase
rectifier Utilisez l'apprentissage du rectangle, qui est identique à l'inférence du rectangle. La valeur par défaut est False.
cos_lr Utiliser la planification du taux d'apprentissage du cosinus, la valeur par défaut est Flase
close_mosaïque L'amélioration de la mosaïque est désactivée pour les x derniers tours, par défaut 10
CV Entraînement au point d'arrêt, la valeur par défaut est Flase
lr0 Taux d'apprentissage d'initialisation, par défaut 0,01
lrf Taux d'apprentissage final, par défaut 0,01
label_smoothing Paramètre de lissage des étiquettes, par défaut 0,0
abandonner Utiliser la régularisation d'abandon (classification uniquement pour la formation), par défaut 0,0

Paramètres d'augmentation des données :
Insérer la description de l'image ici

Pour plus de paramètres, se référer à : modes/train

2. Paramètres d'évaluation

Évaluez l’exemple de code de ligne de commande :

yolo detect val model=yolov8n.pt  #   val 官方模型
yolo detect val model=path/to/best.pt  # val 自己训练的模型

Code python correspondant :

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  #加载官方模型
model = YOLO('path/to/best.pt')  # 加载自己训练的模型

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # a list contains map50-95 of each category

Certains des paramètres les plus couramment utilisés :

clé expliquer
modèle Le chemin d'accès au fichier de modèle pt qui doit être évalué
données Fichier yaml d'ensemble de données qui doit être évalué
images Évaluer la taille de l'inférence d'image, par défaut 640
lot Évaluer les lots d'inférence, par défaut 16
save_json S'il faut enregistrer les résultats de l'évaluation en tant que sortie json, la valeur par défaut est False
save_hybride S'il faut enregistrer des versions mixtes d'étiquettes (étiquettes + prédictions supplémentaires)
conf Seuil de confiance de l'évaluation du modèle, par défaut 0,001
je te Seuil iou d'évaluation du modèle, par défaut 0,6
max_it Nombre maximum de cibles détectées dans une seule image, par défaut 300
moitié S'il faut utiliser l'inférence fp16, True par défaut
appareil Le périphérique sur lequel s'exécuter, c'est-à-dire cuda device =0 ou Device =0,1,2,3 ou device=cpu
merde 是否使用use OpenCV DNN for ONNX inference,默认Flase
rect 是否使用矩形推理,默认False
split 数据集分割用于验证,即val、 test、train,默认val

三、推理参数

推理命令行示例:

yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo detect predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model

对应python代码示例:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

# 目标检测后处理
boxes = results[0].boxes
boxes.xyxy  # box with xyxy format, (N, 4)
boxes.xywh  # box with xywh format, (N, 4)
boxes.xyxyn  # box with xyxy format but normalized, (N, 4)
boxes.xywhn  # box with xywh format but normalized, (N, 4)
boxes.conf  # confidence score, (N, 1)
boxes.cls  # cls, (N, 1)
boxes.data  # raw bboxes tensor, (N, 6) or boxes.boxes .

# 实例分割后处理
masks = results[0].masks  # Masks object
masks.segments  # bounding coordinates of masks, List[segment] * N
masks.data  # raw masks tensor, (N, H, W) or masks.masks 

# 目标分类后处理
results = model(inputs)
results[0].probs  # cls prob, (num_class, )

一些常用传参解释:

key 解释
source 跟之前的yolov5一致,可以输入图片路径,图片文件夹路径,视频路径
save 保存检测后输出的图像,默认False
conf 用于检测的对象置信阈值,默认0.25
iou 用于nms的IOU阈值,默认0.7
half FP16推理,默认False
device 要运行的设备,即cuda设备=0/1/2/3或设备=cpu
show 用于推理视频过程中展示推理结果,默认False
save_txt 是否把识别结果保存为txt,默认False
save_conf 保存带有置信度分数的结果 ,默认False
save_crop 保存带有结果的裁剪图像,默认False
hide_label 保存识别的图像时候是否隐藏label ,默认False
hide_conf 保存识别的图像时候是否隐藏置信度,默认False
vid_stride 视频检测中的跳帧帧数,默认1
classes 展示特定类别的,根据类过滤结果,即class=0,或class=[0,2,3]
line_thickness 目标框中的线条粗细大小 ,默认3
visualize 可视化模型特征 ,默认False
augment 是否使用数据增强,默认False
agnostic_nms 是否采用class-agnostic NMS,默认False
retina_masks 使用高分辨率分割掩码,默认False
max_det 单张图最大检测目标,默认300
box 在分割人物中展示box信息,默认True

yolov8支持各种输入源推理:
Insérer la description de l'image ici
对于图片还支持以下保存格式的输入图片:
Insérer la description de l'image ici
对于视频支持以下视频格式输入:
Insérer la description de l'image ici

返回的result结果解析:

  • Results.boxes: 目标检测返回的boxes信息
  • Results.masks: 返回的分割mask坐标信息
  • Results.probs: 分类输出的类概率
  • Results.orig_img: 原始图像
  • Results.path: 输入图像的路径

result可以使用如下方法在加载到cpu或者gpu设备中:

  • results = results.cuda()
  • results = results.cpu()
  • results = results.to(“cpu”)
  • results = results.numpy()

更多细节:modes/predict

四、模型导出

yolov8支持一键导出多种部署模型,支持如下格式的模型导出:
Insérer la description de l'image ici

命令行运行示例:

yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

python代码示例:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom trained

# Export the model
model.export(format='onnx')

一些常用参数解释:

key 解释
format 导出的格式,默认’torchscript’,可选如上支持的格式 onnx、engine、openvino等
imgsz 导出时固定的图片推理大小,为标量或(h, w)列表,即(640,480) ,默认640
keras 使用Keras导出TF SavedModel ,用于部署tensorflow模型,默认False
optimize 是否针对移动端对TorchScript进行优化
half fp16量化导出,默认False
int8 int8量化导出,默认False
dynamic 针对ONNX/TF/TensorRT:动态推理,默认False
simplify onnx simplify简化,默认False
opset onnx的Opset版本(可选,默认为最新)
workspace TensorRT:工作空间大小(GB),默认4
nms 导出CoreML,添加NMS

更多参考:modes/export

五、跟踪参数

yolov8目前支持:BoT-SORT、ByteTrack两种目标跟踪,默认使用BoT-SORT

命令行使用示例:

yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc"  # official detection model
yolo track model=yolov8n-seg.pt source=...   # official segmentation model
yolo track model=path/to/best.pt source=...  # custom model
yolo track model=path/to/best.pt  tracker="bytetrack.yaml" # bytetrack tracker

python代码使用示例:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official detection model
model = YOLO('yolov8n-seg.pt')  # load an official segmentation model
model = YOLO('path/to/best.pt')  # load a custom model

# Track with the model
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", show=True) 
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", show=True, tracker="bytetrack.yaml") 

Il prend en charge les modèles de détection et de segmentation, et il vous suffit de charger les poids correspondants.

Les paramètres transmis pour le suivi sont les mêmes que ceux utilisés pour l'inférence. Il existe trois paramètres principaux : conf, iou et show.

yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" conf=0.3, iou=0.5 show

# or

from ultralytics import YOLO

model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", conf=0.3, iou=0.5, show=True) 

Vous pouvez également personnaliser le fichier de configuration du suivi. Vous devez modifier le fichier yaml dans ultralytics/tracker/cfg et modifier la configuration dont vous avez besoin (sauf pour le type de tracker). La même méthode de fonctionnement :

yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" tracker='custom_tracker.yaml'

# or

from ultralytics import YOLO

model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", tracker='custom_tracker.yaml') 

6. Paramètres de test de référence

Le mode Benchmark est utilisé pour analyser la vitesse et la précision des différents formats d'exportation de YOLOv8. Les benchmarks fournissent des informations sur la taille du format d'exportation, sa métrique mAP50-95 (pour la détection et la segmentation d'objets) ou sa métrique de précision top5 (pour la classification), ainsi que sur les performances de différents formats d'exportation (tels que ONNX, OpenVINO, TensorRT). , etc.), temps d'inférence par image en millisecondes. Ces informations aident les utilisateurs à choisir le meilleur format d'exportation pour leurs cas d'utilisation spécifiques, en fonction de leurs besoins de rapidité et de précision.

Exemple de code de ligne de commande :

yolo benchmark model=yolov8n.pt imgsz=640 half=False device=0

Exemple de code python :

from ultralytics.yolo.utils.benchmarks import benchmark

# Benchmark
benchmark(model='yolov8n.pt', imgsz=640, half=False, device=0)

Quelques paramètres courants pour les tests de référence :

clé expliquer
modèle Chemin du fichier modèle, yoloV8v.pt, etc.
images Taille de l'image de référence, par défaut 640
moitié S'il faut activer fp16 pour les tests de référence, False par défaut
appareil Sur quels appareils sont testés cuda : device=0 ou device=0,1,2,3 ou device=cpu
échec_dur Arrêtez de continuer en cas d'erreur (bool) ou de seuil inférieur de valeur (float), par défaut False

Les benchmarks peuvent prendre en charge l'exécution de tests sur les formats exportés suivants :
Insérer la description de l'image ici
Plus de référence : modes/benchmark

7. Autres tâches

Référence de segmentation : segment

Référence de classification : classer

Je suppose que tu aimes

Origine blog.csdn.net/qq_39056987/article/details/129621354
conseillé
Classement