超详细深入理解YOLOv8配置参数:了解多种任务计算机视觉模型训练

news2024/11/27 17:39:57

目录

yolov8导航

YOLOv8(附带各种任务详细说明链接)

ultralytics/ultralytics/cfg/default.yaml

训练模式和任务类型参数

 训练参数

训练期间验证和测试参数

预测部分相关参数

可视化部分相关参数

模型导出部分相关参数

训练超参数相关参数

ultralytics/cfg/datasets/XXXX.yaml

图像分类配置方法

目标检测配置方法

实例分割配置方法

姿态估计配置方法

训练、验证和测试集路径配置

关键点配置

类别字典

总结


yolov8导航

        如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。

YOLOv8(附带各种任务详细说明链接)

        在YOLOV8进行训练的时候,了解训练相关的配置文件以及参数的含义与说明是很有必要的。当然在不同的任务中这些参数不是通用的。具体什么样的参数更优,还需要实际的去做实验进行比较。

ultralytics/ultralytics/cfg/default.yaml

        文件包含了用于训练、评估和部署 YOLO 模型的默认设置和超参数。这个文件作为一个配置文件,为模型的各种操作提供了标准化的参数和设置。

训练模式和任务类型参数

参数名称默认值参数解释调参建议
taskdetectYOLO任务类型,如detect, segment, classify, pose根据项目需求选择合适的任务类型。不同的任务类型适用于不同的应用场景,例如目标检测(detect)、图像分割(segment)、图像分类(classify)或姿态估计(pose)。
modetrainYOLO模式,如train, val, predict, export, track, benchmark选择符合当前需求的模式。例如,train 用于模型训练,val 用于验证,predict 用于预测,export 用于模型导出,track 用于对象跟踪,benchmark 用于性能评估。

        这些参数主要用于定义模型的基本运行模式和任务类型。在实际应用中,应根据具体需求和场景选择合适的 taskmode。例如,如果目的是在一个新的数据集上训练一个目标检测模型,那么 task 应设置为 detect,而 mode 应设置为 train

 训练参数

参数名称默认值参数解释调参建议
model(空)模型文件路径,如 yolov8n.pt, yolov8n.yaml指定预训练模型或自定义模型配置文件
data(空)数据文件路径,如 coco128.yaml指定训练数据配置文件
epochs100训练的总周期数根据数据集大小和模型复杂度调整
time(空)训练的总小时数,如果提供,会覆盖epochs如果有时间限制,可设置该参数
patience50无显著改善时停止训练的等待周期数可根据训练过程中的收敛情况进行调整
batch16每批图像数量 (-1 为 AutoBatch)根据GPU内存大小调整
imgsz640输入图像尺寸根据实际需求和硬件限制调整
saveTrue是否保存训练检查点和预测结果根据需要开启或关闭
save_period-1每x周期保存一次检查点 (如果 < 1 则禁用)根据训练周期和需求调整
cacheFalse是否使用缓存进行数据加载根据数据集大小和加载速度决定
device(空)运行设备,如cuda device=0 或 device=cpu根据硬件资源分配合适的设备
workers8数据加载的工作线程数根据系统资源和数据集大小调整
project(空)项目名称设置项目名称以组织输出目录
name(空)实验名称,结果保存在 'project/name' 目录为实验分配一个描述性名称
exist_okFalse是否覆盖现有实验根据需要决定是否覆盖
pretrainedTrue是否使用预训练模型或从特定模型加载权重选择合适的预训练模型以加速训练
optimizerauto使用的优化器,选择包括 SGD, Adam 等根据模型和数据选择最优化器
verboseTrue是否打印详细输出依据需要调整输出详细程度
seed0随机种子,用于可重现性设置种子以保证实验可重复性
deterministicTrue是否启用确定性模式在需要确保结果一致性时启用
single_clsFalse是否将多类别数据当作单一类别训练在单类别训练场景中启用
rectFalse矩形训练或验证在适当的应用场景中选择
cos_lrFalse是否使用余弦学习率调度器适用于长周期训练
close_mosaic10最后几个周期禁用mosaic增强 (0 to disable)根据训练进展调整增强策略
resumeFalse是否从最后检查点恢复训练中断后恢复训练时启用
ampTrue是否使用自动混合精度 (AMP) 训练在硬件支持的情况下启用以提高效率
fraction1.0训练集使用的数据比例在有限的资源下可选择使用部分数据
profileFalse训练期间是否分析ONNX和TensorRT速度性能分析时启用
freezeNone冻结的层的数量或层索引列表在迁移学习场景中冻结特定层
overlap_maskTrue训练时掩码是否重叠(仅限分割训练)在分割任务中根据需要调整
mask_ratio4掩码降采样比率(仅限分割训练)根据分割任务和图像分辨率调整
dropout0.0使用dropout正则化(仅限分类训练)在分类任务中根据模型复杂度和过拟合情况调整

        这些参数涵盖了从模型选择和数据配置到训练细节和优化策略的多个方面。

