YOLOV5-7.0源码阅读(一)

def parse_opt(known=False):
   '''
    store_false,则默认值是True,store_true,则默认值是False
    '--weights'训练的权重路径,可以使用自己训练的权重,也可以使用官网提供的权重
    '--cfg', 模型参数配置文件路径
    '--data',配置数据文件路径, 包括image/label/classes等信息, 训练自己的文件, 需要作相应更改, 如果设置了只显示个别类别
    即使用了--classes = 0 或二者1, 2, 3等, 则需要设置该文件,数字和类别相对应才能只检测某一个类
    '--hyp',超参数设置
    '--epochs',模型训练的最大轮数
    '--batch-size',模型训练时batch的大小,-1为自动定义batch的size
    '--imgsz', '--img', '--img-size', 训练,验证图像的size(pixel)
    '--rect',否采用Rectangular training/inference(是否采用矩阵推理的方式去训练模型),一张图片为长方形,我们在将其送入模型前需要将其resize到要求的尺寸,所以我们需要通过补灰padding来变为正方形的图。
            但是这个操作会生成过多的冗余信息影响训练效果。
            所谓矩阵推理就是不再要求你训练的图片是正方形了;矩阵推理会加速模型的推理过程,减少一些冗余信息。
    '--resume',接着上一次中断的结果继续训练
    '--nosave',只保存最后一次 pt 文件,默认False
    '--noval',只在最后一次进行测试,默认False
    '--noautoanchor',是否禁用自动调整anchor文件,默认False
    '--noplots',开启这个参数后将不保存绘图文件。
    '--evolve',遗传超参数进化;yolov5使用遗传超参数进化,提供的默认参数是通过在COCO数据集上使用超参数进化得来的(也就是下图这些参数)。
    由于超参数进化会耗费大量的资源和时间,所以不要动这个参数。
    '--bucket',谷歌云盘bucket,一般不会用到
    '--cache',是否提前缓存图片到内存,以加快训练速度
    '--image-weights',是否启用加权图像策略,默认是不开启的;主要是为了解决样本不平衡问题;开启后会对于上一轮训练效果不好的图片,在下一轮中增加一些权重;,
    '--device',训练使用的GPU选择,cpu;0(表示一个gpu设备cuda:0);0,1,2,3(多个gpu)
    '--multi-scale',是否进行多尺度训练,一般设置几种不同尺度的图片,训练时每隔一定iterations随机选取一种尺度训练
          这样训练出来的模型鲁棒性强,可以接受任意大小的图片作为输入,使用尺度小的图片测试速度会快些,但准确度低,用尺度大的图片测试速度慢,但是准确度高
    '--single-cls',多类别的数据集是否作为一个类别训练,默认False
    --optimizer',优化器选择,默认SGD
    '--sync-bn',是否开启跨卡同步BN;开启参数后即可使用SyncBatchNorm多 GPU 进行分布式训练。
    '--workers',最大worker数量;这里经常出问题,Windows系统报错时可以设置成0 00。
    '--project',训练结果保存的文件夹路径
    '--name',训练结果保存的文件夹名称
    '--exist-ok'训练结果文件夹project/name存在时,是否覆盖,默认否
    '--quad',四元数据加载器
    '--cos-lr',用于对学习率进行调整,余弦函数降低学习率
    '--label-smoothing',对label进行平滑处理,防止过拟合
    '--patience',早停止忍耐次数 / 默认100次不更新就停止训练
    '--freeze', 冻结训练网络的层,default = [0]意思是网络的第0层不训练,backbone = 10,前三层不训练可设为[0 1 2]。
    数据量大的情况下,建议不设置这个参数
    '--save-period', pt保存的频率,每x个epochs保存一次
    '--local_rank', 进程编号 / 多卡使用
    '--seed',这是v6.2版本更新的一个非常重要的参数,如果你使用torch>=1.12.0的单GPU训练, 那你的训练结果完全可再现。
    '--local_rank',DistributedDataParallel 单机多卡训练,单GPU设备不需要设置;

    '--mask-ratio',
    '--no-overlap',
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s-seg.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
    parser.add_argument('--data', type=str, default=ROOT / 'data/blade-seg.yaml', help='dataset.yaml path')
    parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=1000, help='total training epochs')
    parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch')
    parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')
    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('--noval', action='store_true', help='only validate final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor')
    parser.add_argument('--noplots', action='store_true', help='save no plot files')
    parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache', type=str, nargs='?', const='ram', help='image --cache ram/disk')
    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('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--workers', type=int, default=0, help='max dataloader workers (per RANK in DDP mode)')
    parser.add_argument('--project', default='runs/train-seg', help='save to project/name')
    parser.add_argument('--name', default='tmp-', 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('--cos-lr', action='store_true', help='cosine LR scheduler')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')
    parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2')
    parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')
    parser.add_argument('--seed', type=int, default=0, help='Global training seed')
    parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify')

    # Instance Segmentation Args
    parser.add_argument('--mask-ratio', type=int, default=4, help='Downsample the truth masks to saving memory')
    parser.add_argument('--no-overlap', action='store_true', help='Overlap masks train faster at slightly less mAP')

    return parser.parse_known_args()[0] if known else parser.parse_args()

猜你喜欢

转载自blog.csdn.net/Bolly_He/article/details/128786819