参数详解:yolov7模型 训练部分(train.py)

这篇具有很好参考价值的文章主要介绍了参数详解:yolov7模型 训练部分(train.py)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

yolov7代码仓库:

GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors本人认为yolov7有三个重要的配置文件

第一个是cfg→training下面的yolov7配置文件具体见本人写的博客yolov7.yaml文件详解_把爱留给SCI的博客-CSDN博客

第二个是data文件下的数据相关配置文件和超参数配置文件

参数详解:yolov7模型 训练部分(train.py)

train参数详解🚀

 1、weights(权重)

parser.add_argument('--weights', type=str, default='yolov7.pt', help='initial weights path')

网络权重,默认是'yolov7.pt'可根据需求设置不同尺寸大小的权重

2、cfg(权重的一些重要信息文件)

parser.add_argument('--cfg', type=str, default='yolov7.yaml', help='model.yaml path')

指定模型配置文件路径的;源码里面提供了几个配置文件,配置文件里面指定了一些参数信息和backbone的结构信息。

3、data(数据)

# COCO 2017 dataset http://cocodataset.org

# download command/URL (optional)
download: bash ./scripts/get_coco.sh

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ./coco/train2017.txt  # 118287 images
val: ./coco/val2017.txt  # 5000 images
test: ./coco/test-dev2017.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# number of classes
nc: 80

# class names
names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
         'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
         'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
         'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
         'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
         'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
         'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
         'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
         'hair drier', 'toothbrush' ]

里面核心信息是数据集的种类以及每个种类对应的名称

4、hyp(超参数)

里面包含了超参数的信息

参数详解:yolov7模型 训练部分(train.py)

5、 epochs(训练的代数)

parser.add_argument('--epochs', type=int, default=300)

一般默认为300轮

6、batch-size

parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')

每批次的输入数据量;default=-1将时自动调节batchsize大小,default=16,代表一次输入16张图片进行训练。

7、img-size

parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')

训练集和测试集输入的图片像素大小

8、rect

parser.add_argument('--rect', action='store_true', help='rectangular training')

是否采用矩阵推理的方式去训练模型

采用矩阵推理的话就不要求送入的训练的图片是正方形了

9、resume(断点训练)

parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')

断点续训:即是否在之前训练的一个模型基础上继续训练,default 值默认是 false

假如你想进行断点训练,那就先将default=True

随后输入

python train.py --resume +训练的模型保存的路径

10、nosave

parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')

是否保存最后一轮的pt文件,我们默认保存的是best.pt和last.pt

11、notest

parser.add_argument('--notest', action='store_true', help='only test final epoch')

只在最后一轮计算mAP值;在我们平时的训练中我们在每一轮训练结束的时候都会计算mAP值,如果开始此参数,那么只在最后一轮计算mAP值。不建议动此参数

12、noautoanchor

parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')

是否禁用自动锚框;默认是开启的,可以简化训练过程;

在这里解释一下anchor

人工标注的边框(bounding box,有时简写bbox 或者 box)是人告诉机器的正确答案叫ground truth bounding box,简写 gt bbox或者gt box,表示已知正确的意思。
程序生成的一堆box,想要预测正确的gt box,这些生成的box叫anchor。

在这里介绍两个指标

bpr(best possible recall)
aat(anchors above threshold)

当配置文件中的anchor计算bpr(best possible recall)小于0.98时才会重新计算anchor。
best possible recall最大值1,如果bpr小于0.98,程序会根据数据集的label自动学习anchor的尺寸

13、evolve

parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')

超参数进化,模型提供的默认参数是通过在COCO数据集上使用超参数进化得来的(由于超参数进化会耗费大量的资源和时间,如果默认参数训练出来的结果能满足你的使用,使用默认参数也是不错的选择)

14、bucket

parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')

谷歌云盘;通过这个参数可以下载谷歌云盘上的一些东西。

15、cache-images

parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')

是否提前缓存图片到缓存,以加快训练速度,默认为False

16、image-weights

parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')

是否启用加权训练图像,默认为Flase,主要为了解决样本图片不平衡问题;开启后会对上一轮训练不好的图片,在下一轮中增加权重。

17、device

parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

训练模型的设备,大佬们才会用的参数

18、multi-scale

parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')

采用多尺度训练,默认是False,设置几种不同的图片输入尺度,训练时每隔一定的ierations随机选取一种尺度训练

19、single-cls

parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')

设定训练的数据集是单类别还是多类别,默认为多类别

20、adam

parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')

选用Adam优化器

21、sync-bn

parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')

同步Batch Normalization,是否跨多设备进行Batch Normalization

22、local_rank

parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')

DDP参数,请勿修改

使用DDP进行单机多卡训练时,通过多进程在多个GPU上复制模型,每个GPU都由一个进程控制,同时需要将参数local_rank传递给进程,用于表示当前进程使用的是哪一个GPU。

详情见:PyTorch单机多卡训练(DDP-DistributedDataParallel的使用)备忘记录_Curya的博客-CSDN博客

23、workers

parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')

指数据装载时cpu所使用的线程数,默认为8。

在这里说一下和batch--size的区别,batch--size是指训练一组放入多少张照片,消耗的是GPU

此参数workers消耗的是CPU

24、project

parser.add_argument('--project', default='runs/train', help='save to project/name')

训练模型存放的路径

25、entity

parser.add_argument('--entity', default=None, help='W&B entity')

wandb 库对应的东西

26、name

parser.add_argument('--name', default='exp', help='save to project/name')

用于设定保存的模型文件名

27、exist-ok

parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')

用于设定预测结果的保存存在位置情况

一般为true

当为 false,在新命名的文件夹下保存

