YOLOv5参数大全(parse_opt篇)

文章目录

  • 1、前言
  • 2、train.py-文件解读
    • 2.1、常用的参数
      • 2.1.1、weights
      • 2.1.2、cfg
      • 2.1.3、data
      • 2.1.4、epochs
      • 2.1.5、batch-size
      • 2.1.6、imgsz
      • 2.1.7、device
      • 2.1.8、resume
      • 2.1.9、hyp
      • 2.1.10、adam
  • 3、detect.py-文件解读
    • 3.1、常用的参数
      • 3.1.1、weights
      • 3.1.2、source
      • 3.1.3、imgsz
      • 3.1.4、conf-thres
      • 3.1.5、iou-thres
      • 3.1.6、device
      • 3.1.6、view-img
      • 3.1.7、save-txt
      • 3.1.8、save-conf
      • 3.1.9、visualize
  • 4、参考文献
  • 5、目标检测系列文章

1、前言

文本主要详细讲解运行参数含义

2、train.py-文件解读

train.py里面有一个parse_opt()函数,该函数用于读取命令行

  1. action=‘store_true’ 当用到该参数时,则为true,默认为false。如果是store_false,则默认值是true
  2. default 默认值
  3. nargs=‘?’ 表示可设置零个或一个
  4. nargs=‘*’ 表示可设置零个或多个
  5. nargs=‘+’ 表示可设置一个或多个
def parse_opt(known=False):parser = argparse.ArgumentParser()#  weights: 训练的权重路径,可以使用自己训练的权重,也可以使用官网提供的权重parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')# cfg:模型参数配置文件路径parser.add_argument('--cfg', type=str, default='', help='model.yaml path')# data: 配置数据集路径, 包括image/label/classes等信息。# 如果设置了只显示个别类别即使用了--classes = 0 或二者1, 2, 3等, 则需要设置该文件,数字和类别相对应才能只检测某一个类parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')# hyp: 超参数的设置parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')# epochs:训练总轮次parser.add_argument('--epochs', type=int, default=300)# batch-size:批次大小parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')# imgsz: 网络输入图片大小, 默认的大小是640parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')# rect: 是否采用Rectangular training/inference,一张图片为长方形,我们在将其送入模型前需要将其resize到要求的尺寸,所以我们需要通过补灰padding来变为正方形的图。# 但是这个操作会生成过多的冗余信息影响训练效果。Rectangular training/inference就是去除这些冗余信息。parser.add_argument('--rect', action='store_true', help='rectangular training')# resume: 接着上次打断的的结果开始训练parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')#   nosave: 只保存最后一次 pt 文件。,默认Falseparser.add_argument('--nosave', action='store_true', help='only save final checkpoint')# noval: 只在最后一次进行测试,默认Falseparser.add_argument('--noval', action='store_true', help='only validate final epoch')# noautoanchor: 不自动调整anchor,默认Falseparser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')# evolve: 是否进行超参数优化,利用遗传算法自动搜索超参数,默认Falseparser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')# bucket: 谷歌云盘bucket,一般不会用到parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')#  cache:是否提前缓存图片到内存,以加快训练速度parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')#  image-weights: 对于那些训练不好的图片,会在下一轮中增加一些权重parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')# device: 训练的设备,cpu;0(表示一个gpu设备cuda:0);0,1,2,3(多个gpu)parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')# multi-scale: 是否进行多尺度训练,一般设置几种不同尺度的图片,训练时每隔一定iterations随机选取一种尺度训练# 这样训练出来的模型鲁棒性强,可以接受任意大小的图片作为输入,使用尺度小的图片测试速度会快些,但准确度低,用尺度大的图片测试速度慢,但是准确度高parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')# single-cls: 数据集是否只有一个类别,默认Falseparser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')# adam: 是否使用adam优化器parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')# sync-bn: 是否进行多 GPU 进行分布式训练parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')# dataloader的最大worker数量parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')# project:保存测试日志的文件夹路径parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')# name:保存测试日志文件夹的名字, 所以最终是保存在project/name中parser.add_argument('--name', default='exp', help='save to project/name')# exist_ok: 是否重新创建日志文件, False时重新创建文件parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')# quad: 四元数据加载器parser.add_argument('--quad', action='store_true', help='quad dataloader')# linear-lr:用于对学习速率进行调整,默认为 False,(通过余弦函数来降低学习率)parser.add_argument('--linear-lr', action='store_true', help='linear LR')# label-smoothing: 对标签进行平滑处理,防止过拟合parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')# freeze: 使用预训练模型的规定固定权重不进行调整  --freeze 10  :意思从第0层到到第10层不训练parser.add_argument('--freeze', type=int, default=0, help='Number of layers to freeze. backbone=10, all=24')parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')# gpu编号parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')# Weights & Biases argumentsparser.add_argument('--entity', default=None, help='W&B: Entity')parser.add_argument('--upload_dataset', action='store_true', help='W&B: Upload dataset as artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval')parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use')opt = parser.parse_known_args()[0] if known else parser.parse_args()return opt

