【youcans动手学模型】YOLO5 实战(中)训练目标检测模型

news2024/11/14 20:53:47

欢迎关注『youcans动手学模型』系列
本专栏内容和资源同步到 GitHub/youcans


YOLO5 实战 (上)环境配置与测试

【youcans动手学模型】YOLO5 实战(中)使用自己的数据集训练目标检测模型

    • 1. 准备训练数据集
      • 1.1 开源数据集
      • 1.2 YOLOv5 训练数据集
      • 1.3 从 Roboflow 下载公开数据集
    • 2. 修改数据集配置文件 data.yaml
    • 3. 修改 YOLOv5 的训练程序 train.py
      • 3.1 下载 YOLOv5 预训练模型
      • 3.2 配置 YOLOv5 模型训练的参数
      • 3.3 命令行运行 YOLOv5 训练程序
      • 3.4 修改训练程序 train.py
    • 4. 训练 YOLOv5 模型
      • 4.1 使用 train1.py 训练模型
      • 4.2 使用命令行训练模型
      • 4.3 训练结果
    • 5. 使用训练模型进行推理
    • 6. 错误的处理
      • 报错1:Git 执行发生错误
      • 报错2:没有正常生成标签

上节介绍了 YOLOv5 的下载、配置和推理,本节介绍用本地数据集训练 YOLOv5 模型,建立特定任务的模型。

创建自定义模型来检测对象是一个迭代过程,包括收集和组织图像、标注对象、训练模型、模型部署,使用部署的模型进行推理。

使用自己的数据集训练专用的 YOLOv5 模型,可以使用网络上的开源数据集,也可以使用自己收集的图片进行标注制作数据集。

在这里插入图片描述


1. 准备训练数据集

1.1 开源数据集

网络上有很多开源的目标检测数据集。

kaggle:一个庞大的社区发布的模型、数据和代码库
Roboflow:构建和部署计算机视觉模型所需的一切
极市:海量数据集
数据科学银行:数据发布的开放可信全球公共产品

在这里插入图片描述


1.2 YOLOv5 训练数据集

YOLOv5 默认使用 COCO2017 数据集进行训练,将数据集保存在与 YOLOv5 同一级的文件目录路径中。结构如下。

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: python train.py --data coco.yaml
# parent
# ├── yolov5
# └── datasets
#     └── coco  ← downloads here (20.1 GB)
 
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
#path: ../mydatas/  # dataset root dir
train: mydatas/train.txt  # train images (relative to 'path') 118287 images
val: mydatas/val.txt  # val images (relative to 'path') 5000 images
test: mydatas/test.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

COCO128 是一个小型数据集,由COCO train2017中的前128张图像组成。这128张图像用于训练和验证,以验证我们的训练管道是否能够过拟合。

