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

SlideLoss与FocalLoss在YOLOv8分类损失中的应用及性能分析

文章目录

    • 一、引言
    • 二、YOLOv8 损失函数概述
    • 三、SlideLoss 详解
      • (一)SlideLoss 的原理
      • (二)SlideLoss 的代码实现
    • 四、FocalLoss 分类损失函数详解
      • (一)FocalLoss 的原理
      • (二)FocalLoss 的代码实现
    • 五、SlideLoss 和 FocalLoss 在 YOLOv8 中的协同作用
    • 六、实验结果与分析
    • 七、总结与展望

一、引言

YOLOv8作为YOLO系列的最新成员,继承了前代的高效性和准确性,并在多个方面进行了优化。在目标检测领域,损失函数的设计对于模型的性能至关重要,尤其是对于处理复杂场景和小目标检测时。本文将深入探讨YOLOv8中SlideLoss和FocalLoss两种分类损失函数的改进,以及它们如何助力模型在细节上实现显著的性能提升。

二、YOLOv8 损失函数概述

YOLOv8的损失函数由分类损失、边界框回归损失和目标置信度损失组成。这些损失函数相互配合,共同指导模型的训练过程。然而,在实际应用中,传统损失函数在处理小目标和类别不平衡问题时存在不足。因此,引入改进的损失函数成为提升YOLOv8性能的关键。

三、SlideLoss 详解

(一)SlideLoss 的原理

SlideLoss通过动态调整样本权重,使得模型更加关注难以区分的对象。它在交叉熵损失的基础上增加了一个平滑过渡机制,特别适用于小目标检测。通过控制小物体权重的参数(γ)和平滑过渡的边界值(margin),SlideLoss能够有效提升小目标的分类精度,同时不会影响大目标的检测性能。

(二)SlideLoss 的代码实现

import torch
import torch.nn as nnclass SlideLoss(nn.Module):def __init__(self, gamma=0.5, margin=1.0):super().__init__()self.gamma = gamma  # 控制小物体权重的参数self.margin = margin  # 平滑过渡的边界值def forward(self, pred, target):ce_loss = nn.CrossEntropyLoss()(pred, target)  # 标准交叉熵损失slide_term = self.gamma * (1 - torch.exp(-self.margin * (pred - target).abs()))return ce_loss + slide_term  # 最终损失 = 交叉熵 + 小物体优化项

通过上述代码,我们可以在YOLOv8的训练过程中使用SlideLoss来优化小目标的分类性能。

四、FocalLoss 分类损失函数详解

(一)FocalLoss 的原理

FocalLoss旨在解决类别不平衡问题,尤其是在处理稀有类别时。它通过为难分类样本赋予更高的权重,使模型更加关注这些“难啃的骨头”。FocalLoss通过引入γ(难样本权重放大系数)和α(类别平衡参数)来调整损失函数,从而提高模型对稀有类别的检测能力。

(二)FocalLoss 的代码实现

import torch
import torch.nn as nnclass FocalLoss(nn.Module):def __init__(self, gamma=2.0, alpha=0.25):super().__init__()self.gamma = gamma  # 难样本权重放大系数self.alpha = alpha  # 类别平衡参数def forward(self, pred, target):pos_weights = (target == 1).float()  # 正样本(目标物体)neg_weights = (target == 0).float()  # 负样本(背景)pos_loss = nn.BCELoss()(pred, target) * (pos_weights * self.alpha)  # 正样本损失neg_loss = nn.BCELoss()(pred, 1 - target) * (neg_weights * (1.0 - self.alpha))  # 负样本损失total_loss = pos_loss + neg_lossreturn total_loss * (1.0 - pred.exp()).pow(self.gamma)  # 难样本加权

通过上述代码,FocalLoss可以有效地提升模型对稀有类别的检测性能。

五、SlideLoss 和 FocalLoss 在 YOLOv8 中的协同作用

