复现YOLOv8语义分割训练自己的数据集
一、YOLOv8源码下载:https://github.com/ultralytics/ultralytics/tree/v8.2.76
我下载的是最新版本8.2.76
接着下载权重


下载源码后解压

二、配置虚拟环境
创建虚拟环境
conda create -n yolov8 python==3.9

激活环境
conda activate yolov8
下载pytorch,官网地址:PyTorch

出现以下内容就是已经装好了pytorch
接着在虚拟环境中得先安装项目所需的包,例如pip install tensorboard(只有安装了这个包,在训练的时候才会在runs/segment/train里面看到events.out.tfevents.1727158710.DESKTOP-H801G65.38592.0,可以用于tensorboard --logdir runs/segment查看训练的指标曲线), pip install seaborn ,pip install scipy, pip install pandas,pip install tqdm ,pip install matplotlib ,pip install psutil , pip install opencv-python等等。

用pycharm打开源代码工程文件,虚拟环境选择yolov8


虚拟环境中装ultralytics,安装该包是为了用指令训练测试的时候识别yolo这个指令,如果没装这个包就不能用yolo segment train data=ultralytics/cfg/datasets/coco128-seg-0812.yaml model=yu/segmentation/yolov8s-seg.pt epochs=100 imgsz=640 batch=2 workers=0 device=0这种指令了,但可以用seg_train.py,seg_predict.py脚本
pip install ultralytics

进入项目路径下运行测试代码,cd ultralytics-8.2.76,然后预测目标检测
yolo predict model=yu/detection/yolov8n.pt source='ultralytics/assets/bus.jpg'


也可预测实例分割功能
yolo predict model=yu/segmentation/yolov8n-seg.pt source='ultralytics/assets/bus.jpg'


三、训练自己的数据集,segment数据集是用labelme标注的,所以是json格式的,但yolov8训练需要用txt后缀的数据集,所以需要将json格式转成txt格式
(1)labelme标注后的json格式文件

json2txt代码
# -*- coding: utf-8 -*-
import json
import os
import argparse
from tqdm import tqdm
def convert_label_json(json_dir, save_dir, classes):
json_paths = os.listdir(json_dir)
classes = classes.split(',')
for json_path in tqdm(json_paths):
# for json_path in json_paths:
path = os.path.join(json_dir, json_path)
with open(path, 'r') as load_f:
json_dict = json.load(load_f)
h, w = json_dict['imageHeight'], json_dict['imageWidth']
# save txt path
txt_path = os.path.join(save_dir, json_path.replace('json', 'txt'))
txt_file = open(txt_path, 'w')
for shape_dict in json_dict['shapes']:
label = shape_dict['label']
label_index = classes.index(label)
points = shape_dict['points']
points_nor_list = []
for point in points:
points_nor_list.append(point[0] / w)
points_nor_list.append(point[1] / h)
points_nor_list = list(map(lambda x: str(x), points_nor_list))
points_nor_str = ' '.join(points_nor_list)
label_str = str(label_index) + ' ' + points_nor_str + '\n'
txt_file.writelines(label_str)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='json convert to txt params')
parser.add_argument('--json-dir', type=str,default='./json', help='json path dir')
parser.add_argument('--save-dir', type=str,default='./txt' ,help='txt save dir')
parser.add_argument('--classes', type=str, default='spring_water',help='classes')
args = parser.parse_args()
json_dir = args.json_dir
save_dir = args.save_dir
classes = args.classes
convert_label_json(json_dir, save_dir, classes)
改后的txt文件

(2)修改数据加载配置文件,在E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\ultralytics\cfg\datasets,选择coco128-seg.yaml

我图片较少,没分训练集验证集。
(3)修改模型配置文件,在E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\ultralytics\cfg\models\v8
选择yolov8-seg.yaml,修改nc为自己数据集所需检测类别的个数