2.1、常用的参数

  1. weights
  2. cfg
  3. data
  4. epochs
  5. batch-size
  6. imgsz
  7. device
  8. resume
  9. hyp
  10. adam

2.1.1、weights

parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')

这个就是指定网络权重的路径,默认是yolov5s.pt,官方提供了很多的版本,我们要更换的时候直接按照模型的名字更换就可以了(当然,使用自己的也是完全没问题的);例如yolov5m.pt,yolov5l.pt,他会自动的下载对应的权重,不需要我们去Github手动下载。(如果下载太慢或者失败只能去官网下载了,下载好了直接放到根目录下就可以)

2.1.2、cfg

 # 模型参数配置文件路径,即你自己的网络模型,比方models/yolov5s.yamlparser.add_argument('--cfg', type=str, default='', help='model.yaml path')

2.1.3、data

# 配置数据集路径, 包括image/label/classes等信息。
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')

2.1.4、epochs

# 训练总轮次
parser.add_argument('--epochs', type=int, default=300)

2.1.5、batch-size

# 批次大小
parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')

2.1.6、imgsz

# 输入图片大小
parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')

2.1.7、device

# 训练的设备,cpu;0(表示一个gpu设备cuda:0);0,1,2,3(多个gpu)
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

2.1.8、resume

# 接着上次打断的的结果开始训练
parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')

2.1.9、hyp

# 超参数的设置
parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')

2.1.10、adam

# adam: 是否使用adam优化器
parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')

3、detect.py-文件解读

