赞
踩
Yolov8与v5、v7的训练方式略有不同,官方采用的是终端运行方式。在Pycharm中训练可以增加一下几个文件变成和v5、v7的训练方式。
1,首先了解Yolov8文件的格式
采用coco数据集为例,数据集的yaml文件放在ultralytics/cfg/datasets/coco.yaml下,如果训练自己的数据集,只需要仿照coco数据集yaml的书写格式准备好自己数据集的yaml即可,如下图(coco数据集) 所示:
如下图所示yolov8的网络结构放在ultralytics/cfg/models/v8/yolov8.yaml路径下。
训练时的超参数文件放在ultralytics/cfg/default.yaml,如下图所示
可以在default.yaml文件中修改超参数文件,但是不建议这样去修改。
2,添加train.py、验证.py和 模型计算量.py
在yolov8中是没有将 训练、验证 的程序单独列出来的,可以自己写 train.py、验证.py 和 模型计算量.py 去训练自己的数据集(不建议使用中文名字,但是在Pycharm中是可以运行的,读者可自行修改)。如下图所示,在根目录下添加以下三个文件:
train.py代码如下,以下代码中只是列出了笔者常用的一些训练参数,如读者需要修改更多超参数,只需要仿照以下的超参数添加上即可。训练直接运行该程序即可。
- from ultralytics import YOLO
-
- if __name__ == '__main__':
- # Load a model
- model = YOLO(r'yolov8.yaml') # 不使用预训练权重训练
- # model = YOLO(r'yolov8.yaml').load("yolov8n.pt") # 使用预训练权重训练
- # Trainparameters ----------------------------------------------------------------------------------------------
- model.train(
- data=r'ultralytics/cfg/datasets/coco.yaml',
- epochs= 300 , # (int) number of epochs to train for
- patience= 50 , # (int) epochs to wait for no observable improvement for early stopping of training
- batch= 16 , # (int) number of images per batch (-1 for AutoBatch)
- imgsz= 416 , # (int) size of input images as integer or w,h
- save= True , # (bool) save train checkpoints and predict results
- save_period= -1, # (int) Save checkpoint every x epochs (disabled if < 1)
- cache= False , # (bool) True/ram, disk or False. Use cache for data loading
- device='' , # (int | str | list, optional) device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
- workers= 1 , # (int) number of worker threads for data loading (per RANK if DDP)
- project= 'runs/train', # (str, optional) project name
- name= 'exp' ,# (str, optional) experiment name, results saved to 'project/name' directory
- optimizer= 'auto', # (str) optimizer to use, choices=[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto]
- # Classification
- dropout= 0.0, # (float) use dropout regularization (classify train only)
- # Hyperparameters ----------------------------------------------------------------------------------------------
- lr0=0.01, # (float) initial learning rate (i.e. SGD=1E-2, Adam=1E-3)
- lrf=0.01, # (float) final learning rate (lr0 * lrf)
- momentum=0.937, # (float) SGD momentum/Adam beta1
- weight_decay=0.0005, # (float) optimizer weight decay 5e-4
- warmup_epochs=3.0, # (float) warmup epochs (fractions ok)
- warmup_momentum=0.8, # (float) warmup initial momentum
- warmup_bias_lr=0.1, # (float) warmup initial bias lr
- box=7.5, # (float) box loss gain
- cls=0.5, # (float) cls loss gain (scale with pixels)
- dfl=1.5, # (float) dfl loss gain
- pose=12.0, # (float) pose loss gain
- kobj=1.0, # (float) keypoint obj loss gain
- label_smoothing=0.0, # (float) label smoothing (fraction)
- nbs=64, # (int) nominal batch size
- hsv_h=0.015, # (float) image HSV-Hue augmentation (fraction)
- hsv_s=0.7, # (float) image HSV-Saturation augmentation (fraction)
- hsv_v=0.4, # (float) image HSV-Value augmentation (fraction)
- degrees=0.0, # (float) image rotation (+/- deg)
- translate=0.1, # (float) image translation (+/- fraction)
- scale=0.5, # (float) image scale (+/- gain)
- shear=0.0, # (float) image shear (+/- deg)
- perspective=0.0, # (float) image perspective (+/- fraction), range 0-0.001
- flipud=0.0, # (float) image flip up-down (probability)
- fliplr=0.5, # (float) image flip left-right (probability)
- mosaic=1.0, # (float) image mosaic (probability)
- mixup=0.0, # (float) image mixup (probability)
- copy_paste=0.0, # (float) segment copy-paste (probability)
- )
-
-
验证.py 代码如下,以下代码中只是列出了笔者常用的一些训练参数,如读者需要修改更多超参数,只需要仿照以下的超参数添加上即可。验证时将路径修改为自己exp文件下最好的best.pt权重文件,然后运行即可。
- from ultralytics import YOLO
-
- if __name__ == '__main__':
- # Load a model
- model = YOLO(r'F:\yolov8\yolov8\ultralytics-main\runs\train\exp\weights\best.pt') # build a new model from YAML
- # Validate the model
- model.val(
- val=True, # (bool) validate/test during training
- data=r'ultralytics/cfg/datasets/haolaji.yaml',
- split='test', # (str) dataset split to use for validation, i.e. 'val', 'test' or 'train'
- batch=1, # (int) number of images per batch (-1 for AutoBatch)
- imgsz=640, # (int) size of input images as integer or w,h
- device='', # (int | str | list, optional) device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
- workers=1, # (int) number of worker threads for data loading (per RANK if DDP)
- save_json=False, # (bool) save results to JSON file
- save_hybrid=False, # (bool) save hybrid version of labels (labels + additional predictions)
- project='runs/val', # (str, optional) project name
- name='exp', # (str, optional) experiment name, results saved to 'project/name' directory
- max_det=300, # (int) maximum number of detections per image
- )
模型计算量.py 代码如下,查看模型计算量时将自己的yaml文件填写进去,然后运行即可。
- from ultralytics import YOLO
-
- if __name__ == '__main__':
- # Load a model
- model = YOLO(r'ultralytics/cfg/models/v8/yolov8.yaml') # build a new model from YAML
- model.info()
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。