至此,所有的配置已经完成。
四、训练自己的数据集
在Terminal下输入指令:yolo train data=你的配置文件(xx.yaml)的绝对路径 model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=0 这是用的yolov8s-seg.pt当作预训练模型
yolo segment train data=ultralytics\cfg\datasets\coco128-seg-0812.yaml model=yu\segmentation\yolov8s-seg.pt epochs=100 imgsz=640 batch=2 workers=0 device=0
linux下训练的指令: yolo segment train data=ultralytics/cfg/datasets/coco128-seg-0812.yaml model=yu/segmentation/yolov8s-seg.pt epochs=100 imgsz=640 batch=2 workers=0 device=0 注意Linux下用正斜杠/,而不是反斜杠\
yolo segment train data=ultralytics/cfg/datasets/coco128-seg-0812.yaml model=yu/segmentation/yolov8s-seg.pt epochs=100 imgsz=640 batch=2 workers=0 device=0

也可用改好的模型配置文件训练
yolo segment train data=ultralytics\cfg\datasets\coco128-seg-0812.yaml model=ultralytics\cfg\models\v8\yolov8-seg-0812.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0
注意Linux下用正斜杠/,指令是yolo segment train data=ultralytics/cfg/datasets/coco128-seg-0812.yaml model=ultralytics/cfg/models/v8/yolov8-seg-0812.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0
yolo segment train data=ultralytics/cfg/datasets/coco128-seg-0812.yaml model=ultralytics/cfg/models/v8/yolov8-seg-0812.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0

