当前位置: 首页 > news >正文

服装网站论文网站用户 微信商城

服装网站论文,网站用户 微信商城,门面商铺装修,易居房产网下载Ultralytics正在以惊人的速度吸收优秀的CV算法#xff0c;之前Ultralytics定位于YOLOV8#xff0c;但逐渐地扩展到支持其他版本的YOLO#xff0c;最新版本的ultralytics全面支持yolo5 yolo7 yolo8 yolo9 yolo10 yolo11#xff0c;包含模型的训练、验证、预测、部署等。毫无… Ultralytics正在以惊人的速度吸收优秀的CV算法之前Ultralytics定位于YOLOV8但逐渐地扩展到支持其他版本的YOLO最新版本的ultralytics全面支持yolo5 yolo7 yolo8 yolo9 yolo10 yolo11包含模型的训练、验证、预测、部署等。毫无疑问Ultralytics也会支持后续的YOLO版本比如yolo12、yolo13......本文介绍如何用Ultralytics训练自己的yolo5 yolo8 yolo9 yolo10 yolo11模型我们开门见山直接步入正题。 前言借助Ultralytics框架在自己的数据集上训练yolo5 yolo8 yolo9 yolo10 yolo11等模型首先需要配置好Ultralytics的环境如果不会配置Ultralytics环境可以参考本人主页的另一篇文章 提醒使用GPU训练会大幅度加快训练有英伟达GPU的一定要配置GPU训练环境没有英伟达显卡的只能采用CPU训练但是一般不建议。 GPU、CPU训练环境的配置具体见上面的文章链接 第一章节准备好数据集 配置好Ultralytics环境之后需要准备好YOLO格式的数据集也称txt格式该数据集可以通过数据集标注软件 labelme、labelimg对图片进行拉框标注得到。具体标注教程见本人主页的另外一篇文章 经过标注软件标注好的yolo数据集的格式通常为: class_id        x                y            w           h class_id: 类别的id编号 x: 目标的中心点x坐标(横向) /图片总宽度 y: 目标的中心的y坐标(纵向) /图片总高度 w:目标框的宽度/图片总宽度 h: 目标框的高度/图片总高度 下图为一张图片按照yolo格式进行标注的txt标注文件  在进行训练之前还需要对数据集进行划分一般是按照721的比例划分训练集train、验证集val、测试集test 或者按照82的比例划分训练集与验证集。 提醒用Ultralytics训练自己的模型必须至少要把数据集划分出训练集与验证集可以不划分测试集训练集与验证集不可或缺否则不能数据集进行模型训练。我这里只划分训练集与验证集并且训练集与验证集应该是下面的目录结构 train ├── images └── labels val ├── images └── labels 下面以葡萄叶片病虫害数据集为例给出训练集、验证集目录结构的参考示例 注意这里以葡萄叶片病虫害数据集为例其他的数据集比如什么安全帽数据集、机动车数据集.......只要数据集格式为YOLO目标检测数据集格式那么数据集训练教程都跟这里的葡萄叶片病虫害数据集训练教程是一模一样的。 在训练之前我们不仅要把数据集划分成训练集、验证集还需要给出类别标签yaml文件该文件是Ultralytics在训练过程中所必须的。也就是说一个完整的可以直接用于模型训练的数据集应该具有以下目录结构 data.yaml的内容如下图所示  其中train、val指定训练集与验证集的路径地址最好写成绝对路径  nc代表该数据集有几个类别我这里的葡萄叶片病虫害数据集有四个类别 names代表具体的类别名称。可以以数组的形式给出但请注意类别名称需要以英文或数字呈现不能含有任何特殊字符或者中文字符。 提醒yaml文件是必须的如果你拿到的数据集不含这个文件那么你要按照上面的格式自己手动写了书写时需要严格按照yaml文件的格式冒号后面是有一个空格的 第二章节开始训练 搞深度学习绝大部分都是在linux系统上进行炼丹的。考虑到有的读者可能对Linux不熟悉,本章节首先给出win系统训练教程然后再给出linux系统训练步骤。 注意在训练的过程中有英伟达显卡的一定要用GPU训练用CPU训练是特别缓慢的。 2.1 训练参数 只要安装好了ultralytics模型训练就变得非常简单。训练方式有多种可以通过py程序训练(自己写几行Python代码)也可以在命令行训练(无需书写任何python代码)。 我们这里以py程序训练为例 无论是在win系统还是linux系统训练的代码基本都是一致的只有极个别参数会因为系统的不同出现差异。 下面我以yolov8训练教程为例其余yolo5 yolo9 yolo10 yolo11等是一样的步骤 from ultralytics import YOLO# 这里有三种训练方式三种任选其一#第一种根据yaml文件构建一个新模型进行训练,若对YOLO8网络进行了修改比如添加了注意力机制适合选用此种训练方式。但请注意这种训练方式是重头训练(一切参数都要自己训练),训练时间、资源消耗都是十分巨大的 model YOLO(yolov8n.yaml) # build a new model from YAML#第二种加载一个预训练模型在此基础之前上对参数进行调整。这种方式是深度学习界最最主流的方式。由于大部分参数已经训练好我们仅需根据数据集对模型的部分参数进行微调因此训练时间最短计算资源消耗最小。 model YOLO(yolov8n.pt) # load a pretrained model (recommended for training)#第三种:根据yaml文件构建一个新模型然后将预训练模型的参数转移到新模型中然后进行训练对YOLO8网络进行改进的适合选用此种训练方式而且训练时间不至于过长 model YOLO(yolov8n.yaml).load(yolov8n.pt) # build from YAML and transfer weights# Train the model #data参数指定数据集yaml文件(我这里data.yaml与train、val文件夹同目录) #epochs指定训练多少轮 #imgsz指定图片大小 results model.train(datadata.yaml, epochs100, imgsz640) 上面就是模型训练代码那么简单吗是不是搞错了没错在ultralytics框架的封装之下训练代码就下面这三行。  from ultralytics import YOLO model YOLO(yolov8n.pt)  results model.train(datadata.yaml, epochs100, imgsz640) 有人可能有疑问了。上述训练方式一的yolov8n.yaml是哪来的怎么得到里面的内容又是什么 回答在ultralytics\cfg\models\v8目录下 可能又有人有疑问了 ultralytics\cfg\models\v8目录下明明只有yolov8.yaml没有yolov8n.yaml呀。这一点后文再解答 任何获得回答可以从github上下载ultralytics源码得到或者conda、pip安装ultralytics时你的电脑本地也有ultralytcis源码例如我这里用conda建立了名为yolo8虚拟环境在这个虚拟环境下pip install ultralytics安装了ultralytics源码则源码在本地路径为anaconda安装路径/envs/你自己建立的虚拟环境名/Lib/site-packages/ultralytics 上述训练方式二的yolov8n.pt预训练权重是哪里来的 回答可以从ultralytics官方网站下载得到。地址YOLOv8 - Ultralytics YOLO Docs model.train()函数可以指定的训练参数有很多如下表所示  Key Value Description model None path to model file, i.e. yolov8n.pt, yolov8n.yaml data None path to data file, i.e. coco128.yaml epochs 100 number of epochs to train for time None number of hours to train for, overrides epochs if supplied patience 50 epochs to wait for no observable improvement for early stopping of training batch 16 number of images per batch (-1 for AutoBatch) imgsz 640 size of input images as integer save True save train checkpoints and predict results save_period -1 Save checkpoint every x epochs (disabled if 1) cache False True/ram, disk or False. Use cache for data loading device None device to run on, i.e. cuda device0 or device0,1,2,3 or devicecpu workers 8 number of worker threads for data loading (per RANK if DDP) project None project name name None experiment name exist_ok False whether to overwrite existing experiment pretrained True (bool or str) whether to use a pretrained model (bool) or a model to load weights from (str) optimizer auto optimizer to use, choices[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto] verbose False whether to print verbose output seed 0 random seed for reproducibility deterministic True whether to enable deterministic mode single_cls False train multi-class data as single-class rect False rectangular training with each batch collated for minimum padding cos_lr False use cosine learning rate scheduler close_mosaic 10 (int) disable mosaic augmentation for final epochs (0 to disable) resume False resume training from last checkpoint amp True Automatic Mixed Precision (AMP) training, choices[True, False] fraction 1.0 dataset fraction to train on (default is 1.0, all images in train set) profile False profile ONNX and TensorRT speeds during training for loggers freeze None (int or list, optional) freeze first n layers, or freeze list of layer indices during training lr0 0.01 initial learning rate (i.e. SGD1E-2, Adam1E-3) lrf 0.01 final learning rate (lr0 * lrf) momentum 0.937 SGD momentum/Adam beta1 weight_decay 0.0005 optimizer weight decay 5e-4 warmup_epochs 3.0 warmup epochs (fractions ok) warmup_momentum 0.8 warmup initial momentum warmup_bias_lr 0.1 warmup initial bias lr box 7.5 box loss gain cls 0.5 cls loss gain (scale with pixels) dfl 1.5 dfl loss gain pose 12.0 pose loss gain (pose-only) kobj 2.0 keypoint obj loss gain (pose-only) label_smoothing 0.0 label smoothing (fraction) nbs 64 nominal batch size overlap_mask True masks should overlap during training (segment train only) mask_ratio 4 mask downsample ratio (segment train only) dropout 0.0 use dropout regularization (classify train only) val True validate/test during training plots False save plots and images during train/val 下面指出几个比较重要的训练参数 1. epochs  epochs: 训练的轮数。这个参数确定了模型将会被训练多少次每一轮都遍历整个训练数据集。训练的轮数越多模型对数据的学习就越充分但也增加了训练时间。 选取策略 默认是100轮数。但一般对于新数据集我们还不知道这个数据集学习的难易程度可以加大轮数例如300来找到更佳性能。 2.data 指定数据集的yaml文件yaml文件中定义了训练集、验证集的路径标签类别标签类别个数等 3. patience patience: 早停的等待轮数。在训练过程中如果在一定的轮数内没有观察到模型性能的明显提升就会停止训练。这个参数确定了等待的轮数如果超过该轮数仍没有改进则停止训练。 早停 早停能减少过拟合。过拟合(overfitting)指的是只能拟合训练数据, 但不能很好地拟合不包含在训练数据中的其他数据的状态。 4. batch batch: 每个批次中的图像数量。在训练过程中数据被分成多个批次进行处理每个批次包含一定数量的图像。这个参数确定了每个批次中包含的图像数量。特殊的是如果设置为**-1**则会自动调整批次大小至你的显卡能容纳的最多图像数量。 选取策略 一般认为batch越大越好。因为我们的batch越大我们选择的这个batch中的图片更有可能代表整个数据集的分布从而帮助模型学习。但batch越大占用的显卡显存空间越多所以还是有上限的。 5. imgsz imgsz: 输入图像的尺寸。这个参数确定了输入图像的大小。可以指定一个整数值表示图像的边长也可以指定宽度和高度的组合。例如640表示图像的宽度和高度均为640像素。 选取策略 如果数据集中存在大量小对象增大输入图像的尺寸imgsz可以使得这些小对象从高分辨率中受益更好的被检测出。 6. device  device: 训练运行的设备。该参数指定了模型训练所使用的设备例如使用 GPU 运行可以指定为 cuda device0或者使用多个 GPU 运行可以指定为 device0,1,2,3如果没有可用的 GPU可以指定为 devicecpu 使用 CPU 进行训练。 7. workers workers: 数据加载时的工作线程数。在数据加载过程中可以使用多个线程并行地加载数据以提高数据读取速度。这个参数确定了加载数据时使用的线程数具体的最佳值取决于硬件和数据集的大小。 windows系统注意设置为0windows系统下需设置为0否则会报错 RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase。 这是因为在linux系统中可以使用多个子进程加载数据而在windows系统中不能。 8. optimizer optimizer: 选择要使用的优化器。优化器是深度学习中用于调整模型参数以最小化损失函数的算法。可以选择不同的优化器如 ‘SGD’、‘Adam’、‘AdamW’、‘RMSProp’根据任务需求选择适合的优化器。 更多训练参数可参考ultralytics官网受限于篇幅这里不再一一介绍 像上面介绍的训练代码model.train(datadata.yaml, epochs100, imgsz640) 只指定了dataepochs,imgsz。如果你有指定其他训练参数的需要可以参考上面的训练参数在train()函数中添加比如训练指定优化器 model.train(datadata.yaml, epochs100, imgsz640,optimizerSGD) 2.2 在win系统中进行训练 在上面的章节简单介绍了一下使用python脚本训练模型的三种方式 from ultralytics import YOLO # 这里有三种训练方式三种任选其一 #第一种根据yaml文件构建一个新模型进行训练,若对YOLO8网络进行了修改比如添加了注意力机制适合选用此种训练方式。但请注意这种训练方式是重头训练(一切参数都要自己训练),训练时间、资源消耗都是十分巨大的 model YOLO(yolov8n.yaml)  # build a new model from YAML #第二种加载一个预训练模型在此基础之前上对参数进行调整。这种方式是深度学习界最最主流的方式。由于大部分参数已经训练好我们仅需根据数据集对模型的部分参数进行微调因此训练时间最短计算资源消耗最小。 model YOLO(yolov8n.pt)  # load a pretrained model (recommended for training) #第三种:根据yaml文件构建一个新模型然后将预训练模型的参数转移到新模型中然后进行训练对YOLO8网络进行改进的适合选用此种训练方式而且训练时间不至于过长 model YOLO(yolov8n.yaml).load(yolov8n.pt)  # build from YAML and transfer weights # Train the model #data参数指定数据集yaml文件(我这里data.yaml与train、val文件夹同目录) #epochs指定训练多少轮 #imgsz指定图片大小 results model.train(datadata.yaml, epochs100, imgsz640) 2.3.1 加载预训练模型训练 在开始训练之前文件参考目录如下 我这里直接加载yolov8n预训练模型进行训练上图中训练代码train.py内容如下 from ultralytics import YOLO modelYOLO(yolov8n.pt) model.train(data./data.yaml,imgsz(640,640),workers0,batch32,epochs60) 需要注意的是目录下最好提前下载好预训练模型我这里是yolov8n.pt)如果没有提前下载好运行train.py还是会ultralytics官网下载由于外网的缘故此时可能会出现网络问题。 yolo8n.pt预训练权重下载地址 YOLOv8 - Ultralytics YOLO Docs 注意yolo8默认自动开启混合精度训练并且是使用yolo8n.pt进行的也就是说即使使用yolo8s,m等预训练模型训练自己的数据集,由于混合精度训练的需要都会加载yolo8n但请不要错误认为原本想要用yolov8s.pt训练数据集但看到控制台下载、加载了yolov8n.pt就认为一直是yolo8n去训练加载哪个模型就是用哪个模型去训练。像modelYOLO“yolov8s.pt是加载的yolo8s就是用yolo8s去训练的。 如果你想要加载yolo8s yolo8m这些除yolo8n外的预训练模型训练自己的数据集比如我加载yolo8s.pt 训练自己的数据集需要在项目目录下提前下载好yolo8n(混合精度需要) yolo8s(训练自己的数据集需要)这两个模型如果缺少yolo8n只有yolo8s,那么在开始训练之前会下载yolo8n看到了下载yolo8n 此时好多人都错误的认为配置不生效一直是用yolo8n训练之类的实际上你加载哪个模型就是用哪个模型去训练你的数据集只不过是你的项目目录下缺少用于混合精度的yolo8n所以要去下载。下面给出使用yolo8s预训练模型训练自己的数据集的参考代码和目录结构 from ultralytics import YOLO modelYOLO(yolov8s.pt) model.train(data./data.yaml,imgsz(640,640),workers0,batch32,epochs60) 2.3.2 加载yaml文件训练 在开始训练之前文件参考目录如下 我这里选择使用yolo8s 进行训练train.py训练代码参考如下 from ultralytics import YOLO modelYOLO(yolov8s.yaml) model.train(data./data.yaml,imgsz(640,640),workers0,batch32,epochs60) 其中上图中yolov8s.yaml是从ultralytics\cfg\models\v8目录下的yolov8.yaml复制过来的并把yolov8.yaml重命令为 yolov8s.yaml,也就是文件名加一个后缀s。在训练之前ultralytics框架会根据这个后缀确定训练到底采用哪种网络比如yolov8x.yaml是指定yolo8x网络训练而不指定后缀(例如直接加载yolov8.yaml)默认还是采用8n网络训练。 2.3.3 加载yaml文件和预训练权重进行训练 在开始训练之前文件参考目录如下 我这里还是选择使用yolo8s 进行训练用yaml文件定义一个新网络模型并把yolov8s.pt的权重转移到新网络中train.py训练代码参考如下 from ultralytics import YOLO model YOLO(yolov8s.yaml).load(yolov8s.pt) model.train(data./data.yaml,imgsz(640,640),workers0,batch32,epochs60) 2.3.4 开始训练 不论上述哪种方式我们在anaconda中切换到提前已经配置好的ultralytics环境(我这里在anaconda中建立的ultralytics环境名称为yolo8)然后python命令运行train.py 之后控制台窗口会有一系列的日志输出 此时训练成功。经过一段时间等待之后在目录下的runs文件夹下会自动生成训练过程记录包含模型权重、混淆矩阵、PR曲线、loss曲线等 上面是以yolo8为例下面再以yolo10为例给出训练代码。 from ultralytics import YOLO# 这里有三种训练方式三种任选其一#第一种根据yaml文件构建一个新模型进行训练,若对YOLO10网络进行了修改比如添加了注意力机制适合选用此种训练方式。但请注意这种训练方式是重头训练(一切参数都要自己训练),训练时间、资源消耗都是十分巨大的 model YOLO(yolov10n.yaml) # build a new model from YAML#第二种加载一个预训练模型在此基础之前上对参数进行调整。这种方式是深度学习界最最主流的方式。由于大部分参数已经训练好我们仅需根据数据集对模型的部分参数进行微调因此训练时间最短计算资源消耗最小。 model YOLO(yolov10n.pt) # load a pretrained model (recommended for training)#第三种:根据yaml文件构建一个新模型然后将预训练模型的参数转移到新模型中然后进行训练对YOLO8网络进行改进的适合选用此种训练方式而且训练时间不至于过长 model YOLO(yolov10n.yaml).load(yolov10n.pt) # build from YAML and transfer weights# Train the model #data参数指定数据集yaml文件(我这里data.yaml与train、val文件夹同目录) #epochs指定训练多少轮 #imgsz指定图片大小 results model.train(datadata.yaml, epochs100, imgsz640) 说明ultralytics最新版本的全面支持yolo5-yolo11,由于版本向下兼容一般下载最新版本的ultralytics即可。ultralytics 8.0.x 8.1.x 8.2.x版本支持的yolo有所区别比如ultralytics8.0.x一般支持yolo5 yolo8具体ultralytics版本支持的yolo版本的差异请去ultralytics官网查询 由于ultralytcis版本更新很快这个框架在以惊人的速度吸收其他AI算法如yolo-world、SAM等后续版本的YOLO训练代码可能会有所差异这里给出ultralytics网站地址:Models Supported by Ultralytics - Ultralytics YOLO Docs 官网的文档最具权威性与时效性参考官方的教程总不会出错。 同理 yolo9 yolo11等训练步骤也是类似的利用了ultralytics框架训练不同版本的yolo仅仅是加载模型所有区别。具体yolo9 yolo11等训练代码可以去ultralytics官网查看 2.3 在linux系统中进行训练 在linux系统中我们可以加大workers(数据加载时的工作线程数)从而加快训练速度代码跟win系统基本保持一致下面仅给出加载预训练模型的方式其余加载yaml文件等方式不再给出示例参考训练代码如下 from ultralytics import YOLO modelYOLO(yolov8n.pt) model.train(data./data.yaml,imgsz(640,640),workers16,batch32,epochs60) 值得注意的是无论是在win系统中还是linux系统中都要根据自己电脑、服务器的算力去选择合适的workers和batch设置过小训练速度慢设置过大会out of memory.
http://www.yayakq.cn/news/5033/