训练期间验证和测试参数

参数名称默认值参数解释调参建议
valTrue训练期间是否进行验证/测试根据需要开启或关闭。在大多数情况下,保持开启以监控模型性能
splitval用于验证的数据集划分,如 'val', 'test' 或 'train'选择合适的数据集划分进行验证
save_jsonFalse是否将结果保存为JSON文件如果需要详细的输出结果,可以开启此选项
save_hybridFalse是否保存混合版本的标签(标签 + 额外预测)在需要综合标签和预测结果的场景中开启
conf(空)用于检测的对象置信度阈值(默认0.25预测,0.001验证)根据应用需求调整置信度阈值
iou0.7非极大值抑制(NMS)的交并比(IoU)阈值调整以平衡检测的准确性和召回率
max_det300每张图像的最大检测数量根据实际应用场景和性能需求调整
halfFalse是否使用半精度(FP16)在支持FP16的硬件上开启以提高性能
dnnFalse是否使用OpenCV DNN进行ONNX推理在不支持PyTorch但支持OpenCV DNN的环境中开启
plotsTrue训练/验证期间是否保存图表和图像根据需要进行可视化分析时开启

         这些参数主要涉及模型在训练期间的验证和测试设置,以及结果的保存和展示方式。正确地配置这些参数对于模型性能评估和优化至关重要。

预测部分相关参数

参数名称默认值参数解释调参建议
source(空)图像或视频的源目录指定用于预测的图像或视频的源目录
vid_stride1视频帧率步长根据需要调整视频处理的帧率
stream_bufferFalse是否缓冲所有流媒体帧(True)或返回最近的帧(False)根据实时处理需求和资源限制调整
visualizeFalse是否可视化模型特征在需要分析模型特征时启用
augmentFalse是否对预测源应用图像增强在需要改善预测性能或鲁棒性时启用
agnostic_nmsFalse是否使用类别不可知的非极大值抑制(NMS)在检测不区分类别的应用场景中启用
classes(空)过滤结果的类别,如classes=0,或classes=[0,2,3]在需要特定类别的检测时设置
retina_masksFalse是否使用高分辨率分割掩码在进行高精度分割任务时启用

         这部分参数主要涉及模型的预测过程,包括输入源的设置、视频处理的配置、结果的可视化和类别过滤等。正确配置这些参数可以帮助更好地利用模型进行图像和视频的预测分析。

可视化部分相关参数