如果想使用多卡训练,device='\0,1,2,xxx\'
训练过程首先会显示你所使用的训练的硬件设备信息,然后下一段话则是你的参数配置,紧接着是backbone信息,最后是加载信息,并告知你训练的结果会保存在runs\segment\trainxx。
如果不想用指令训练,也可以写一个脚本seg_train.py:
from ultralytics import YOLO
# Load a pretrained YOLOv8 segment model 加载预训练的YOLOv8段模型
# model = YOLO("yolov8n-seg.yaml") # build a new model from YAML 从YAML构建一个新模型
model = YOLO(r"E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\yu\segmentation\yolov8n-seg.pt") # load a pretrained model (recommended for training) 加载预训练模型(推荐用于训练)
# model = YOLO("yolov8n-seg.yaml").load("yolov8n.pt") # build from YAML and transfer weights 从YAML构建并转移权重
# Train the model
results = model.train(data="E:/project/MODEL/YOLO/yolov8-8.2.76/ultralytics-8.2.76/ultralytics/cfg/datasets/coco128-seg-0826.yaml", epochs=100, imgsz=640, batch=2, device=0, workers=0) #hsv_h=0.025
以下是运行上述脚本输出参数的值,大部分是默认值,可以结合实际项目调超参
task=segment, mode=train, model=E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\yu\segmentation\yolov8n-seg.pt, data=E:/project/MODEL/YOLO/yolov8-8.2.76/ultralytics-8.2.76/ultralytics/cfg/datasets/coco128-seg-0826.yaml, epochs=100, time=None, patience=100, batch=2, imgsz=640, save=True, save_period=-1, cache=False, device=0, workers=0, project=None, name=train15, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=runs\segment\train15
Overriding model.yaml nc=80 with nc=1
可以根据源码里有调超参的范围
"""5、训练设置
YOLO模型的训练设置涵盖了训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。关键的训练设置包括批量大小、学习率、动量和权重衰减。此外,优化器的选择、损失函数以及训练数据集的组成也会影响训练过程。通过仔细调整和实验这些设置,对于优化模型性能至关重要。
Argument Default Description
model None 指定用于训练的模型文件。接受.pt预训练模型或.yaml配置文件的路径。对于定义模型结构或初始化权重至关重要。
data None 数据集配置文件的路径(例如,coco8.yaml)。该文件包含特定于数据集的参数,包括到训练和验证数据的路径、类名和类数。
epochs 100 训练周期总数。每个epoch代表整个数据集的完整传递。调整这个值会影响训练时间和模型性能。
time None 最大培训时间(以小时为单位)。如果设置,则覆盖epochs参数,允许训练在指定的持续时间后自动停止。对于时间限制的训练场景非常有用。
patience 100 在早期停止训练之前,在验证度量没有改进的情况下等待的epoch数。当表现停滞时,停止训练有助于防止过度拟合。
batch 16 批量大小,有三种模式:设置为整数(例如,Batch =16), GPU内存利用率为60%的自动模式(Batch =-1),或指定利用率分数的自动模式(Batch =0.70)。
imgsz 640 用于训练的目标图像大小。所有图像在输入到模型之前都会被调整到这个尺寸。影响模型精度和计算复杂度。
save True 允许保存训练检查点和最终模型权重。用于恢复训练或模型部署。
save_period -1 保存模型检查点的频率,以epoch指定。值为-1时禁用此特性。用于在长时间的训练期间保存临时模型。
cache False 启用数据集映像在内存(True/ram)、磁盘(disk)上的缓存,或禁用它(False)。以增加内存使用为代价,通过减少磁盘I/O来提高训练速度。
device None 指定用于训练的计算设备:单个GPU (device=0)、多个GPU (device=0,1)、CPU (device= CPU)或用于苹果芯片的MPS (device= MPS)。
workers 8 用于数据加载的工作线程数(如果多gpu训练,则按RANK计算)。影响数据预处理和输入模型的速度,在多gpu设置中特别有用。
project None 保存培训输出的项目目录名称。允许有组织地存储不同的实验。
name None 训练运行的名称。用于在项目文件夹中创建子目录,用于存储培训日志和输出。
exist_ok False 如果为True,则允许覆盖现有的项目/名称目录。可用于迭代实验,无需手动清除先前的输出。
pretrained True 确定是否从预训练的模型开始训练。可以是布尔值或到要从中加载权重的特定模型的字符串路径。提高培训效率和模型性能。
optimizer 'auto' 训练优化器的选择。选项包括SGD, Adam, AdamW, NAdam, RAdam, RMSProp等,或auto根据模型配置自动选择。影响收敛速度和稳定性。
verbose False 支持训练期间的详细输出,提供详细的日志和进度更新。用于调试和密切监视培训过程。
seed 0 为训练设置随机种子,确保在相同配置的运行中结果的可重复性。
deterministic True 强制使用确定性算法,确保再现性,但由于对非确定性算法的限制,可能会影响性能和速度。
single_cls False 在训练期间将多类数据集中的所有类视为单个类。用于二元分类任务或关注对象存在而不是分类时。
rect False 使矩形训练,优化批量组成最小填充。可以提高效率和速度,但可能会影响模型的准确性。
cos_lr False 利用余弦学习率调度程序,调整学习率后,余弦曲线的epoch。有助于管理学习率以实现更好的收敛。
close_mosaic 10 在最后N次迭代中禁用马赛克数据增强,以在完成之前稳定训练。设置为0禁用此功能。
resume False 从上次保存的检查点恢复训练。自动加载模型权重、优化器状态和历元计数,无缝地继续训练。
amp True 支持自动混合精度(AMP)训练,减少内存使用,并可能在对准确性影响最小的情况下加速训练。
fraction 1.0 指定要用于训练的数据集的部分。允许在完整数据集的子集上进行训练,对于实验或资源有限时非常有用。
profile False 允许在训练期间对ONNX和TensorRT速度进行分析,有助于优化模型部署。
freeze None 通过索引冻结模型的前N层或指定层,减少可训练参数的数量。用于微调或迁移学习。
lr0 0.01 初始学习率(即SGD=1E-2, Adam=1E-3)。调整此值对于优化过程至关重要,它会影响模型权重更新的速度。
lrf 0.01 最终学习率作为初始学习率的一部分= (lr0 * lrf),与调度器一起使用以随时间调整学习率。
momentum 0.937 SGD的动量因子或Adam优化器的beta1,影响当前更新中过去梯度的整合。
weight_decay 0.0005 L2正则化项,惩罚大权重以防止过拟合。
warmup_epochs 3.0 学习率预热的epoch数,从一个较低的学习率逐渐增加到初始学习率,以稳定早期的训练。
warmup_momentum 0.8 热身阶段的初始动量,在热身期间逐渐调整到设定的动量。
warmup_bias_lr 0.1 预热阶段偏差参数的学习率,有助于稳定初始阶段的模型训练。
box 7.5 损失函数中盒损失分量的权重,影响对准确预测边界盒坐标的重视程度。
cls 0.5 总损失函数中分类损失的权重,影响正确分类预测相对于其他成分的重要性。
dfl 1.5 分布焦点损失的权重,在某些YOLO版本中用于细粒度分类。
pose 12.0 姿态估计模型中姿态损失的权重,影响了对准确预测姿态关键点的重视。
kobj 2.0 姿态估计模型中关键点目标损失的权重,平衡检测置信度和姿态精度。
label_smoothing 0.0 应用标签平滑,软化硬标签的混合目标标签和均匀分布的标签,可以提高泛化。
nbs 64 归一化损失的标称批量大小。
overlap_mask True 确定在训练期间分割掩码是否应该重叠,适用于实例分割任务。
mask_ratio 4 分割蒙版的下采样率,影响训练时使用的蒙版的分辨率。
dropout 0.0 分类任务中正则化的失败率,通过在训练过程中随机省略单元来防止过拟合。
val True 在训练期间启用验证,允许在单独的数据集上定期评估模型性能。
plots False 生成并保存训练和验证度量的图,以及预测示例,提供对模型性能和学习进展的可视化洞察。
注意批处理大小设置
batch 参数可以通过三种方式进行配置:
固定批量大小:设置一个整数值(例如,batch=16),直接指定每个批次的图像数量。
自动模式(60% GPU 内存):使用 batch=-1 自动调整批量大小,使 CUDA 内存使用量约为 60%。
自动模式与使用率比例:设置一个比例值(例如,batch=0.70),根据指定的 GPU 内存使用比例调整批量大小。
增强设置和超参数
增强技术通过在训练数据中引入可变性来提高YOLO模型的鲁棒性和性能,帮助模型更好地泛化到不可见的数据。下表概述了每个增强论点的目的和效果:
Argument Type Default Range Description
hsv_h float 0.015 0.0 - 1.0 通过色轮的一小部分来调整图像的色调,从而引入颜色可变性。帮助模型在不同的光照条件下泛化。
hsv_s float 0.7 0.0 - 1.0 稍微改变图像的饱和度,影响颜色的强度。用于模拟不同的环境条件。
hsv_v float 0.4 0.0 - 1.0 将图像的值(亮度)修改一个分数,帮助模型在各种光照条件下表现良好。
degrees float 0.0 -180 - +180 在指定的度范围内随机旋转图像,提高模型对不同方向物体的识别能力。
translate float 0.1 0.0 - 1.0 水平和垂直转换图像大小的一小部分,帮助学习检测部分可见的物体。
scale float 0.5 >=0.0 通过增益因子缩放图像,模拟距离相机不同距离的物体。
shear float 0.0 -180 - +180 以指定的程度剪切图像,模拟从不同角度观看物体的效果。
perspective float 0.0 0.0 - 0.001 对图像应用随机透视变换,增强模型在3D空间中理解物体的能力。
flipud float 0.0 0.0 - 1.0 以指定的概率将图像颠倒,在不影响对象特征的情况下增加数据可变性。
fliplr float 0.5 0.0 - 1.0 以指定的概率将图像从左到右翻转,这对于学习对称对象和增加数据集多样性很有用。
bgr float 0.0 0.0 - 1.0 以指定的概率将图像通道从RGB翻转到BGR,有助于增加对错误通道排序的鲁棒性。
mosaic float 1.0 0.0 - 1.0 将四个训练图像合并为一个,模拟不同的场景组成和物体交互。对于复杂场景的理解非常有效。
mixup float 0.0 0.0 - 1.0 混合两个图像及其标签,创建一个合成图像。通过引入标签噪声和视觉可变性来增强模型的泛化能力。
copy_paste float 0.0 0.0 - 1.0 从一个图像复制对象并将它们粘贴到另一个图像上,这对于增加对象实例和学习对象遮挡很有用。
auto_augment str randaugment - 自动应用预定义的增强策略(randaugment、autoaugment、augmix),通过多样化视觉特征来优化分类任务。
erasing float 0.4 0.0 - 0.9 在分类训练中随机擦除一部分图像,鼓励模型关注不太明显的特征进行识别。
crop_fraction float 1.0 0.1 - 1.0 将分类图像裁剪为其大小的一小部分,以强调中心特征并适应对象规模,减少背景干扰。
可以调整这些设置以满足手头数据集和任务的特定要求。尝试不同的值可以帮助找到最佳的增强策略,从而获得最佳的模型性能。
有关训练增强操作的更多信息,请参阅参考部分。
"""
五、测试:
训练结束后可以测试自己的模型,把结果坐标也保存下来
yolo segment predict model=runs/segment/train3/weights/best.pt source=datasets/segment/1first_0812/images save_txt
就可以在runs\segments\predict\看到测试的结果图和labels了。
如果不想用指令测试,也可以写一个脚本seg_predict.py:
from ultralytics import YOLO
import os
# Load a pretrained YOLOv8n-seg Segment model加载预训练的YOLOv8n-seg分段模型
# model = YOLO("yolov8n-seg.pt")
model = YOLO(r"E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\runs\segment\2second_0826\train\weights\best.pt")
source = r"E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\datasets\segment\2"
# 计算 source 文件夹中的图像数量
image_files = [f for f in os.listdir(source) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff'))]
num_images = len(image_files)
# 打印图像数量
print(f"Number of images: {num_images}")
# Run inference on an image对图像运行推理
results = model(source, save=True, save_txt=True,save_crop=True, imgsz=640, conf=0.5) #默认batch为1,一张一张的测
#results = model(source,batch=2, save=True, save_txt=True,save_crop=True, imgsz=640, conf=0.5) #有时候项目中会用到多张图一起测,速度快些,直接改batch就行
#results = model(source,batch=num_images, save=True, save_txt=True,save_crop=True, imgsz=640, conf=0.5) #有时项目中是摄像头实时测试,就先看读过来的图片数量,直接赋值给batch,因为每次图像数量不固定
# View results查看结果
for r in results:
print(r.masks) # print the Masks object containing the detected instance masks打印包含检测到的实例掩码的mask对象
六、tensorboard查看
在终端输入tensorboard --logdir ultralytics/runs/segment/可以看到
在浏览器打开这个地址就可以看到

复现YOLOv8目标检测训练自己的数据集,第一步,第二步都是一样的,从第三步训练自己的数据集开始不同。
三、用labelimg的yolo标注自己的数据集,标注的labels是txt后缀,我这里标了六类

(1)可以自己划分好训练集train,验证集val

(2)修改数据加载配置文件,在E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\ultralytics\cfg\datasets,选择coco8.yaml

(3)修改模型配置文件,在E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\ultralytics\cfg\models\v8
选择yolov8.yaml,修改nc为自己数据集所需检测类别的个数

至此,所有的配置已经完成。
四、训练自己的数据集
在Terminal下输入指令:yolo train data=你的配置文件(xx.yaml)的绝对路径 model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=0
yolo detect train data=ultralytics/cfg/datasets/coco8-6-0925.yaml model=yu/detection/yolov8n.pt epochs=100 imgsz=640 batch=2 workers=0 device=0
linux下训练的指令:
yolo detect train data=ultralytics/cfg/datasets/coco8-6-0925.yaml model=yu/detection/yolov8n.pt epochs=100 imgsz=640 batch=2 workers=0 device=0
注意Linux下用正斜杠/,而不是反斜杠\

也可用改好的模型配置文件训练
yolo detect train data=ultralytics\cfg\datasets\coco8-6-0925.yaml model=ultralytics\cfg\models\v8\yolov8-0925.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0
注意Linux下用正斜杠/,指令是yolo detect train data=ultralytics/cfg/datasets/coco8-6-0925.yaml model=ultralytics/cfg/models/v8/yolov8-0925.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0
linux下训练的指令:
yolo detectt train data=ultralytics/cfg/datasets/coco8-6-0925.yaml model=ultralytics/cfg/models/v8/yolov8-0925.yaml epochs=100 imgsz=640 batch=2 workers=0 device=0
如果想使用多卡训练,device='\0,1,2,xxx\'
训练过程首先会显示你所使用的训练的硬件设备信息,然后下一段话则是你的参数配置,紧接着是backbone信息,最后是加载信息,并告知你训练的结果会保存在runs\detect\trainxx。
如果不想用指令训练,也可以写一个脚本detect_train.py:
"""1、YOLOv8数据集,如COCO, VOC, ImageNet和许多其他在第一次使用时自动下载,即YOLOv8数据= COCO .yaml
在COCO8数据集上训练YOLOv8n 100次,图像大小为640。可以使用设备参数指定训练设备。如果没有参数传递,则使用可用的GPU device=0,否则将使用device='cpu'。有关训练参数的完整列表,请参阅下面的参数部分。
设备自动确定。如果GPU可用,那么将使用它,否则将在CPU上开始训练。
如何在我的自定义数据集上训练YOLOv8模型?
在自定义数据集上训练YOLOv8模型包括以下几个步骤:
1.准备数据集:确保您的数据集是YOLO格式。有关指导,请参阅我们的数据集指南。
2.加载模型:使用Ultralytics YOLO库加载预训练的模型或从YAML文件创建新模型。
3.训练模型:在Python中执行Train方法或在CLI中执行yolo detect Train命令。
"""
from ultralytics import YOLO
# Load a model加载模型 每次训练的时候只选择下面的某一行,屏蔽其他两行,根据实际情况来选择用yaml自定义模型还是yolov8n.pt预训练模型
# model = YOLO("yolov8n.yaml") # build a new model from YAML从YAML构建一个新模型,当数据集很多的时候,觉得可以从0开始训练,就使用自定义模型,可以改动yolov8n.yaml里面的类别及网络结构
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)加载预训练模型(推荐用于训练),这是当第一次训练的时候或者数据集较少的时候,需要从预训练模型里学到点东西
#model = YOLO("yolov8n.yaml").load("yolov8n.pt") # build from YAML and transfer weights从YAML构建并转移权重 这个还没用过,还不知道是什么意思
# Train the model 训练模型 data="coco8.yaml"是数据集存放的路径
results = model.train(data="E:/project/MODEL/YOLO/yolov8-8.2.76/ultralytics-8.2.76/ultralytics/cfg/datasets/coco8 -6- 0925.yaml", epochs=100, imgsz=640,batch=2, device=0, workers=0, hsv_h=0.025)
源码里有调超参的范围调超参的范围,看上面调超参部分的内容
五、测试
训练结束后可以测试自己的模型,把结果坐标也保存下来
yolo detect predict model=runs/detect/train3/weights/best.pt source=datasets/detect/3third_0909/val/images save_txt save_crop

就可以在runs\detect\predict\看到测试的结果图和labels了。
如果不想用指令测试,也可以写一个脚本detect_predict.py:
# 5、Predict测试
# 使用经过训练的YOLOv8n模型对图像进行预测。
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 加载自定义模型
model = YOLO(r"E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\code\detect\runs\detect\train6\weights/best.pt") # load a custom model 加载自定义模型
source = r"E:\project\MODEL\YOLO\yolov8-8.2.76\ultralytics-8.2.76\datasets\detect\3third_0909\val\images"
# Predict with the model
# results = model("https://ultralytics.com/images/bus.jpg") # predict on an image 对图像进行预测
results = model(source,batch=1, save=True, save_txt=True,save_crop=True, imgsz=640, conf=0.5) # results list结果列表
# 用指令预测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
#
六、tensorboard查看是一样的。
在终端输入tensorboard --logdir ultralytics/runs/detect可以看到

1万+

被折叠的 条评论
为什么被折叠?



