YOLOv5 神经网络训练(本地训练)

在训练文件train.py中

找到main的部分

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
    parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')
    parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=300)
    parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--notest', action='store_true', help='only test final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')
    parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')
    parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
    parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
    parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')
    parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')
    parser.add_argument('--project', default='runs/train', help='save to project/name')
    parser.add_argument('--entity', default=None, help='W&B entity')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--quad', action='store_true', help='quad dataloader')
    parser.add_argument('--linear-lr', action='store_true', help='linear LR')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')
    parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')
    parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')
    parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')
    opt = parser.parse_args()

这里面主要是一些训练的参数 (建议workers 中的default设置为0 这是管理线程的)

YOLOv5 神经网络训练(本地训练)

tensorboard:可视化工具

hyperparameters:超参数值

wandb:建议你安装wandb库

再讲一下main函数中的参数

--weights:训练好的模型参数路径(如果从头训练 则可以赋值为空)
--cfg:关于模型的配置 可以在models中查看,赋值为相对路径

YOLOv5 神经网络训练(本地训练)
--data:训练数据集路径 (coco128数据集下载地址可以在coco128.yaml中查看 https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip)也可以选择其他数据集都在data文件夹下的yaml文件中查看下载路径

YOLOv5 神经网络训练(本地训练)
--hyp:超参数 如上图 scratch为冲头开始的文件,finetune是对模型进行微调
--epochs:训练多少次 步长
--batch-size:把多少个数据打包成一个数据集送到网络中
--img-size:分别设置训练集和测试集的图片大小
--rect:矩阵训练方式(可以参考一下Rect函数详解_coder_Alger的博客-CSDN博客_rect函数)
--resume:是否在当前训练的模型基础上继续进行训练(默认false)需要指定训练模型的位置(yolov5在这个文件夹下面)

YOLOv5 神经网络训练(本地训练)
--nosave:在模型训练过程中 为ture就是保存最后一次训练的权重数据(核)为pt文件
--notest:是否在最后一个核进行测试
--noautoanchor:是否采用锚点(锚点是网页制作中超级链接的一种,又叫命名锚记,像一个迅速定位器一样,是一种页面内的超级链接,运用相当普遍。使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部。然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位置。创建到命名锚记的链接的过程分为两步。首先,创建命名锚记,然后创建到该命名锚记的链接)默认开启
--evolve:对参数进行进化
--bucket:实现下载作者存放在谷歌云盘上的一些数据(默认是false)
--cache-images:是否对图片进行缓存以至于更好的训练
--image-weights:对训练效果不好的图片加一些相关的权重
--device:cuda device, i.e. 0 or 0,1,2,3 or cpu
--multi-scale:对图片尺寸进行变换
--single-cls 训练数据集是单类别还是多类别 多类别为false
--adam:优化器 true选择adam优化器 false选用随机梯度下降
--sync-bn:多GPU设置
--local_rank:多GPU设置
--workers:是否多线程运行
--project:保存在哪里
--entity:W&B库
--name:结果保存名字
--exist-ok:结果是否保存到一个文件中(是否增加文件存储结果)
--quad:ture使用LoadImagesAndLabels.collate_fn4处理数据 false使用LoadImagesAndLabels.collate_fn处理数据(可以参考what is the new quad dataloader? · Issue #1898 · ultralytics/yolov5 · GitHub)
--linear-lr:如果开启 学习速率就会按照
lf = lambda x: (1 - x / (epochs - 1)) * (1.0 - hyp['lrf']) + hyp['lrf']

的线性方式处理,不开启按照余弦方式处理

lf = one_cycle(1, hyp['lrf'], epochs)
--label-smoothing:标签平滑防止过拟合的情况发生
--upload_dataset:W&B库
--bbox_interval:W&B库
--save_period:对模型打印一些日志 默认值为-1
--artifact_alias:还没实现的变量

Original: https://blog.csdn.net/qq_56630461/article/details/124499667
Author: Indulge in the deam
Title: YOLOv5 神经网络训练(本地训练)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/691016/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球