总体流程:
①安装好v8的所有依赖后,接着在虚拟环境下安装
pip install tensorboard
②开始运行v8的训练脚本,比如我使用如下脚本训练:
# import warnings
# warnings.filterwarnings('ignore')
from ultralytics import YOLO
# import os
# os.environ['KMP_DUPLICATE_LIB_OK']='True'
if __name__ == '__main__':
model = YOLO(r'D:\Pycharm-Projects\YOLOv8bishe\ultralytics\cfg\models\v8\yolov8s.yaml')
model.load(r'D:\Pycharm-Projects\YOLOv8bishe\yolov8s.pt') # 是否加载预训练权重,科研不建议大家加载否则很难提升精度
model.train(
data=r'D:\Pycharm-Projects\YOLOv8bishe\ultralytics\cfg\datasets\Fire.yaml', # 将data后面替换你自己的数据集地址
cache=True,#如果设置为True,在训练前将整个数据集加载到内存中,可以加速训练过程,但需要较多内存
imgsz=640,#训练时输入图像的大小,这里设置为640x640像素。图像尺寸对模型性能和速度有重要影响
epochs=2,#训练的总轮数,这里设置为100轮。一个epoch表示整个数据集被模型看过一次
single_cls=False, # 是否是单类别检测,如果设置为True,表示模型仅需要识别一种类别。
batch=16,#批大小,每次迭代训练所用的样本数量。这里设置为1,通常较小的批大小会使训练过程更稳定,但可能会增加训练时间
close_mosaic=10,#是一个特定于YOLOv8的参数,用于控制何时停止使用mosaic数据增强(一种图像数据增强方法)
workers=0,#用于加载数据的工作线程数。设置为0表示数据加载将在主线程中进行。
device='0',#指定训练使用的设备,'0'通常表示使用第一个GPU
optimizer='auto', # using SGD,选择优化器,这里使用SGD(随机梯度下降)
amp=False, # 自动混合精度训练,可以提高训练速度和效率,同时减少内存使用。如果训练中出现损失为NaN,可以关闭此功能
project='runs/train',
name='v8-fire',#训练实验的名称,输出文件将保存在project/name目录下。
)
其中project=‘runs/train’, name='v8-fire’中的name='v8-fire’必须使用英文,而不能使用name=‘v8-火焰’。否则训练的时候你会发现如下这个:
18 -1 1 493056 ultralytics.nn.modules.block.C2f [384, 256, 1]
19 -1 1 590336 ultralytics.nn.modules.conv.Conv [256, 256, 3, 2]
20 [-1, 9] 1 0 ultralytics.nn.modules.conv.Concat [1]
21 -1 1 1969152 ultralytics.nn.modules.block.C2f [768, 512, 1]
22 [15, 18, 21] 1 2116435 ultralytics.nn.modules.head.Detect [1, [128, 256, 512]]
YOLOv8s summary: 225 layers, 11135987 parameters, 11135971 gradients, 28.6 GFLOPs
Transferred 349/355 items from pretrained weights
TensorBoard: WARNING ⚠️ TensorBoard not initialized correctly, not logging this run. runs\train\v8-火焰 is not a directory
③开始运行这个训练脚本
④迭代全部运行之后,会生成runs/train/v8-fire文件夹,这个文件夹下会出现这样的一个文件
events.out.tfevents.1718374932.LAPTOP-MEKRRRVR.22272
(这个对后续tensorboard的打开很重要)
⑤虚拟环境下执行如下命令即可:(关闭魔法)
tensorboard --logdir=D:\Pycharm-Projects\YOLOv8bishe\runs\train\v8-fire
⑥运行后会出现端口地址,打开后就可以看到可视化界面了