参数名称默认值参数解释调参建议
showFalse是否展示预测的图像和视频在需要实时查看结果时启用
save_framesFalse是否保存预测的视频帧在需要分析单独帧时启用
save_txtFalse是否将结果保存为文本文件在需要详细的文本输出时启用
save_confFalse是否在结果中包含置信度分数在需要评估或展示置信度时启用
save_cropFalse是否保存结果的裁剪图像在需要分析或使用检测到的对象时启用
show_labelsTrue是否显示预测标签,如 'person'在需要识别和展示检测对象时保持开启
show_confTrue是否显示预测置信度,如 '0.99'在需要展示每个检测对象的置信度时保持开启
show_boxesTrue是否展示预测边界框在需要可视化检测边界时保持开启
line_width(空)边界框的线宽,如果为空则根据图像大小缩放根据可视化需求和图像大小调整

        这部分参数主要用于控制预测结果的可视化和输出方式。适当调整这些参数可以帮助更好地理解和展示模型的预测结果,特别是在开发和调试阶段。根据需求,可以开启或关闭某些功能,以获取最佳的可视化效果。 

模型导出部分相关参数

参数名称默认值参数解释调参建议
formattorchscript导出模型的格式根据需要选择合适的格式,如 TorchScript, ONNX, Keras 等
kerasFalse是否使用Keras如果需要将模型转换为Keras格式,则启用
optimizeFalse是否为移动设备优化TorchScript模型在需要部署到移动设备时启用
int8False是否使用CoreML/TF的INT8量化在需要优化模型大小和推理速度时启用
dynamicFalse是否为ONNX/TF/TensorRT启用动态轴在需要动态输入大小时启用
simplifyFalse是否简化ONNX模型在需要简化模型结构以提高兼容性时启用
opset(空)ONNX的操作集版本根据目标平台和ONNX版本选择合适的opset
workspace4TensorRT的工作空间大小(GB)根据可用内存资源调整工作空间大小
nmsFalse是否在CoreML中添加非极大值抑制(NMS)在需要在CoreML模型中内置NMS时启用

         这些参数主要涉及将训练好的YOLOv8模型导出为不同格式,以便于在不同平台和应用场景中部署。合理选择和配置这些参数对于模型的有效部署和性能优化至关重要。

训练超参数相关参数

参数名称默认值参数解释调参建议
lr00.01初始学习率根据模型和数据集大小调整
lrf0.01最终学习率 (lr0 * lrf)根据训练策略调整
momentum0.937SGD动量/Adam的beta1根据优化器类型和训练过程调整
weight_decay0.0005优化器的权重衰减防止过拟合时调整
warmup_epochs3.0热身周期数根据模型和数据集调整热身期
warmup_momentum0.8热身期初始动量在热身期调整动量以稳定训练
warmup_bias_lr0.1热身期偏置的学习率在热身期适当提高偏置项的学习率
box7.5边界框损失增益根据检测任务调整
cls0.5类别损失增益根据分类任务和类别不平衡调整
dfl1.5dfl损失增益根据任务具体需求调整
pose12.0姿态损失增益在姿态估计任务中调整
kobj1.0关键点对象损失增益在关键点检测任务中调整
label_smoothing0.0标签平滑在多类别分类中使用以提高泛化性
nbs64名义批量大小根据GPU内存和模型大小调整
hsv_h0.015HSV-色调增强的比例根据数据集特性调整图像增强参数
hsv_s0.7HSV-饱和度增强的比例同上
hsv_v0.4HSV-值增强的比例同上
degrees0.0图像旋转角度根据需求调整图像增强程度
translate0.1图像平移比例根据需求调整图像增强程度
scale0.5图像缩放增益根据需求调整图像增强程度
shear0.0图像剪切角度根据需求调整图像增强程度
perspective0.0图像透视变换的比例根据需求调整图像增强程度
flipud0.0图像上下翻转的概率根据需求调整图像增强程度
fliplr0.5图像左右翻转的概率根据需求调整图像增强程度
mosaic1.0图像马赛克增强的概率根据需求调整图像增强程度
mixup0.0图像混合增强的概率根据需求调整图像增强程度
copy_paste0.0分割复制粘贴的概率在分割任务中根据需要调整
cfg(空)用于覆盖默认配置的自定义配置文件路径指定自定义配置文件以覆盖默认设置
trackerbotsort.yaml跟踪器类型根据需求选择合适的跟踪器

         这些超参数涉及学习率调整、优化器配置、损失函数加权、数据增强策略等多个方面。合理地调整这些参数对于训练有效的模型至关重要。

