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

使用yolo训练自己的模型

YOLO(You Only Look Once)是一种用于目标检测的深度学习模型,旨在实时检测图像或视频中的多个对象。与传统的目标检测方法不同,YOLO一次性处理整个图像,而不是通过滑动窗口或区域提议进行多次检测。这种方法使得YOLO在速度上具有显著优势,能够实现实时目标检测。

以下是YOLO的一些关键特点:

  1. One-shot Detection: YOLO的主要特点是一次性完成整个图像的目标检测,而不是像其他方法那样需要多次扫描图像。

  2. 实时性能: YOLO被设计为高效实时运行,尤其适用于需要快速处理大量数据的应用,如视频监控、自动驾驶等。

  3. Anchor Boxes: YOLO使用先验框(Anchor Boxes)来预测目标的位置和大小。这些锚框表示了模型预测的目标的一些常见形状,有助于提高检测准确性。

  4. 分组预测: YOLO将图像分为较小的网格,每个网格负责预测一个或多个目标。这有助于提高模型对多尺度和多类别目标的检测能力。

  5. 多尺度特征图: YOLO通过使用多个尺度的特征图来捕捉图像中不同层次的语义信息,这有助于提高对小目标和远距离目标的检测性能。

  6. 全卷积网络: YOLO采用全卷积网络结构,使得模型可以接受任意大小的输入图像,并在输出中产生相应大小的目标框。

  7. 多类别检测: YOLO可以同时检测多个类别的目标,每个目标框附带一个置信度得分,表示该框中存在目标的置信水平。

YOLO的最新版本可能有一些改进和变化,因此在组会中最好使用最新的文档或论文进行参考。

  1. 训练过程: YOLO的训练过程通常包括两个主要阶段:首先,通过预训练的卷积神经网络(如Darknet)进行特征学习;然后,通过调整网络参数以适应目标检测任务。训练过程中需要使用标记好的包含目标边界框和类别信息的训练集。

  2. 非极大值抑制(NMS): 为了排除冗余的检测框,YOLO使用非极大值抑制。在多个检测框重叠的情况下,NMS算法会选择具有最高置信度得分的框,并抑制其他重叠框。

  3. 适用领域: YOLO广泛应用于计算机视觉领域,包括物体检测、行人检测、交通标志检测、医学图像分析等。其快速的实时性能使其成为许多实际应用的首选。

  4. 版本演进: YOLO模型有多个版本,每个版本都对算法和性能进行了改进。YOLOv4和YOLOv5是其中较新的版本,它们通过引入新的技术和优化提高了检测精度和速度。

  5. 开源: YOLO是一个开源项目,使得研究人员和开发者能够自由使用、修改和扩展该模型。YOLO的开源性质促进了社区合作和在不同领域的广泛应用。

  6. YOLO模型结构: YOLO的网络结构通常由多个卷积层、池化层和全连接层组成。这些层构成了一个端到端的神经网络,负责提取输入图像的特征并输出目标框的坐标和类别信息。YOLO的网络结构是相对简洁的,这有助于实现高效的目标检测。

  7. 损失函数: YOLO使用多任务学习,其损失函数包括位置损失、对象置信度损失和类别置信度损失。位置损失衡量了目标框位置的精确度,对象置信度损失评估了模型对目标存在的置信度,而类别置信度损失则衡量了目标类别的分类准确度。这些损失函数的综合作用有助于优化模型,使其能够准确地检测和定位目标。

  8. 训练策略: YOLO的训练通常需要使用大规模的标记数据集,其中包含了各种目标和场景。训练时,模型通过反向传播和梯度下降等优化算法来不断调整权重,使得预测结果更加接近真实标签。合适的学习率调度和数据增强等策略也是训练中常用的技巧。

  9. 硬件加速: 为了在实际应用中提高YOLO的推理速度,一些版本的YOLO模型支持在不同硬件上进行加速,如GPU和NPU。这些硬件加速方法有助于满足实时性要求,特别是在需要处理大规模图像或视频流的场景中。

  10. 应用案例: YOLO已经在多个领域取得了成功应用,包括智能监控、自动驾驶、医学影像分析、无人机技术等。其高效的实时检测性能使得它在许多实际应用中成为首选的目标检测算法。

训练与训练数据输入部分:

  1. 数据准备: 准备标注好的训练数据集,其中每个样本都包含目标的边界框坐标和类别信息。确保数据集的多样性,涵盖了模型可能在实际应用中遇到的各种场景和目标。

  2. 数据预处理: 对训练数据进行预处理,包括图像大小的标准化、归一化、数据增强等操作。数据增强可以通过随机旋转、翻转、裁剪等方式增加训练数据的多样性,有助于提升模型的泛化能力。

  3. 模型配置: 选择合适的YOLO模型版本(如YOLOv4、YOLOv5等)和相应的配置文件。配置文件中包含了网络结构的参数、训练参数、学习率、锚框等信息。

  4. 权重初始化: 使用预训练的卷积神经网络权重初始化模型。通常可以使用在大规模图像分类任务上预训练的权重,以加速模型收敛。

  5. 模型训练: 利用标注好的训练数据集进行模型训练。通过反向传播和梯度下降等优化算法,不断调整模型的权重,使其能够准确地检测目标。训练过程中,监控模型在验证集上的性能以及损失函数的变化,确保模型在训练过程中逐渐收敛。

  6. 学习率调度: 使用合适的学习率调度策略,如学习率衰减或学习率周期性调整,以优化模型的收敛速度和稳定性。

模型评估方式与具体实现方法:

  1. 评估指标: YOLO模型的性能通常通过目标检测任务中常用的指标进行评估,包括准确率(Precision)、召回率(Recall)、F1分数等。除此之外,可以使用均方误差(Mean Squared Error,MSE)来评估目标框坐标的精度。

  2. 验证集评估: 在训练过程中,使用预留的验证集进行定期的模型性能评估。验证集上的评估结果可以帮助确定模型是否过拟合或欠拟合,并指导是否需要调整模型架构或超参数。

  3. 非极大值抑制(NMS): 在模型输出目标框后,使用NMS算法来抑制冗余的检测框,以提高模型的检测精度。NMS的实现通常涉及设置一个阈值来确定是否合并相邻的检测框。

  4. 可视化分析: 利用可视化工具分析模型在测试集上的预测结果,查看模型是否成功检测出目标、框的位置是否准确,以及对不同类别的检测效果如何。

  5. 指标曲线: 绘制学习曲线、损失函数曲线以及评估指标随训练次数的变化曲线,以更全面地了解模型的训练过程和性能。

  6. 模型保存与部署: 在满足性能要求后,保存训练好的模型权重。随后,可以将模型部署到实际应用中,例如嵌入式系统、服务器端或移动端,实现目标检测的实时应用。

实现方式

