代做网站推广的公司店面设计公司
web/
2025/9/27 9:08:34/
文章来源:
代做网站推广的公司,店面设计公司,大悟县城乡建设局网站,桥南做网站文章目录 1、前言2、Backbone网络3、YOLOv8模型训练代码3.1、模型大小选择3.2、训练参数设置 4、训练参数说明5、目标检测系列文章 1、前言
YOLO 因为性能强大、消耗算力较少#xff0c;一直以来都是实时目标检测领域的主要范式。该框架被广泛用于各种实际应用#xff0c;包… 文章目录 1、前言2、Backbone网络3、YOLOv8模型训练代码3.1、模型大小选择3.2、训练参数设置 4、训练参数说明5、目标检测系列文章 1、前言
YOLO 因为性能强大、消耗算力较少一直以来都是实时目标检测领域的主要范式。该框架被广泛用于各种实际应用包括自动驾驶、监控和物流。其高效、准确的物体检测能力使其成为实时识别行人和车辆等任务的理想选择在物流方面它有助于库存管理和包裹跟踪通过 AI 能力帮助人们在很多工作上提高了效率。
目标检测旨在识别图像或视频中的物体并确定它们的位置常见的目标检测算法
R-CNN系列R-CNN、Fast R-CNN、Faster R-CNN R-CNNRegion-based Convolutional Neural Network 首次引入了区域建议网络Region Proposal Network然后对提议的区域进行分类。Fast R-CNN 对R-CNN进行了加速将区域提议和特征提取合并为一个单一的神经网络。Faster R-CNN 进一步优化将区域提议网络集成到主干网络中提高了速度和性能。 YOLO系列YOLO、YOLOv2、YOLOv3、YOLOv4、YOLOv5 YOLOYou Only Look Once 通过将图像划分为网格并在每个网格中同时预测边界框和类别实现了快速目标检测。YOLOv2YOLO9000 引入了Anchor Boxes和Darknet-19网络提高了性能。YOLOv3 进一步改进引入了多尺度预测、跨尺度连接等特性提高了检测性能。YOLOv4 引入了CSPNet、PANet等创新提高了速度和精度。YOLOv5 通过引入更强大的骨干网络backbone和改进的训练策略进一步提高了性能。 SSDSingle Shot MultiBox Detector 通过在不同尺度上预测边界框实现了单次前向传播内的目标检测。 RetinaNet 引入了Focal Loss解决了类别不平衡问题提高了检测性能。 EfficientDet 结合了EfficientNet的高效网络结构和目标检测任务的特定优化实现了高性能的目标检测。 Mask R-CNN 在Faster R-CNN的基础上增加了对目标实例分割的支持能够生成每个检测到的物体的二进制掩码。
这些算法具有各自的特点和适用场景选择合适的算法通常取决于具体的应用需求、计算资源以及性能要求。
Yolov8建立在Yolo系列历史版本的基础上并引入了新的功能和改进点以进一步提升性能和灵活性。Yolov8具有以下特点
高效性Yolov8采用了新的骨干网络、新的Ancher-Free检测头和新的损失函数可在CPU到GPU的多种硬件平台上运行使得模型在运行速度和准确性方面都表现出色。创新性Yolov8借鉴了Yolov5、Yolov6、YoloX等模型的设计优点全面提升改进了Yolov5模型结构同时保持了Yolov5工程化简洁易用的优势。易用性Ultralytics没有直接将开源库命名为Yolov8而是直接使用ultralytics将其定位为算法框架而非某一个特定算法。这使得Yolov8开源库不仅仅能够用于Yolo系列模型而且能够支持非Yolo模型以及分类分割姿态估计等各类任务。全面性Yolov8在目标检测、图像分割、姿态估计等任务中都表现出色成为实现这些任务的最佳选择。
其 Yolov8 网络结构图如下 2、Backbone网络
Backbone主干网络是深度卷积神经网络中的关键组成部分其网络结构是由Darknet网络结构改进而来被设计用于提取输入图像的特征可在提高原网络的特征提取能力的同时加快运行速度。Backbone由三种基本模块构成包括Conv模块、C2f模块以及空间金字塔池化模块(Spatial Pyramid Pooling-Fast, SPPF)。
Conv模块: 功能多样由卷积层(conv)、批量归一化层(Batch NormalizationBN)以及SiLU激活函数层三个部分组成。在其运算过程中首先由卷积层对输入数据进行卷积运算起到特征提取作用或者降采样作用再由批量归一化层提高网络的稳定性和收敛速度最终将激活函数层引入非线性因素并增强网络的表达能力。这些组件共同协作构成了一个可重复堆叠的Conv模块以实现对图像特征的高效提取和学习。受益于该模块结构的较高普适性且能作为组成单元构建其他基本模块被广泛应用各种卷积神经网络中。 Bottleneck模块: 如下图所示根据shortcut是否为true分两种结构执行Bottleneck_0 中的 shortcut 为 falseBottleneck_1 中的 shortcut 为true。 C2f模块 作为主干网络中主要的特征提取部分由残差块Bottleneck和Conv模块共同构成。在其运算过程中先将输入特征图进行11的Conv模块运算然后经过n块残差块Bottleneck运算n与YOLOv8模型类型相关。(对于YOLOv8n在Backbone内的C2f一共4个沿网络传播方向n值分别为1、2、2、1Head结构内的C2f它的n值全设为1)。通过两个卷积模块将输入的特征图转化为高维特征图并将其与输入特征图进行融合以保证输入和输出特征图具有相同的通道数运用Bottleneck残差块可以缓解梯度消失等问题帮助提高网络的深度并获取更好的特征提取能力。 SPPF模块由Conv模块、MaxPool最大池化模块以及Concat模块组成是主干网络中的重要的特征提取模块。其借鉴并改进了SPP-Net网络结构中的SPP结构。在运算过程中首先使用卷积核为1x1的Conv模块对输入特征图运算然后依次经过3个步长为1卷积核为55的最大池化层从而获得特征图上不同尺度上的空间信息通过Concat模块将得到的空间信息进行沿特征图通道方向的拼接融合最后经过卷积核为1x1的Conv模块输出结果。SPPF模块的设计使得模型可以有效地融合不同尺度的空间信息从而提高了模型对于空间布局和物体变形的鲁棒性。 3、YOLOv8模型训练代码
我们常用的YOLOv8目标检测模型训练时使用的代码如下
from ultralytics import YOLO
# 加载官方预训练模型
model YOLO(yolov8n.pt)
# 模型训练
results model.train(datadata.yaml, epochs100, batch4)3.1、模型大小选择
model YOLO(yolov8n.pt) 表示使用的是v8n模型来训练。如果想使用其他大小的模型只需要把n改为其他大小的对应字母即可。例如
model YOLO(yolov8s.pt)
model YOLO(yolov8m.pt)
model YOLO(yolov8l.pt)
model YOLO(yolov8x.pt)不同模型参数大小如下v8n是参数量最小的模型。一般情况下模型越大最终模型的性能效果也会越好。可根据自己实际需求选择相应的模型大小进行训练。
3.2、训练参数设置
通过运行model.train(datadata.yaml, epochs100, batch4)训练v8模型其中(datadata.yaml, epochs100, batch4)是训练设置的参数,没有添加的训练参数都是使用的默认值。官方其实给出了很多其他相关参数详细说明见下文。
如果我们需要自己修改其他训练参数只需要在train后面的括号中加入相应的参数和具体值即可。
例如加上模型训练优化器参数optimizer,其默认值是auto。可设置的值为SGD, Adam, AdamW, NAdam, RAdam, RMSProp。常用SGD或者AdamW。我们可以直接将其设置为SGD写法如下
# 模型训练添加模型优化器设置
results model.train(datadata.yaml, epochs100, batch4, optimizerSGD)4、训练参数说明
YOLOv8 模型的训练设置包括训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。关键的训练设置包括批量大小、学习率、动量和权重衰减。此外优化器、损失函数和训练数据集组成的选择也会影响训练过程。对这些设置进行仔细的调整和实验对于优化性能至关重要。以下是官方给出了训练可设置参数和说明
参数默认值说明modelNone指定用于训练的模型文件。接受指向 .pt 预训练模型或 .yaml 配置文件。对于定义模型结构或初始化权重至关重要。dataNone数据集配置文件的路径例如 coco8.yaml).该文件包含特定于数据集的参数包括训练数据和验证数据的路径、类名和类数。epochs100训练总轮数。每个epoch代表对整个数据集进行一次完整的训练。调整该值会影响训练时间和模型性能。timeNone最长训练时间小时。如果设置了该值则会覆盖 epochs 参数允许训练在指定的持续时间后自动停止。对于时间有限的训练场景非常有用。patience100在验证指标没有改善的情况下提前停止训练所需的epoch数。当性能趋于平稳时停止训练有助于防止过度拟合。batch16批量大小有三种模式:设置为整数(例如’ Batch 16 ‘) 60% GPU内存利用率的自动模式(’ Batch -1 ‘)或指定利用率分数的自动模式(’ Batch 0.70 )。imgsz640用于训练的目标图像尺寸。所有图像在输入模型前都会被调整到这一尺寸。影响模型精度和计算复杂度。saveTrue可保存训练检查点和最终模型权重。这对恢复训练或模型部署非常有用。save_period-1保存模型检查点的频率以 epochs 为单位。值为-1 时将禁用此功能。该功能适用于在长时间训练过程中保存临时模型。cacheFalse在内存中缓存数据集图像 (True/ram、磁盘 (disk或禁用它 (False).通过减少磁盘 I/O 提高训练速度但代价是增加内存使用量。deviceNone指定用于训练的计算设备单个 GPU (device0、多个 GPU (device0,1)、CPU (devicecpu)或苹果芯片的 MPS (devicemps).workers8加载数据的工作线程数每 RANK 多 GPU 训练。影响数据预处理和输入模型的速度尤其适用于多 GPU 设置。projectNone保存训练结果的项目目录名称。允许有组织地存储不同的实验。nameNone训练运行的名称。用于在项目文件夹内创建一个子目录用于存储训练日志和输出结果。exist_okFalse如果为 True则允许覆盖现有的项目/名称目录。这对迭代实验非常有用无需手动清除之前的输出。pretrainedTrue决定是否从预处理模型开始训练。可以是布尔值也可以是加载权重的特定模型的字符串路径。提高训练效率和模型性能。optimizerauto为训练模型选择优化器。选项包括 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 等或 auto 用于根据模型配置进行自动选择。影响收敛速度和稳定性verboseFalse在训练过程中启用冗长输出提供详细日志和进度更新。有助于调试和密切监控培训过程。seed0为训练设置随机种子确保在相同配置下运行的结果具有可重复性。deterministicTrue强制使用确定性算法确保可重复性但由于对非确定性算法的限制可能会影响性能和速度。single_clsFalse在训练过程中将多类数据集中的所有类别视为单一类别。适用于二元分类任务或侧重于对象的存在而非分类。rectFalse可进行矩形训练优化批次组成以减少填充。这可以提高效率和速度但可能会影响模型的准确性。cos_lrFalse利用余弦学习率调度器根据历时的余弦曲线调整学习率。这有助于管理学习率实现更好的收敛。close_mosaic10在训练完成前禁用最后 N 个epoch的马赛克数据增强以稳定训练。设置为 0 则禁用此功能。resumeFalse从上次保存的检查点恢复训练。自动加载模型权重、优化器状态和历时计数无缝继续训练。ampTrue启用自动混合精度 (AMP) 训练可减少内存使用量并加快训练速度同时将对精度的影响降至最低。fraction1.0指定用于训练的数据集的部分。允许在完整数据集的子集上进行训练这对实验或资源有限的情况非常有用。profileFalse在训练过程中可对ONNX 和TensorRT 速度进行剖析有助于优化模型部署。freezeNone冻结模型的前 N 层或按索引指定的层从而减少可训练参数的数量。这对微调或迁移学习非常有用。lr00.01初始学习率即 SGD1E-2, Adam1E-3) .调整这个值对优化过程至关重要会影响模型权重的更新速度。lrf0.01最终学习率占初始学习率的百分比 (lr0 * lrf)与调度程序结合使用随着时间的推移调整学习率。momentum0.937用于 SGD 的动量因子或用于 Adam 优化器的 beta1用于将过去的梯度纳入当前更新。weight_decay0.0005L2 正则化项对大权重进行惩罚以防止过度拟合。warmup_epochs3.0学习率预热的历元数学习率从低值逐渐增加到初始学习率以在早期稳定训练。warmup_momentum0.8热身阶段的初始动力在热身期间逐渐调整到设定动力。warmup_bias_lr0.1热身阶段的偏置参数学习率有助于稳定初始历元的模型训练。box7.5损失函数中边框损失部分的权重影响对准确预测边框坐标的重视程度。cls0.5分类损失在总损失函数中的权重影响正确分类预测相对于其他部分的重要性。dfl1.5分布焦点损失权重在某些YOLO 版本中用于精细分类。pose12.0姿态损失在姿态估计模型中的权重影响着准确预测姿态关键点的重点。kobj2.0姿态估计模型中关键点对象性损失的权重平衡检测可信度与姿态精度。label_smoothing0.0应用标签平滑将硬标签软化为目标标签和标签均匀分布的混合标签可以提高泛化效果。nbs64用于损耗正常化的标称批量大小。overlap_maskTrue决定在训练过程中分割掩码是否应该重叠适用于实例分割任务。mask_ratio4分割掩码的下采样率影响训练时使用的掩码分辨率。dropout0.0分类任务中正则化的丢弃率通过在训练过程中随机省略单元来防止过拟合。valTrue可在训练过程中进行验证以便在单独的数据集上对模型性能进行定期评估。plotsFalse生成并保存训练和验证指标图以及预测示例图以便直观地了解模型性能和学习进度。
常用的几个训练参数是数据集配置文件data、训练轮数epochs、训练批次大小batch、训练使用的设备device,模型优化器optimizer、初始学习率lr0。
5、目标检测系列文章
YOLOv5s网络模型讲解(一看就会)生活垃圾数据集YOLO版YOLOv5如何训练自己的数据集双向控制舵机树莓派版树莓派部署YOLOv5目标检测详细篇YOLO_Tracking 实践 环境搭建 案例测试目标检测数据集划分 XML数据集转YOLO标签DeepSort行人车辆识别系统实现目标检测跟踪统计YOLOv5参数大全(parse_opt篇)YOLOv5改进一-- 轻量化YOLOv5s模型YOLOv5改进二-- 目标检测优化点添加小目标头检测YOLOv5改进三-- 引进Focaler-IoU损失函数YOLOv5改进四–轻量化模型ShuffleNetv2YOLOv5改进五-- 轻量化模型MobileNetv3YOLOv5改进六–引入YOLOv8中C2F模块YOLOv5改进七–改进损失函数EIoU、Alpha-IoU、SIoU、Focal-EIOUYOLOv5改进八–引入Soft-NMS非极大值抑制YOLOv5改进九–引入BiFPN模块基于YOLOv10的车辆统计跟踪与车速计算应用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80995.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!