当前位置:   article > 正文

Yolov8变换为v5训练界面_yolov8转yolov5

yolov8转yolov5

       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代码如下,以下代码中只是列出了笔者常用的一些训练参数,如读者需要修改更多超参数,只需要仿照以下的超参数添加上即可。训练直接运行该程序即可。

  1. from ultralytics import YOLO
  2. if __name__ == '__main__':
  3. # Load a model
  4. model = YOLO(r'yolov8.yaml') # 不使用预训练权重训练
  5. # model = YOLO(r'yolov8.yaml').load("yolov8n.pt") # 使用预训练权重训练
  6. # Trainparameters ----------------------------------------------------------------------------------------------
  7. model.train(
  8. data=r'ultralytics/cfg/datasets/coco.yaml',
  9. epochs= 300 , # (int) number of epochs to train for
  10. patience= 50 , # (int) epochs to wait for no observable improvement for early stopping of training
  11. batch= 16 , # (int) number of images per batch (-1 for AutoBatch)
  12. imgsz= 416 , # (int) size of input images as integer or w,h
  13. save= True , # (bool) save train checkpoints and predict results
  14. save_period= -1, # (int) Save checkpoint every x epochs (disabled if < 1)
  15. cache= False , # (bool) True/ram, disk or False. Use cache for data loading
  16. device='' , # (int | str | list, optional) device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
  17. workers= 1 , # (int) number of worker threads for data loading (per RANK if DDP)
  18. project= 'runs/train', # (str, optional) project name
  19. name= 'exp' ,# (str, optional) experiment name, results saved to 'project/name' directory
  20. optimizer= 'auto', # (str) optimizer to use, choices=[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto]
  21. # Classification
  22. dropout= 0.0, # (float) use dropout regularization (classify train only)
  23. # Hyperparameters ----------------------------------------------------------------------------------------------
  24. lr0=0.01, # (float) initial learning rate (i.e. SGD=1E-2, Adam=1E-3)
  25. lrf=0.01, # (float) final learning rate (lr0 * lrf)
  26. momentum=0.937, # (float) SGD momentum/Adam beta1
  27. weight_decay=0.0005, # (float) optimizer weight decay 5e-4
  28. warmup_epochs=3.0, # (float) warmup epochs (fractions ok)
  29. warmup_momentum=0.8, # (float) warmup initial momentum
  30. warmup_bias_lr=0.1, # (float) warmup initial bias lr
  31. box=7.5, # (float) box loss gain
  32. cls=0.5, # (float) cls loss gain (scale with pixels)
  33. dfl=1.5, # (float) dfl loss gain
  34. pose=12.0, # (float) pose loss gain
  35. kobj=1.0, # (float) keypoint obj loss gain
  36. label_smoothing=0.0, # (float) label smoothing (fraction)
  37. nbs=64, # (int) nominal batch size
  38. hsv_h=0.015, # (float) image HSV-Hue augmentation (fraction)
  39. hsv_s=0.7, # (float) image HSV-Saturation augmentation (fraction)
  40. hsv_v=0.4, # (float) image HSV-Value augmentation (fraction)
  41. degrees=0.0, # (float) image rotation (+/- deg)
  42. translate=0.1, # (float) image translation (+/- fraction)
  43. scale=0.5, # (float) image scale (+/- gain)
  44. shear=0.0, # (float) image shear (+/- deg)
  45. perspective=0.0, # (float) image perspective (+/- fraction), range 0-0.001
  46. flipud=0.0, # (float) image flip up-down (probability)
  47. fliplr=0.5, # (float) image flip left-right (probability)
  48. mosaic=1.0, # (float) image mosaic (probability)
  49. mixup=0.0, # (float) image mixup (probability)
  50. copy_paste=0.0, # (float) segment copy-paste (probability)
  51. )

        验证.py 代码如下,以下代码中只是列出了笔者常用的一些训练参数,如读者需要修改更多超参数,只需要仿照以下的超参数添加上即可。验证时将路径修改为自己exp文件下最好的best.pt权重文件,然后运行即可。

  1. from ultralytics import YOLO
  2. if __name__ == '__main__':
  3. # Load a model
  4. model = YOLO(r'F:\yolov8\yolov8\ultralytics-main\runs\train\exp\weights\best.pt') # build a new model from YAML
  5. # Validate the model
  6. model.val(
  7. val=True, # (bool) validate/test during training
  8. data=r'ultralytics/cfg/datasets/haolaji.yaml',
  9. split='test', # (str) dataset split to use for validation, i.e. 'val', 'test' or 'train'
  10. batch=1, # (int) number of images per batch (-1 for AutoBatch)
  11. imgsz=640, # (int) size of input images as integer or w,h
  12. device='', # (int | str | list, optional) device to run on, i.e. cuda device=0 or device=0,1,2,3 or device=cpu
  13. workers=1, # (int) number of worker threads for data loading (per RANK if DDP)
  14. save_json=False, # (bool) save results to JSON file
  15. save_hybrid=False, # (bool) save hybrid version of labels (labels + additional predictions)
  16. project='runs/val', # (str, optional) project name
  17. name='exp', # (str, optional) experiment name, results saved to 'project/name' directory
  18. max_det=300, # (int) maximum number of detections per image
  19. )

        模型计算量.py 代码如下,查看模型计算量时将自己的yaml文件填写进去,然后运行即可。

  1. from ultralytics import YOLO
  2. if __name__ == '__main__':
  3. # Load a model
  4. model = YOLO(r'ultralytics/cfg/models/v8/yolov8.yaml') # build a new model from YAML
  5. model.info()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/150811?site
推荐阅读
相关标签
  

闽ICP备14008679号