【YOLO模型】参数全面解读
使用YOLO模型时,需要调节各种参数,网络文章和官方文档有点不方便,整理了下面的内容备用:
获取最全最新的参数列表:
Ultralytics官方文档: 这是获取YOLOv11(以及YOLOv8等)最权威、最详细参数信息的地方。通常会有专门的页面介绍不同任务(如分割)的训练、验证和预测。
Ultralytics YOLO Docs for Segmentation:任务说明
Ultralytics YOLOv11 Models Page: models说明
命令行帮助: 在您的终端中,可以使用 yolo --help 或者针对特定任务和模式的帮助,例如 yolo task=classify mode=train --help,来查看所有可用的参数及其描述。也可以使用yolo segment train --help 或 yolo segment predict --help 查看特定任务。
GitHub仓库和教程: Roboflow等平台也提供了一些关于如何训练和使用YOLOv11进行实例分割的教程,其中会涉及到具体的参数配置。
1.YOLO目标检测模型
1.1 通用参数 (适用于多种模式):
task: 指定任务。对于目标检测,通常是 detect。在很多情况下,如果使用的是基础模型(如 yolo11n.pt),task=detect 可能是默认的,但显式指定更清晰。
示例: task=detect
mode: 指定操作模式。
train: 训练模型。
predict: 对新数据进行预测/推理。
val: 验证模型性能。
export: 将模型导出为不同格式。
示例: mode=train
model: 指定模型文件。
对于训练: 可以是模型配置文件 (.yaml,如 yolo11n.yaml 从头训练),也可以是预训练权重文件 (.pt,如 yolo11n.pt 进行微调)。
对于预测/验证: 通常是训练好的权重文件 (.pt)。
示例: model=yolo11s.pt
1.2 数据相关参数 (主要用于 train 和 val 模式):
data: 指定数据集的YAML配置文件路径(例如 coco128.yaml 或您自定义的 my_dataset.yaml)。此文件包含了训练集/验证集图像路径、类别数量和类别名称等信息。
示例: data=coco128.yaml
1.3 训练模式 (mode=train) 特定参数:
epochs: 训练的总轮数。
示例: epochs=100
batch: 每批训练的图像数量。设为 -1 可以启用自动批处理大小 (AutoBatch)。
示例: batch=16
imgsz: 输入图像的尺寸(通常是正方形,如 640)。
示例: imgsz=640
weights: (可选,通常model参数已指定)指定起始训练的权重路径。
cfg: (可选)如果从头开始训练且不依赖于预训练模型的结构,可以指定模型架构的YAML文件。
optimizer: 选择优化器,如 SGD, Adam, AdamW。
示例: optimizer=AdamW
lr0: 初始学习率。
lrf: 最终学习率 (初始学习率乘以该因子)。
momentum: SGD优化器的动量。
weight_decay: 优化器的权重衰减。
patience: 早停的轮数,即连续多少轮性能没有提升就停止训练。
示例: patience=20
workers: 数据加载时使用的工作线程数。
示例: workers=8
device: 指定运行设备,如 cpu, 0 (GPU 0), 0,1 (GPU 0 和 1)。
示例: device=0
resume: 从上一个检查点继续训练。可以设为 True 或具体的 .pt 文件路径。
示例: resume=True
超参数 (Hyperparameters): 如数据增强相关的 (hsv_h, degrees, translate, scale, fliplr, mosaic, mixup 等),损失函数各组分的权重 (box, cls, dfl 等)。这些通常可以通过单独的参数传入,或者通过一个超参数配置文件 (hyp.yaml) 指定。
1.4预测/推理模式 (mode=predict) 特定参数:
source: 指定输入源。可以是单个图像路径、视频文件路径、包含图像/视频的文件夹路径、网络摄像头ID (如 0)、YouTube URL或流媒体URL。
示例: source=‘path/to/image.jpg’ 或 source=0
conf: 置信度阈值,只有当检测结果的置信度高于此值时才会被认为是有效检测。
示例: conf=0.25
iou: 用于非极大值抑制 (NMS) 的IoU (Intersection over Union) 阈值。
示例: iou=0.45
max_det: 每张图像允许的最大检测数量。
示例: max_det=300
save: 是否保存带有检测结果的图像/视频。
示例: save=True
save_txt: 是否将检测结果(边界框坐标、类别、置信度)保存为 .txt 文本文件。
示例: save_txt=True
save_conf: (与 save_txt 配合使用)是否在保存的 .txt 文件中包含置信度分数。
save_crop: 是否保存裁剪出的检测对象图像。
show: 是否实时显示处理结果窗口。
示例: show=True
vid_stride: 处理视频时的帧采样间隔。
line_width 或 line_thickness: 绘制边界框线条的宽度。
五、导出模式 (mode=export) 特定参数:
format: 指定导出的模型格式,如 onnx, tensorrt, coreml, tflite, paddle, openvino 等。
示例: format=onnx
opset: (用于ONNX导出)指定ONNX的opset版本。
half: 是否导出为半精度 (FP16) 模型。
其他特定于格式的参数。
2.YOLO分割模型
2.1 任务和模式选择:
task=segment: 指定任务为分割。
mode: 指定当前操作模式,如:
train: 用于模型训练。
predict: 用于对新的图像或视频进行预测。
val: 用于模型验证。
export: 用于将模型导出为不同格式(如ONNX、TensorRT等)。
2.2 模型和数据相关参数:
model:在训练时,可以指定一个模型配置文件(如 yolo11n-seg.yaml)从头开始训练,或者指定一个预训练的 .pt 文件(如 yolo11n-seg.pt)进行微调。
在预测或验证时,指定训练好的模型权重文件(如 runs/train/exp/weights/best.pt 或直接用预训练模型如 yolo11l-seg.pt)。
data: (主要用于训练和验证) 指定数据集的配置文件路径(通常是一个 .yaml 文件),该文件定义了训练集、验证集的路径以及类别信息。例如 coco128-seg.yaml 或您自定义的数据集配置文件。
source: (主要用于预测) 指定输入源,可以是单个图像路径、包含图像的文件夹路径、视频文件路径、摄像头ID (如 0) 或在线图片/视频URL。
2.3 训练特定参数:
epochs: 训练的总轮数。
batch: 批处理大小。可以设置为具体的数值,或者 -1 以启用自动批处理大小(AutoBatch),这会根据GPU内存自动调整。
imgsz: 输入图像的尺寸。例如 640。
optimizer: 选择优化器,如 SGD, Adam, AdamW。
lr0: 初始学习率。
lrf: 最终学习率因子 (lr0 * lrf)。
momentum: 优化器动量(例如SGD)。
weight_decay: 优化器权重衰减。
patience: 早停的耐心值,即在多少个epoch内性能没有提升则停止训练。
workers: 数据加载时使用的工作线程数。
device: 指定运行设备,如 cpu、单个GPU 0 或多个GPU 0,1,2,3。
resume: 从上一个检查点继续训练,可以传入 True 或具体的权重文件路径。
超参数 (Hyperparameters): 通常存储在一个 hyp.yaml 文件中,或者作为命令行参数传递。这些参数控制着数据增强(如HSV色彩空间增强 hsv_h, hsv_s, hsv_v;几何变换 degrees, translate, scale, shear, perspective;翻转 flipud, fliplr;高级增强 mosaic, mixup)和损失函数权重等。
2.4 预测/推理特定参数:
conf: 置信度阈值,低于此阈值的检测结果将被忽略。例如 0.25。
iou: 用于非极大值抑制 (NMS) 的IoU (Intersection over Union) 阈值。
max_det: 每张图像允许的最大检测数量。
save: 是否保存带有结果的图像/视频。
save_txt: 是否将结果(边界框坐标、类别、掩码坐标等)保存为文本文件。
save_conf: 是否在保存的文本文件中包含置信度分数。
save_crop: 是否保存裁剪出的检测对象图像。
show: 是否在窗口中显示处理结果。
line_width 或 line_thickness: 绘制边界框和分割掩码线条的宽度。
retina_masks: 是否使用高分辨率的分割掩码。
3.YOLO分类模型
YOLO(You Only Look Once)系列模型,尤其是由Ultralytics维护和开发的版本(如YOLOv5、YOLOv8以及截至2025年5月可能出现的更新版本,如YOLOv9或未来版本),除了其著名的目标检测能力外,也支持图像分类任务。
用于YOLO分类模型的参数与目标检测或其他任务的参数在结构上有很多相似之处,主要通过命令行接口(CLI)或Python API进行配置。它们通常也共享一个统一的参数管理系统。
以下是YOLO进行图像分类任务时常用的一些参数类别和示例(以Ultralytics YOLO框架为例,这套参数体系在YOLOv5之后版本中具有良好的一致性):
3.1 通用/核心参数:
task: 指定当前执行的任务。对于图像分类,这个值通常是 classify (或者有时简写为 cls)。
示例: task=classify
mode: 指定操作模式。
train: 训练一个新的分类模型或微调一个预训练的分类模型。
predict: 使用训练好的分类模型对新的图像/视频进行分类预测。
val: 在验证集上评估分类模型的性能。
export: 将训练好的分类模型导出为不同格式(如ONNX, TensorRT, TensorFlow Lite等)。
示例: mode=train
model: 指定模型文件。
对于训练 (Training):
可以是一个模型配置文件 (.yaml),用于从头开始构建和训练模型(例如 yolov8n-cls.yaml)。
也可以是一个预训练的分类模型权重文件 (.pt),用于在其基础上进行微调(例如 yolov8n-cls.pt)。
对于预测/验证/导出 (Predict/Val/Export):
通常是一个已经训练好的分类模型权重文件 (.pt),例如训练过程中保存的最佳模型 best.pt。
示例: model=yolov8n-cls.pt (使用预训练的YOLOv8 Nano分类模型) 或 model=runs/classify/train/weights/best.pt (使用自己训练好的模型)
3.2 数据相关参数 (主要用于 train 和 val 模式):
data: 指定数据集的路径。对于分类任务,这通常是一个包含训练和验证图像的文件夹路径。Ultralytics的YOLO分类器支持标准的图像文件夹结构,其中每个子文件夹代表一个类别,子文件夹内存放该类别的图像。
例如,如果你的数据集结构如下:
dataset_folder/
├── train/
│ ├── class_A/
│ │ ├── img1.jpg
│ │ └── …
│ ├── class_B/
│ │ └── …
├── val/
│ ├── class_A/
│ │ └── …
│ ├── class_B/
│ │ └── …
那么 data 参数可以直接指向 dataset_folder。
示例: data=./path/to/your_classification_dataset_folder
有时也可能支持一个定义了训练、验证集路径的 data.yaml 文件,但直接指向数据集根目录更常见于分类。
3.3 训练模式 (mode=train) 特定参数:
epochs: 训练的总轮数。
示例: epochs=100
batch: 每批训练的图像数量。可以设为 -1 来启用自动批处理大小 (AutoBatch),它会根据GPU内存自动调整。
示例: batch=64 (分类任务通常可以使用比检测任务更大的批次大小)
imgsz: 输入图像的尺寸(通常是正方形,例如 224,这是很多分类模型的标准输入尺寸)。
示例: imgsz=224
optimizer: 选择优化器,如 AdamW, SGD, Adam。
示例: optimizer=AdamW
lr0: 初始学习率。
lrf: 最终学习率因子 (最终学习率 = lr0 * lrf)。
weight_decay: 优化器的权重衰减。
patience: 早停(Early Stopping)的轮数。如果在这么多轮内验证集性能没有提升,则停止训练。
示例: patience=20
dropout: 在分类器头部使用的dropout比率,用于防止过拟合。
示例: dropout=0.5
augment: 是否启用默认的数据增强策略 (boolean: True or False)。
fliplr: 水平翻转数据增强的概率 (0.0 到 1.0)。
hsv_h, hsv_s, hsv_v: HSV色彩空间数据增强的参数。
workers: 数据加载时使用的工作线程数。
示例: workers=8
device: 指定运行设备,如 cpu, 0 (GPU 0), 0,1 (GPU 0 和 1)。
示例: device=0
resume: 从上一个检查点继续训练。可以设为 True 或具体的 .pt 文件路径。
示例: resume=path/to/last.pt
project: 训练结果保存的项目文件夹名称。
示例: project=runs/classify
name: 当前训练任务的名称,会作为项目文件夹下的子文件夹名。
示例: name=exp
save_period: 每隔多少个epoch保存一次模型检查点。设为 -1 则只保存最后一个。
3.4 预测/推理模式 (mode=predict) 特定参数:
source: 指定输入源。可以是单个图像路径、包含图像的文件夹路径、视频文件路径、网络摄像头ID (如 0) 或网络URL。
示例: source=‘path/to/image.jpg’ 或 source=‘./my_images_folder/’
conf: 置信度阈值。对于分类任务,这通常不太直接使用,因为模型会输出每个类别的概率。但如果需要一个阈值来决定是否“足够自信”地做出某个分类,或者在多标签分类中可能会用到。通常,我们会看 top1 或 top5 的预测。
save: 是否保存带有预测结果的图像(如果适用,例如在图像上标注预测的类别)。
示例: save=True
save_txt: 是否将预测结果(例如,每个图像的预测类别和概率)保存为 .txt 文本文件。
示例: save_txt=True
show: 是否实时显示处理结果窗口(主要用于图像和视频)。
示例: show=True
3.5 验证模式 (mode=val) 特定参数:
通常与训练模式共享许多数据和模型参数。
plots: 是否在验证结束后生成并保存性能图表(如混淆矩阵)。
示例: plots=True
3.6 导出模式 (mode=export) 特定参数:
format: 指定导出的模型格式,如 onnx, torchscript, tflite, coreml, paddle, openvino 等。
示例: format=onnx
imgsz: 导出模型时期望的输入图像尺寸。
half: 是否导出为半精度 (FP16) 模型以优化速度和大小(如果目标平台支持)。
其他特定于格式的参数,例如 opset (用于ONNX)。
4.7 示例
from ultralytics import YOLO# 加载一个预训练的分类模型 (例如 YOLOv8n-cls)
# model = YOLO('yolov8n-cls.pt')# 或者加载一个从头开始的配置 (用于训练)
model = YOLO('yolov8n-cls.yaml') # 或者 model = YOLO('yolov8n-cls.pt') 来微调# 训练模型
# results_train = model.train(data='path/to/your_classification_dataset_folder', epochs=100, imgsz=224, batch=32, device='cuda:0')# 使用训练好的模型进行预测 (假设你已经训练并得到了 best.pt)
trained_model = YOLO('runs/classify/train/weights/best.pt') # 加载你的最佳模型
results_predict = trained_model.predict('path/to/your/image.jpg')# 处理预测结果
for r in results_predict:print(f"Image: {r.path}")print(f"Top-1 Probability: {r.probs.top1conf.item():.4f}") # 最高置信度print(f"Top-1 Class Index: {r.probs.top1}") # 最高置信度类别的索引print(f"Top-1 Class Name: {r.names[r.probs.top1]}") # 最高置信度类别的名称# r.show() # 显示带有预测结果的图像 (如果适用)# print(r.probs) # 打印所有类别的概率张量# 验证模型
# results_val = trained_model.val(data='path/to/your_classification_dataset_folder/val', imgsz=224, batch=32)
# print(results_val.metrics.top1acc) # Top-1 准确率
# print(results_val.confusion_matrix.matrix) # 混淆矩阵# 导出模型
# trained_model.export(format='onnx', imgsz=224)
4.YOLO姿态估计模型
4.1 通用/核心参数:
task: 指定当前执行的任务。对于姿态估计,这个值通常是 pose。
示例: task=pose
mode: 指定操作模式。
train: 训练一个新的姿态估计模型或微调一个预训练模型。
predict: 使用训练好的姿态估计模型对新的图像/视频进行预测。
val: 在验证集上评估姿态估计模型的性能。
export: 将训练好的姿态估计模型导出为不同格式。
示例: mode=train
model: 指定模型文件。
对于训练 (Training):
可以是一个模型配置文件 (.yaml),用于从头开始构建和训练模型(例如 yolov8n-pose.yaml)。
也可以是一个预训练的姿态估计模型权重文件 (.pt),用于在其基础上进行微调(例如 yolov8n-pose.pt)。
对于预测/验证/导出 (Predict/Val/Export):
通常是一个已经训练好的姿态估计模型权重文件 (.pt),例如训练过程中保存的最佳模型 best.pt。
示例: model=yolov8n-pose.pt (使用预训练的YOLOv8 Nano姿态估计模型)
4.2 数据相关参数 (主要用于 train 和 val 模式):
data: 指定数据集的YAML配置文件路径。对于姿态估计,这个YAML文件至关重要,它不仅定义了训练集/验证集的图像路径,还定义了关键点的数量、骨骼连接信息、类别信息(通常是“person”)等。
示例: data=coco8-pose.yaml (一个小型示例数据集) 或 data=custom_pose_dataset.yaml (您自定义的数据集配置文件)。
YAML文件中通常包含:
path: 数据集根目录。
train: 训练图像文件夹或文本文件路径。
val: 验证图像文件夹或文本文件路径。
nc: 类别数量 (对于人体姿态估计,通常为1,即 “person”)。
names: 类别名称列表。
kpt_shape: 关键点的形状,例如 [17, 3] 表示17个关键点,每个关键点有x, y坐标和可见性/置信度标志;或者 [17, 2] 如果不预测可见性。
flip_idx: 在进行水平翻转数据增强时,需要交换的关键点索引对(例如左肩和右肩)。
skeleton: (可选,用于可视化)定义关键点之间的连接关系以绘制骨骼。
4.3 训练模式 (mode=train) 特定参数:
epochs: 训练的总轮数。
示例: epochs=300
batch: 每批训练的图像数量。设为 -1 可以启用自动批处理大小 (AutoBatch)。
示例: batch=16
imgsz: 输入图像的尺寸(例如 640)。
示例: imgsz=640
optimizer: 选择优化器,如 SGD, Adam, AdamW。
示例: optimizer=AdamW
lr0: 初始学习率。
lrf: 最终学习率因子。
patience: 早停的轮数。
示例: patience=50
hyp: 指定超参数配置文件的路径 (通常是一个 hyp.yaml 文件)。这里面会包含更详细的训练超参数,如:
数据增强参数 (旋转 degrees, 平移 translate, 缩放 scale, 裁剪 shear, HSV增强 hsv_h, hsv_s, hsv_v, 水平翻转 fliplr, Mosaic mosaic 等)。
损失函数各项的权重增益 (例如 box_loss_gain, cls_loss_gain, pose_loss_gain (关键点回归损失), kobj_loss_gain (关键点可见性/目标性损失))。
workers: 数据加载时使用的工作线程数。
device: 指定运行设备 (cpu, 0, 0,1, etc.)。
resume: 从上一个检查点继续训练。
project: 训练结果保存的项目文件夹名称。
name: 当前训练任务的名称。
4.4 预测/推理模式 (mode=predict) 特定参数:
source: 指定输入源 (单个图像、视频、文件夹、摄像头ID、URL)。
示例: source=‘path/to/image.jpg’
conf: 目标检测(人体框)的置信度阈值。
示例: conf=0.25
iou: 用于人体框NMS的IoU阈值。
示例: iou=0.7
save: 是否保存带有预测结果的图像/视频。
示例: save=True
save_txt: 是否将预测结果(边界框、关键点坐标和置信度)保存为 .txt 文件。
save_crop: 是否保存裁剪出的人体框图像。
show: 是否实时显示处理结果窗口。
示例: show=True
hide_labels: 是否隐藏类别标签。
hide_conf: 是否隐藏置信度分数。
hide_boxes: 是否隐藏边界框(只显示骨骼)。
line_thickness: 绘制边界框和骨骼线条的宽度。
示例: line_thickness=2
kpt_line_color: (可能通过更通用的绘图设置调整) 绘制骨骼线条的颜色。
kpt_radius: (可能通过更通用的绘图设置调整) 绘制关键点圆圈的半径。
4.5 验证模式 (mode=val) 特定参数:
通常与训练模式共享许多数据和模型参数。
plots: 是否在验证结束后生成并保存性能图表(例如mAP曲线,OKS相关的指标图)。
示例: plots=True
评估指标通常包括目标检测的mAP和针对关键点的OKS (Object Keypoint Similarity) mAP。
4.6 导出模式 (mode=export) 特定参数:
format: 指定导出的模型格式 (onnx, tensorrt, tflite, coreml, etc.)。
示例: format=onnx
imgsz: 导出模型时期望的输入图像尺寸。
half: 是否导出为半精度 (FP16) 模型。
kpt_shape: (可能需要指定或从模型中读取) 确保导出模型知道关键点的数量。
4.7 示例
from ultralytics import YOLO# 加载一个预训练的姿态估计模型 (例如 YOLOv8n-pose)
model = YOLO('yolov8n-pose.pt')# 或者加载一个从头开始的配置 (用于训练)
# model_to_train = YOLO('yolov8n-pose.yaml') # 或者 model_to_train = YOLO('yolov8n-pose.pt') 来微调# 训练模型
# results_train = model_to_train.train(data='path/to/your_pose_dataset.yaml', epochs=100, imgsz=640, batch=16, device='cuda:0')# 使用训练好的模型进行预测 (假设你已经训练并得到了 best.pt)
# trained_model = YOLO('runs/pose/train/weights/best.pt') # 加载你的最佳模型
results_predict = model.predict('path/to/your_image.jpg', save=True)# 处理预测结果
for r in results_predict:print(f"Image: {r.path}")if r.keypoints is not None:print(f"Detected {len(r.keypoints.xy)} person(s)")# r.keypoints.xy # 归一化 x,y 坐标 (0-1)# r.keypoints.xyn # 像素 x,y 坐标# r.keypoints.conf # 每个关键点的置信度# r.keypoints.shape # 关键点形状 (e.g., [num_instances, num_keypoints, 2] for xy or [num_instances, num_keypoints, 3] for xyv)r.show() # 显示带有预测结果的图像 (会绘制边界框和骨骼)# 验证模型
# results_val = trained_model.val(data='path/to/your_pose_dataset.yaml', imgsz=640, batch=16)
# print(results_val.box.map) # 边界框的 mAP
# print(results_val.pose.map) # 关键点/姿态的 OKS mAP# 导出模型
# model.export(format='onnx', imgsz=640)
5.YOLO旋转检测模型
5.1 通用/核心参数 (General / Core Parameters):
task: 指定当前执行的任务。对于OBB检测,这个值是 obb。
示例: task=obb
mode: 定义操作模式。
train: 训练新的OBB模型或微调预训练模型。
predict: 对新的图像/视频进行OBB预测。
val: 在验证集上评估OBB模型的性能。
export: 将训练好的OBB模型导出为不同的部署格式。
示例: mode=train
model: 指定模型文件。
训练时: 可以是模型配置文件 (.yaml,例如 yolov8n-obb.yaml) 用于从头构建,或者是预训练的OBB模型权重文件 (.pt,例如 yolov8n-obb.pt) 用于微调。
预测/验证/导出时: 通常是已训练好的OBB模型权重文件 (.pt),例如 runs/obb/train_experiment_name/weights/best.pt。
示例: model=yolov8s-obb.pt
5.2 数据相关参数 (主要用于 train 和 val 模式):
data: 指定数据集的YAML配置文件路径 (例如 dota_v1.0_8_obb.yaml 或您自定义的 my_custom_obb_dataset.yaml)。这个YAML文件对OBB任务至关重要,它定义了:
训练集和验证集图像的路径。
类别数量 (nc)。
类别名称 (names)。
OBB标注的格式(例如,角度是以度还是弧度为单位,是 xywha 中心点宽高角格式还是四个角点坐标格式)。
示例: data=dota8.yaml (DOTA数据集的一个小型版本,用于快速测试)
5.3 训练模式 (mode=train) 特定参数:
epochs: 训练的总轮数。
示例: epochs=300
batch: 训练时的批处理大小。设为 -1 可以启用自动批处理大小 (AutoBatch)。
示例: batch=16
imgsz: 输入图像的尺寸 (例如 640, 1024)。图像会被缩放到这个尺寸。
示例: imgsz=1024
optimizer: 选择优化器 (例如 SGD, Adam, AdamW)。
示例: optimizer=AdamW
lr0: 初始学习率。
lrf: 最终学习率因子 (最终学习率 = lr0 * lrf)。
weight_decay: 优化器的权重衰减。
patience: 早停的轮数,即连续多少轮性能没有提升就停止训练。
示例: patience=50
hyp: 指定超参数配置文件的路径 (通常是一个 hyp.yaml 文件)。此文件包含更详细的设置,例如:
数据增强参数 (包括能够正确处理OBB的旋转增强)。
损失函数各组成部分的权重增益 (例如 box_loss_gain, cls_loss_gain, dfl_loss_gain,以及可能针对角度预测的 angle_loss_gain 或类似项)。
workers: 数据加载时使用的工作线程数。
device: 指定运行设备 (例如 cpu, 0 代表GPU 0, 0,1 代表多GPU)。
resume: 从上一个检查点继续训练 (例如 True 或指定 .pt 文件路径)。
project: 保存训练结果的项目目录。
示例: project=runs/obb_training
name: 当前训练任务的特定名称 (在 project 目录下的子目录名)。
示例: name=dota_experiment1
5.4 预测/推理模式 (mode=predict) 特定参数:
source: 输入源 (单个图像路径、视频路径、包含图像的文件夹、URL、摄像头ID)。
示例: source=‘path/to/aerial_image.tif’
conf: OBB检测结果的置信度阈值。
示例: conf=0.25
iou: 用于非极大值抑制 (NMS) 的IoU (Intersection over Union) 阈值。对于OBB,这里会使用旋转IoU进行计算。
示例: iou=0.45
max_det: 每张图像允许的最大OBB检测数量。
示例: max_det=1000
save: 是否保存在其上绘制了OBB结果的图像/视频。
示例: save=True
save_txt: 是否将OBB检测结果 (通常是类别、中心点x、中心点y、宽度、高度、角度) 保存到 .txt 文件。
save_conf: 是否在 save_txt 输出中包含置信度分数。
show: 如果在桌面环境运行,是否在窗口中显示结果。
hide_labels: 是否在输出中隐藏类别标签。
hide_conf: 是否在输出中隐藏置信度分数。
line_thickness: OBB边框线的宽度。
5.5 验证模式 (mode=val) 特定参数:
许多参数与 train 模式共享 (如 data, imgsz, batch, device)。
plots: 是否生成并保存在验证结束后的性能图表 (例如,使用旋转IoU计算的mAP曲线)。
示例: plots=True
评估指标将基于旋转IoU。
5.6 导出模式 (mode=export) 特定参数:
format: 指定部署的目标格式 (例如 onnx, engine 用于TensorRT, tflite, coreml)。
示例: format=onnx
imgsz: 导出模型时使用的图像尺寸。
half: 如果目标格式和硬件支持,是否导出为FP16半精度模型。
opset: (针对ONNX) ONNX算子集版本。
注意:由于旋转框或角度预测可能涉及自定义操作,OBB模型的导出兼容性在不同格式之间可能比标准检测模型更需要注意。
相关文章:
【YOLO模型】参数全面解读
使用YOLO模型时,需要调节各种参数,网络文章和官方文档有点不方便,整理了下面的内容备用: 获取最全最新的参数列表: Ultralytics官方文档: 这是获取YOLOv11(以及YOLOv8等)最权威、最详细参数信息的地方。通…...
跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑
导言:打破价格魔咒的销量奇迹 2024年Q3亚马逊平台上演商业悖论:在TOP5000卖家中,12%实施5%-15%温和提价的商户,41%实现单量30.4%的季度增长。这一现象颠覆"低价即流量"的电商铁律,揭开新消费时代"价值定…...
Kafka、RabbitMQ、RocketMQ的区别
以下是 RabbitMQ、RocketMQ、Kafka 的核心区别对比: 一、架构设计差异 Kafka 基于分布式日志的发布-订阅模型,通过分区(Partition)实现水平扩展,依赖 ZooKeeper 管理集群消费者通过消费者组(Consumer G…...
win10 局域网内聊天
在 Windows 10 的局域网 中,如果你想实现 多个用户之间的聊天功能,可以选择以下几种方案,取决于你需要的是: • ✅ 命令行纯文字聊天(如 Linux talk) • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...
【前端三剑客】Ajax技术实现前端开发
目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…...
论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
摘要:检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要,但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征,难以捕捉函数的执行语义。对此,TREX 提出了一种基于迁移学习的框架…...
数据压缩的概念和优缺点
一、数据压缩的概念 数据压缩是通过特定算法(压缩算法)对数据进行重新编码,以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息(或允许一定程度信息损失)的前提下,降低数据量,…...
spaCy基础入门
spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库,专门为实际工程应用设计,提供: • 分词(Tokenization) • 词性标注(POS Tagging) • 命名实体识别(NER) •…...
vue3项目创建-配置-elementPlus导入-路由自动导入
目录 方法一:create-vue 方法二 :Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器:vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...
2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程
2025年的电脑能装win7吗?2025年的电脑可以安装Win7,但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器,需要特定的条件和步骤才能安装win7,并且只能采用独立显卡,因为没有集成显卡驱动。另外注意目前2025年…...
windowsC++操作ADB
文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...
Springboot实现重试机制
背景 研发工作中时常遇到要和其他服务对接,依赖对方能力的情况,最恶心的是对方提供的服务不稳定,时灵时不灵的,进而影响到自己功能的稳定性。万一发生了这种事,做为研发,咱该怎么办?通过容错直接…...
CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析
目录 1. 什么是 PsExec? 2. 什么是 Telnet? 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...
第二十三天打卡
作业: 整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...
aardio - 将文本生成CSS格式显示
import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...
【漫话机器学习系列】256.用 k-NN 填补缺失值
用 k-NN 填补缺失值:原理、实现与应用 在实际的数据科学项目中,我们经常会遇到数据缺失(Missing Values)的问题。缺失值如果处理不当,不仅会影响模型训练,还可能导致最终结果偏差。 今天,我们…...
tomcat与nginx之间实现多级代理
准备工作 准备5台虚拟主机;至少准备3台虚拟主机; 设备1作为代理服务器;设备2与设备4作为处理静态资源请求服务器(使用nginx);设备3与设备5作为处理动态资源服务器(使用tomcat) 设…...
商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究
摘要:随着商业航天领域的迅速发展,运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战,包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时,通过案例研究展示…...
[Java实战]Spring Boot 3 整合 Ehcache 3(十九)
[Java实战]Spring Boot 3 整合 Ehcache 3(十九) 引言 在微服务和高并发场景下,缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架,其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...
【Flask全栈开发指南】从零构建企业级Web应用
目录 🌟 前言🏗️ 技术背景与价值🚧 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...
使用docker安装clickhouse集群
1、简介 clickhouse 作为大数据场景中,实现快速检索的常用列式存储数据库,采用物理机部署,会在数据量大的场景中,物理机器存储达到阈值需要扩容,会带来比较大的问题,因此,使用docker部署clickho…...
佰力博科技准静态d33测试的注意事项
准静态d33测试是测量压电材料纵向压电应变常数的重要方法,其注意事项包括以下几个方面: 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪,如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...
iOS设备投屏Archlinux
我的iphone手机屏太小,我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3,开源。原来只支持 AirPlay Mirror 协议,现在新增 支持来自 AirPlay 的纯音频 (Apple Los…...
VUE_UI组件的二次封装
属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...
算法·KMP
KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1,不在匹配失败时重新开始遍历子串 s 2 s_2 s2,实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义:一是匹配失败后,子串 s 2 s_2 s2应该回退的位置,一种…...
如何正确地写出单例模式
如何正确地写出单例模式 | Jarks Blog 枚举方式: public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的,并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...
Mac M系列 安装 jadx-gui
安装 Homebrew在终端中执行以下命令(需管理员密码): 安装 Homebrew(官方源) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内用户可用镜像源加速&…...
水滴Android面经及参考答案
目录 static 关键字有什么作用,它修饰的方法可以使用非静态的成员变量吗? Java 中创建线程有几种方式? wait 和 sleep 的区别,如何打断 sleep? Java 垃圾回收的目的是什么,垃圾回收机制是怎样的? Java 的垃圾回收(GC)机制是如何工作的? 请解释 Java 内存模型(J…...
《猜拳游戏》
综合案例《猜拳游戏》 需求: 本游戏是一款单机游戏,人机交互 规则: 需要双方出拳:石头、剪刀、布 赢: 石头 → 剪刀剪刀 → 布布 → 石头 平: 两边出拳相等 输: … 实现: 选择对…...
Mysql索引优化
一、索引 1. 主键索引(Primary Index) 定义 主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行数据。每个表最多有一个主键索引,且索引列不允许为 NULL,自动添加 UNIQUE 和 NOT NULL 约束。 特点:…...
Postgresql与openguass对比
背景介绍 PostgreSQL是世界上最先进的开源关系型数据库,以其强大的功能、稳定性和可扩展性著称。而openGauss是华为公司于2020年6月30日开源的数据库系统,内核基于PostgreSQL 9.2.4版本演进而来。值得注意的是,PostgreSQL 11.3版本拥有290个数…...
线程的概念和控制
自从20世纪60年代提出了进程的概念之后,操作系统一直以进程作为独立运行的基本单位。到了20世纪80年代,人们又提出了比进程更小的、能独立运行的基本单位——线程。提出线程的目的是试图提高系统并发执行的程度,从而进一步提高系统的吞吐量。…...
如何配置activemq,支持使用wss协议连接。
1、到阿里云申请一个证书,通过后下载jks证书。 2、配置activemq: 打开activemq安装目录中“conf/activemq.xml”,增加以下记录: <transportConnectors> <transportConnector name"wss" uri"…...
【言语】刷题3
front:刷题2 题干 超限效应介绍冰桶挑战要避免超限效应 B明星的作用只是病痛挑战的一个因素,把握程度才是重点,不是强化弱化明星作用,排除 A虽没有超限效应,但是唯一的点出“冰桶效应”的选项,“作秀之嫌…...
关于 ast: Babel AST 全类型总览
AST 的每个节点都有一个 type 字段,用来标识它的语法类型。 程序结构节点 type说明示例Program整个程序的根节点整体代码结构BlockStatement大括号代码块 {}if、function、for 等的主体ExpressionStatement表达式语句(如 a b;)EmptyStatem…...
STM32 内存
根据STM32的存储器映射机制,其32位地址总线可访问4GB逻辑地址空间(0x00000000-0xFFFFFFFF),但实际物理地址分配由芯片厂商定义。以下是STM32完整的地址映射结构及关键区域说明: 一、地址空间整体架构 4GB地址空间划分…...
图片的require问题
问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…...
关于 js:8. 反调试与混淆识别
一、常见反调试手段识别 1. debugger 死循环(阻塞调试器) 样例代码: while (true) {debugger; }原理: 每次执行到 debugger 语句,如果 DevTools 打开,将自动触发断点。 如果在死循环中,调试…...
深度Q网络(DQN)的基本概念
一、深度Q网络(DQN)的基本概念 深度Q网络(Deep Q-Network,DQN)是将强化学习中的Q学习(Q-Learning)与深度学习相结合的算法,由DeepMind在2013年提出,并在2015年发表于《Nature》杂志。它通过神经网络近似动作价值函数(Q函数),解决传统Q学习在高维状态空间下的计算难…...
uniapp+vue3中自动导入ref等依赖
前言: 在我们使用uni-appvue3创建项目,开发的过程中,老是需要导入我们的ref、onshow等,那么能不能自动导入,不用我们每个页面都写呢?是没问题的,这里让他的小帮手来帮你减轻负担:他就…...
合肥SMT贴片加工核心优势与工艺升级
内容概要 在电子制造领域,工艺精度与生产效率的平衡始终是企业关注的核心命题。本文将系统呈现合肥SMT贴片加工产业的技术演进图谱,为寻求制造升级的企业提供可落地的决策参考。 作为长三角电子制造集群的重要节点,合肥SMT贴片加工产业通过持…...
Ansible安装与核心模块实战指南
Ansible安装与核心模块实战指南 自动化运维入门:从安装到模块化任务配置 Ansible作为一款无代理自动化工具,通过模块化设计实现高效管理,尤其适用于快速部署、配置和维护大规模系统。本文将从安装、核心模块使用到实际案例,全面解析其核心功能与最佳实践。 一、Ansible安装…...
TDengine 做为 Spark 数据源
简介 Apache Spark 是开源大数据处理引擎,它基于内存计算,可用于批、流处理、机器学习、图计算等多种场景,支持 MapReduce 计算模型及丰富计算操作符、函数等,在大超大规模数据上具有强大的分布式处理计算能力。 通过 TDengine …...
Codeforces Round 997 (Div. 2)
A. Shape Perimeter 题目大意 给你一个m*m的正方形,再给你n个坐标表示每次在xy移动的距离(第一个坐标是初始位置正方形左下角),问路径图形的周长 解题思路 记录好第一次的位置之后一直累加最后求总移动距离的差值即可 代码实…...
WSL 安装 Debian 12 后,Linux 如何安装 nginx ?
在 WSL 的 Debian 12 中安装 Nginx 的步骤如下: 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y2. 安装 Nginx sudo apt install nginx -y3. 管理 Nginx 服务 ▶ 启动 Nginx sudo service nginx start # 如果使用 systemd 可能需改用&…...
目标检测任务 - 数据增强
目标检测任务 - DETR : 数据预处理/数据增强 算法源码实例 import datasets.transforms as Tnormalize T.Compose([T.ToTensor(),T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])scales [480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800]…...
java的switch case
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int type in.nextInt();switch(type){case 1:case 2:System.out.println("你好");break;case 3:System.out.println("晚上好"…...
基于亚博K210开发板——LCD触摸屏读取坐标数据测试
开发板 亚博K210开发板 实验目的 主要学习 K210 通过 I2C 读取触摸屏的坐标,并打印出来,显示在 LCD上。 实验准备 实验元件 LCD 显示屏触摸板 元件特性 K210 开发板自带 2.0 寸触摸屏,其实是 LCD 显示屏上贴一个触摸板组成…...
coze平台实现文生视频和图生视频(阿里云版)工作流
工作流全貌 开始 首先从入参开始: api_key:来自阿里云百炼平台,自行去申请 prompt:生成视频的文本提示词。支持中英文,长度不超过800个字符,每个汉字/字母占一个字符,超过部分会自动截断。 …...
python酒店健身俱乐部管理系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...