在训练文件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 这是管理线程)
运行后出现
tensorboard:可视化工具
hyperparameters:超参数值
wandb:建议你安装wandb库
再讲一下main函数中的参数
--weights:训练好的模型参数路径(如果从头开始训练 则可以赋值为空)
--cfg:模型配置 可以在models中查,赋值为相对路径
--data:训练数据集路径 (coco128数据集下载地址coco128.yaml中查看 https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip)也可以选择其他数据集data文件夹下的yaml查看文件中的下载路径
--hyp:超参数 如上图 scratch为冲头开始的文件,finetune微调模型
--epochs:训练多少次 步长
--batch-size:将多少数据打包成一个数据集中在网络中
--img-size:分别设置训练集和测试集的图片大小
--rect:矩阵训练方法(可参考)Rect函数详解_coder_Alger的博客-CSDN博客_rect函数)
--resume:是否在当前训练模型的基础上继续训练(默认情况下)false)训练模型的位置需要指定(yolov在这个文件夹下)
--nosave:在模型训练过程中 为ture保存最后一次训练的权重数据(核)pt文件
--notest:是否在最后一个核进行测试
--noautoanchor:是否使用锚点(锚点是网页制作中的一种超级链接,也叫命名锚点,就像快速定位器一样,是页面中的超级链接,应用相当广泛。使用命名锚可以在文档中设置标记,通常放在文档的特定主题或顶部。然后可以创建这些命名锚定链接,可以快速将访问者带到指定位置。创建命名锚定链接的过程分为两个步骤。首先,创建命名锚记,然后创建命名锚记的链接)默认打开
--evolve:进化参数
--bucket:在谷歌云盘上下载作者存储的一些数据(默认为false)
--cache-images:是否缓存图片以更好地训练pre>--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:还没实现的变量