实现一个YOLO项目通常涉及以下步骤:

  1. 准备工作:

    • 安装深度学习框架:确保你已经安装了你选择的深度学习框架,如TensorFlow或PyTorch。
    • 安装YOLO模型:下载或克隆YOLO模型的代码库,例如Darknet(YOLO官方实现)或YOLOv5的代码库。
  2. 数据集准备:

    • 收集或获取目标检测任务的标注好的数据集,确保数据集包含了目标类别的图像以及相应的标签信息。
    • 数据预处理:对数据集进行预处理,包括图像大小的调整、归一化、数据增强等,以提高模型的泛化能力。
  3. 配置模型:

    • 配置模型参数:根据你的任务需求,选择合适的YOLO模型版本(如YOLOv3、YOLOv4、YOLOv5等),并设置相应的超参数,如学习率、批量大小等。
    • 配置模型结构:修改网络结构的配置文件,定义模型的层数、锚框、类别数等。
  4. 权重初始化:

    • 使用预训练权重:在模型训练之前,可以使用在大规模图像分类任务上预训练的权重来初始化模型。这有助于模型更快速地学习目标检测任务。
  5. 模型训练:

    • 输入训练数据:将预处理过的训练数据输入模型。
    • 定义损失函数:YOLO模型通常使用多任务学习,需要定义位置损失、对象置信度损失和类别置信度损失。
    • 反向传播和优化:使用梯度下降等优化算法进行反向传播,不断调整模型权重以减小损失函数。
    • 监控训练过程:通过查看训练损失、验证集性能等,监控模型在训练过程中的表现。
  6. 模型评估:

    • 使用验证集:在训练过程中,使用预留的验证集评估模型性能。调整模型结构和超参数,以提高模型的准确性和泛化能力。
    • 调整阈值:根据具体的应用需求,调整目标检测的阈值,以平衡准确率和召回率。
  7. 模型保存与部署:

    • 保存模型权重:在满足性能要求后,保存训练好的模型权重。
    • 模型部署:将训练好的模型部署到实际应用中,可以是服务器端、嵌入式系统或移动端。
  8. 测试与应用:

    • 使用测试数据:使用测试集验证模型在新数据上的性能。
    • 应用到实际场景:将训练好的模型应用到实际场景中,进行目标检测。
  9. 维护与更新:

    • 模型监控:定期监控模型在实际应用中的性能,根据需要进行更新和调整。
    • 社区贡献:参与社区,了解最新的YOLO模型版本和优化,及时更新项目以保持最新性能。

具体操作

具体操作方法会取决于你选择的YOLO版本和深度学习框架。以下是一个基于YOLOv5和PyTorch的具体操作示例,供参考:

步骤:

  1. 安装依赖:

    • 安装PyTorch:根据你的CUDA版本和操作系统选择合适的PyTorch版本,并按照PyTorch官方文档进行安装。
    • 安装其他依赖:运行 pip install -U -r requirements.txt 安装项目所需的其他依赖项。
  2. 获取YOLOv5代码:

    • 克隆YOLOv5仓库:运行以下命令获取YOLOv5的代码。
      git clone https://github.com/ultralytics/yolov5.git
      cd yolov5
      
  3. 数据准备:

    • 准备数据集:将你的目标检测数据集准备好,确保每个图像都有相应的标签文件,标签文件包含目标的类别、边界框坐标等信息。
    • 配置数据路径:在 data.yaml 文件中设置数据集的路径和类别信息。
  4. 训练配置:

    • 修改训练配置:在 yolov5/models/yolov5s.yaml 中可以调整模型的参数,例如学习率、迭代次数等。
    • 准备预训练权重:下载并准备一个预训练权重文件,可以从YOLOv5的发布页面或其他来源获取。
  5. 模型训练:

    • 运行训练命令:使用以下命令开始模型训练。
      python train.py --img-size 640 --batch-size 16 --epochs 50 --data data.yaml --cfg models/yolov5s.yaml --weights '' --name your_experiment_name
      
    • 请根据实际情况调整命令中的参数。
  6. 模型评估:

    • 运行测试命令:使用以下命令在验证集上评估模型性能。
      python test.py --weights runs/train/your_experiment_name/weights/best.pt --data data.yaml
      
    • 检查评估指标,如Precision、Recall、mAP等。
  7. 模型部署:

    • 保存权重:在训练结束后,你可以使用训练生成的权重文件进行推理。
    • 部署到实际应用:将模型集成到你的应用程序中,确保输入图像经过预处理后可以被模型识别。

详细实现

1. 安装依赖项:

确保你已经安装了Python,然后运行以下命令安装必要的依赖项:

pip install torch torchvision
pip install -U -r requirements.txt

2. 获取YOLOv5代码:

git clone https://github.com/ultralytics/yolov5.git
cd yolov5

3. 数据准备:

  • 创建一个数据目录,将你的训练图像和标签文件(通常是.txt文件,每个文件对应一个图像)放入其中。
  • 创建一个data.yaml文件,指定数据集的相关信息,例如类别数、训练集和验证集的路径等。

4. 配置训练:

  • 打开 yolov5/models/yolov5s.yaml 文件,你可以调整模型的参数,如学习率、迭代次数等。此文件也包含有关锚框和类别的信息。

5. 准备预训练权重:

在YOLOv5的发布页面或官方仓库的 weights 目录中,你可以找到各种不同大小的预训练权重文件,选择一个合适的文件并下载。

6. 模型训练:

python train.py --img-size 640 --batch-size 16 --epochs 50 --data data.yaml --cfg models/yolov5s.yaml --weights 'path/to/your/pretrained_weights.pt' --name your_experiment_name

确保替换 path/to/your/pretrained_weights.pt 为你下载的预训练权重文件路径。

训练 状态结果.cvs

epochtrain/box_losstrain/obj_losstrain/cls_lossmetrics/precisionmetrics/recall
00.0454480.0653640.0164480.713830.64427
metrics/mAP_0.5metrics/mAP_0.5:0.95val/box_lossval/obj_lossval/cls_lossx/lr0x/lr1x/lr2
0.719690.479190.0406410.036630.0094940.09370.00070.0007

每轮训练指标

epoch: # 当前训练轮数
train/box_loss: # 训练阶段的边界框定位损失
train/obj_loss: # 训练阶段的目标对象损失
train/cls_loss: # 训练阶段的类别分类损失
metrics/precision: # 训练集上的精度指标
metrics/recall: # 训练集上的召回率指标
metrics/mAP_0.5: # 在IoU阈值为0.5时的平均精度(mAP)
metrics/mAP_0.5:0.95: # 在IoU阈值从0.5到0.95范围内的平均精度
val/box_loss: # 验证阶段的边界框定位损失
val/obj_loss: # 验证阶段的目标对象损失
val/cls_loss: # 验证阶段的类别分类损失
x/lr0: # 学习率调整,可能表示当前的学习率或学习率变化
x/lr1: # 另一个学习率变化点记录
x/lr2: # 第三个学习率变化点记录

训练过程信息

Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
2/2 0G 0.04473 0.07081 0.01642 250 640: 100%|██████████| 8/8 [02:19<00:00, 17.45s/it]

模型性能评估结果

             Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 4/4 [00:43<00:00, 10.92s/it]all        128        929      0.751      0.651      0.737      0.484

总结信息

3 epochs completed in 0.164 hours.
Optimizer stripped from runs\train\exp6\weights\last.pt, 14.9MB
Optimizer stripped from runs\train\exp6\weights\best.pt, 14.9MB
Validating runs\train\exp6\weights\best.pt…

模型融合及参数统计

Fusing layers…
Model summary: 157 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs

各类别详细评估结果

(略,包含每个类别的准确率、召回率以及mAP50和mAP50-95等指标)

结果保存路径

Results saved to runs\train\exp6