ultralytics/cfg/datasets/XXXX.yaml

        进行模型训练时,配置数据集是必不可少的,本文中直接以官方所提供的coco.yaml、coco-pose.yaml等等配置文件进行举例,同时要注意,本文后续进行训练时候,标签文件格式均使用txt格式数据进行演示。如果是voc(xml)格式的数据需要转换成txt,这个转换脚本我会在后续的博客中发布出来。

图像分类配置方法

        图像分类的配置方法比较特殊,同时他也是这里面配置方法最简单的,以mnist160数据为例:

from ultralytics import YOLO


# 加载模型
model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt')  # 从YAML构建并转移权重


if __name__ == '__main__':
    # 训练模型
    results = model.train(data='./mnist160', epochs=10, imgsz=64)

        在这段代码中,model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt') 是加载指定了模型类型和结构,并且读取预训练权重。results = model.train(data='./mnist160', epochs=10, imgsz=64)这行代码中,data='./mnist160' 是明确的指定了数据所在的文件夹地址。参考结构如下:

 mnist160/

├── train/             # 训练集
│   ├── 0/             # 类别0的文件夹
│   │   ├── 0001.png
│   │   ├── 0002.png
│   │   └── ...
│   ├── 1/             # 类别1的文件夹
│   │   ├── 0001.png
│   │   ├── 0002.png
│   │   └── ...
│   ├── ...
│   └── 9/             # 类别9的文件夹
│       ├── 0001.png
│       ├── 0002.png
│       └── ...

└── val/               # 验证集
    ├── 0/             # 类别0的文件夹
    │   ├── 1001.png
    │   ├── 1002.png
    │   └── ...
    ├── 1/             # 类别1的文件夹
    │   ├── 1001.png
    │   ├── 1002.png
    │   └── ...
    ├── ...
    └── 9/             # 类别9的文件夹
        ├── 1001.png
        ├── 1002.png
        └── ...
 

如果这个目录结构看的不明显可以参考这个图片:

 

         以这种形式把自己的数据集按类别放到指定目录下,即可执行训练。

目标检测配置方法

       

        目标检测是一项任务,涉及辨识图像或视频流中物体的位置和类别。目标检测器的输出是一组围绕图像中物体的边界框,以及每个框的类别标签和置信度得分。当您需要识别场景中的感兴趣对象,但不需要准确了解物体的位置或其确切形状时,目标检测是一个很好的选择。

        这份代码是基于目标检测执行训练的代码,以官方默认的coco128.yaml作为例子进行演示:

from ultralytics import YOLO


# 加载模型
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # 从YAML构建并转移权重

if __name__ == '__main__':
    # 训练模型
    results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

        程序中,data='coco128.yaml' 直接这么填写,ultralytics模型指向的是 ultralytics\cfg\datasets 目录,也可以自定义一个目录,自定义的时候则需要填入绝对路径,或者在data='./coco128.yaml'变为相对路径。

# 示例使用方法: yolo train data=coco128.yaml
# 目录结构
# parent
# ├── ultralytics
# └── datasets
#     └── coco128  ← 这里下载 (7 MB)


path: ../datasets/coco128  # 数据集根目录,也可以自行修改指定其他目录,绝对目录,相对目录均可
# C:/Users/admin/Desktop/datasets/coco128/ 比如这样,把下载的数据或者自己的数据指定好
train: images/train2017  # 训练图片 (相对于 'path') 接上面path的路径继续拼接
val: images/train2017  # 验证图片 (相对于 'path') 接上面path的路径继续拼接
test:  # 测试图片 (可选)