当为 true,在 name 指定文件夹下保存,源码中保存在 exp 文件夹下

28、quad

parser.add_argument('--quad', action='store_true', help='quad dataloader')

简单理解,生效后可以在比前面 “--img-size” 部分设置的训练测试数据集更大的数据集上训练。

好处是在比默认 640 大的数据集上训练效果更好

副作用是在 640 大小的数据集上训练效果可能会差一些

29、linear-lr

parser.add_argument('--linear-lr', action='store_true', help='linear LR')

用于对学习速率进行调整

默认为 false,含义是通过余弦函数来降低学习率。

30、label-smoothing

parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')

用于对标签进行平滑处理。

作用是防止在分类算法中过拟合情况的产生。

31、upload_dataset

parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')

wandb 库对应的东西,不必考虑

32、bbox_interval

parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')

wandb 库对应的东西,不必考虑

33、save_period

parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')

用于记录训练日志信息,int 型,默认为 -1

34、artifact_alias

parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')

可能以后更新的参数

35、freeze

parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone of yolov7=50, first3=0 1 2')

“冻结”层指的是该层不参加网络训练,yolov7的冻结层是50层文章来源地址https://www.toymoban.com/news/detail-439860.html

到了这里,关于参数详解:yolov7模型 训练部分(train.py)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模型训练之train.py代码解析

    作者:安静到无声 个人主页 这段代码使用了Python 2.x的__future__模块来导入Python 3.x的一些特性。在Python 2.x中,使用print语句来输出内容,而在Python 3.x中,print语句被变成了print()函数。因此,在Python 2.x中,如果要使用print()函数来输出内容,就需要导入__future__模块中的print_fun

    2024年02月14日
    浏览(30)
  • 训练yolov7报错AssertionError: train: No labels in XX\train.cache. Can not train without labels

    原因:自己的数据集文件夹和dataset中的数据集名称不同。 代码中要求的文件名是Images和Labels,可能自己命名的是image和label 参考:https://code84.com/38177.html

    2024年02月11日
    浏览(31)
  • YOLOV7训练模型分析

    训练后在runs/train文件下生成了包含这些文件或文件夹: 训练后会得到一个权重文件(weights),weights文件是YOLOv7模型的核心,它保存了模型的训练结果,也就是训练好的模型,是进行目标检测的必要文件。该文件内包括best.pt和last.pt,一般使用best.pt去进行推理。这个文件包含

    2024年02月06日
    浏览(42)
  • 模型实战(3)之YOLOv7实例分割、模型训练自己数据集

    下载yolov7实例分割模型: 安装环境

    2023年04月08日
    浏览(33)
  • LLMs之Colossal-LLaMA-2:源码解读(train.py文件)基于给定数据集实现持续预训练LLaMA-2—解析命令行参数→初始化配置(分布式训练环境colossalai+训练日志+加速插

    LLMs之Colossal-LLaMA-2:源码解读(train.py文件)基于给定数据集实现持续预训练LLaMA-2—解析命令行参数→初始化配置(分布式训练环境colossalai+训练日志+加速插件)→数据预处理(初始化分词器+数据处理器+数据加载器)→模型训练(初始化模型/优化器/学习率调度器/梯度检查点/Flash-Att

    2024年02月06日
    浏览(30)
  • YOLOv8训练参数详解

    首先罗列一下官网提供的全部参数。 model: 模型文件的路径。这个参数指定了所使用的模型文件的位置,例如 yolov8n.pt 或 yolov8n.yaml。 选择.pt和.yaml的区别 若我们选择 yolov8n.pt这种.pt类型的文件,其实里面是包含了模型的结构和训练好的参数的,也就是说拿来就可以用,就已经

    2024年02月16日
    浏览(28)
  • 解决yolo3目标检测训练过程中train.py运行问题

    yolo3是一种广泛使用的目标检测算法,它在计算机视觉领域具有很高的准确率和性能。然而,在使用yolo3进行目标检测训练时,有时会出现train.py运行问题。本文将探讨如何解决这个问题。 首先,让我们了解一下训练过程中可能遇到的常见问题: 缺少依赖项:运行train.py之前,

    2024年02月15日
    浏览(28)
  • YOLOV7算法(一)test.py代码学习记录

    代码链接 :https://github.com/WongKinYiu/yolov7 输入指令 参数解析 上述代码中的参数基本与源码保持一致,只是修改了部分路径。 coco.yaml 如果已经提前下载好了coco2017数据集,可以注释掉代码: 根据解析参数,执行test() 模型加载 如果代码在gpu上运行,则将所有浮点参数和缓冲转

    2024年02月11日
    浏览(31)
  • 深度学习中用来训练的train.py 探究学习2.1( 数据预处理)

    下列为mmcls中数据预处理部分  train_pipeline是一个训练过程的配置列表,用于定义数据预处理的步骤。下面是train_pipeline中各个步骤的介绍: 1. LoadImageFromFile:从文件中加载图像。 2. RandomResizedCrop:随机缩放裁剪图像到指定大小。 3. RandomFlip:以一定的概率随机水平翻转图像。

    2024年02月04日
    浏览(39)
  • LLM-LLaMA中文衍生模型:LLaMA-ZhiXi【没有对词表进行扩增、全参数预训练、部分参数预训练、指令微调】

    下图展示了我们的训练的整个流程和数据集构造。整个训练过程分为两个阶段: (1)全量预训练阶段。该阶段的目的是增强模型的中文能力和知识储备。 (2)使用LoRA的指令微调阶段。该阶段让模型能够理解人类的指令并输出合适的内容。   3.1 预训练数据集构建 为了在保

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包