验证权重文件:Validating runs\train\exp6\weights\best.pt…
模型融合(优化性能):Fusing layers…
模型结构概览:
层数:157层
参数数量:7,225,885个参数
当前梯度数量:0
计算量 (GFLOPs):16.4
模型在不同类别上的评估指标汇总(包括精度P、召回率R、mAP50和mAP50-95等):
总体表现:
图片总数:128张
实例总数:929个
精度(P):0.752
召回率(R):0.65
mAP@0.5:0.737
mAP@0.5:0.95:0.484
各类别详细评估结果,例如:
类别“person”:在128张图片中共有254个实例,其准确率为0.866,召回率为0.72,mAP@0.5为0.803,mAP@0.5:0.95为0.534
每个类别的详细评估结果显示了模型对各类目标的检测能力。

7. 模型评估:

python test.py --weights runs/train/your_experiment_name/weights/best.pt --data data.yaml

在这里,your_experiment_name 是你之前定义的实验名称。

8. 模型部署:

  • 训练完成后,你可以使用 export.py 脚本将训练好的模型导出为TorchScript格式,以便更容易在其他环境中部署。
python export.py --img-size 640 --batch-size 1 --include pb  # 生成TorchScript模型
  • 然后,可以将导出的模型集成到自己的应用程序中

大体过程

YOLOv5 使用的是一个基于卷积神经网络(CNN)的实时目标检测模型。YOLOv5 的模型结构继承了 YOLO 系列的特点,并在此基础上进行了优化和改进。

模型结构特点:
为什么这么快:

yolo中采用你只看一次的策略,简化了中间复杂的处理过程。

滑动窗口和YOLO(You Only Look Once)是两种不同的目标检测方法。

  1. 滑动窗口传统算法:

    • 工作原理: 滑动窗口算法是一种传统的目标检测方法。它通过在图像上滑动一个固定大小的窗口,然后在每个窗口上应用分类器来判断是否包含目标。窗口的大小和步幅是预先定义的参数。
    • 优点: 简单直观,易于理解和实现。可以使用各种分类器,如SVM或神经网络。
    • 缺点: 需要在不同尺度和位置上尝试许多窗口,计算开销大。在多尺度情况下容易漏掉小目标,而且在大尺度上可能导致计算复杂度增加。
  2. YOLO(You Only Look Once):

    • 工作原理: YOLO是一种基于深度学习的目标检测算法。它将整个图像划分为固定大小的网格单元,并在每个单元格上预测目标的边界框和类别概率。YOLO在单个前向传递中同时完成了定位和分类,因此相对于滑动窗口方法,速度更快。
    • 优点: 高效,因为一次前向传递就可以获得整个图像中的目标信息。对于小目标和相互重叠的目标有较好的检测性能。
    • 缺点: 对于小目标的检测可能不如一些特定于小目标的方法。在处理密集目标布局时,可能存在定位精度较低的问题。

比较:

  • 速度: YOLO通常比滑动窗口方法更快,因为它可以在整个图像上执行一次前向传递,而不是尝试多个窗口。
  • 精度: YOLO在大目标和密集目标布局方面通常比滑动窗口方法更强大。但是,对于小目标,一些特定于小目标的方法可能会取得更好的效果。
  • 计算复杂度: 滑动窗口方法的计算复杂度取决于尝试的窗口数量,而YOLO则在整个图像上进行一次前向传递,因此通常计算复杂度相对较低。

选择使用滑动窗口还是YOLO取决于具体的应用场景、性能需求和对目标检测的精度要求。

​ 比如滑动窗口传统算法

多尺度特征提取:

YOLOv5 采用 CSPDarknet 架构作为其主干网络,它结合了 Cross Stage Partial Network (CSPNet) 和 Darknet-53 的优点,以提高特征提取效率并减少计算量。
模型包含多个不同尺度的输出层,分别对应于小、中、大三种尺寸的目标检测。

Anchor Boxes:

继续使用锚框机制来预测目标框的位置和大小,每个网格单元会预测一组预先设定的锚框尺寸。

SPP(空间金字塔池化)模块:

在某些版本的 YOLOv5 中引入了 Spatial Pyramid Pooling 层,用于捕获多尺度信息。
PanopticFPN(全景特征金字塔网络):
针对实例分割任务,YOLOv5x 版本引入了 PanopticFPN 来整合前景和背景的分割预测。

优化后的后处理步骤:

预测出的边界框经过非极大值抑制(NMS)进行过滤,保留高置信度且重叠较小的框。
对于边界框的坐标预测,YOLOv5 进行了坐标回归变换,比如使用 sigmoid 函数对中心偏移进行归一化处理,用指数函数对宽高进行缩放。

图形预测处理过程:
预处理阶段:

图像首先被调整到模型所需的输入尺寸(例如640×640),并进行标准化(减去均值、除以标准差)。
可能利用 CUDA 内核函数进行高效的图像缩放和色彩空间转换等操作。

模型推断阶段:

输入图片通过 CNN 进行前向传播,得到多个不同尺度的特征图。
每个特征图上的网格单元都会生成一系列边界框预测及其对应的类别概率和对象性得分。

解码预测结果:

将预测出的边界框偏移量、宽度高度调整参数以及类别的条件概率应用到对应的锚框上,从而得到最终预测的边界框位置和类别。
根据阈值筛选掉低置信度的边界框。
应用 NMS 删除冗余的预测框。

后处理:

输出最终经过 NMS 后筛选过的边界框以及它们的分类标签。
YOLOv5 在整个预测过程中高效地从输入图像中提取特征,预测目标的位置与类别,并通过一系列优化策略保证了模型在实时性与精度之间的平衡

win10下Pycharm运行代码配置

训练数据文件目录结构
请添加图片描述

训练文件相关参数修改
请添加图片描述
请添加图片描述

初次训练100次结果

