【YOLO学习笔记】YOLOv5详解

一、数据增强

在这里插入图片描述

  • mosaic
  • 仿射变换与透视变换
  • Mixup

mosaic代码位置在这里插入图片描述仿射变换 与 透视变换​代码片段位置
在这里插入图片描述

二、网络结构

1. 网络不同尺寸

nsmlx与网络深宽度

yolov5 官方提供了5个目标检测的网络版本:yolov5nyolov5syolov5myolov5lyolov5x ,早年是刚好对应的五个yaml文件:
在这里插入图片描述
后来改为了一个yaml文件,通过scales参数控制尺寸:

scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.33, 1.25, 1024]
  • 各版本的网络结构都是类似的,backbone和head参数都一样,不同的只是 depth_multiplewidth_multiple 这两个参数
    • depth_multiple控制网络深度:有些模块需要重复 n 次,此时,我们就会用到 depth_multiple * n 来控制该模块重复的次数,达到控制网路深度的作用
    • width_multiple控制网络宽度:用于控制某些模块输出的特征图 channel 数,比如 卷积层的输出 channel 数,达到控制网络宽度的效果。
  • yolov5nyolov5 系列中深度最小,特征图channel数最少的网络。其他的都是在此基础上不断加深(depth),不断加宽(width)。

在这里插入图片描述nsmlx从左往右网络的尺寸变大,参数量变大。

举例说明l和s尺寸

# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args]- [-1, 1, Conv, [64, 6, 2, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C3, [128]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C3, [256]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 9, C3, [512]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C3, [1024]]- [-1, 1, SPPF, [1024, 5]] # 9

depth控制网络深度
比如说,yolov5l型号的backbone中,number表示该模块的重复次数,四个C3块分别重复3, 6, 9, 3次。
如果是yolov5s型号,那么需要都乘depth = 0.33,重复次数变为1, 2, 3, 1。原本就是1或者乘完小于1的就不用乘重复1次。

width控制网络宽度
比如,yolov5l型号的backbone中,args表示参数列表,第一个值是模块输出的channel数,前两Conv层分别为64, 128
如果是yolov5s型号,需要都乘width=0.5,变为32, 64

在这里插入图片描述

官方更多改造版

还有其他版本的配置文件,可查看https://github.com/ultralytics/yolov5/tree/master/models/hub

常规版本名称后加了6的,是能更好支持更大尺寸图像(常规只能处理640x640)1280x1280。
在这里插入图片描述


在这里插入图片描述
官方提供的性能对比图:
在这里插入图片描述

2. yaml参数解读

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics YOLOv5 object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/yolov5
# Task docs: https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.33, 1.25, 1024]# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args]- [-1, 1, Conv, [64, 6, 2, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C3, [128]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C3, [256]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 9, C3, [512]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C3, [1024]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv5 v6.0 head
head:- [-1, 1, Conv, [512, 1, 1]]- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C3, [512, False]] # 13- [-1, 1, Conv, [256, 1, 1]]- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C3, [256, False]] # 17 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 14], 1, Concat, [1]] # cat head P4- [-1, 3, C3, [512, False]] # 20 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 3, C3, [1024, False]] # 23 (P5/32-large)- [[17, 20, 23], 1, Detect, [nc]] # Detect(P3, P4, P5)

每一行有4个参数[from, number, module, args]

  • from:模块输入来源,
    • 一般为-1,表示上一层输出是本层输入。
    • 其他数字指层的索引(从0开始)
    • 对于Concat模块,from参数是一个list列表,因为有两个输入,比如[-1, 4]
  • number:这个模块或者模块内的某一部分,重复堆叠多少次。比如[-1, 3, C3, [128]]说明C3块中的残差块要堆叠3次。
  • module:模块名称。
  • args:为一个list,记录该模块的参数,一般第一个值表示输出的channel数,具体看下面图片

3. 各个模块

Conv

在这里插入图片描述
padding不写时,默认输出尺寸不变,自动计算padding大小。
在这里插入图片描述

C3