# 对应的数据类别
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# 下载脚本/URL (可选) 如果没有指定的数据就是想测试,就打开这个代码,程序会自动把这个数据下载下来
download: https://ultralytics.com/assets/coco128.zip

         在这个配置文件中,我们定义了训练、验证和测试图像的路径,列出了数据集中的所有类别,并提供了数据集的下载链接(如果可用)。请确保这些路径和类别与您的实际数据集相符。如果您使用的是自己的数据集,需要相应地调整 pathtrainvaltestnames 部分。

实例分割配置方法

        实例分割比物体检测有所深入,它涉及到识别图像中的个别物体并将它们从图像的其余部分中分割出来。

        实例分割模型的输出是一组蒙版或轮廓,用于勾画图像中每个物体,以及每个物体的类别标签和置信度分数。实例分割在您需要不仅知道图像中的物体位置,还需要知道它们确切形状时非常有用。

下面这份代码是训练实例分割时的示意代码:

from ultralytics import YOLO


# 读取预训练模型
model = YOLO('yolov8n-seg.pt')

# 执行训练
results = model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)

        在 ultralytics 中进行训练实例分割任务的时候和目标检测任务都非常相似,其实主要区别就是读取不同的yaml或pt文件,以及数据集格式区别不同,剩下的数据集配置的路径结构都是一致的。

# 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/coco8-seg  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

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

        如果您有自己的数据集,并希望将其用于训练具有 Ultralytics YOLO 格式的分割模型,请确保它遵循上面在“Ultralytics YOLO 格式”下指定的格式。将注释转换为所需的格式,并在 YAML 配置文件中指定路径、类数和类名。

姿态估计配置方法

        姿态估计是一项任务,其涉及识别图像中特定点的位置,通常被称为关键点。这些关键点可以代表物体的各种部位,如关节、地标或其他显著特征。关键点的位置通常表示为一组2D [x, y] 或3D [x, y, visible] 坐标。姿态估计模型的输出是一组点集,这些点代表图像中物体上的关键点,通常还包括每个点的置信度得分。当你需要在场景中识别物体的特定部位及其相互之间的位置时,姿态估计是一个不错的选择。

        训练示意代码如下:

from ultralytics import YOLO


# Load a model
model = YOLO('yolov8n-pose.pt')  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data='coco128-pose.yaml', epochs=100, imgsz=640)

        基本训练的代码不同的任务实现的方法都是非常一致的,最大的差异都是数据集,后续我会单独针对每个任务都出一套数据集去详细的说明每种任务是如何复现。姿态估计时任务数据的yaml配置格式如下:

# 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/coco8-pose  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Keypoints
kpt_shape: [17, 3]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes dictionary
names:
  0: person

        上面的配置文件同样包含以下信息,这个跟目标前侧以及实例分割略有些区别我会详细解释下:

训练、验证和测试集路径配置

  • path: 数据集的根目录路径。这是包含所有图像的顶层文件夹。
  • train: 训练图像的相对路径。例如,如果训练图像位于根目录下的 images/train 文件夹内,则这里填写 images/train
  • val: 验证图像的相对路径。类似地,如果验证图像位于 images/val 文件夹内,则填写 images/val
  • test: (可选)测试图像的路径。如果有单独的测试集,则在此处指定路径。

关键点配置

  • kpt_shape: 关键点的数量和维度。[17, 3] 表示有17个关键点,每个关键点有3个维度(通常是x坐标、y坐标和一个可见性标志)。
  • flip_idx: 翻转索引,用于处理图像翻转时关键点的对应关系。这对于对称物体(如人脸或人体)特别重要。例如,[0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15] 表示每个关键点在翻转时应该映射到的新位置。

类别字典

  • names: 列出了数据集中的类别及其对应的索引。例如,0: person 表示索引0对应于“person”类别。这是模型进行类别识别的基础。

         这个配置文件为YOLOv8模型提供了必要的信息,以正确地加载和处理用于姿态估计的数据集。正确设置这些参数对于模型的训练效果至关重要。