"""weights: 训练的权重路径,可以使用自己训练的权重,也可以使用官网提供的权重source: 这个参数就是指定网络输入的路径,默认指定的是文件夹,也可以指定具体的文件或者扩展名等。imgsz: 输入图片的大小,默认640,即模型在检测图片前会把图片resize成640 × 640的尺寸,然后检测。conf-thres: 置信度的阈值,调节检测框的置信度,要大于等于该阈值,该检测框才会保留下来iou-thres: 调节IoU的阈值max-det: 设置一张图像中的最大检测数量,默认是最多检测 1000 个目标device: 如果有GPU则默认用第0块GPU,如果没有则会选择cpu,如果想要使用多个 GPU 并行训练时设置 0, 1 等。view-img: 实时的把检测结果显示出来,即每检测出一张就会显示出一张,直到所有图片检测完成。save-txt: 把检测结果保存成一个.txt的格式,txt文件里面保存了一些类别信息和边框的坐标信息。save-conf: 以.txt的格式保存目标的置信度,一般配合--save-txt一起使用。save-crop: 是否把模型检测的物体裁剪下来。裁剪的物体图片会保存在crops目录下。nosave: 不保存预测的结果。classes: 检测的类别,可以设置一个或者多个类别,根据自己的类别名去设置。比如coco数据集里面0,代表person。agnostic-nms: 跨类别nms,比如待检测图像中有一个长得很像篮球的足球,pt文件的分类中有足球和篮球两种,那在识别时这个足球可能会被同时框上2个框:一个是足球,一个是篮球。开启agnostic-nms后,那只会框出一个框。augment: 增强推理visualize: 特征图可视化,开启后,.npy格式的文件就是保存的模型文件,可以使用numpy读写,.png就是图片文件。update: 在模型训练的最后阶段去除优化器信息,以减小模型文件的大小,并将模型准备好用于推断或其他目的。project: 预测结果保存的路径。name: 预测结果保存的文件夹名字。exist-ok: 每次预测模型的结果是否保存在原来的文件夹,如果指定了这个参数的话,那么本次预测的结果还是保存在上一次保存的文件夹里;如果不指定就是每次预测结果保存一个新的文件夹下。line-thickness: 调节预测框线条粗细的,因为有的时候目标重叠太多会产生遮挡;hide-labels: 隐藏标签,显示类别之类的信息,只保存检测框。hide-conf: 隐藏标签的置信度。half: 是否使用FP16半精度推理dnn: 使用 OpenCV DNN 进行 ONNX 推理。DNN --> Deep Neural NetworksONNX(Open Neural Network Exchange)是一种多框架共用的,开放协议的神经网络交换格式。 ONNX 定义了一组与环境和平台无关的标准格式,为 AI 模型的互操作性提供了基础,使 AI 模型可以在不同框架和环境下交互使用。
"""
def parse_opt():parser = argparse.ArgumentParser()parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'weights/yolov5s-320.pt', help='model path(s)')parser.add_argument('--source', type=str, default=ROOT / 'data/data-txt', help='file/dir/URL/glob, 0 for webcam')parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w')parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold')parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold')parser.add_argument('--max-det', type=int, default=1000, help='maximum detections per image')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--view-img', action='store_true', help='show results')parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes')parser.add_argument('--nosave', action='store_true', help='do not save images/videos')parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3')parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')parser.add_argument('--augment', action='store_true', help='augmented inference')parser.add_argument('--visualize', action='store_true', help='visualize features')parser.add_argument('--update', action='store_true', help='update all models')parser.add_argument('--project', default=ROOT / 'runs/detect', help='save results to project/name')parser.add_argument('--name', default='exp', help='save results to project/name')parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)')parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels')parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences')parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference')parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference')opt = parser.parse_args()opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1  # expandprint_args(FILE.stem, opt)return opt

3.1、常用的参数

  1. weights
  2. source
  3. imgsz
  4. conf-thres
  5. iou-thres
  6. device
  7. view-img
  8. save-txt
  9. save-conf
  10. visualize

3.1.1、weights

# weights: 训练的权重路径,可以使用自己训练的权重,也可以使用官网提供的权重
parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'weights/yolov5s-320.pt', help='model path(s)')

3.1.2、source

# source: 这个参数就是指定网络输入的路径,默认指定的是文件夹,也可以指定具体的文件或者扩展名等。
parser.add_argument('--source', type=str, default=ROOT / 'data/data-txt', help='file/dir/URL/glob, 0 for webcam')

3.1.3、imgsz

#  imgsz: 输入图片的大小,默认640,即模型在检测图片前会把图片resize成640 × 640的尺寸,然后检测。
parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w')

3.1.4、conf-thres

# conf-thres: 置信度的阈值,调节检测框的置信度,要大于等于该阈值,该检测框才会保留下来
parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold')

3.1.5、iou-thres

# iou-thres: 调节IoU的阈值
parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold')

3.1.6、device

# device: 如果有GPU则默认用第0块GPU,如果没有则会选择cpu,如果想要使用多个 GPU 并行训练时设置 0, 1 等。
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

3.1.6、view-img

# view-img: 实时的把检测结果显示出来,即每检测出一张就会显示出一张,直到所有图片检测完成。
parser.add_argument('--view-img', action='store_true', help='show results')

3.1.7、save-txt

# save-txt: 把检测结果保存成一个.txt的格式,txt文件里面保存了一些类别信息和边框的坐标信息。
parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')

3.1.8、save-conf

# save-conf: 以.txt的格式保存目标的置信度,一般配合--save-txt一起使用。
parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')

3.1.9、visualize

# 特征图可视化,开启后,.npy格式的文件就是保存的模型文件,可以使用numpy读写,.png就是图片文件。
parser.add_argument('--visualize', action='store_true', help='visualize features')

4、参考文献

  1. Yolov5的parse_opt()中训练相关参数解释
  2. 手把手带你调参YOLOv5 (v5.0-v7.0)(推理)