相关文章:

  • 广州网站建设加盟什么网站赚的钱最多
  • 沂南建设局网站网站域名查询注册
  • 网站维护提示页面模板离我最近的物流公司
  • 在互联网上建设网站可选择的方案有领导高度重视门户网站建设
  • 官网设计比较好看的网站网站文章页301重定向怎么做
  • 吉林网站建设公司展厅装修效果图
  • 网站建设方案标书深圳公司注册登记中心
  • 怎么做网站自动响应那个网站做玉石最专业
  • 网盘网站建设设计专业自学网站
  • 肃宁县网站建设公司万网是什么网站
  • 怎么评价网站做的好坏个人网站名可以和别人一样吗
  • 网站开发询价表模板下载网站系统怎么做
  • wordpress有识图插件长沙谷歌优化
  • 网站后台维护一般要怎么做2345小游戏
  • 做百度网站那家好wordpress 自定义 分类
  • 怎么样自己做最简单的网站潍坊企业建站系统
  • 金华网站建设公司哪家好vs网站制作教程
  • 福建省建设职业管理中心网站小型办公室网络组建
  • 中国建筑官网首页seo线下培训课程
  • 绮思网站建设qswoo做 理财网站好
  • 网站开发和前端和数据媒体打开国外网站很慢
  • 深圳微商城网站设计制作wordpress 用ip访问
  • dz网站如何搬家虚拟主机可以干什么
  • html5 微信网站企业类展厅设计公司
  • 单页网站内链接黑白风格网站
  • 网站建设有什么看法网站电脑培训班附近有吗
  • windows搭建php网站盱眙在仕德伟做网站的有几家
  • 媒体网站的销售怎么做wordpress 数据库地址
  • 做的比较好网站有哪些一站式网站
  • 用wordpress做音乐网站德州市平原县建设局网站