“D:\Program Files\Python\Python38\python.exe” “D:\Program Files\JetBrains\PyCharm 2021.3\plugins\python\helpers\pydev\pydevconsole.py” --mode=client --port=50075
import sys; print(‘Python %s on %s’ % (sys.version, sys.platform))
sys.path.extend([‘E:\new work space\python\yolov5-master’, ‘E:/new work space/python/yolov5-master’])
PyDev console: starting.
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
runfile(‘E:/new work space/python/yolov5-master/trainTEST.py’, wdir=‘E:/new work space/python/yolov5-master’)
trainTEST: weights=yolov5s.pt, cfg=, data=data\coco128TEST.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5
YOLOv5 2024-1-9 Python-3.8.10 torch-2.1.2+cpu CPU
hyperparameters: lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0
Comet: run ‘pip install comet_ml’ to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with ‘tensorboard --logdir runs\train’, view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=12
from n params module arguments
0 -1 1 3520 models.common.Conv [3, 32, 6, 2, 2]
1 -1 1 18560 models.common.Conv [32, 64, 3, 2]
2 -1 1 18816 models.common.C3 [64, 64, 1]
3 -1 1 73984 models.common.Conv [64, 128, 3, 2]
4 -1 2 115712 models.common.C3 [128, 128, 2]
5 -1 1 295424 models.common.Conv [128, 256, 3, 2]
6 -1 3 625152 models.common.C3 [256, 256, 3]
7 -1 1 1180672 models.common.Conv [256, 512, 3, 2]
8 -1 1 1182720 models.common.C3 [512, 512, 1]
9 -1 1 656896 models.common.SPPF [512, 512, 5]
10 -1 1 131584 models.common.Conv [512, 256, 1, 1]
11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, ‘nearest’]
12 [-1, 6] 1 0 models.common.Concat [1]
13 -1 1 361984 models.common.C3 [512, 256, 1, False]
14 -1 1 33024 models.common.Conv [256, 128, 1, 1]
15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, ‘nearest’]
16 [-1, 4] 1 0 models.common.Concat [1]
17 -1 1 90880 models.common.C3 [256, 128, 1, False]
18 -1 1 147712 models.common.Conv [128, 128, 3, 2]
19 [-1, 14] 1 0 models.common.Concat [1]
20 -1 1 296448 models.common.C3 [256, 256, 1, False]
21 -1 1 590336 models.common.Conv [256, 256, 3, 2]
22 [-1, 10] 1 0 models.common.Concat [1]
23 -1 1 1182720 models.common.C3 [512, 512, 1, False]
24 [17, 20, 23] 1 45849 models.yolo.Detect [12, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model summary: 214 layers, 7051993 parameters, 7051993 gradients, 16.0 GFLOPs
Transferred 343/349 items from yolov5s.pt
optimizer: SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 60 weight(decay=0.0005), 60 bias
train: Scanning E:\new work space\python\datasets\coco128Test\labels\train2017.cache… 44 images, 0 backgrounds, 0 corrupt: 100%|██████████| 44/44 [00:00<?, ?it/s]
val: Scanning E:\new work space\python\datasets\coco128Test\labels\train2017.cache… 44 images, 0 backgrounds, 0 corrupt: 100%|██████████| 44/44 [00:00<?, ?it/s]
AutoAnchor: 3.99 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\exp9\labels.jpg…
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\train\exp9
Starting training for 100 epochs…
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 0G 0.123 0.03793 0.07844 66 640: 100%|██████████| 3/3 [01:20<00:00, 26.87s/it]
Class Images Instances P R mAP50 mAP50-95: 0%| | 0/2 [00:00<?, ?it/s]WARNING NMS time limit 2.100s exceeded
Class Images Instances P R mAP50 mAP50-95: 50%|█████ | 1/2 [00:14<00:14, 14.95s/it]WARNING NMS time limit 1.100s exceeded
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:20<00:00, 10.26s/it]
all 44 117 0 0 0 0

​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 17/99 0G 0.07482 0.03235 0.03232 47 640: 100%|██████████| 3/3 [00:55<00:00, 18.60s/it]
​ Class Images Instances P R mAP50 mAP50-95: 50%|█████ | 1/2 [00:13<00:13, 13.55s/it]WARNING NMS time limit 1.100s exceeded
​ Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:18<00:00, 9.34s/it]
​ all 44 117 0.276 0.341 0.302 0.129
​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 36/99 0G 0.07347 0.02879 0.01845 86 640: 100%|██████████| 3/3 [00:45<00:00, 15.21s/it]
​ Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:17<00:00, 8.51s/it]
​ all 44 117 0.454 0.625 0.432 0.197
​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 69/99 0G 0.04048 0.02377 0.01117 80 640: 100%|██████████| 3/3 [00:48<00:00, 16.22s/it]
​ Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:16<00:00, 8.01s/it]
​ all 44 117 0.772 0.82 0.93 0.666
​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 80/99 0G 0.03914 0.0196 0.01344 64 640: 100%|██████████| 3/3 [00:48<00:00, 16.22s/it]

​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 90/99 0G 0.03442 0.02564 0.008466 58 640: 100%|██████████| 3/3 [00:52<00:00, 17.55s/it]
​ Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
​ 99/99 0G 0.036 0.02346 0.009882 74 640: 100%|██████████| 3/3 [00:51<00:00, 17.20s/it]
​ Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:16<00:00, 8.26s/it]
​ all 44 117 0.762 0.918 0.934 0.699
100 epochs completed in 1.932 hours.
Optimizer stripped from runs\train\exp9\weights\last.pt, 14.5MB
Optimizer stripped from runs\train\exp9\weights\best.pt, 14.5MB
Validating runs\train\exp9\weights\best.pt…
Fusing layers…
Model summary: 157 layers, 7042489 parameters, 0 gradients, 15.9 GFLOPs
​ Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 [00:14<00:00, 7.50s/it]
​ all 44 117 0.766 0.94 0.935 0.708
​ person 44 18 0.601 0.778 0.81 0.387
​ apple 44 40 0.858 1 0.994 0.757
​ banana 44 2 0.903 1 0.995 0.846
​ zebra 44 6 0.915 1 0.995 0.747
​ car 44 23 0.457 0.957 0.887 0.524
​ bus 44 7 0.862 0.857 0.857 0.743
​ long 44 4 0.897 1 0.995 0.796
​ cat 44 3 0.67 1 0.913 0.797
​ dog 44 4 0.616 0.809 0.912 0.705
​ hourse 44 10 0.88 1 0.995 0.782
Results saved to runs\train\ex请添加图片描述
请添加图片描述

训练过程评估 一些参数的含义

