科技 > 人工智能 > 机器学习

yolov8命令行运行参数详解

48人参与 2024-08-01 机器学习

序言

整理来自yolov8官方文档常用的一些命令行参数,官方文档yolov8 docs

yolov8命令行的统一运行格式为:

yolo task mode args

其中主要是三部分传参:

一、训练参数

训练命令行示例:

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

对应python代码示例:

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)

一些比较常用的传参:

key解释
model传入的model.yaml文件或者model.pt文件,用于构建网络和初始化,不同点在于只传入yaml文件的话参数会随机初始化
data训练数据集的配置yaml文件
epochs训练轮次,默认100
patience早停训练观察的轮次,默认50,如果50轮没有精度提升,模型会直接停止训练
batch训练批次,默认16
imgsz训练图片大小,默认640
save保存训练过程和训练权重,默认开启
save_period训练过程中每x个轮次保存一次训练模型,默认-1(不开启)
cache是否采用ram进行数据载入,设置true会加快训练速度,但是这个参数非常吃内存,一般服务器才会设置
device要运行的设备,即cuda device =0或device =0,1,2,3或device = cpu
workers载入数据的线程数。windows一般为4,服务器可以大点,windows上这个参数可能会导致线程报错,发现有关线程报错,可以尝试减少这个参数,这个参数默认为8,大部分都是需要减少的
project项目文件夹的名,默认为runs
name用于保存训练文件夹名,默认exp,依次累加
exist_ok是否覆盖现有保存文件夹,默认flase
pretrained是否加载预训练权重,默认flase
optimizer优化器选择,默认sgd,可选[sgd、adam、adamw、rmsprop]
verbose是否打印详细输出
seed随机种子,用于复现模型,默认0
deterministic设置为true,保证实验的可复现性
single_cls将多类数据训练为单类,把所有数据当作单类训练,默认flase
image_weights使用加权图像选择进行训练,默认flase
rect使用矩形训练,和矩形推理同理,默认false
cos_lr使用余弦学习率调度,默认flase
close_mosaic最后x个轮次禁用马赛克增强,默认10
resume断点训练,默认flase
lr0初始化学习率,默认0.01
lrf最终学习率,默认0.01
label_smoothing标签平滑参数,默认0.0
dropout使用dropout正则化(仅对训练进行分类),默认0.0

数据增强参数:
在这里插入图片描述

更多参数参考:modes/train

二、评估参数

评估命令行代码示例:

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

对应的python代码:

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

一些比较常用的传参:

key解释
model需要评估的pt模型文件路径
data需要评估的数据集yaml文件
imgsz评估图片推理大小,默认640
batch评估推理批次,默认16
save_json是否保存评估结果为json输出,默认false
save_hybrid是否保存混合版本的标签(标签+额外的预测)
conf模型评估置信度阈值,默认0.001
iou模型评估iou阈值,默认0.6
max_det单张图最大检测目标数量,默认300
half是否使用fp16推理,默认true
device要运行的设备,即cuda device =0或device =0,1,2,3或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
halffp16推理,默认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支持各种输入源推理:
在这里插入图片描述
对于图片还支持以下保存格式的输入图片:
在这里插入图片描述
对于视频支持以下视频格式输入:
在这里插入图片描述

返回的result结果解析:

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

更多细节:modes/predict

四、模型导出

yolov8支持一键导出多种部署模型,支持如下格式的模型导出:
在这里插入图片描述

命令行运行示例:

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进行优化
halffp16量化导出,默认false
int8int8量化导出,默认false
dynamic针对onnx/tf/tensorrt:动态推理,默认false
simplifyonnx simplify简化,默认false
opsetonnx的opset版本(可选,默认为最新)
workspacetensorrt:工作空间大小(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") 

同时支持检测和分割模型,只需要加载相应权重即可。

跟踪的传参和推理时一样,主要有三个:conf、 iou、 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) 

也可以自定义修改跟踪配置文件,需要修改ultralytics/tracker/cfg中的yaml文件,修改你需要的配置(除了跟踪器类型),同样的运行方式:

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

六、基准测试参数

基准测试模式用于分析yolov8各种导出格式的速度和准确性。基准测试提供了关于导出格式的大小、其map50-95指标(用于对象检测和分割)或精度top5指标(用于分类)的信息,以及在各种导出格式(如onnx、openvino、tensorrt等)中,每张图像的推断时间(以毫秒为单位)。这些信息可以帮助用户根据他们对速度和准确性的需求,为他们的特定用例选择最佳的导出格式。

命令行代码示例:

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

python代码示例:

from ultralytics.yolo.utils.benchmarks import benchmark

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

一些基准测试常用参数:

key解释
model模型文件路径,yolov8v.pt等
imgsz基准测试图片大小,默认640
half基准测试是否开启fp16,默认false
device在哪些设备上测试cuda device=0 or device=0,1,2,3 or device=cpu
hard_fail在错误(bool)或val下限阈值(float)时停止继续,默认false

基准测试可以支持以下导出的格式上运行测试:
在这里插入图片描述
更多参考:modes/benchmark

七、其他任务

分割参考:segment

分类参考:classify

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

人工智能——机器学习——神经网络(深度学习)

08-01

手搓神经网络——矩阵求导

08-01

LSTM(长短期记忆神经网络)

08-01

深度学习(十一)——神经网络:线形层及其他层介绍

08-01

深度学习02-神经网络(MLP多层感知器)

08-01

GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用

08-01

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论