将SlideLoss和FocalLoss结合使用,可以同时解决小目标检测和类别不平衡问题。SlideLoss关注小目标的分类,而FocalLoss解决类别不平衡,二者协同作用能够显著提升YOLOv8在各种复杂场景下的检测性能。

六、实验结果与分析

通过在多个目标检测数据集上进行实验,验证了SlideLoss和FocalLoss在YOLOv8中的有效性。实验结果表明,在引入这两种改进的损失函数后,YOLOv8在检测精度(如平均精度均值mAP等指标)上相较于使用传统损失函数的版本有显著提升。尤其是在处理小目标、遮挡目标以及类别不平衡的场景时,模型的性能提升更为明显。

七、总结与展望

本文深入探讨了YOLOv8中SlideLoss和FocalLoss两种分类损失函数的改进,并展示了它们如何在细节上实现性能提升。通过详细代码实例和实验分析,我们证明了这两种损失函数在提升小目标检测和解决类别不平衡问题上的有效性。未来,随着深度学习技术的不断发展,相信会有更多的创新损失函数被提出,进一步推动YOLO系列算法在目标检测领域的应用和发展。

在这里插入图片描述

相关文章:

SlideLoss与FocalLoss在YOLOv8分类损失中的应用及性能分析

文章目录 一、引言二、YOLOv8 损失函数概述三、SlideLoss 详解(一)SlideLoss 的原理(二)SlideLoss 的代码实现 四、FocalLoss 分类损失函数详解(一)FocalLoss 的原理(二)FocalLoss 的…...

AI 驱动数据库交互技术路线详解:角色、提示词工程与输入输出分析