5、目标检测系列文章

  1. YOLOv5s网络模型讲解(一看就会)
  2. 生活垃圾数据集(YOLO版)
  3. YOLOv5如何训练自己的数据集
  4. 双向控制舵机(树莓派版)
  5. 树莓派部署YOLOv5目标检测(详细篇)
  6. YOLO_Tracking 实践 (环境搭建 & 案例测试)
  7. 目标检测:数据集划分 & XML数据集转YOLO标签
  8. YOLOv5改进–轻量化YOLOv5s模型
  9. DeepSort行人车辆识别系统(实现目标检测+跟踪+统计)
  10. YOLOv5目标检测优化点(添加小目标头检测)

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

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

相关文章

麦克风性能参数

1.声压级&#xff08;Sound Pressure Level&#xff09; 一个用来衡量声音压力的参数&#xff0c;基本上描述的是声音的强度、大小或响度&#xff0c;单位通常为分贝&#xff08;dB&#xff09;。声压级是相对于参考声压来定义的。在空气中&#xff0c;参考声压通常是20微帕斯卡…

SpringBoot新增菜品模块开发(事务管理+批量插入+主键回填)

需求分析与设计 一&#xff1a;产品原型 后台系统中可以管理菜品信息&#xff0c;通过 新增功能来添加一个新的菜品&#xff0c;在添加菜品时需要选择当前菜品所属的菜品分类&#xff0c;并且需要上传菜品图片。 新增菜品原型&#xff1a; 当填写完表单信息, 点击"保存…

【数据分析】AHP层次分析法

博主总结&#xff1a;根据每个方案x各准则因素权重累加结果 对比来选择目标。数据主观性强 简介 AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来&#xff0c;用决策者的经验判断各衡量目标之间能…