data/coco128.yaml是数据集配置文件,如下所示,它定义了:
(1)数据集根目录路径和训练/val/test图像目录的相对路径(或具有图像路径的*.txt文件),
(2)类名字典:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes (80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

1.3 从 Roboflow 下载公开数据集

Roboflow Annotate是一个简单的基于网络的工具,用于管理和标记用户的图像集,并以YOLOv5的注释格式导出。无论是否使用 Roboflow 标记图像,都可以使用它将数据集转换为YOLO格式,创建YOLOv5 YAML配置文件,并将其托管以导入训练脚本。

(1)打开 Roboflow 网站,从Roboflow 公开数据集中选择一个数据集,下载到本地。

例如,作者选择 口罩数据集 Mask Wearing Dataset。该数据集是一个物体检测数据集,包括 149张 戴各种口罩和不戴口罩的人脸图像。可以使用这个数据集来训练一个模型,用于检测给定照片中的人是否戴口罩。

(2)Roboflow 提供了多种下载格式,主要是数据集组织和标注格式的区别。注意要以YOLOv5 Pytorch格式导出,如下图所示。

在这里插入图片描述

(3)下载后将数据集解压缩,保存在与 YOLOv5 同一级的文件目录路径中。结构如下所示。

- Python
  - PythonProjects
    - DataSetMask
      - test
        - images
        - labels
      - train
        - images
        - labels
      - valid
        - images
        - labels
    - VOLOv5

Mask Wearing Dataset 数据集设有 test,train,valid 三个文件夹,分别用作测试、训练和检验,每个文件夹下设有 images,labels 两个文件夹,分别保存图像文件和标注文件。

一个典型的标注文件的内容如下。共有 3行,每行表示一个检测目标。每行有 5个参数,第1列是类别标签(Yes/No),后 4个参数是 BoundingBox 的坐标位置。

0 0.31875 0.5976190476190476 0.05583333333333333 0.13174603174603175
0 0.31916666666666665 0.2912698412698413 0.12833333333333333 0.3253968253968254
0 0.5270833333333333 0.16746031746031745 0.12416666666666666 0.2841269841269841

如果自己收集和整理数据集,也要按照以上格式来组织数据集和标注文件。


2. 修改数据集配置文件 data.yaml

YOLOv5 模型训练时,要调用数据集配置文件 YAML 文件( .yaml)。

因此,需要在数据集所在的文件夹(例如…/DataSetMask/)创建一个 data.yaml 的文件来存放我们已经整理好的数据,内容如下:

train: ../DataSetMask/train/images
val: ../DataSetMask/valid/images
test: ../DataSetMask/valid/images


nc: 2
names: ['mask', 'no-mask']

其中,train 表示训练集图像文件夹的路径,val 表示验证集图像文件夹的路径,test 表示测试集图像文件夹的路径。nc:2 表示类别数为 2(分为带口罩、不带口罩 2类),names 表示类别名(类别名的个数为 nc)。

注意,nc 是由数据集的标注内容决定的,不能自行修改。


3. 修改 YOLOv5 的训练程序 train.py

3.1 下载 YOLOv5 预训练模型

推荐从 YOLOv5 release下载 YOLOv5 预训练模型。

本文选择 YOLOv5s,参数约 7.2M。下载完成后,将下载的预训练模型文件 yolov5s.pt 放在 YOLOv5 项目路径下,例如"C:\Python|PythonProjects\YOLOv5\yolov5s.pt"。


3.2 配置 YOLOv5 模型训练的参数

使用自己的数据集训练 YOLOv5 模型,运行 train.py 需要注意以下参数:

  • weight,先选用官方的 yolov5s.pt 权重

  • cfg,选择 model 目录下的 yolov5s 模型配置文件

  • data,选择自己编写的数据集配置文件 dataset.yaml

  • epoch,指整个数据集被训练次数,根据计算机性能和需要确定,新手练习时可以设为 2

  • batch_size,每次读入的样本数量,根据计算机性能和需要确定,新手练习时可以设为 2


3.3 命令行运行 YOLOv5 训练程序

通过命令行就可以运行 YOLOv5 训练程序 train.py :

python train.py --weights yolov5s.pt --cfg models/yolov5s.yaml --data …/DataSetMask/data.yaml --epoch 5 --batch-size 4 --img 640 --device cpu


3.4 修改训练程序 train.py

对于新手,通过命令行直接输入模型训练参数比较麻烦,也可以直接对 YOLOv5 训练程序进行修改,设置模型训练的参数。

在 train.py 中对 weight,cfg,data 参数进行修改,另存为 train1.py:

def parse_opt(known=False):
    parser = argparse.ArgumentParser()
    parser.add_argument("--weights", type=str, default=ROOT / "yolov5s.pt", help="initial weights path")
    parser.add_argument("--cfg", type=str, default="models/yolov5s.yaml", help="model.yaml path")
    parser.add_argument("--data", type=str, default=ROOT / "data/mydata.yaml", help="dataset.yaml path")
    ...

进一步的,也可以在程序中修改默认的 训练参数,例如:

    parser.add_argument("--epochs", type=int, default=5, help="total training epochs")
    parser.add_argument("--batch-size", type=int, default=2, help="total batch size for all GPUs, -1 for autobatch")

4. 训练 YOLOv5 模型

4.1 使用 train1.py 训练模型

使用修改的模型训练程序 train1.py,对本地数据集 DataSetMask 进行训练。结果如下。

训练过程中可能出现一些报错,处理方法详见下节“报错的处理”。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.2 使用命令行训练模型

使用命令行运行 YOLOv5 训练程序 train.py ,运行结果如下:

(torch) PS C:\Python\PythonProjects\YOLOv5> conda activate torch
(torch) PS C:\Python\PythonProjects\YOLOv5> python train1.py --weights yolov5s.pt  --cfg models/yolov5s.yaml  --data ../DataSetMask/data.yaml --epoch 10 --batch-size 4 --img 640   --device cpu

train1: weights=yolov5s.pt, cfg=models/yolov5s.yaml, data=../DataSetMask/data.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=10, batch_size=4, 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=cpu, 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-7-29 Python-3.8.19 torch-2.3.1+cu121 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=2

                 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     18879  models.yolo.Detect                      [2, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
YOLOv5s summary: 214 layers, 7025023 parameters, 7025023 gradients, 16.0 GFLOPs

Transferred 342/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 C:\Python\PythonProjects\DataSetMask\train\labels.cache... 105 images, 0 backgrounds, 0 corrupt: 100%|██████████| 105/105 [00:00<?, ?it/s]
val: Scanning C:\Python\PythonProjects\DataSetMask\valid\labels.cache... 29 images, 0 backgrounds, 0 corrupt: 100%|██████████| 29/29 [00:00<?, ?it/s]


AutoAnchor: 5.89 anchors/target, 0.999 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\exp2\labels.jpg... 
Image sizes 640 train, 640 val
Using 4 dataloader workers
Logging results to runs\train\exp2
Starting training for 10 epochs...

      Epoch    GPU_mem   box_loss   obj_loss   cls_loss  Instances       Size
        0/9         0G     0.1147    0.06687    0.02794          0        640: 100%|██████████| 27/27 [01:40<00:00,  3.73s/it]
                 Class     Images  Instances          P          R      mAP50   mAP50-95:   0%|          | 0/4 [00:00<?, ?it/s]WARNING  NMS time limit 0.900s exceeded
                 Class     Images  Instances          P          R      mAP50   mAP50-95:  25%|██▌       | 1/4 [00:02<00:07,  2.57s/it]WARNING  NMS time limit 0.900s exceeded
                 Class     Images  Instances          P          R      mAP50   mAP50-95:  50%|█████     | 2/4 [00:05<00:05,  2.78s/it]WARNING  NMS time limit 0.900s exceeded
                 Class     Images  Instances          P          R      mAP50   mAP50-95:  75%|███████▌  | 3/4 [00:09<00:03,  3.27s/it]WARNING  NMS time limit 0.750s exceeded
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 4/4 [00:11<00:00,  2.82s/it]
                   all         29        162    0.00479      0.149     0.0033   0.000824

...

10 epochs completed in 0.301 hours.
Optimizer stripped from runs\train\exp2\weights\last.pt, 14.4MB
Optimizer stripped from runs\train\exp2\weights\best.pt, 14.4MB

Validating runs\train\exp2\weights\best.pt...
Fusing layers... 
YOLOv5s summary: 157 layers, 7015519 parameters, 0 gradients, 15.8 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 4/4 [00:08<00:00,  2.07s/it]
                   all         29        162      0.744      0.292      0.315      0.146
                  mask         29        142      0.489      0.585      0.497      0.227
               no-mask         29         20          1          0      0.133     0.0649
Results saved to runs\train\exp2



4.3 训练结果

训练好的模型自动保存在 YOLOv5 目录下的 runs/train/exp/weights/ 文件夹中:

在这里插入图片描述

训练日志自动保存在 YOLOv5 目录下的 runs/train/exp/ 文件夹中:

请添加图片描述

请添加图片描述

请添加图片描述


5. 使用训练模型进行推理

detect.py 程序默认读取 data\images 路径的图片,结果默认保存到 runs/detect 文件夹中。

直接在 PyCharm 运行 detect.py 程序,或者从控制台运行 detect.py。这里我们刚才使用训练的模型 best.pt,对图片 Mask02.jpg 进行目标检测和识别。

python detect.py --weights runs/train/exp/weights/best.pt --source data/images/Mask02.jpg

运行结果如下。

(torch) PS C:\Python\PythonProjects\YOLOv5> python detect.py --weights runs/train/exp/weights/best.pt --source data/images/Mask02.jpg
detect: weights=['runs/train/exp/weights/best.pt'], source=data/images/Mask02.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1
YOLOv5  2024-7-29 Python-3.8.19 torch-2.3.1+cu121 CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)

Fusing layers...
YOLOv5s summary: 157 layers, 7015519 parameters, 0 gradients, 15.8 GFLOPs
image 1/1 C:\Python\PythonProjects\YOLOv5\data\images\Mask02.jpg: 480x640 3 masks, 1 no-mask, 126.7ms
Speed: 3.3ms pre-process, 126.7ms inference, 25.2ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp4

运行结果保存在 runs\detect\exp4 路径,结果如下图所示。

请添加图片描述


6. 错误的处理

报错1:Git 执行发生错误

ImportError: Bad git executable.

ImportError: Bad git executable.
The git executable must be specified in one of the following ways:
- be included in your $PATH
- be set via $GIT_PYTHON_GIT_EXECUTABLE
- explicitly set via git.refresh(<full-path-to-git-executable>)

解决方案:按照报错信息找到git下的cmd文件,添加下方代码

import os
os.environ["GIT_PYTHON_REFRESH"] = "quiet"

报错2:没有正常生成标签

AssertionError: train: All labels empty in E:\pythonProject\y2_data\train.cache, can not start training. See https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data

解决方案:大小写问题,类别名如果以大写开头则无法生成标签,labels中的txt文件都是空的,要改称小写字母开头。例如:

classes = ["banana", "snake fruit", "dragon fruit", "pineapple"]

【本节完】


版权声明:
欢迎关注『youcans动手学模型』系列
转发请注明原文链接:
【youcans动手学模型】YOLO5 实战(中)使用自己的数据集训练目标检测模型
Copyright 2024 youcans, XUPT
Crated:2024-08-08


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s1.18.0完整部署教程

k8s的官网地址&#xff1a;https://kubernetes.io/docs Kubernetes 也称为 K8s&#xff0c;是一个开源系统&#xff0c;用于自动化容器化应用程序的部署、扩展和管理。 K8s通过各种资源对象来管理pod相关的功能&#xff0c;借助pod本身的功能实现大规模容器应用的自动化管理&…

享界S9+问界M9,华为智选车的高端局

作者 |老缅 编辑 |德新 8月6日&#xff0c;鸿蒙智行在北京发布D级纯电旗舰轿车&#xff0c;也是北汽 - 华为智选车合作的第一款车型&#xff0c;享界S9。 享界S9搭载了包括华为乾崑ADS 3.0在内的多项首发技术&#xff0c;全系标配100kWh华为800V巨鲸电池。 而在价格上&#…

mysql⑥:约束

一&#xff0c;概念 例子&#xff1a; 外键约束 例子&#xff1a; 外键的删除和更新

从商业角度分析,充电桩还能赚钱吗?

一、投入与产出 1、投入 是建设成本&#xff0c;包括设备&#xff08;箱变、充电设备、电缆等&#xff09;、土建和配套&#xff08;雨棚、照明、监控等&#xff09;。二是运营成本&#xff0c;包括租金、人工、电损等。 2、产出 充电手续费以及增值服务&#xff08;停车费…

力扣高频SQL 50题(基础版)第三十八题之1484.按日期分组销售产品

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题 1484.按日期分组销售产品 题目说明 表 Activities&#xff1a; ---…

shell的条件测试

为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符。 通过这些运算符&#xff0c;Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句&#xff0c;例如判断语句和循环语句中发挥了重要的作用&#xff0c;所…

算法训练.

一.扩散 题解&#xff1a; 计算点之间的距离&#xff0c;然后对图进行处理即可&#xff0c;这个数据规模较小&#xff0c;因此我使用了floyd,还有最小生成树和二份答案加并查集的写法&#xff1b; 代码&#xff1a; #include <iostream> #include <cstring> #in…

微信小程序流量主收益

小程序流量主已经开通三天了,目前收益1.42,,,,,,,,,,,,,,,不过确实点击量不怎么多 再附上我的流量主小程序 点击量如果上去的话,收益应该还是可观的,有想开流量主的任何问题都可以骚扰我,,对小程序有任何意见也欢迎反馈~ 一起进步,一起学习~

CentOS linux 安装openssl(openssl拒绝服务漏洞【CVE-2022-0778】解决)

一、安装 1.下载相关openssl包 下载地址&#xff1a; https://www.openssl.org/source/ 2.将下载好的压缩包放到 /app/server/nginx 路径下&#xff08;根据自己实际需求定义&#xff09; 3.切换至该路径 cd /app/server/nginx4.压缩包解压 压缩包解压 &#xff1a;tar -…

矩阵算法的介绍和实现

一. 介绍 首先我们要清楚矩阵是什么&#xff1a;矩阵是一个按照长方阵列排列的复数或实数集合 1> 定义 定义&#xff1a;mn矩阵为mn个数排成的m行n列的表格&#xff0c;当mn时&#xff0c;矩阵A称为n阶方阵或者n阶矩阵。零矩阵&#xff1a;矩阵所有元素都为0。同型矩阵&a…

Centos7.6配置阿里云镜像源

1、备份本地镜像源&#xff0c;将/etc/yum.repos.d/下所有文件备份到/etc/yum.repos.d/bak/下 2、下载阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 3、清除yum缓存-yum clean all 4、验证镜像源仓库 yum repolist

Redis漏洞复现【vulhub靶场】

步骤一&#xff1a;打开靶场 进入目录:cd /vulhub-master/redis/4-unacc 启动:docker-compose up -d 检查:docker-compose ps 步骤二&#xff1a;打开kali在kali安装redis程序 #安装redis apt-get install redis #redis链接 redis-cli -h 192.168.4.176-p 6379#redis常见命令 (…

智慧合规与合同管理是未来企业竞争力的关键

在法律和市场规则日益完善的当代&#xff0c;企业合规是公司治理的核心。它像是一道紧箍咒&#xff0c;确保企业遵循法律法规&#xff0c;避开违规风险&#xff1b;同时也是一枚护身符&#xff0c;保护企业免受不必要的诉讼和罚款&#xff1b;更加是企业竞争力的体现&#xff0…

使用 Prometheus 和 Grafana 监控 FastAPI 服务

在现代应用开发中&#xff0c;监控和可视化服务的运行状态和性能指标对于保证系统稳定性至关重要。本文将介绍如何使用 Prometheus 和 Grafana 对 FastAPI 服务进行监控和可视化&#xff0c;并展示如何通过 prometheus_fastapi_instrumentator 将 FastAPI 应用与 Prometheus 集…

zabbix监控1

1、概念 自带图形化界面&#xff0c;通过网页就可以监控所有服务器的状态。 事件告警、邮件通知 web界面提供的分布式监控以及网络监控功能的开源的企业级的软件解决方案 zabbix可以提供各种类型的监控模版&#xff0c;保证服务器的正常运行&#xff0c;灵活的通知机制可以…

惠海 H7303 DCDC线性恒流IC PWM调光无电感低压差大电流 9V 12V 24V 30V球泡灯/转向灯方案

H7303是一种带PWM调光功能的线性降压恒流LED驱动器&#xff0c;仅需外接一个电阻就可以构成一个完整的LED恒流驱动电路,调节该外接电阻就可以调节输出电流&#xff0c;输出电流可调范围为16~2000mA。H7303内置过热保护功能&#xff0c;可有效保护芯片&#xff0c;避免因过热而造…

【经验分享】ShardingSphere+Springboot-04:自定义分片算法(COMPLEX/STANDARD)

文章目录 3.4 CLASS_BASED 自定义类分片算法3.4.1 复杂分片自定义算法&#xff08;strategyCOMPLEX &#xff09;3.4.2 STANDARD 标准分片自定义算法## 进阶:star: 自定义算法范围查询优化 3.4 CLASS_BASED 自定义类分片算法 3.4.1 复杂分片自定义算法&#xff08;strategyCOM…

Windows 10 /11 系统上安装Arc浏览器!超详细的教程

Arc浏览器在在发布以后&#xff0c;给人留下了相当不错的第一印象。 简洁的界面设计,巧妙的操作逻辑,使用过后让人爱不释手,体验出众&#xff01;目前官方提供了Windows 11 和 Mac版 官方下载&#xff1a;【链接直达】 如果你是Windows 10系统&#xff0c;由于官方没有直接提…

加固三防笔记本电脑:保护数据安全的首选设备

随着信息技术的飞速发展&#xff0c;笔记本电脑早已成为现代生活中不可或缺的工具。然而&#xff0c;普通的笔记本电脑无法适应一些特殊的环境&#xff0c;在数据安全保护方面也有着一定的风险。加固三防笔记本电脑则是保护数据安全的首选设备。下面将介绍加固三防笔记本电脑的…

掌控150+KOC账号!游戏厂商深掘ChinaJoy余温,热度再飙升!

4天36.7万人次&#xff0c;抖音话题总播放次数达到10.9亿&#xff01; ChinaJoy&#xff08;以下简称CJ&#xff09;官方给出了第21届CJ的参观总人次和线上流量数据&#xff0c;展现了其应有的“顶流”热度。 作为全球数字娱乐领域最具知名度与影响力的年度盛会&#xff0c;202…