一个CSP模块。C3的名称含义是,除了要重复的残差块以外,有3个卷积层。( a CSP bottleneck includes 3 conv layers)​
在这里插入图片描述
args的第二个参数为True或者不写时,表示残差块都有残差连接。

在这里插入图片描述
例子中,输入尺寸为 160x160x64 , c1=64 ,c2=64, n=1​

SPPF

在这里插入图片描述
args的第二个参数表示max_pooling层的Kernel size

在这里插入图片描述
例子中,输入尺寸为 20x20x512 , c1=512 ,c2=512, k=5​

Concat

在这里插入图片描述
args就一个元素,记录在第几个维度上拼接。1表示第二个维度也就是channel维度。(batch, channel, w, h)

在这里插入图片描述

nn.Upsample

在这里插入图片描述
args的三个值对应nn.Upsample的参数,输出尺寸、缩放比例、插值方法。

直接调用 nn.Upsample ,传入对应参数

import torch.nn as nnupsample = nn.Upsample(size=None, scale_factor=2, mode='nearest')
  • size:指定输出的尺寸 。sizescale_factor 只能二选一填写,输出尺寸和缩放比例都指定时会报错。
  • scale_factor:指定尺寸放大的比例因子。
  • mode:指定上采样的模式。可选的模式包括:
    • 'nearest':最近邻插值,使用最近邻像素的值来进行插值。
    • 'linear':线性插值,使用线性插值方法。
    • 'bilinear':双线性插值,对每个输出像素使用二维线性插值方法。
    • 'bicubic':双三次插值,使用双三次插值方法。
    • 'trilinear':三线性插值,对每个输出像素使用三维线性插值方法。

Detect

网络输出层
在这里插入图片描述
在这里插入图片描述每个输出对应3个anchor。
在这里插入图片描述

后来版本就用Anchor-free,所以不指定anchors参数了[[17, 20, 23], 1, Detect, [nc]]

3. yolov5l完整网络结构图

Axure图片资料

在这里插入图片描述

4. 网络搭建代码详解

三、损失函数

YOLOv5 是基于 anchor 的目标检测算法,即 anchor - base。每个网格(grid cell)都会预先设定几个不同尺寸和比例的 anchor 框。这些 anchor 框是根据训练数据集里目标的尺寸统计信息得到的, 例如常见的目标宽度、高度的分布等。在检测过程中,模型会以这些 anchor 框为基础,预测目标的位置、尺寸以及类别等信息。比如,模型会预测相对于 anchor 框的偏移量(包括中心点的偏移、宽高的缩放比例),从而得到最终的预测边界框(bounding box)

在训练过程中,需要确定哪些 anchor 是正样本(负责预测目标),哪些是负样本(不负责预测目标),具体规则下面介绍。

1. 网络预测结果

在这里插入图片描述
网络预测出的结果为一个list,三个元素对应于三个尺度的feature map。比如feature map 1张量尺寸为(2,3,80,80,85),对应不同维度在特征图、锚框、预测参数(坐标、置信度、类别 )上的含义。

张量维度 (2, 3, 80, 80, 85) 的拆解说明

  • 2batch_size(批次大小,即一次处理的图像数量 )
  • 3:对应该尺度下的 3anchors(锚框数量 )
  • 80feature map 的宽(特征图宽度维度 )
  • 80feature map 的高(特征图高度维度 )
  • 85:由以下部分组成(85 = 2 + 2 + 1 + 80 ):
    • 2(tx, ty),预测的 bbox 的中心点坐标偏移量
    • 2(tw, th),预测的 bbox 的宽高因子
    • 1:包含预测对象的置信度(不关心是什么类别,只判断是否有 )
    • 80:COCO数据集的 80 个类别的置信度(每个类别对应的预测置信度 )

如何通过网络预测结果的 tx,ty,tw,tht_x, t_y, t_w, t_htx,ty,tw,th,进一步计算得到feature map 尺度下的预测框bbox的中心点坐标和宽高的:

predicted bbox 的中心点坐标计算

