Explicação detalhada dos parâmetros de execução da linha de comando yolov8

Prefácio

Organize alguns parâmetros de linha de comando comumente usados ​​​​em documentos oficiais yolov8, documentos oficiais YOLOv8 Docs

O formato de execução unificado da linha de comando yolov8 é:

yolo TASK MODE ARGS

Existem três partes principais na transferência de parâmetros:

  • TAREFA (opcional) é [detectar, segmentar, classificar]. Se não for passado explicitamente, YOLOv8 tentará adivinhar TASK a partir do tipo de modelo.
  • MODO (obrigatório) é um dos seguintes: [treinar, val, prever, exportar]
  • ARGS (opcional) é qualquer número de pares arg=valor personalizados, como imgsz=320, substituindo o valor padrão.

1. Parâmetros de treinamento

Exemplo de linha de comando de treinamento:

# 从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

Exemplo de código python correspondente:

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)

Alguns dos parâmetros mais comumente usados:

chave explicar
modelo O arquivo model.yaml ou arquivo model.pt passado é usado para construir a rede e inicializar. A diferença é que se apenas o arquivo yaml for passado, os parâmetros serão inicializados aleatoriamente.
dados Arquivo yaml de configuração do conjunto de dados de treinamento
épocas Rodadas de treinamento, padrão 100
paciência O número de rodadas para treinamento e observação de parada antecipada por padrão é 50. Se não houver melhoria na precisão em 50 rodadas, o modelo interromperá o treinamento diretamente.
lote Lote de treinamento, padrão 16
imagens Tamanho da imagem de treinamento, padrão 640
salvar Salve o processo de treinamento e os pesos de treinamento, habilitados por padrão
período_salvar Durante o processo de treinamento, o modelo de treinamento é salvo a cada x rodadas, o padrão é -1 (não habilitado)
esconderijo Se deve usar memória RAM para carregamento de dados. Definir True irá acelerar o treinamento, mas este parâmetro consome muita memória e geralmente é definido pelos servidores.
dispositivo O dispositivo para execução, ou seja, cuda device =0 ou Device =0,1,2,3 ou device=cpu
trabalhadores O número de threads para carregar dados. O Windows geralmente é 4 e o servidor pode ser maior. Este parâmetro no Windows pode causar erros de thread. Se você descobrir que erros de thread são relatados, você pode tentar reduzir esse parâmetro. Este parâmetro é padronizado como 8, e a maioria deles precisa ser reduzido.
projeto O nome da pasta do projeto, o padrão é execuções
nome Usado para salvar o nome da pasta de treinamento, exp padrão, acumulado em sequência
existe_ok Se deve substituir a pasta salva existente, o padrão é False
pré-treinado Se deseja carregar pesos pré-treinados, o padrão é Flase
otimizador Seleção de otimizador, SGD padrão, opcional [SGD, Adam, AdamW, RMSProP]
detalhado Se deve imprimir resultados detalhados
semente Semente aleatória, usada para reproduzir o modelo, padrão 0
determinístico Defina como True para garantir a reprodutibilidade dos experimentos
single_cls Treine dados de múltiplas categorias em uma única categoria e trate todos os dados como uma única categoria para treinamento. O padrão é Flase.
pesos_imagem Use seleção de imagem ponderada para treinamento, o padrão é Flase
correto Use treinamento de retângulo, que é o mesmo que inferência de retângulo. O padrão é Falso.
cos_lr Use agendamento de taxa de aprendizagem de cosseno, o padrão é Flase
fechar_mosaico O aprimoramento do mosaico está desativado nas últimas x rodadas, padrão 10
retomar Treinamento de breakpoint, o padrão é Flase
lr0 Taxa de aprendizado de inicialização, padrão 0,01
lrf Taxa de aprendizagem final, padrão 0,01
etiqueta_suavização Parâmetro de suavização de rótulo, padrão 0,0
cair fora Use regularização de abandono (classificação apenas para treinamento), padrão 0,0

Parâmetros de aumento de dados:
Insira a descrição da imagem aqui

Para mais parâmetros, consulte: modos/trem

2. Parâmetros de Avaliação

Avalie o exemplo de código da linha de comando:

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

Código python correspondente:

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

Alguns dos parâmetros mais comumente usados:

chave explicar
modelo O caminho para o arquivo do modelo pt que precisa ser avaliado
dados Arquivo yaml do conjunto de dados que precisa ser avaliado
imagens Avalie o tamanho da inferência da imagem, padrão 640
lote Avaliar lotes de inferência, padrão 16
salvar_json Se deseja salvar os resultados da avaliação como saída json, o padrão é False
salvar_híbrido Se deseja salvar versões mistas de rótulos (rótulos + previsões extras)
conf Limite de confiança de avaliação do modelo, padrão 0,001
você Limite de avaliação do modelo, padrão 0,6
max_it Número máximo de alvos detectados em uma única imagem, padrão 300
metade Se deve usar a inferência fp16, padrão True
dispositivo O dispositivo para execução, ou seja, cuda device =0 ou Device =0,1,2,3 ou device=cpu
dnn 是否使用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支持各种输入源推理:
Insira a descrição da imagem aqui
对于图片还支持以下保存格式的输入图片:
Insira a descrição da imagem aqui
对于视频支持以下视频格式输入:
Insira a descrição da imagem aqui

返回的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支持一键导出多种部署模型,支持如下格式的模型导出:
Insira a descrição da imagem aqui

命令行运行示例:

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") 

Ele suporta modelos de detecção e segmentação, e você só precisa carregar os pesos correspondentes.

Os parâmetros passados ​​para rastreamento são os mesmos usados ​​para inferência. Existem três parâmetros principais: conf, iou e 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) 

Você também pode personalizar e modificar o arquivo de configuração de rastreamento. Você precisa modificar o arquivo yaml em ultralytics/tracker/cfg e modificar a configuração necessária (exceto o tipo de rastreador). O mesmo método de operação:

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. Parâmetros de teste de referência

O modo Benchmark é usado para analisar a velocidade e a precisão dos vários formatos de exportação do YOLOv8. Os benchmarks fornecem informações sobre o tamanho do formato de exportação, sua métrica mAP50-95 (para detecção e segmentação de objetos) ou métrica top5 de precisão (para classificação), bem como sobre o desempenho de vários formatos de exportação (como ONNX, OpenVINO, TensorRT , etc.), tempo de inferência por imagem em milissegundos. Essas informações ajudam os usuários a escolher o melhor formato de exportação para seus casos de uso específicos, com base nas necessidades de velocidade e precisão.

Exemplo de código de linha de comando:

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

exemplo de código python:

from ultralytics.yolo.utils.benchmarks import benchmark

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

Alguns parâmetros comuns para testes de benchmark:

chave explicar
modelo Caminho do arquivo do modelo, yoloV8v.pt, etc.
imagens Tamanho da imagem de referência, padrão 640
metade Se deve ativar o fp16 para testes de benchmark, padrão False
dispositivo Em quais dispositivos são testados em cuda device=0 ou device=0,1,2,3 ou device=cpu
falha_dura Pare de continuar em caso de erro (bool) ou limite inferior do valor (float), padrão False

Os benchmarks podem suportar a execução de testes nos seguintes formatos exportados:
Insira a descrição da imagem aqui
Mais referências: modos/benchmark

7. Outras tarefas

Referência de segmentação: segmento

Referência de classificação: classificar

Acho que você gosta

Origin blog.csdn.net/qq_39056987/article/details/129621354
Recomendado
Clasificación