总结

         本文详细介绍了YOLOv8项目的配置文件结构,特别是训练模型时使用的各种参数及其含义。YOLOv8是一个高级的对象检测框架,支持多种计算机视觉任务,包括图像分类、目标检测、实例分割和姿态估计。通过配置文件,用户可以定制模型的行为,以适应特定的数据集和应用需求。每个任务类型都需要对应的数据集格式和特定的配置文件。这些配置文件中的参数和设置决定了模型的训练和预测行为,以及最终的性能和效果。通过适当调整这些参数,用户可以优化模型以满足特定的性能要求和应用场景。如果有哪里写的不够清晰,小伙伴本可以给评论或者留言,我这边会尽快的优化博文内容,另外如有需要,我这边可支持技术答疑与支持。

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

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

相关文章

Android Studio实现课表

本文章主要展示课表的实现&#xff0c;里面包含很多控件的用法&#xff0c;比如吐司Toast、通知Notification、ListView&#xff0c;数值选择器NumberPicker&#xff0c;SeekBar同editText的关联。抽屉导航栏 还有一些其他的功能&#xff0c;比如InputFilter自定义的字符过滤器…

VSCode安装Go环境

VSCode安装Go 1.点击Go官网&#xff0c;根据自己环境下载go安装包&#xff0c;我这里为Windows 2.双击安装包&#xff0c;一直点击【Next】即可 VSCode配置Go基础环境 1.创建Go的工作目录: C:\Code\GoCode 2.创建Go的环境变量: GOPATH (1)右键【此电脑】&#xff0c;点击…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览&#xff1a; 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个&#xff1f;扩展的可能&#xff1f; 什么是JSONPlaceho…

【前端学习指南】开启 Vue 的学习之旅

&#x1f36d; Hello&#xff0c;我是爱吃糖的范同学 秋招终于结束了&#xff08;拿到了比较满意的 offer&#x1f389;&#x1f389;&#x1f389;&#xff0c;后续也会有“面筋”系类给大家分享&#xff09;&#xff0c;目前我终于也有足够的时间和精力来完成我 23 年遗留下…

ubuntu 开机自报IP地址(用于无屏幕小车-远程连接)

目录 1.环境安装2.代码3.打包成可执行文件4.开启开机自启 1.环境安装 sudo apt-get install espeak #先安装这个库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyttsx32.90 #再安装pyttsx3 pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/si…

【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡

板卡概述 PXIE301-208是一款基于3U PXIE总线架构的Serial RapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器&#xff0c;实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP光纤接口&#xff0c;支持一个PCIe x8主机接口&…

机器学习三要素与拟合问题

1.如何构建机器学习模型&#xff1f; 机器学习工作流程总结 1.获取数据 2.数据基本处理 3.特征工程 4.机器学习(模型训练) 5.模型评估 结果达到要求&#xff0c;上线服务&#xff0c;没有达到要求&#xff0c;重新上面步骤 我们使用机器学习监督学习分类预测模型的工作流…

c语言:去除最高分最低分,求平均值|练习题

一、题目 有10个裁判评分&#xff0c;去除最高分和最低分&#xff0c;求运动员的平均分。 如图&#xff1a; 二、思路分析 1、设置一个数组变量&#xff0c;用冒泡排序法排序 2、数组的首位和最后一位&#xff0c;就是最低分和最高分 3、数组的第二到n-1个&#xff0c;就是符合…

Python实现张万森下雪了的效果

系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心http…

nodejs+vue+微信小程序+python+PHP的艺术展览馆艺术品管理系统-计算机毕业设计推荐

选择轻量级的关系型MySQL数据库存储数据。接着进行系统的需求分析、功能设计、数据库设计&#xff0c;最后进行编码实现。具体如下&#xff1a; 1&#xff09;网站首页&#xff1a;艺术品浏览展示&#xff0c;艺术品作者线下。供会员浏览查看。 2&#xff09;注册登录&#xff…