训练轮次训练阶段的边界框损失.衡量模型预测的边界框位置与真实边界框位置之间的差距训练阶段的目标损失.判断图像中的每个像素点是否包含对象。训练阶段的类别损失。评估模型对每个物体类别预测准确性的能力。评估指标:精度。评估指标:召回率。表示被正确识别为正类别的样本占所有实际为正类别的样本的比例。在IoU阈值为0.5时的平均精度均值(mAP)。平均精度均值(mAP),这是目标检测任务中的关键评估指标,它综合考虑了精度和召回率,在IoU阈值为0.5和0.5至0.95范围内的表现。在IoU阈值从0.5到0.95范围内的平均精度均值(mAP)val/box_loss、val/obj_loss 和 val/cls_loss:这些是在验证集上计算的相应损失,用于监控模型在未见过数据上的泛化能力。验证阶段的边界框损失验证阶段的目标损失验证阶段的类别损失学习率参数1(可能表示当前学习率或某个学习率组的初始学习率)学习率参数2(类似地,可能是另一个学习率或调整后的学习率)学习率参数3(学习率是训练神经网络中的一个重要超参数,它决定了梯度下降过程中权重更新的步长。合适的初始学习率及动态调整策略可以显著影响模型收敛速度和最终性能。
epochtrain/box_losstrain/obj_losstrain/cls_lossmetrics/precisionmetrics/recallmetrics/mAP_0.5metrics/mAP_0.5:0.95val/box_lossval/obj_lossval/cls_lossx/lr0x/lr1x/lr2
00.122990.0379280.07843800000.129710.033070.0826940.09820.00020.0002
10.124270.0388640.07471800000.127590.032650.0801750.0954950.000495050.00049505
20.121530.035490.07641900000.12420.0323110.076140.0927840.000784160.00078416
30.117850.0377890.0713150.000814380.0358330.000651946.52E-050.118210.032710.0704990.0900670.00106730.0010673
40.113590.0438840.0670130.00381990.0794670.00286910.000752840.109690.0344510.0643790.0873450.00134460.0013446
50.105830.0393960.0632880.0073890.23270.0107550.00300590.103860.035760.0606280.0846160.00161580.0016158
60.100930.0479120.0593140.0415190.05250.058210.0202510.0972580.0365180.0566980.0818810.00188120.0018812
70.0975090.0477850.0576120.409860.0502690.0743190.0317960.0931090.0362470.0542150.0791410.00214060.0021406
80.0935690.0375520.05946510.0514690.111040.0471860.0859030.0350410.0493120.0763940.00239410.0023941
90.088790.0507170.0528170.842880.0870890.169730.0726530.0823750.034360.0463350.0736420.00264160.0026416
100.0868760.0487160.0497830.76870.151080.202590.0893110.0764610.0330280.0416660.0708830.00288320.0028832
110.0782140.0472360.0433940.817630.156180.218490.0973790.0766130.0312320.0392970.0681190.00311890.0031189
120.0794530.0358910.0459460.780160.222010.300690.157560.0766910.0293970.0352720.0653490.00334860.0033486
130.0788960.0341060.0413160.317460.337170.291930.133080.077230.0291230.0331030.0625720.00357230.0035723
140.0796360.0369240.0352170.289620.331230.276920.135670.0819130.0296030.0296220.059790.00379020.0037902
150.0803070.0424190.0334340.296830.392380.329980.152150.0750460.0299940.0279480.0570020.00400210.0040021
160.0737430.0412080.0335080.445340.271840.271640.110110.0759410.0338570.0256130.0542080.0042080.004208
170.0748160.0323470.0323210.275850.341360.30240.129420.0798480.0319040.0241020.0514080.0044080.004408
180.0760780.0322650.0324880.512020.331450.344730.142710.0749680.029750.0229650.0486020.00460210.0046021
190.069540.0356060.0271020.464510.326590.276890.104590.0776290.0282660.0217120.045790.00479020.0047902
200.0739760.0365960.0251140.53560.406390.353940.171190.0728460.0259640.0204470.0429720.00497240.0049724
210.0714630.0390680.0243170.621390.390630.357390.1850.0724240.0236880.0195490.0401490.00514870.0051487
220.0742150.0437870.0236340.635730.462310.397080.208820.0718950.0234490.0186350.0373190.0053190.005319
230.0704160.0349260.0258210.606460.432530.412270.196150.0701330.0224740.0177860.0344830.00548330.0054833
240.0734440.0369240.024040.454320.489390.388690.179590.0759230.0220320.0168640.0316420.00564180.0056418
250.074910.0271470.0269650.51340.496330.396080.203920.0739320.0211140.0159360.0287940.00579420.0057942
260.0735740.0322330.0223910.478960.498670.403510.183790.0717410.0202730.0153760.0259410.00594080.0059408
270.0660870.0260380.0223990.539080.525850.463920.241430.0700240.0200470.0145520.0230810.00608140.0060814
280.0675380.0297160.0208950.539080.525850.463920.241430.0700240.0200470.0145520.0202160.00621610.0062161
290.0679070.0270770.0239820.579910.541270.540940.289250.0712340.0189890.0140110.0173450.00634480.0063448
300.0740320.0273220.0234080.596780.534440.51720.279990.0804610.0180920.0135040.0144680.00646760.0064676
310.0774230.0252160.0228370.577330.5690.571230.306040.0741220.0173980.0130050.0115840.00658440.0065844
320.0680810.0278720.0244150.577330.5690.571230.306040.0741220.0173980.0130050.00869540.00669540.0066954
330.0663990.0270620.0193770.61470.571310.63090.366170.0725010.0165760.0125570.0067330.0067330.006733
340.0641460.0306540.0185750.512720.634240.621660.380460.0713720.0174520.0119750.0067330.0067330.006733
350.0698450.0315330.0168690.45350.625450.431610.196610.0794420.0179640.0114890.0066340.0066340.006634
360.073470.0287880.0184450.45350.625450.431610.196610.0794420.0179640.0114890.0065350.0065350.006535
370.0728930.0258230.0190310.464160.644890.560360.303610.0771490.0172780.0110930.0064360.0064360.006436
380.0742490.0301240.0164690.435480.65350.609790.322770.0710950.0168470.0107560.0063370.0063370.006337
390.0672150.0312750.017780.423290.685630.599830.329120.0711520.0160410.0106080.0062380.0062380.006238
400.0742370.0260140.0180780.423290.685630.599830.329120.0711520.0160410.0106080.0061390.0061390.006139
410.0670510.0272380.0178750.447770.66220.620790.378780.0638910.0157740.0103690.006040.006040.00604
420.0660910.0197030.0194870.406820.666190.620270.355530.0647640.0156410.0100950.0059410.0059410.005941
430.0650180.026160.0190130.370480.678930.603720.358970.0616660.0154680.00991450.0058420.0058420.005842
440.0637830.022360.0193860.370480.678930.603720.358970.0616660.0154680.00991450.0057430.0057430.005743
450.0624650.0245550.0217210.486270.682650.634520.386010.0595480.0151970.00970550.0056440.0056440.005644
460.0633030.0253140.0170460.516130.685110.655350.380010.063260.0149590.00942370.0055450.0055450.005545
470.0612780.0263210.0160910.53540.652530.615430.396770.0691160.0150390.0090780.0054460.0054460.005446
480.0603750.0257960.0130510.53540.652530.615430.396770.0691160.0150390.0090780.0053470.0053470.005347
490.0626240.0245010.0152420.605550.643220.70250.44170.0633310.0144830.00899620.0052480.0052480.005248
500.0591730.0269890.0131330.588810.725610.707930.446160.0696010.0154090.00872930.0051490.0051490.005149
510.0682820.0227030.0147080.555040.807940.768580.455220.0590660.0142420.00885180.005050.005050.00505
520.0561980.0215740.017740.555040.807940.768580.455220.0590660.0142420.00885180.0049510.0049510.004951
530.0628540.0259720.0153210.64940.751160.813470.496590.0562150.0142850.00886380.0048520.0048520.004852
540.0555350.0206150.0198880.530520.768540.744140.383380.0555010.0144190.00880260.0047530.0047530.004753
550.0627030.0223540.0155840.706680.727460.803890.481580.0499040.014330.00863040.0046540.0046540.004654
560.0507990.0243580.01740.706680.727460.803890.481580.0499040.014330.00863040.0045550.0045550.004555
570.0507930.0233570.0155850.644960.736830.801880.499220.0483170.0143110.00850010.0044560.0044560.004456
580.0499670.0301360.0139720.570780.772220.751120.445320.0520310.0145330.00819230.0043570.0043570.004357
590.0544920.0272860.0119040.682770.690810.786080.480510.0516040.0145050.00806330.0042580.0042580.004258
600.054920.0339810.0112560.682770.690810.786080.480510.0516040.0145050.00806330.0041590.0041590.004159
610.0491660.0196930.0131920.64720.774160.810430.485830.0477060.0144610.00799130.004060.004060.00406
620.0476870.0212560.0130940.63770.804930.807520.505350.0493710.0148430.00761050.0039610.0039610.003961
630.0549490.0256560.0138730.553890.816370.835390.483510.0477090.0143710.00739280.0038620.0038620.003862
640.0477540.0252690.0134630.553890.816370.835390.483510.0477090.0143710.00739280.0037630.0037630.003763
650.0439240.0238870.01160.678510.840440.889250.526770.0451070.0140830.00722190.0036640.0036640.003664
660.0470610.0234840.0130430.640790.767910.83490.482220.0514170.0150420.00708770.0035650.0035650.003565
670.052510.0261380.0109520.75290.80870.921020.644580.0416860.0137670.00702840.0034660.0034660.003466
680.0452160.0238350.0132980.75290.80870.921020.644580.0416860.0137670.00702840.0033670.0033670.003367
690.0404780.0237660.0111710.771830.819790.929710.666430.0418010.013570.00696710.0032680.0032680.003268
700.0521630.0230970.0134810.73760.793720.906210.52330.0454080.0133920.00692020.0031690.0031690.003169
710.0466730.0214350.0162210.782590.813070.921370.654090.0398930.012930.00684220.003070.003070.00307
720.0457140.0245590.0129980.782590.813070.921370.654090.0398930.012930.00684220.0029710.0029710.002971
730.0440980.0200130.0136740.798110.809660.917760.63860.0421180.0130770.00681040.0028720.0028720.002872
740.0450960.0239270.0114440.650410.967910.890710.589240.0421570.0130260.00674350.0027730.0027730.002773
750.0455490.0236750.0122620.654780.974090.912270.611530.0413560.0132890.00667270.0026740.0026740.002674
760.0380890.0220270.0127370.654780.974090.912270.611530.0413560.0132890.00667270.0025750.0025750.002575
770.0433550.0229650.0131880.657250.967860.909530.604840.0403440.0132150.00661580.0024760.0024760.002476
780.0409230.0208550.012710.665260.957150.881920.576990.0419360.0130020.00654060.0023770.0023770.002377
790.0442370.0233890.0110250.733970.945150.924460.662120.0383240.0129060.00648580.0022780.0022780.002278
800.0391390.0196020.0134450.733970.945150.924460.662120.0383240.0129060.00648580.0021790.0021790.002179
810.0397780.0208430.0100790.745470.932650.925210.673820.0368140.0128930.00643910.002080.002080.00208
820.037870.0254930.00923060.748870.940950.925930.62750.0349780.0126470.00635240.0019810.0019810.001981
830.0362130.0255830.0116870.777720.926490.929460.694290.0337380.0126320.00628450.0018820.0018820.001882
840.0422750.0274510.0113550.777720.926490.929460.694290.0337380.0126320.00628450.0017830.0017830.001783
850.040550.0244090.0118930.761470.924240.928920.702330.0335980.0127010.00621960.0016840.0016840.001684
860.0371150.0267610.0125310.754210.932510.928560.693350.0334880.0126030.00614440.0015850.0015850.001585
870.0398020.0268210.0111840.765950.939970.935130.708380.032720.0126840.00607510.0014860.0014860.001486
880.0424530.0217940.0130270.765950.939970.935130.708380.032720.0126840.00607510.0013870.0013870.001387
890.0373630.0212780.0109840.773770.940320.935330.674130.032290.0126090.00600580.0012880.0012880.001288
900.0344180.025640.00846580.771350.944920.926780.680110.0326360.0126940.00594760.0011890.0011890.001189
910.0368290.0196190.0121820.767280.946330.934540.682040.0312260.0126580.00586280.001090.001090.00109
920.037650.0222240.0122770.767280.946330.934540.682040.0312260.0126580.00586280.0009910.0009910.000991
930.0380750.0233860.0104260.787240.951110.938070.686840.0308460.0126850.00581530.0008920.0008920.000892
940.0341190.023640.00944360.787390.946890.94040.701020.0310920.0127510.00576560.0007930.0007930.000793
950.0358690.0196920.0104390.762190.92210.933820.701470.0301620.0125750.00572760.0006940.0006940.000694
960.0364030.0221680.0117820.762190.92210.933820.701470.0301620.0125750.00572760.0005950.0005950.000595
970.0351080.0231230.0129810.765220.919650.932960.702910.0301470.0125340.0057010.0004960.0004960.000496
980.0361870.021510.0118540.762560.918240.932940.704240.030180.0125170.00567390.0003970.0003970.000397
990.0359970.0234630.00988160.762490.917640.934020.699390.0299540.0124280.00566080.0002980.0002980.000298

模型在验证集上的mAP以及损失函数的表现会作为衡量模型性能好坏的主要依据。而学习率则是调整模型训练过程的关键参数。

使用训练好的参数进行进项预测处理数据

用训练集数据验证的结果

 | 0.76249           | 0.91764                                                      | 0.93402                                                      | 0.69939                                         | 0.029954                                                     | 0.012428           | 0.0056608          | 0.000298                                                    | 0.000298                                                  | 0.000298                                                     |

模型在验证集上的mAP以及损失函数的表现会作为衡量模型性能好坏的主要依据。而学习率则是调整模型训练过程的关键参数。

使用训练好的参数进行进项预测处理数据

使用自己的权重文件预测

请添加图片描述

用训练集数据验证的结果
请添加图片描述

相关文章:

使用yolo训练自己的模型

YOLO&#xff08;You Only Look Once&#xff09;是一种用于目标检测的深度学习模型&#xff0c;旨在实时检测图像或视频中的多个对象。与传统的目标检测方法不同&#xff0c;YOLO一次性处理整个图像&#xff0c;而不是通过滑动窗口或区域提议进行多次检测。这种方法使得YOLO在…...

堆的概念实现

前言 本文将详细讲解堆。堆是一种二叉树&#xff08;一般是完全二叉树&#xff09;使用顺序结构的数组来存储。 tip&#xff1a;这里我们需要注意区分堆在不同地方的含义&#xff0c;这里的堆是一个数据结构&#xff0c;操作系统虚拟进程地址空间的堆是操作系统中管理内存的一块…...

Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展

转自 极客时间 Redis主从架构 redis主从架构搭建&#xff0c;配置从节点步骤&#xff1a; 1、复制一份redis.conf文件2、将相关配置修改为如下值&#xff1a; port 6380 pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件 logfile "6380.log" …...

pnpm + vite 从外网迁移到内网环境开发

离线安装pnpm 在有外网的机器上执行以下命令&#xff0c;下载pnpm的tgz压缩包至桌面&#xff0c;注意下载版本和当前使用版本保持一致 npm pack -g pnpm7.4.0 --pack-destination ~/Desktop将tgz压缩包拷贝至离线机器在离线机器中执行命令 npm -g i /home/user/offline/pnpm…...

寒假作业7

sql语句 创建表格 create table 表名 &#xff08;字段名 数据类型&#xff0c;字段名 数据类型&#xff09; create table if not exists 表名 &#xff08;字段名 数据类型&#xff0c; 字段名 数据类型&#xff09; 删除表格 drop table 表名&#xff1b; 插入记录 全字…...

【0257】关于pg内核shared cache invalidation messages (概念篇)

文章目录 1. inval messages2. 可配置参数(Configurable parameters)1. inval messages 所谓“共享缓存无效消息(shared cache invalidation messages)”,从概念上讲,共享缓存无效消息存储在一个无限数组中,其中maxMsgNum是存储提交消息的下一个数组下标, minMsgNum是…...

Nginx 缓存集成、清除、设置不缓存资源

文章目录 前言1. web缓存服务1.1 原理1.2 指令1.2.1 proxy_cache_path1.2.2 proxy_cache1.2.3 proxy_cache_key1.2.4 proxy_cache_valid1.2.5 proxy_cache_min_uses1.2.6 proxy_cache_methods 2. 缓存案例3. 缓存的清除3.1 删除对应的缓存目录3.2 使用第三方扩展模块ngx_cache_…...

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…...

webrtc native api的几个要点

文章目录 基本流程状态回调类sdp的中媒体行pc对象 基本流程 webrtc native的接口&#xff0c;主要就是围绕着PeerConnection对象&#xff0c;一个PeerConnection对象它代表了一次音视频会话。 那么通过PeerConnection对象建立音视频通话&#xff0c;包括如下步骤&#xff1a; …...

MinMaxScaler, StandardScaler数据预处理中常用的两种缩放方法,用于将数据标准化或归一化到特定的范围或分布

MinMaxScaler 和 StandardScaler 是数据预处理中常用的两种缩放方法&#xff0c;用于将数据标准化或归一化到特定的范围或分布。这两种缩放方法的主要区别在于它们的目标和实现方式。 MinMaxScaler MinMaxScaler 会将数据缩放到一个指定的范围&#xff0c;通常是 [0, 1] 或 […...

【Web】vulhub Shiro-550反序列化漏洞复现学习笔记

目录 Shiro简介 复现流程 工具一把梭 半脚本半手动 原理分析 反序列化入口 常见的key 登录过程 验证过程 利用原理 Shiro简介 Apache Shiro 是一个强大且易于使用的 Java 安全框架&#xff0c;用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单…...

【论文精读】多模态情感分析 —— VLP-MABSA

Vision-Language Pre-Training for Multimodal Aspect-Based Sentiment Analysis 本篇论文发表于ACL-2022 原文链接 https://arxiv.org/abs/2204.07955 源码 GitHub - NUSTM/VLP-MABSA 模态&#xff1a;图像文本 基于多模态方面的情感分析(MABSA)近年来越来越受到关注。然而&am…...

SQL SELECT TOP, LIMIT, ROWNUM 子句

在数据库中&#xff0c;LIMIT是一个用于限制结果集的关键字&#xff0c;它可以与SELECT语句一起使用。它有以下几种用法&#xff1a; LIMIT n&#xff1a;返回前n条记录。例如&#xff0c;LIMIT 10将返回结果集中的前10条记录。 LIMIT m, n&#xff1a;返回从第m1条记录开始的…...

金融信贷风控评分卡模型

评分卡模型概念 评分模型是根据借款人的历史数据&#xff0c;选取不同维度的数据类型&#xff0c;通过计算而得出的对借款人信用情况打分的模型。不同等级的信用分数代表了借款人信用情况的好坏&#xff0c;以此来分析借款人按时还款的可能性。 评分卡模型分类 A卡&#xff…...

【java苍穹外卖项目实战二】苍穹外卖环境搭建

文章目录 1、前端环境搭建2、后端环境搭建1、项目结构搭建2、Git版本控制3、数据库创建 开发环境搭建主要包含前端环境和后端环境两部分。 前端的页面我们只需要导入资料中的nginx&#xff0c; 前端页面的代码我们只需要能看懂即可。 1、前端环境搭建 前端运行环境的nginx&am…...

在 Ubuntu 22.04 上安装 Django Web 框架的方法

简介 Django 是一个功能齐全的 Python Web 框架&#xff0c;用于开发动态网站和应用程序。使用 Django&#xff0c;您可以快速创建 Python Web 应用程序&#xff0c;并依赖框架来完成大部分繁重的工作。 在本指南中&#xff0c;您将在 Ubuntu 22.04 服务器上启动 Django。安装…...

JVM Java虚拟机入门指南

文章目录 为什么学习JVMJVM的执行流程JVM的组成部分类加载运行时数据区本地方法接口执行引擎 垃圾回收什么样的对象是垃圾呢内存溢出和内存泄漏定位垃圾的方法对象的finalization机制垃圾回收算法分代回收垃圾回收器 JVM调优参数JVM调优工具Java内存泄漏排查思路CPU飙高排查方案…...

【错误文档】This与Here的区别、主系表结构、如何合并两个句子、祈使句结构

目录 This与Here的区别 主系表结构 如何合并两个句子 祈使句结构 原句中文1&#xff1a; “就是这件。” 我的翻译&#xff1a; This is it. 正确翻译&#xff1a; 书上原句&#xff1a; Here it is! 正确解释&#xff1a; 两个翻译都对&#xff0c;只是强调点不同&…...

Java入门之JavaSe(韩顺平p1-p?)

学习背景&#xff1a; 本科搞过一段ACM、研究生搞了一篇B会后&#xff0c;本人在研二要学Java找工作啦~~&#xff08;宇宙尽头是Java&#xff1f;&#xff09;爪洼纯小白入门&#xff0c;C只会STL、python只会基础Pytorch、golang参与了一个Web后端项目&#xff0c;可以说项目小…...

TCP的连接和断开详解

目录 1.TCP基础知识 1.1.TCP 头格式 1.2.TCP协议介绍 1.3.UDP协议介绍 1.4.TCP 和 UDP 区别 1.5.TCP 和 UDP 应用场景 1.6.计算机网络相关术语&#xff08;缩写&#xff09; 2.TCP 连接建立&#xff1a;三次握手 2.1.TCP 三次握手过程 2.2.三次握手原理 2.3.异常分析…...

armbian ddns

参考https://mp.weixin.qq.com/s/0Uu_nbGH_W6vAYHPH4kHqg Releases jeessy2/ddns-go GitHub mkdir -p /usr/local/ddns-go cd /usr/local/ddns-gowget https://github.com/jeessy2/ddns-go/releases/download/v6.1.1/ddns-go_6.1.1_freebsd_armv7.tar.gztar zxvf ddns-go_…...

MQTT 服务器(emqx)搭建及使用

推荐阅读&#xff1a; MQTT 服务器(emqx)搭建及使用 - 哔哩哔哩 (bilibili.com) 一、EMQX 服务器搭建 1、下载EMQX https://www.emqx.com/zh/try?productbroker 官方中文手册&#xff1a; EMQX Docs 2、安装使用 1、该软件为绿色免安装版本&#xff0c;解压缩后即安装完…...

【flink状态管理(四)】MemoryStateBackend的实现

文章目录 1.基于MemoryStateBackend创建KeyedStateBackend1.1. 状态初始化1.2. 创建状态 2. 基于MemoryStateBackend创建OperatorStateBackend3.基于MemoryStateBackend创建CheckpointStorage 在Flink中&#xff0c;默认的StateBackend实现为MemoryStateBackend&#xff0c;本文…...

前端架构: 脚手架在前端研发流程中的意义

关于脚手架 脚手架又被成为 CLI (command-line interface)基于文本界面&#xff0c;通过中断输入命令执行常见的脚手架&#xff1a;npm, webpack-cli, vue-cli拿 npm 这个脚手架来说 在终端当中输入 npm 命令, 系统就会通过文本方式返回 npm 的使用方法它这种通过命令行执行的…...

Qt网络编程-QTcpServer的封装

简单封装Tcp服务器类&#xff0c;将QTcpServer移入线程 头文件&#xff1a; #ifndef TCPSERVER_H #define TCPSERVER_H#include <QObject>class QTcpSocket; class QTcpServer; class QThread; class TcpServer : public QObject {Q_OBJECT public:explicit TcpServer(…...

【MySQL】_JDBC编程

目录 1. JDBC原理 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert 3.1 创建并初始化一个数据源 3.2 和数据库服务器建立连接 3.3 构造SQL语句 3.4 执行SQL语句 3.5 释放必要的资源 4. JDBC代码的优化 4.1 从控制台输入 4.2 避免SQL注入的SQL语句 5. 编写JDBC代码实现…...

微信小程序编译出现 project.config.json 文件内容错误

问题描述&#xff1a; 更新微信开发工具后&#xff0c;使用微信开发工具编译时出现project.config.json 文件内容错误。 原因&#xff1a;当前使用的微信开发工具非稳定版本。 解决方法&#xff1a; 在 manifest.json中加入以下代码&#xff1a; "mp-weixin" : …...

一周学会Django5 Python Web开发-Django5创建项目(用命令方式)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

DockerUI如何部署结合内网穿透实现公网环境管理本地docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…...

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML&#xff08;Unified modeling language UML&#xff09;统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的&#xff0c;是UML图中最核心的。类图的是用于…...

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架&#xff0c;它无需大量的配置即可运行起来&#xff0c;而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势&#xff0c;可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…...

C++:二叉搜索树模拟实现(KV模型)

C&#xff1a;二叉搜索树模拟实现&#xff08;KV模型&#xff09; 前言模拟实现KV模型1. 节点封装2、前置工作&#xff08;默认构造、拷贝构造、赋值重载、析构函数等&#xff09;2. 数据插入&#xff08;递归和非递归版本&#xff09;3、数据删除&#xff08;递归和非递归版本…...

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…...

十大排序算法之线性时间非比较类排序

线性时间非比较类排序 线性时间的算法执行效率也较高&#xff0c;从时间占用上看&#xff0c;线性时间非比较类排序要优于非线性时间排序&#xff0c;但其空间复杂度较非线性时间排序要大一些。因为线性时间非比较类排序算法会额外申请一定的空间进行分配排序&#xff0c;这也…...

容器基础:Docker 镜像如何保证部署的一致性?

Docker 镜像如何通过固化基础环境、固化依赖性和固化软件启动流程保证部署的一致性 Docker 镜像通过以下三个方面保证部署的一致性&#xff1a; 1. 固化基础环境: 镜像包含构建应用程序所需的所有环境依赖项&#xff0c;例如操作系统、库和工具。构建镜像时&#xff0c;所有…...

爪哇部落算法组2024新生赛热身赛题解

第一题&#xff08;签到&#xff09;&#xff1a; 1、题意&#xff1a; 2、题解: 我们观察到happynewyear的长度是12个字符&#xff0c;我们直接从前往后遍历0到n - 12的位置&#xff08;这里索引从0开始&#xff09;&#xff0c;使用C的substr()函数找到以i开头的长度为12的字…...

1123. 铲雪车(欧拉回路)

活动 - AcWing 随着白天越来越短夜晚越来越长&#xff0c;我们不得不考虑铲雪问题了。 整个城市所有的道路都是双向车道,道路的两个方向均需要铲雪。因为城市预算的削减&#xff0c;整个城市只有 1 辆铲雪车。 铲雪车只能把它开过的地方&#xff08;车道&#xff09;的雪铲干…...

网络协议与攻击模拟_15FTP协议

了解FTP协议 在Windows操作系统上使用serv-U软件搭建FTP服务 分析FTP流量 一、FTP协议 1、FTP概念 FTP&#xff08;文件传输协议&#xff09;由两部分组成&#xff1a;客户端/服务端&#xff08;C/S架构&#xff09; 应用场景&#xff1a;企业内部存放公司文件、开发网站时利…...

「效果图渲染」效果图与3D影视动画渲染平台

效果图渲染和3D影视动画渲染都是视觉图像渲染的领域应用。效果图渲染主要服务于建筑、室内设计和产品设计等行业&#xff0c;这些领域通常对视觉呈现的精度和细节有较高要求。与之相比&#xff0c;3D影视动画渲染则普遍应用于电影、电视、视频游戏和广告等媒体领域&#xff0c;…...

Blender_查看版本

Blender_查看版本 烦人的烦恼&#xff0c;没找见哪儿可以查看版本&#xff1f; 算是个隐蔽的角落&#xff01;...

node.js 读目录.txt文件,用 xml2js 转换为json数据,生成jstree所需的文件

请参阅&#xff1a;java : pdfbox 读取 PDF文件内书签 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 npm install elementtree ; npm install xml2js ; node.js 用 elementtree读目录.txt文件&#xff0c;用 xml2js 转换为…...

【Docker】02 镜像管理

文章目录 一、Images镜像二、管理操作2.1 搜索镜像2.1.1 命令行搜索2.1.2 页面搜索2.1.3 搜索条件 2.2 下载镜像2.3 查看本地镜像2.3.1 docker images2.3.2 --help2.3.3 repository name2.3.4 --filter2.3.5 -q2.3.6 --format 2.4 给镜像打标签2.5 推送镜像2.6 删除镜像2.7 导出…...

了解海外云手机的多种功能

随着社会的高度发展&#xff0c;海外云手机成为商家不可或缺的工具&#xff0c;为企业出海提供了便利的解决方案。然而&#xff0c;谈及海外云手机&#xff0c;很多人仍不了解其强大功能。究竟海外云手机有哪些功能&#xff0c;可以为我们做些什么呢&#xff1f; 由于国内电商竞…...

白酒:自动化生产线的优势与实践

随着科技的进步&#xff0c;自动化生产线在各行各业的应用越来越广泛。云仓酒庄的豪迈白酒在生产过程中&#xff0c;也积极引入自动化生产线&#xff0c;以提升生产效率、品质和安全性。 首先&#xff0c;自动化生产线能够显著提高生产效率。传统的手工生产线在生产过程中容易受…...

用HTML5实现灯笼效果

本文介绍了两种实现效果&#xff1a;一种使用画布&#xff08;canvas&#xff09;标签/元素&#xff0c;另一种不用画布&#xff08;canvas&#xff09;标签/元素主要使用CSS实现。 使用画布&#xff08;canvas&#xff09;标签/元素实现&#xff0c;下面&#xff0c;在画布上…...

Postgresql源码(120)事务XID分配与主备XID同步

参考 《Postgresql源码&#xff08;25&#xff09;子事务可见性判断和性能问题》 XID获取顶层入口 函数&#xff1a;AssignTransactionId static void AssignTransactionId(TransactionState s) {...优先给没有事务ID的父事务分配 确保父事务有 XID&#xff0c;以便子事务总是…...

B2077 角谷猜想(洛谷)

题目描述 所谓角谷猜想&#xff0c;是指对于任意一个正整数&#xff0c;如果是奇数&#xff0c;则乘 33 加 11&#xff0c;如果是偶数&#xff0c;则除以 22&#xff0c;得到的结果再按照上述规则重复处理&#xff0c;最终总能够得到 11。如&#xff0c;假定初始整数为 55&…...

排序算法---归并排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 归并排序是一种常见的排序算法&#xff0c;它采用了分治的思想。它将一个待排序的数组递归地分成两个子数组&#xff0c;分别对两个子数组进行排序&#xff0c;然后将排好序的子数组合并成一个有序数组。 具体的归并排序过…...

[WUSTCTF2020]朴实无华(特详解)

一开始说header出问题了 就先dirsaerch扫一遍 发现robot.txt 访问一下 去看看&#xff0c;好好好&#xff0c;肯定不是得 他一开始说header有问题&#xff0c;不妨抓包看看&#xff0c;果然有东西 访问看看&#xff0c;乱码修复一下&#xff0c;在之前的博客到过 <img src…...

下载已编译的 OpenCV 包在 Visual Studio 下实现快速配置

自己编译 OpenCV 挺麻烦的&#xff0c;配置需要耗费很长时间&#xff0c;编译也需要很长时间&#xff0c;而且无法保证能全部编译通过。利用 OpenCV 官网提供的已编译的 OpenCV 库可以节省很多时间。下面介绍安装配置方法。 1. OpenCV 官网 地址是&#xff1a;https://opencv…...