回故yolov3的坐标计算方式:
在这里插入图片描述

  • 模型输出的 tx,tyt_x, t_ytx,ty 是无约束的数值,通过 Sigmoid 函数 σ(t)=11+e−t\sigma(t) = \frac{1}{1 + e^{-t}}σ(t)=1+et1
    可将其压缩到 (0, 1),表示 预测中心点在网格内的相对偏移比例(0 对应网格左上角,1 对应右下角)。

v3方法是直接网格基准 + 归一化偏移得到 bbox 中心点在特征图上的绝对位置。但计算得到的中心点预测存在的问题:

因为 预测值 tx、tyt_x、t_ytxty 无法取到正负无穷,那么预测中心点坐标 bx,byb_x, b_ybxby 无法取到 0 或 1,即 中心点无法落在 grid cell 的四个边缘上。

yolov5对其做了改进:

在这里插入图片描述

取值范围 (图中黄色绿区域):

cx−0.5<x<cx+1.5cy−0.5<y<cy+1.5c_x - 0.5 < x < c_x + 1.5 \\ c_y - 0.5 < y < c_y + 1.5 cx0.5<x<cx+1.5cy0.5<y<cy+1.5

中心点的范围上下界正好是grid cell四个角相邻的grid cell的中心点。所以本grid cell 取不到边缘,会由相邻周围grid cell来负责预测。

在这里插入图片描述