shell 脚本报错问题的解决归纳,如 [: missing `]‘

文章目录 1、[: missing ]2、 1、[: missing ]’ 运行修订后的 shell 脚本后&#xff0c;发现警告&#xff1a; line 555: [: missing ]’ 查看脚本的 555 行&#xff0c;发现问题&#xff1a; if [! -f "$builddir/image/xspeed-nt06.dtb"] || [! -f "$build…

【数字人】AIGC技术引领数字人革命:从制作到应用到全景解析

AIGC技术引领虚拟数字人革命&#xff1a;从制作到应用的全景解析 一、AIGC技术为虚拟数字人注入智能灵魂二、AIGC型虚拟人制作流程实例分析1、采集数据2、建模3、内容生成 三、AIGC在虚拟数字人应用中的案例分析四、总结与展望 在科技的浪潮中&#xff0c;AIGC&#xff08;人工…

Ubuntu:VSCode中编译运行C++代码

版本&#xff1a;Ubuntu22.04.1 LTS 目录 1 安装VSCode并汉化 2 检查Ubuntu是否已经安装了 GCC 3 在VScode中安装C/C扩展 4 在VSCode中进行C/C配置 1 安装VSCode并汉化 安装VSCode&#xff08;参考之前博客Ubuntu&#xff1a;安装VSCode_ubuntu vscode-CSDN博客&#xff…

Linux sort/uniq/wc

文章目录 1. sort 排序将线程ID从大到小排序 2.uniq 临近去重3.wc word cnt 统计 1. sort 排序 将线程ID从大到小排序 grep -v是反向筛选&#xff0c;利用USER&#xff0c;排除掉首行 awk是打印第1 2列 sort -n是代码以数值大小做排序&#xff0c;不加的话会以字符排序。 -k是…

Gitee和Git学习笔记

Gitee和Git指令 Gitee提交代码方法1 先将仓库clone到本地&#xff0c;修改后再push到 Gitee 的仓库方法2 本地初始化一个仓库&#xff0c;设置远程仓库地址后再做push 切换分支下载代码通过git clone克隆仓库通过下载 ZIP 的方式下载代码 Git提交指令 解决本地库同时关联GitHub…

(C语言入门)复合类型、内存管理

目录 复合类型&#xff08;自定义类型&#xff09; 概述&#xff1a; 结构体变量的定义和初始化&#xff1a; 结构体成员的使用&#xff1a; 结构体做函数参数&#xff1a; 结构体值传参&#xff1a; 结构体地址传参&#xff1a; 共用体&#xff08;联合体&#xff09;&…

Linux运维脚本案例:自动备份MySQL数据库并压缩

在日常的Linux运维工作中&#xff0c;数据库备份是一项至关重要的任务。下面是一个简单的脚本案例&#xff0c;用于自动备份MySQL数据库&#xff0c;并将备份文件压缩保存。 脚本内容&#xff1a; #!/bin/bash# MySQL数据库相关配置 DB_USER"your_mysql_user" DB_PA…

测试人员如何做好工作量评估和风险把控?

今天想聊一聊关于测试工作量评估及需求进度把控的内容。 我个人觉得有时候评估测试工作量其实也挺难的&#xff0c;比如有的需求没有需求文档&#xff0c;只能靠自己对需求的理解去大概评估&#xff0c;有可能评估的工作量比实际需要的工作量会少点&#xff0c;对于每周进行迭…

【Index to Lectures or Courses】

文章目录 1 Speech / Course2 Material3 Basic knowledge and tools4 职位缩写你知道几个? 1 Speech / Course 《中国文化文概论》&#xff08;武汉大学&#xff09;【Paper material】【阅读笔记】【Reading Notes】&#xff08;1&#xff09;【Reading Notes】&#xff08;…

Mybatis-plus中的分页操作

Mybatis-plus中的分页操作 1.导入Mybatis-plus依赖2.创建mybatis配置类3.参数 1.导入Mybatis-plus依赖 因为是一个springboot项目&#xff0c;其中的pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

用于时空交通数据插补的多注意张量完成网络

用于时空交通数据插补的多注意张量完成网络 摘要:道路传感器在物联网(IoT)中的广泛部署可以实现细粒度的数据集成,这是数据驱动应用程序的基本需求。 由于网络通信不稳定、传感器故障等,不可避免地丢失和实质性异常的传感数据是不可避免的。最近的张量补全研究通过精确捕获…

提高 RAG 应用准确度,时下流行的 Reranker 了解一下?

检索增强生成&#xff08;RAG&#xff09;是一种新兴的 AI 技术栈&#xff0c;通过为大型语言模型&#xff08;LLM&#xff09;提供额外的“最新知识”来增强其能力。 基本的 RAG 应用包括四个关键技术组成部分&#xff1a; Embedding 模型&#xff1a;用于将外部文档和用户查询…

DDoS攻击类型与应对措施详解

攻击与防御简介 SYN Flood攻击 原理&#xff1a; SYN Flood攻击利用的是TCP协议的三次握手机制。在正常的TCP连接建立过程中&#xff0c;客户端发送一个SYN&#xff08;同步序列编号&#xff09;报文给服务器&#xff0c;服务器回应一个SYN-ACK&#xff08;同步和确认&#xf…

【HormonyOS4+NEXT】TypeScript基础语法详解

&#x1f64b;‍ 一日之际在于晨 ⭐本期内容&#xff1a;TypeScript基础语法详解 &#x1f3c6;系列专栏&#xff1a;鸿蒙HarmonyOS4NEXT&#xff1a;探索未来智能生态新纪元 文章目录 前言变量与类型函数类与接口类&#xff08;Class&#xff09;接口&#xff08;Interface&am…

Nginx常用配置,开箱即用

经常遇到Nginx安装和配置的问题。这里笔者将常用配置统统写在下面&#xff0c;方便咱们日常使用。这里本着开箱即用的原则&#xff0c;所以大多数时候不会解释为什么要这样去配置&#xff0c;也不涉及Nginx的安装步骤。下面的所有配置&#xff0c;都可以直接复制后粘贴使用&…

PTA L2-045 堆宝塔 (25 分)

堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小&#xff0c;按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。聪明宝宝采取的策略如下&#xff1a; 首先准备两根柱子&#xff0c;一根 A 柱串宝塔&#xff0c;一根 B 柱用于临时叠放。把第 1 块彩虹圈…

2024第二十一届五一数学建模A题思路 五一杯建模思路

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…