边缘智能网关在智慧大棚上的应用突破物联网大关

边缘智能网关在智慧大棚上的应用&#xff0c;是现代农业技术的一大突破。通过与农作物生长模型的结合&#xff0c;边缘智能网关可以根据实时的环境数据和历史数据&#xff0c;预测农作物的生长趋势和产量&#xff0c;提供决策支持和优化方案。这对于农民来说&#xff0c;不仅可…

总结js中遍历对象属性的方法

方法介绍 1、 forin循环&#xff1a;遍历对象自身的和原型链上的可枚举属性。 2、Object.getOwnPropertySymbols()方法&#xff1a;返回一个数组&#xff0c;包含对象自身的所有Symbol类型的属性。 3、 Object.getOwnPropertyNames()方法&#xff1a;返回一个数组&#xff0…

PDF控件Spire.PDF for .NET【安全】演示:修改加密PDF的密码

修改PDF文件的密码确实是一个理性的选择&#xff0c;尤其是当密码被某人知道并且您的PDF文件不再安全时。Spire.PDF for .NET使您能够用 C#、VB.NET 修改加密 PDF 文件的密码。您可以修改所有者密码和用户密码&#xff0c;并设置访问 PDF 文件时的用户限制。现在请看修改加密PD…

将函数f转化为通用函数uf 实现多组数据本应多次调用函数f 现在可以一起一次调用通用函数uf np.frompyfunc(func,nin,nout)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将函数f转化为通用函数uf 实现多组数据本应多次调用函数f 现在可以一起一次调用通用函数uf np.frompyfunc(func,nin,nout) [太阳]选择题 下列输出正确的是&#xff1a; import numpy as np f …

Volume Control 2

为游戏添加音乐和音效总是需要一些编码来设置一个系统来控制、显示和保存应用程序的音量设置。 音量控制的设计是为了立即为您设置这些内容,让您有更多时间专注于最重要的事情——制作出色的游戏! 在版本2中,我们对系统进行了重新设计,使其更加模块化、灵活,甚至更易于使用…

光伏逆变器MPPT的作用、原理及算法

MPPT是逆变器非常核心的技术&#xff0c;MPPT电压在进行光伏电站设计时一项非常关键的参数。 一、什么是MPPT&#xff1f; &#xff08;单块光伏组件的I-V、P-V曲线&#xff09; 上图中&#xff0c;光伏组件的输出电压和电流遵循I-V曲线(绿色)、P-V曲线(蓝色)&#xff0c;如果…

文件监控-IT安全管理软件

文件监控和IT安全管理软件是用于保护企业数据和网络安全的工具。这些工具可以帮助企业监控文件的变化&#xff0c;防止未经授权的访问和修改&#xff0c;并确保数据的安全性和完整性。 一、具有哪些功能 文件监控软件可以实时监控文件系统的活动&#xff0c;包括文件的创建、修…

软件测试/测试开发丨Python闭包函数和计时器学习笔记

闭包函数 闭包的内部函数中&#xff0c;对外部作用域的变量进行引用闭包无法修改外部函数的局部变量闭包可以保存当前的运行环境 # 普通方法实现 def output_student(name, gender, grade1):print(F"新学期开学啦&#xff0c;学生{name}是{gender}&#xff0c;他是{grad…

OpenCV-Python(21):轮廓特征及周长、面积凸包检测和形状近似

2. 轮廓特征 轮廓特征是指由轮廓形状和结构衍生出来的一些特征参数。这些特征参数可以用于图像识别、目标检测和形状分析等应用中。常见的轮廓特征包括&#xff1a; 面积&#xff1a;轮廓所包围的区域的面积。周长&#xff1a;轮廓的周长&#xff0c;即轮廓线的长度。弧长&…

Python流星雨完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…