🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
你好,我是@努力的小巴掌
YOLO 设置和超参数对模型的性能、速度和准确性起着至关重要的作用。这些设置和超参数可以影响模型开发过程各个阶段的模型行为,包括训练、验证和预测。
Configuration - Ultralytics YOLO Docs
目录
Ultralytics 命令使用以下语法:
命令行:
yolo TASK MODE ARGS
其中,TASK
(可选)是(检测、分割、分类、姿势)之一。
MODE
(必需)是(train、val、predict、export、track)之一。
ARGS
(optional) are arg=value
pairs like imgsz=640
that override defaults.
python界面
from ultralytics import YOLO
# Load a YOLOv8 model from a pre-trained weights file
model = YOLO("yolov8n.pt")
# Run MODE mode using the custom arguments ARGS (guess TASK)
model.MODE(ARGS)
默认 ARG
值是通过 cfg/defaults.yaml
文件定义的。
Tasks 任务
YOLO 模型可用于各种任务,包括检测、分割、分类和姿势。这些任务的不同之处在于它们产生的输出类型以及它们旨在解决的具体问题。
- Detect: For identifying and localizing objects or regions of interest in an image or video.
检测:用于识别和定位图像或视频中感兴趣的对象或区域。 - Segment: For dividing an image or video into regions or pixels that correspond to different objects or classes.
分段:用于将图像或视频划分为对应于不同对象或类别的区域或像素。 - Classify: For predicting the class label of an input image.
分类:用于预测输入图像的类标签。 - Pose: For identifying objects and estimating their keypoints in an image or video.
姿势:用于识别图像或视频中的对象并估计其关键点。 - OBB: Oriented (i.e. rotated) bounding boxes suitable for satellite or medical imagery.
OBB:适用于卫星或医学图像的定向(即旋转)边界框。
在yolov8里,默认的task是detect
如果做分割,就是这样:
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640
Modes 模式
YOLO models can be used in different modes depending on the specific problem you are trying to solve. These modes include:
YOLO 模型可以根据您要解决的具体问题以不同的模式使用。这些模式包括:
- Train: For training a YOLOv8 model on a custom dataset.
训练:用于在自定义数据集上训练 YOLOv8 模型。 - Val: For validating a YOLOv8 model after it has been trained.
Val:用于在训练后验证 YOLOv8 模型。 - Predict: For making predictions using a trained YOLOv8 model on new images or videos.
预测:使用经过训练的 YOLOv8 模型对新图像或视频进行预测。 - Export: For exporting a YOLOv8 model to a format that can be used for deployment.
导出:用于将 YOLOv8 模型导出为可用于部署的格式。 - Track: For tracking objects in real-time using a YOLOv8 model.
Track:用于使用 YOLOv8 模型实时跟踪对象。 - Benchmark: For benchmarking YOLOv8 exports (ONNX, TensorRT, etc.) speed and accuracy.
基准:用于对 YOLOv8 导出(ONNX、TensorRT 等)速度和准确性进行基准测试。
Train Settings 训练设置
YOLO 模型的训练设置包含训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。关键的训练设置包括批量大小、学习率、动量和权重衰减。此外,优化器、损失函数和训练数据集组成的选择也会影响训练过程。仔细调整和试验这些设置对于优化性能至关重要。
训练时候默认配置和官网一样的,可以对着看
Predict Settings 预测设置
YOLO 模型的预测设置包含一系列超参数和配置,这些超参数和配置会影响模型在推理新数据期间的性能、速度和准确性。仔细调整和试验这些设置对于实现特定任务的最佳性能至关重要。关键设置包括置信度阈值、非极大值抑制 (NMS) 阈值和考虑的类别数量。影响预测过程的其他因素包括输入数据的大小和格式、是否存在补充特征(例如每个框的掩码或多个标签)以及模型所执行的特定任务。
Visualization arguments:
可视化参数:
save_txt | bool | False | Saves detection results in a text file, following the format [class] [x_center] [y_center] [width] [height] [confidence] . Useful for integration with other analysis tools.将检测结果保存在文本文件中,格式为 [class] [x_center] [y_center] [width] [height] [confidence] 。对于与其他分析工具集成很有用。 |
show_boxes | bool | True | Draws bounding boxes around detected objects. Essential for visual identification and location of objects in images or video frames. 在检测到的对象周围绘制边界框。对于图像或视频帧中的对象的视觉识别和定位至关重要。 |
Validation Settings 验证设置
YOLO 模型的 val(验证)设置涉及各种超参数和配置,用于评估模型在验证数据集上的性能。这些设置会影响模型的性能、速度和准确性。常见的 YOLO 验证设置包括批量大小、训练期间的验证频率以及性能评估指标。影响验证过程的其他因素包括验证数据集的大小和组成,以及模型所用于的特定任务。
save_json | bool | False | If |
dnn | bool | False | If True , uses the OpenCV DNN module for ONNX model inference, offering an alternative to PyTorch inference methods.如果 True ,使用 OpenCV DNN 模块进行 ONNX 模型推理,提供 PyTorch 推理方法的替代方案。 |
Export Settings 导出设置
YOLO 模型的导出设置包含与保存或导出模型以在不同环境或平台中使用相关的配置和选项。这些设置可能会影响模型的性能、大小以及与各种系统的兼容性。关键导出设置包括导出的模型文件格式(例如 ONNX、TensorFlow SavedModel)、目标设备(例如 CPU、GPU)以及其他功能,例如掩模或每个框多个标签。导出过程还可能受到模型的特定任务以及目标环境或平台的要求或约束的影响。
Augmentation Settings 增强设置
增强技术对于通过在训练数据中引入可变性来提高 YOLO 模型的鲁棒性和性能至关重要,帮助模型更好地泛化到未见过的数据。下表概述了每个增强参数的目的和效果:
copy_paste | float | 0.0 | 0.0 - 1.0 | Copies objects from one image and pastes them onto another, useful for increasing object instances and learning object occlusion. 从一张图像复制对象并将其粘贴到另一张图像上,这对于增加对象实例和学习对象遮挡很有用。 |
把0.0改成0.0-1.0之间的参数。
如何在训练期间提高 YOLO 模型的性能?
提高 YOLO 模型性能涉及调整批量大小、学习率、动量和权重衰减等超参数。调整增强设置、选择正确的优化器以及采用提前停止或混合精度等技术也会有所帮助。
影响 YOLO 模型精度的关键超参数包括:
- Batch Size (
batch
): Larger batch sizes can stabilize training but may require more memory.
批量大小 (batch
):较大的批量大小可以稳定训练,但可能需要更多内存。 - Learning Rate (
lr0
): Controls the step size for weight updates; smaller rates offer fine adjustments but slow convergence.
学习率 (lr0
):控制权重更新的步长;较小的利率可以提供精细的调整,但收敛速度较慢。 - Momentum (
momentum
): Helps accelerate gradient vectors in the right directions, dampening oscillations.
动量 (momentum
):有助于加速正确方向的梯度矢量,抑制振荡。 - Image Size (
imgsz
): Larger image sizes can improve accuracy but increase computational load.
图像大小 (imgsz
):较大的图像大小可以提高准确性,但会增加计算负载。
如何设置训练 YOLO 模型的学习率?
学习率 ( lr0
) 对于优化至关重要。常见的起点是 SGD 的 0.01
或 Adam 的 0.001
。监控培训指标并在必要时进行调整至关重要。使用余弦学习率调度程序 ( cos_lr
) 或预热技术 ( warmup_epochs
、 warmup_momentum
) 在训练期间动态修改速率。