引言 在人工智能与数据库深度融合的趋势下,理解AI在数据库交互流程中的具体角色、提示词工程的运用以及各步骤的输入输出情况,对于把握这一先进技术路线至关重要。本文将对其展开详细剖析。 一、AI 在数据库交互流程中的角色 (一&#xff0…...

Jmeter中的BeanShell如何使用?

在JMeter中,BeanShell 是一种基于Java语法的脚本工具,可以通过编写脚本实现动态逻辑处理、变量操作、条件判断等功能。以下是BeanShell的详细使用方法和常见场景示例: 1. BeanShell组件类型 JMeter提供多种BeanShell组件,根据场…...

JDBC工具类的三个版本

一、JDBC连接数据库的7个步骤 1、加载驱动 2、获取连接 3、编写sql 4、获取执行sql的stmt对象 有两种 stmt(存在sql注入问题 字符串拼接) pstmt(预编译可以防止sql注入) 5、执行sql 拿到结果集 6、遍历结果集 7、关闭资源…...

安达发|制药车间生产计划准备性的关键影响因素及优化策略研究

在高度规范的制药行业,生产计划的准备性直接影响企业的运营效率和合规水平。根据FDA统计,2024年因生产计划不当导致的药品短缺案例增加了23%,暴露出制药企业在生产计划管理方面的系统性挑战。本文将从设备、物料、人员、环境、法规五个维度&a…...

独立按键控制LED

目录 1.独立按键介绍 2.原理图 3.C51数据运输 解释&#xff1a;<< >> ​编辑 解释&#xff1a;& | 解释&#xff1a;^ ~ ​编辑 4.C51基本语句 5.按键的跳动 6.独立按键控制LED亮灭代码 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1…...

【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用

目录 一、getters 二、 mapState 三、 mapGetters 四、 mapMutations 五、 mapActions 学到这儿来个小总结&#xff1a;四个map方法的使用 总结不易~ 本章节对我有很大的收获&#xff0c; 希望对你也是&#xff01;&#xff01;&#xff01; 本节素材已上传至Gitee&…...

小程序初始化加载时间优化 步骤思考与总结

回想起来&#xff0c;正确的小程序初始加载时间优化步骤应该为&#xff1a; 一、梳理小程序初始化的步骤&#xff0c;以用户点击小程序为开始&#xff08;尽可能靠近&#xff09;&#xff0c;以页面渲染出来的时刻为结束—也就是用户感知到的时间。 二、页面渲染时&#xff0…...

前端弹性布局:用Flexbox构建现代网页的魔法指南

引言&#xff1a;布局的进化史 在网页设计的黑暗时代&#xff08;2010年前&#xff09;&#xff0c;开发者们用float、position和inline-block这些原始工具进行布局&#xff0c;就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范&#xff0c;前端世界终于迎…...

Python基于Django的高校教室管理系统【附源码、文档说明】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践

金仓数据库在金融行业的两地三中心容灾架构实践 &#x1f31f;嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 引言 随着国家对信息技术应用创新&#xff0…...

利用多AI协作实现AI编辑器高效开发:创新架构与实践基本构想

在当今快速发展的科技领域&#xff0c;AI技术正以前所未有的速度重塑软件开发的流程和模式。传统的软件开发过程往往需要不同专业人员协同合作&#xff0c;从需求分析到产品设计&#xff0c;再到技术实现&#xff0c;每个环节都需要耗费大量的时间和人力。然而&#xff0c;随着…...

【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型

我们非常高兴地向大家介绍 Seed-Coder&#xff0c;它是一个功能强大、透明、参数高效的 8B 级开源代码模型系列&#xff0c;包括基础变体、指导变体和推理变体。Seed-Coder 通过以下亮点促进开放代码模型的发展。 以模型为中心&#xff1a;Seed-Coder主要利用大语言模型&#…...

C++GO语言微服务之gorm框架操作MySQL

目录 01 01-gorm介绍 02 02-MySQL操作回顾 03 03-gorm创建表 04 04-MySQL的init函数说明 05 05-gorm框架提供的MySQL连接池 06 06-gorm插入数据 07 07-gorm查询数据 08 08-gorm更新数据 09 09-gorm软删除-创建表 10 10-gorm软删除-实现 11 10-MySQL的8小时时区问题 …...

Webug4.0靶场通关笔记-靶场搭建方法(3种方法)

目录 一、虚拟机绿色版本 1. 开启phpstudy 2. 访问靶场 二、Docker版本 1.拉取镜像 2.启动镜像 三、源码安装版本 1. 搭建环境 &#xff08;1&#xff09;安装PHPStudy &#xff08;2&#xff09;WeBug4.0靶场源码 &#xff08;3&#xff09;安装Navicat &#xff…...

HTTP/3展望、我应该迁移到HTTP/2吗

1. HTTP/3展望 HTTP/3 基于 QUIC 协议&#xff0c;完全解决了“队头阻塞”问题&#xff0c;弱网环境下的表现会优于 HTTP/2&#xff1b;QUIC 是一个新的传输层协议&#xff0c;建立在 UDP 之上&#xff0c;实现了可靠传输&#xff1b;QUIC 内含了 TLS1.3&#xff0c;只能加密通…...

【Linux基础】系统监控和进程管理指令

目录 ps命令 top命令 kill命令 killall命令 1.1 命令介绍 1.2 命令格式 1.3 常用选项 1.4 示例 1.4.1 交互模式确认 1.4.2 指定信号 shutdown命令 ps命令 作用&#xff1a;查看当前进程信息。 常用选项&#xff1a; 作用 -e 显示所有进程&#xff0c;包括其他用户…...

【Linux实践系列】:进程间通信:万字详解共享内存实现通信

&#x1f525; 本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 人生就像一场马拉松&#xff0c;重要的不是起点&#xff0c;而是坚持到终点的勇气 ★★★ 本文前置知识&#xff1a; …...

无法更新Google Chrome的解决问题

解决问题&#xff1a;原文链接&#xff1a;【百分百成功】Window 10 Google Chrome无法启动更新检查&#xff08;错误代码为1&#xff1a;0x80004005&#xff09; google谷歌chrome浏览器无法更新Chrome无法更新至最新版本&#xff1f; 下载了 就是更新Google Chrome了...

CenOS7切换使用界面

永久切换 在开始修改之前&#xff0c;我们首先需要查看当前的启动模式。可以通过以下命令来实现&#xff1a; systemctl get-default执行此命令后&#xff0c;系统会返回当前的默认启动模式&#xff0c;例如graphical.target表示当前默认启动为图形界面模式。 获取root权限&…...

# YOLOv3:深度学习中的目标检测利器

YOLOv3&#xff1a;深度学习中的目标检测利器 引言 在计算机视觉领域&#xff0c;目标检测是一项核心任务&#xff0c;它涉及到识别图像或视频中的物体&#xff0c;并确定它们的位置。随着深度学习技术的快速发展&#xff0c;目标检测算法也在不断进步。YOLO&#xff08;You …...

2025数维杯数学建模A题完整参考论文(共36页)(含模型、可运行代码、数据)

2025数维杯数学建模A题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、符号定义与说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2模型…...

在 Flink + Kafka 实时数仓中,如何确保端到端的 Exactly-Once

在 Flink Kafka 构建实时数仓时&#xff0c;确保端到端的 Exactly-Once&#xff08;精确一次&#xff09; 需要从 数据消费&#xff08;Source&#xff09;、处理&#xff08;Processing&#xff09;、写入&#xff08;Sink&#xff09; 三个阶段协同设计&#xff0c;结合 Fli…...

Python数据分析

目录 一、数据分析的核心流程 &#xff08;一&#xff09;明确数据分析目标 &#xff08;二&#xff09;数据收集 &#xff08;三&#xff09;数据清洗 1. 处理缺失值 2. 去除重复值 3. 修正错误值和异常值 &#xff08;四&#xff09;数据探索与可视化 1. 计算描述性…...

Java单例模式总结

说明&#xff1a;单例模式的核心是确保一个类只有一个实例&#xff0c;并提供全局访问点。饿汉式和懒汉式是两种常见的实现方式 一、饿汉式和懒汉式 1. 饿汉式&#xff08;Eager Initialization&#xff09; public class EagerSingleton {// 类加载时直接初始化实例private…...

《P7167 [eJOI 2020] Fountain (Day1)》

题目描述 大家都知道喷泉吧&#xff1f;现在有一个喷泉由 N 个圆盘组成&#xff0c;从上到下以此编号为 1∼N&#xff0c;第 i 个喷泉的直径为 Di​&#xff0c;容量为 Ci​&#xff0c;当一个圆盘里的水大于了这个圆盘的容量&#xff0c;那么水就会溢出往下流&#xff0c;直到…...

Pycharm(二十)张量的运算与操作

一、张量的数据类型转换 1.演示data.type(trch.DoubleTensor) #1.创建张量对象 [6 6 6;6 6 6] datatorch.full([2,3],6) print(data.dtype)#默认为torch.int64(LongTensor) #2.转化为double类型 datadata.type(torch.DoubleTensor) print(data.dtype) #3.转换成int类型 datad…...

JVM之内存管理(二)

部分内容来源&#xff1a;JavaGuide二哥Java 说⼀下 JDK1.6、1.7、1.8 内存区域的变化&#xff1f; JDK1.6、1.7/1.8 内存区域发⽣了变化&#xff0c;主要体现在⽅法区的实现&#xff1a; JDK1.6 常量池在方法区 JDK1.7 JDK1.6 使⽤永久代实现⽅法区&#xff1a;JDK1.7 时发…...

蓝桥杯嵌入式第十一届省赛真题

&#xff08;一&#xff09;题目 首先要知道P37对应的CubeMx上面的引脚是PB15,给PB15设置成ADC采集。使用到的PA6和PA7的端口要进行定时器配置 100Hz80 000 000/800 *1000 200Hz80 000 000/400 *1000 ADC采集只需要选择好adc1、adc2 再选择好它的通道就可以了&#xff0c;不…...

LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读

LLMs之ChatGPT&#xff1a;《Connecting GitHub to ChatGPT deep research》翻译与解读 导读&#xff1a;这篇OpenAI帮助文档全面介绍了将GitHub连接到ChatGPT进行深度代码研究的方法、优势和注意事项。通过连接GitHub&#xff0c;用户可以充分利用ChatGPT强大的代码理解和生成…...

多环境开发

# 应用环境(公共环境,写一些公共配置) spring:profiles:active: dev --- # 设置环境 # 生产环境 spring:config:activate:on-profile: pro server:port: 80 --- # 开发环境 spring:config:activate:on-profile: dev server:port: 81 --- # 测试环境 spring:config:activate:on-…...

游戏引擎学习第269天:清理菜单绘制

回顾并为今天的工作设定目标 昨天我们对调试系统中的菜单处理做了一些清理工作&#xff0c;今天我想继续对它们的展示和使用方式进行一些打磨和改进。今天的计划还不完全确定&#xff0c;我还没有完全决定要做什么&#xff0c;但是我希望能够完成这部分工作&#xff0c;所以我…...

《解锁React Native与Flutter:社交应用启动速度优化秘籍》

React Native和Flutter作为当下热门的跨平台开发框架&#xff0c;在优化应用启动性能方面各有千秋。今天&#xff0c;我们就深入剖析它们独特的策略与方法。 React Native应用的初始包大小对启动速度影响显著。在打包阶段&#xff0c;通过精准分析依赖&#xff0c;去除未使用的…...

Web3 初学者的第一个实战项目:留言上链 DApp

目录 &#x1f4cc; 项目简介&#xff1a;留言上链 DApp&#xff08;MessageBoard DApp&#xff09; &#x1f9e0; 技术栈 &#x1f536; 1. Solidity 智能合约代码&#xff08;MessageBoard.sol&#xff09; &#x1f537; 2. 前端代码&#xff08;index.html script.js…...

Innovus 25.1 版本更新:助力数字后端物理设计新飞跃

在数字后端物理设计领域&#xff0c;每一次工具的更新迭代都可能为项目带来巨大的效率提升与品质优化。今天&#xff0c;就让我们一同聚焦 Innovus 25.1 版本&#xff08;即 25.10 版本&#xff09;的更新要点&#xff0c;探寻其中蕴藏的创新能量。 一、核心功能的强势进 AI…...

Git简介和发展

Git 简介 Git是一个开源的分布式版本控制系统&#xff0c;跨平台&#xff0c;支持Windows、Linux、MacOS。主要是用于项目的版本管理&#xff0c;是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间&#xff0c;Linux内核开发团队使…...

adb 实用命令汇总

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 基础adb命令 # 重启adb adb kill-server# 查看已连接的设备 adb devices# 进入命令行 adb shell# 使用 -s 参数来指定设备 adb -s <设备序列号> shell…...

DAX 权威指南1:DAX计算、表函数与计算上下文

参考《DAX 权威指南 第二版》 文章目录 二、DAX简介2.1 理解 DAX 计算2.2 计算列和度量值2.3 变量2.3.1 VAR简介2.3.2 VAR的特性 2.4 DAX 错误处理2.4.1 DAX 错误类型2.4.1.1 转换错误2.4.1.2 算术运算错误2.4.1.3 空值或 缺失值 2.4.2 使用IFERROR函数拦截错误2.4.2.1 安全地进…...

使用fdisk 、gdisk管理分区

用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令&#xff1a; fdisk 设备名 fdisk 命令以交互方式进行操作的&#xff0c;在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…...

Python----神经网络(《Deep Residual Learning for Image Recognition》论文和ResNet网络结构)

一、论文 1.1、论文基本信息 标题&#xff1a;Deep Residual Learning for Image Recognition 作者&#xff1a;Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 单位&#xff1a;Microsoft Research 会议&#xff1a;CVPR 2016 主要贡献&#xff1a;提出了一种深度残…...

PostgreSQL 的 pg_collation_actual_version 函数

PostgreSQL 的 pg_collation_actual_version 函数 pg_collation_actual_version 是 PostgreSQL 中用于检查排序规则实际版本信息的函数&#xff0c;主要与 ICU (International Components for Unicode) 排序规则相关。 函数基本概念 函数定义 pg_collation_actual_version(…...

使用Simulink开发Autosar Nvm存储逻辑

文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑&#xff0c;本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…...

嵌入式STM32学习——继电器

继电器模块引脚说明 VCC&#xff08;&#xff09;&#xff1a; 供电正极。连接此引脚到电源&#xff08;通常是直流电源&#xff09;&#xff0c;以提供继电器线圈所需的电流。 GND&#xff08;-&#xff09;&#xff1a; 地。连接此引脚到电源的负极或地。 IN&#xff08;或…...

更换内存条会影响电脑的IP地址吗?——全面解析

在日常电脑维护和升级过程中&#xff0c;许多用户都会遇到需要更换内存条的情况。与此同时&#xff0c;不少用户也担心硬件更换是否会影响电脑的网络配置&#xff0c;特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系&#xff0c;帮助读者理解这两者之间的本质…...

AWS SNS:解锁高并发消息通知与系统集成的云端利器

导语 在分布式系统架构中&#xff0c;如何实现高效、可靠的消息通知与跨服务通信&#xff1f;AWS Simple Notification Service&#xff08;SNS&#xff09;作为全托管的发布/订阅&#xff08;Pub/Sub&#xff09;服务&#xff0c;正在成为企业构建弹性系统的核心组件。本文深度…...

【Java ee初阶】网络编程 TCP

TCP的socket api 两个核心的类 ServerSocket 创建一个这样的对象&#xff0c;就相当于打开了一个socket文件。 这个socket对象是给服务器专门使用的 这个类本身不负责发送接收。 主要负责“建立连接” Socket 创建一个这样的对象&#xff0c;也就相当于打开了一个socket文…...

达索MODSIM实施成本高吗?哪家服务商靠谱?

在数字化转型的浪潮中&#xff0c;越来越多的制造企业开始关注达索系统的MODSIM技术。记得去年参加行业峰会时&#xff0c;一位来自汽车零部件企业的技术总监向我倾诉了他的困扰&#xff1a;"我们都知道MODSIM能提升研发效率&#xff0c;但听说实施成本很高&#xff0c;又…...

ISP接口隔离原则

任何层次的软件设计如果依赖了它并不需要的东西&#xff0c;就会带来意料之外的麻烦。ISP强调使用多个特定的接口&#xff0c;而不是一个总接口&#xff0c;避免依赖不需要的接口。即不需要则不应该知道。 ISP特点 降低耦合度&#xff1a;客户端只依赖它需要的接口&#xff0…...

AI Agent(8):安全与伦理考量

引言 AI Agent作为具有一定自主性的智能系统,其行为可能产生深远影响。确保这些系统安全、可靠、符合伦理标准,并遵守相关法规,不仅是技术挑战,也是社会责任。 随着AI Agent能力的增强,其潜在风险也在增加,从数据泄露到决策偏见,从自主性滥用到责任归属不清,这些问题…...

Python3虚拟环境与包管理:项目隔离的艺术

Python3虚拟环境与包管理 为什么需要虚拟环境&#xff1f;虚拟环境工具&#xff1a;你的岛屿建设者一、使用venv创建虚拟环境创建虚拟环境激活虚拟环境退出虚拟环境 二、 包管理&#xff1a;岛上的补给系统2.1 pip&#xff1a;Python的包安装工具基本用法依赖管理 2.2 高级包管…...