yolov5进行改进:偏移范围扩展(2⋅σ(t)−0.52 \cdot \sigma(t) - 0.52σ(t)0.5
给偏移量 σ(t)\sigma(t)σ(t) 乘以 2 并减 0.5 后,偏移范围变为 [-0.5, 1.5] 。这让预测的中心点可以“超出当前网格”,覆盖当前grid cell的边缘以及相邻网格区域(比如目标中心靠近网格边缘时,可能属于当前网格预测,但实际坐标在相邻网格范围内),提升对边界目标的预测能力。

predicted bbox 的宽高计算

回归yolov3的bbox宽高计算:在这里插入图片描述
github上有人提出了高度和宽度预测存在的问题 ,yolov3和yolov4都有这个问题:
在这里插入图片描述

twt_wtwtht_hth 较大时,etwe^{t_w}etwethe^{t_h}eth 可能会指数爆炸,导致预测框bbox的宽度和高度不受限,进一步导致梯度不受控,损失值为NaN,最终会导致训练失败。

yolov5也对这点做了改进,使得bbox宽高范围限值在了4倍的anchor尺寸以内:
在这里插入图片描述

2. 正样本匹配

正样本匹配的目的,对于图像中的每一个 bbox,找出:

  1. 它由输出特征图中的哪些 grid cell 来负责预测
  2. 它由哪些尺寸的 anchor 来负责预测

基于这些负责预测的 grid cells 中负责预测的 anchors,得到的预测 bbox 就是正样本,否则就是负样本

也可以简单理解为

  • 负责预测 gt boxanchor 就是正样本,
  • 不负责预测的 anchor 就是负样本

正样本匹配举例说明

下面我们举例说明:

我们想要从网络输出的 3个 feature map 中分别找出预测某 gt box 的正样本,下面我们以 feature map 1 举例 (从 feature map 1 中找正样本)
在这里插入图片描述

yaml文件中预设的anchors:
在这里插入图片描述

  • 第一个用于检测小尺度物体的3个anchors,对应80x80的feature map 1,P3/8
  • 第二行是用于检测中等尺度物体的3个anchors,对应40x40的feature map 2, P4/16
  • 第三行是用于检测大物体的,对应20x20的feature map 3,P5/32

yaml文件中预设的anchors的尺寸,相对于640x640的原图大小。第一行的三个大小的anchors映射到feature map 1的尺寸缩减8倍,如图所示。
fearture map1中的每个像素映射会原图都是一个grid cell,每个grid cell都会基于三个尺寸的anchors预测出三个bbox。所以,feature map 1 一共会预测出 80 x 80 x 3 = 19200 个 anchors。

在这里插入图片描述
如何从19200个anchors筛选出正样本。

(1)假设 gt bbox 的中心点落在如上图所示的 grid cell 中的左下方区域,根据规则(具体选grid cell的规则后面介绍)我们就让3个grid cell一起来预测该gt box。

  • 该grid cell
  • 它左边的grid cell
  • 它下边的grid cell
    在这里插入图片描述

(2)将 gt box 的宽度和高度 分别和 3个 anchor 的宽度和高度做对比,选出适合的 anchors 用于预测 gt box (具体选择anchors的规则之后介绍)。
在这里插入图片描述
这里假设 anchor 1 和 anchor 2 用于负责预测 gt box,对应正样本。不负责预测的anchor 3对应负样本。

所以,一共 80 x 80 x 3 = 19200 个 anchors 中,仅仅对于这feature map 1的一个 gt box 来说,有6个正样本(3个grid_cell x 2个anchors),其他的都是负样本。

选择负责预测的grid cell的规则

规则为:如果ground truth中心点落在 grid cell 左上区域,那么本身和左还有上3个grid cell共同负责预测。
在这里插入图片描述
为什么是这三个grid cell,因为 gt box中心点所在的 grid cell 以及它的左侧、上侧、左上侧的 4个 grid cell 的预测中心点位置都可能落在 该 grid cell 的左上角,其他的不行。

这里对gt box中心点所在的 grid cell 周围一圈的grid cell 分析。图中粉色 grid cell 对应的预测中心点的取值范围为黄色区域
在这里插入图片描述

有四个grid cell的范围覆盖到了gt box的中心点,但官方实现时,仅使用 该 grid cell 左侧 和上侧的 grid cell 来一起进行预测,不使用 左上角的grid cell,可能是因为 左上角的 grid cell 预测中心点落在 该区域的概率太小,所以不进行考虑。

在这里插入图片描述

上面我们是以 gt bbox 的中心点落在 grid cell 左上角为例 来进行分析的,以下是 gt bbox 的中心点落在 grid cell 左上角、右上角,左下角、右下角的,中心点的所有情况。图片来源:https://docs.ultralytics.com/yolov5/tutorials/architecture_description/#44-build-targets

在这里插入图片描述

选择负责预测的anchor的规则

选择规则为:将 gt box 和 3个 anchors 比对宽度和高度, 如果满足我们指定的条件,那么这个尺寸的 anchors 就负责预测这个 gt box。
在这里插入图片描述

指定的条件为:
max⁡(wgtwat,watwgt,hgthat,hathgt)<4\max\left( \frac{w_{\text{gt}}}{w_{\text{at}}},\ \frac{w_{\text{at}}}{w_{\text{gt}}},\ \frac{h_{\text{gt}}}{h_{\text{at}}},\ \frac{h_{\text{at}}}{h_{\text{gt}}} \right) < 4 max(watwgt, wgtwat, hathgt, hgthat)<4

翻译与代码:

j = torch.max(r, 1 / r).max(2)[0] < self.hyp["anchor_t"]

等价转换后:
14<wgtwat,watwgt,hgthat,hathgt<4\frac{1}{4} < \frac{w_{\text{gt}}}{w_{\text{at}}},\ \frac{w_{\text{at}}}{w_{\text{gt}}},\ \frac{h_{\text{gt}}}{h_{\text{at}}},\ \frac{h_{\text{at}}}{h_{\text{gt}}} < 4 41<watwgt, wgtwat, hathgt, hgthat<4

即两个框的宽高比误差分别不大于4倍。如图:
在这里插入图片描述

举例参考:https://docs.ultralytics.com/yolov5/tutorials/architecture_description/#44-build-targets

因为每个尺寸的特征图都设计的三个尺寸的anchors,anchors长宽都放大4倍后分别和gt box对比,如果超出就为负样本。比如图汇总的anchor 1,而对于anchor 2 和 3是符合条件的。

注 : 同一个 gt bbox 可以由多个不同尺寸的 anchor 来进行预测

在这里插入图片描述

正样本匹配代码讲解
代码在官方build_targets函数中,代码解释图

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

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

相关文章

WebRTC前处理模块技术详解:音频3A处理与视频优化实践

一、WebRTC前处理模块概述 WebRTC&#xff08;Web Real-Time Communication&#xff09;作为实时音视频通信的核心技术&#xff0c;其前处理模块是提升媒体质量的关键环节。该模块位于媒体采集与编码之间&#xff0c;通过对原始音频/视频数据进行优化处理&#xff0c;解决实时…

ssm复习

Spring Framework系统架构核心容器的学习IOC/DIIOC容器IOC使用对象时,由主动new产生的对象转换为由外部提供对象,此过程中对象的创建的控制权交由外部,此思想称为控制反转, (实现了自己new的解耦) 对象创建的控制权Spring提供一个容器,称为IOC容器 用来充当IOC思想的外部Bea…

ESP32:2.搭建UDP服务器

硬件&#xff1a;ESP32-Devkit-V4 MODEL:ESP32-32U 库&#xff1a;ESP-IDF v5.4.1 系统&#xff1a;windows中的虚拟机 ubuntu 22.04 实现STA&#xff0c;主动连接AP后&#xff0c;打印IP地址&#xff0c;获取IP后&#xff0c;创建socket&#xff0c;搭建UDP 服务器&#xff0…

【Linux】动静态库制作

&#x1f43c;故事背景假设今天你有一位舍友。你需要帮助他完成老师的作业。而他写的代码依赖两个文件&#xff08;mymath.h,mystdio.h&#xff09;。但是这两个文件的功能他不会写&#xff0c;他只会调用。他的调用代码:#include"mystdio.h" #include"mymath.h…

使用Database Navigator插件进行连接sqlite报错invalid or incomplete database

解决方案 &#xff0c;将这个db.sqlite3文件拷贝到盘的文件中 &#xff0c;修改文件夹名字&#xff0c;重新使用绝对路径访问 db.sqlite3&#xff0c;将路径名字的中文去掉 &#xff0c;不能有中文

【Linux】重生之从零开始学习运维之主从MGR高可用

MGR集群部署12、15、18主机环境准备ssh免密码登录\rm -rf .ssh/* ssh-keygen ssh-copy-id 127.1 scp -r .ssh 10.0.0.12:/root/ ssh root10.0.0.12还原基础环境systemctl stop mysqld \rm -rf /var/lib/mysql/* id mysqlvim /etc/my.cnf.d/mysql-server.cnf [mysqld] datadir/v…

如何在虚拟机(Linux)安装Qt5.15.2

1.进入到阿里的网站下载在线安装包 qt-official_releases-online_installers安装包下载_开源镜像站-阿里云 https://mirrors.aliyun.com/qt/official_releases/online_installers/?spma2c6h.13651104.d-5201.2.60ad4773ZZNPNm 2.下载完毕后&#xff0c;进入到下载地址&…

【运维进阶】DHCP服务配置和DNS域名解析

DHCP服务配置和DNS域名解析 DHCP 服务介绍 在大型网络中&#xff0c;系统静态分配IP地址面临问题&#xff1a; 确保不要同时在多个系统上使用同一个地址。部署新系统通常需要手动分配其IP地址。在云环境中&#xff0c;实例的网络是自动化配置的。 动态主机配置协议&#xff08;…

VisionPro MR环境下虚拟物体与现实的透明度混合

display.rgb (virtualcontent.rgb*1)(passthrough.rgb*(1 - vistualcontent.a) viirtualcontent预乘过a值了&#xff0c;跟透明度混合公式一致 人头检测挖孔不清晰问题&#xff0c;这个a值变成设备层动态检测人头的a值&#xff0c;当面前的渲染压力过大时&#xff0c;会导致…

css怪异模式(Quirks Mode)和标准模式(Standards Mode)最明显的区别

文章目录css怪异模式&#xff08;Quirks Mode&#xff09;和标准模式&#xff08;Standards Mode&#xff09;最明显的区别详细对比示例对比&#xff08;盒模型&#xff09;标准模式&#xff08;Standards Mode&#xff09;怪异模式&#xff08;Quirks Mode&#xff09;如何触发…

一种简单的3dnr去噪算法介绍

一段未经过插补的视频图像可以分解为若干帧&#xff0c;为了能正确地找到并去除图像帧中的噪声污染&#xff0c;由于视频图像各帧的连续性&#xff0c;在去噪的过程中就必须考虑帧图像的空间性和时间性&#xff0c;一个简单的例子&#xff0c;在去噪算法中就必须考虑&#xff0…

【数据结构初阶】--排序(四):归并排序

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

GaussDB 并行创建索引

1 背景当业务数据在单表存储达到一定的数量级时&#xff0c;此时对表创建索引是要花费时间的。GaussDB为了解决这个问题采用并行创建索引技术&#xff0c;以提高创建索引的效率。2 示例步骤1&#xff1a;根据实际情况调整maintenance_work_mem参数该大小。[Rubydtest1 ~]$ gsq…

LOOP Finance:一场 Web3 共和国中的金融制度实验

LOOP Finance 是建构于币安智能链&#xff08;BNB Chain&#xff09;上的定投型DEFI理财协议。 它以凯因斯经济学为启发&#xff0c;设计出一套长期、安全、稳定收益的全新DEFI玩法&#xff0c;兼顾稳健利息回报与DEFI高速成长的潜力。 通过生态机制&#xff0c;LOOP要求每位参…

【golang面试题】Golang递归函数完全指南:从入门到性能优化

引言&#xff1a;递归的本质与挑战 在Golang中&#xff0c;递归函数是一把锋利的双刃剑。它通过函数自身调用实现问题分解&#xff0c;让代码变得简洁优雅&#xff0c;但也容易因无限递归、栈溢出或性能问题让开发者陷入困境。本文将从基础到高级&#xff0c;全面解析Golang递归…

功能安全和网络安全的综合保障流程

摘要网络物理系统是控制机械部件的计算机化系统。这些系统必须既功能安全又网络安全。因此&#xff0c;已建立的功能安全与网络安全标准需求创建网络安全档案&#xff08;ACs&#xff09;&#xff0c;以论证系统是功能安全与网络安全的&#xff0c;即所有功能安全与网络安全目标…

数据科学首战:用机器学习预测世界杯冠军

数据科学首战&#xff1a;用机器学习预测世界杯冠军Scikit-learn实战&#xff1a;从数据清洗到冠军预测的完整指南一、足球预测&#xff1a;数据科学的终极挑战​​世界杯数据价值​​&#xff1a;历史比赛数据&#xff1a;44,000场球队特征指标&#xff1a;200球员数据点&…

一个php 连sqlserver 目标计算机积极拒绝,无法连接问题的解决

一个接口查询数据耗时15秒&#xff0c;还没数据&#xff0c;经查报错日志&#xff1a;SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序: 由于目标计算机积极拒绝&#xff0c;无法连接。 命令行执行&#xff1a;netstat -ano | findstr :1433发现结…

生成网站sitemap.xml地图教程

要生成 sitemap.xml 文件&#xff0c;需要通过爬虫程序抓取网站的所有有效链接。以下是完整的解决方案&#xff1a; 步骤 1&#xff1a;安装必要的 Python 库 ounter(line pip install requests beautifulsoup4 lxml 步骤 2&#xff1a;创建 Python 爬虫脚本 (sitemap_genera…

idea拉取新项目第一次启动报内存溢出(java.lang.OutOfMemoryError: Java heap space)

背景&#xff1a; 新拉取一个项目后&#xff0c;第一次启动的时候报错内存溢出&#xff1a; Java 堆内存溢出 (java.lang.OutOfMemoryError: Java heap space) 这个错误表示你的 Java 应用程序需要的内存超过了 JVM 堆内存的分配上限。 解决方案 1.增加堆内存大小 启动应用时添…