计算机视觉——通过 OWL-ViT 实现开放词汇对象检测
介绍
传统的对象检测模型大多是封闭词汇类型,只能识别有限的固定类别。增加新的类别需要大量的注释数据。然而,现实世界中的物体类别几乎无穷无尽,这就需要能够检测未知类别的开放式词汇类型。对比学习(Contrastive Learning)使用成对的图像和语言数据,在这一挑战中备受关注。著名的模型包括 CLIP,但将其应用于物体检测,如在训练过程中处理未见类别,仍然是一个挑战。
本文使用标准视觉转换器(ViT)建立了一个开放词汇对象检测模型——开放世界定位视觉转换器(OWL-ViT),只做了极少的修改。该模型在大型图像-文本对的对比学习预训练和端到端检测的微调方面表现出色。特别是,使用类名嵌入可以实现对未学习类别的零检测。
OWL-ViT 在单次检测方面也很强大,因为它可以使用图像嵌入和文本作为查询。特别是在 COCO 数据集中,对于未经训练的类别,OWL-ViT 比以前的一流模型有了显著的性能提升。这一特性对于检测难以描述的对象(如特殊部件)非常有用。
我们还证明,增加预训练时间和模型大小能持续提高检测性能。特别是,我们发现,即使图像-文本对的数量超过 200 亿,开放词汇检测的性能改善仍在继续。此外,通过在检测微调中适当使用数据扩展和正则化,即使使用简单的训练配方,也能实现较高的零次和单次检测性能。
建议方法
OWL-ViT 是一个两阶段的学习过程,具体如下:
- 使用大型图像-文本对进行对比预训练。
- 将学习过渡到检测任务。
使用大型图像-文本对进行对比预训练
这样做的目的是将视觉和语言模式映射到一个统一的表示空间中。学习过程使用图像和文本编码器进行训练,以处理每种模态,使相关的图像和文本嵌入相互靠近,并使不相关的图像和文本嵌入相互远离。
图像编码器采用视觉变换器(ViT)架构,该架构具有可扩展性和强大的表示能力。图像被划分为多个片段,每个片段都作为一个标记进行处理,从而实现具有空间关系的特征提取。在这一过程中,ViT 标记化过程将图像转换成一串固定长度的标记,并通过变换器层学习各补丁之间的关系。另一方面,文本编码器处理标记化的句子,并生成浓缩整个句子含义的嵌入。文本表示通常是通过转换器最后一层的句末标记(EOS 标记)输出获得的。
OWL-ViT 预训练的一个重要设计特点是图像和文本编码器是独立的。这种设计允许预先计算查询文本和图像的嵌入,从而大大提高了推理过程中的计算效率。这种独立性还为在同一架构中处理查询(无论是文本还是图像)提供了灵活性。
将学习过渡到检测任务
在这里,首先去掉了 ViT 中最后的标记池层(通常用于提取整个图像的表示)。取而代之的是,将一个小型分类头和一个盒式回归头直接连接到每个输出标记。这种设计确保了 ViT 中的每个输出标记都与图像中的不同空间位置相对应,每个标记都代表一个潜在的候选对象。分类头预测物体类别,而方框回归头则估算相应边框的位置。
传统的对象检测模型在分类层中学习每个类别的固定权重,而 OWL-ViT 不使用固定的类别分类层。相反,对象类别名称被输入到文本编码器中,生成的文本嵌入直接用作分类头的权重。只要给出类名,即使是未经训练的类,这种方法也能让模型检测到相应的对象。
转换学习采用 DEtection TRansformer (DETR) 中使用的两端匹配损失来预测物体的位置。这种损失是模型预测的边框与正确边框之间的最佳映射,并计算每一对边框的损失。这样可以调整模型,使预测的物体位置和实际的物体位置保持一致。
在分类方面,焦点 sigmoid 交叉熵用于考虑长尾分布数据集的不平衡。与经常出现的类别相比,这种损失函数对罕见类别的误报惩罚更大,从而提高了罕见类别的检测性能。
此外,对于联合数据集,即并非所有图像都注释了所有类别,但每幅图像中只注释了有限数量的类别的数据集,对于每幅训练图像,查询是注释了的类别(正例明确标注为不存在的类别(负面示例)作为查询。这样,模型就能根据明确识别的信息进行学习,并减少对负面示例的错误处理。为了进一步避免对未注明类别的误解,我们在训练过程中随机选择类别并将其作为 “伪负例”,为每幅图像准备了至少 50 个负例查询。
试验
实验中使用了多个数据集。在训练中,我们主要使用 OpenImages V4(约 170 万张图像,600 多个类别)、Visual Genome(8.45 万张图像,包括大量对象关系信息)和 Objects365(包含 365 个类别的大型检测数据集)。一方面,评估使用了长尾分布。同时,评估主要使用了长尾分布的 LVIS v1.0,特别是用于验证零镜头性能。此外,COCO 2017 用于比较标准对象检测性能,Objects365 用于验证一般检测能力。
对开放词汇对象检测的评估主要集中在 LVIS 数据集上未经训练类的性能上。在该实验中,OWL-ViT 在零拍摄条件下的 APrare 达到了 31.2%,明显优于现有的先进方法。这表明,在预训练过程中使用图像-文本对能够从类名和描述中有效提取对象的语义特征。尤其是文本条件检测法,只需输入类别名称的文本查询,就能高精度地检测出未学习过的类别,这是该方法与以往方法的主要区别。
Hewshot 图像条件检测实验评估了 COCO 数据集上图像查询的检测性能;OWL-ViT 比现有的最先进方法提高了 72%,AP50 分数从 26.0 提高到 41.8。这些结果表明,OWL-ViT 综合利用了视觉和语言表征,即使对于没有给出名称的未知对象,也能提供出色的检测性能。特别是,图像条件检测通过使用包含特定对象的图像嵌入作为查询,有效地检测出了视觉上相似的对象。
对缩放特性的分析证实,增加预训练中使用的图像-文本对数量和模型大小可持续提高检测性能。特别是,在预训练中使用超过 200 亿个图像-文本对往往能显著提高零点检测性能。这一结果表明,在预训练中使用大规模数据也能有效地过渡到物体检测任务。同样明显的是,基于视觉转换器的模型比其他架构具有更好的扩展性能,尤其是在模型规模较大的情况下。
拓展与增强
背景知识
- 对比学习的重要性:对比学习通过将图像和文本对齐到一个共享的嵌入空间,使得模型能够理解视觉和语言之间的语义关系。这对于开放词汇对象检测至关重要,因为它允许模型通过文本描述来识别未见过的类别。
- 视觉转换器(ViT)的优势:ViT 将图像分割成固定大小的补丁,并将每个补丁视为一个标记,类似于自然语言处理中的单词。这种设计使得 ViT 能够捕捉图像中的全局特征和局部特征,从而在视觉任务中表现出色。
相关工作
- CLIP 模型:CLIP 是一个开创性的模型,它通过对比学习将图像和文本嵌入到一个共享的向量空间中。虽然 CLIP 主要用于图像分类和文本生成任务,但其思想为 OWL-ViT 提供了重要的启发。OWL-ViT 在此基础上进一步扩展,将对比学习应用于对象检测任务。
- DETR 模型:DETR 使用 Transformer 架构来处理对象检测任务,通过端到端的方式学习对象的位置和类别。OWL-ViT 借鉴了 DETR 的思想,使用两端匹配损失来优化检测性能。
实际应用场景
- 工业检测:在工业环境中,OWL-ViT 可以用于检测生产线上的缺陷或异常部件。通过提供图像查询或类别名称,模型能够快速定位并识别问题,从而提高生产效率和质量控制。
- 自动驾驶:在自动驾驶场景中,OWL-ViT 可以帮助车辆识别道路上的未知障碍物或交通标志。通过实时检测和识别,车辆可以做出更安全的决策。
- 医疗影像分析:在医疗领域,OWL-ViT 可以用于分析医学影像,如 X 光或 CT 扫描。通过提供疾病名称或图像示例,模型能够帮助医生快速定位病变区域,辅助诊断。
行业影响
- 推动开放词汇检测的发展:OWL-ViT 的出现为开放词汇对象检测领域带来了新的突破。它证明了通过对比学习和 Transformer 架构,可以有效地识别未见过的类别,为未来的研究提供了新的方向。
- 促进多模态学习的发展:OWL-ViT 结合了图像和文本两种模态,展示了多模态学习的强大潜力。这种结合不仅提高了检测性能,还为其他领域(如自然语言处理和计算机视觉的交叉领域)提供了新的思路。
总结
利用视觉转换器进行简单的开放词汇对象检测(OWL-ViT)是一项开创性的研究。这项研究的最大贡献在于,它利用图像和文本的大规模对比预训练,实现了对未知类别的零次和一次对象检测,而且准确率很高。特别是直接使用预训练的文本编码器输出作为类嵌入,而不是使用固定的类分类层的设计,在灵活性和可扩展性方面取得了重大进展。
相关文章:
计算机视觉——通过 OWL-ViT 实现开放词汇对象检测
介绍 传统的对象检测模型大多是封闭词汇类型,只能识别有限的固定类别。增加新的类别需要大量的注释数据。然而,现实世界中的物体类别几乎无穷无尽,这就需要能够检测未知类别的开放式词汇类型。对比学习(Contrastive Learning&…...
第二部分:网页的妆容 —— CSS(下)
目录 6 布局基础:Display 与 Position - 元素如何排列和定位6.1 小例子6.2 练习 7 Flexbox 弹性布局:一维布局利器7.1 小例子7.2 练习 8 Grid 网格布局:强大的二维布局系统8.1 小例子8.2 练习 9 响应式设计与媒体查询:适应不同设备…...
vite项目tailwindcss4的使用
1、安装taillandcss 前几天接手了一个项目,看到别人用tailwindcss节省了很多css代码的编写,所以自己也想在公司项目中接入tailwindcss。 官网教程如下: Installing Tailwind CSS with Vite - Tailwind CSS 然而,我在vite中按…...
css中:is和:where 伪函数
在 CSS 里,:is() 属于伪类函数,其作用是对一组选择器进行匹配,只要元素与其中任何一个选择器相匹配,就可以应用对应的样式规则。以下是详细介绍: 基本语法 :is() 函数的参数是一个或多个选择器,各个选择器之…...
线下零售数据采集:在精度与效率之间寻找平衡点
线下零售数据采集:在精度与效率之间寻找平衡点 为什么线下零售必须重视数据采集? 随着零售行业竞争加剧,门店执行的标准化与透明化成为供应链协作、销售提升的基础工作。 POG(陈列执行规范)的落地效果、陈列策略的调整…...
【Robocorp实战指南】Python驱动的开源RPA框架
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:网页数据抓取案例2:Excel报表生成 运行结果验证 三、性能对比测试方…...
新ubuntu物理机开启ipv6让外网访问
Ubuntu 物理机 SSH 远程连接与 IPv6 外网访问测试指南 1. 通过 SSH 远程连接 Ubuntu 物理机 1.1 安装 SSH 服务 sudo apt update sudo apt install openssh-server1.2 检查 SSH 服务状态 sudo systemctl status ssh确认出现 active (running)。 1.3 获取物理机 IP 地址 i…...
驱动开发硬核特训 │ Regulator 子系统全解
一、Regulator子系统概述 在 Linux 内核中,Regulator 子系统是专门用于管理电源开关、电压调整、电流控制的一套完整框架。 它主要解决以下问题: 设备需要的电压通常不一样,如何动态调整?有些设备休眠时需要关闭供电࿰…...
入门版 鸿蒙 组件导航 (Navigation)
入门版 鸿蒙 组件导航 (Navigation) 注意:使用 DevEco Studio 运行本案例,要使用模拟器,千万不要用预览器,预览器看看 Navigation 布局还是可以的 效果:点击首页(Index)跳转到页面(…...
怎样将visual studio 2015开发的项目 保存为2010版本使用
用的老旧电脑跑vs2015太慢了,实在忍不了了! 想把用 Visual Studio 2015 的做的项目保存为 Visual Studio 2010 兼容的格式,以后都使用2010写了。自己在网上搜了一下,亲测以下步骤可以的 手动修改解决方案和项目文件 修改解决方案…...
【学习笔记】软件测试流程-测试设计阶段
软件测试设计阶段这个阶段主要工作是编写测试用例。 什么是测试用例? 测试用例(TestCase)是为项目需求而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序是否满足客户需求。简而言之,测试用例是每一个测…...
Rust 学习笔记:关于切片的两个练习题
Rust 学习笔记:关于切片的两个练习题 Rust 学习笔记:关于切片的两个练习题引用和切片引用的大小以下程序能否通过编译? Rust 学习笔记:关于切片的两个练习题 参考视频: https://www.bilibili.com/video/BV1GrDQYeEzS…...
BeeWorks企业内部即时通讯软件支持国产化,已在鸿蒙系统上稳定运行
一、企业用户面临的困境与痛点 一些企业用的即时通讯软件比较旧,存在的问题不仅影响了日常工作的正常开展,也阻碍了企业信息化建设的进程: ● 国产系统与移动端不兼容:仅支持Windows和MAC系统,无法在银河麒麟、统信U…...
java对文字按照语义切分
实现目标 把一段文本按照一个完整的一句话为单元进行切分。如:以逗号,感叹号结尾看作是一个句子。 实现方案 StanfordCoreNLP切分 引入依赖 <dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp<…...
华纳云:centos如何实现JSP页面的动态加载
JSP(JavaServer Pages)作为Java生态中常用的服务器端网页技术,具有动态内容生成、可扩展性强、与Java无缝结合等优势。 而CentOS作为一款稳定、高效、安全的Linux服务器操作系统,非常适合部署JSP应用。 想要让JSP页面实现动态更新加载,避免…...
Android 消息队列之MQTT的使用(二):会话+消息过期机制,设备远程控制,批量控制实现
目录 一、实际应用场景 室内温湿度数据上传设备远程控制批量控制实现 二、会话管理、消息过期设置 4.1 会话管理 Clean Session参数 新旧会话模式对比典型应用场景 4.2 消息过期设置 MQTT 5.0消息过期机制 Message Expiry Interval属性QoS级别影响 三、实际应用场景 …...
一、JVM基础概念
一、JVM的设计目标 一次编译,到处运行(跨平台) ➔ Java编译成字节码,由JVM在不同平台解释/编译执行,实现跨平台。 内存管理与垃圾回收 ➔ JVM统一负责内存分配和回收,降低内存泄漏的风险。 性能优化 ➔ JIT(即时编译…...
深度学习---Pytorch概览
一、PyTorch 是什么? 1. 定义与定位 开源深度学习框架:由 Facebook(Meta)AI 实验室开发,基于 Lua 语言的 Torch 框架重构,2017 年正式开源,主打动态计算图和易用性。核心优势:灵活…...
第33周JavaSpringCloud微服务 分布式综合应用
第33周JavaSpringCloud微服务 分布式综合应用 一、分布式综合应用概述 分布式知识体系内容广泛,主要包括分布式事务、分布式锁、RabbitMQ等消息中间件的应用以及跨域问题的解决。 1.1 课程重点内容介绍 分布式事务 :在大型项目中普遍存在,…...
Paramiko 完全指南
目录 Paramiko 概述核心功能与模块框架安装与依赖基础用法与案例详解 SSH 连接与命令执行密钥认证SFTP 文件传输交互式会话端口转发 高级功能与实战技巧常见问题与解决方案总结与资源推荐 1. Paramiko 概述 是什么? Paramiko 是一个纯 Python 实现的 SSHv2 协议库…...
夜莺监控V8(Nightingale)二进制部署教程(保姆级)
夜莺监控部署 前置工作 1. 部署好mysql 2. 部署好redis 3. 部署好prometheus夜莺压缩包下载 本教程基于Centos7系统下的二进制方式部署,先去官网进行压缩包下载 在系统创建/opt/n9etest目录,并将压缩包拖进目录 mkdir /opt/n9etest进入/opt/n9etest࿰…...
鸿蒙应用开发 知识点 官网快速定位表
ArkTS 语言介绍 ArkTS 语言介绍 基础入门 资源分类与访问 添加组件(基础组件) 显示图片 (Image) 按钮 (Button) 单选框 (Radio) 切换按钮 (Toggle) 进度条 (Progress) 视频播放 (Video) 使用文本 文本显示 (Text/Span) 文本输入 (TextInput/TextArea) 使用弹窗 使用弹…...
【神经网络与深度学习】两种加载 pickle 文件方式(joblib、pickle)的差异
引言 从深度学习应用到数据分析的多元化需求出发,Python 提供了丰富的工具和模块,其中 pickle 和 joblib 两种方式在加载数据文件方面表现尤为突出。不同场景对性能、兼容性以及后续处理的要求不尽相同,使得这两种方式各显优势。本文将通过深…...
quickbi finebi 测评(案例讲解)
quickbi & finebi 测评 国产BI中入门门槛比较低的有两个,分别是quickbi和finebi。根据我的经验通过这篇文章做一个关于这两款BI的测评文章。 quickbi分为个人版、高级版、专业版、私有化部署四种。这篇文章以quickbi高级版为例,对quickbi进行分享。…...
vue的生命周期 以及钩子
最早可以在created 时调用后端接口获取数据,因为beforecreated的时候 那个data 都还还是初始化出来 修改数据的时候触发 update 案例1:create 案例2:一进来页面获取搜索框焦点 echarts 饼图渲染 初始化dom后才去准备实例,所以必须要在dom之后…...
Mariadb 防火墙服务器和端口:mysql | 3306
Centos7 Mariadb 理解:Mariadb数据库就类似于我们生活中常见的Excel。 主要工作原理就是我们创造一个数据库其中创造一个数据表再在数据表中输入内容,分为三类。在详细点就是打开Excel(数据库),我们在其中加入…...
爬虫学习笔记(二)--web请求过程
Web请求全过程(重要) 从输入完网址(如输入百度网址)到返回页面以及页面中的数据这一完整的过程发生了什么事情? 服务器端渲染 在服务器端直接把数据和html整合,统一返回给浏览器,在页面源代码…...
开发vue项目所需要安装的依赖包
在开发Vue项目时,通常需要安装以下几个核心依赖包:1、Vue CLI、2、Vue Router、3、Vuex、4、Axios。这些依赖包可以确保你的Vue项目拥有基础的功能和良好的开发体验。接下来,我们将详细介绍每个依赖包的作用、安装方法以及使用案例。 一、VUE…...
Java SE(4)——方法详解
1.方法的概念&使用 1.1 什么是方法? Java中的方法类似于C语言中的函数,是用于执行特定任务的代码块。 那么用方法组织起来的代码块和普通的代码相比有什么优势呢? 1.当代码规模较大且应用场景较为复杂时,方法能够模块化地组…...
网络安全实战指南:从安全巡检到权限维持的应急响应与木马查杀全(命令查收表)
目录 一、安全巡检的具体内容 1. 巡检的频率与目标是什么 2. 巡检的内容是什么以及巡检后如何加固 二、Windows环境下应急响应的主要流程 1. 流程概述及每个步骤详细解释 步骤1:隔离与遏制 步骤2:识别与分析 步骤3:清除与恢复 步骤4…...
Infrared Finance:Berachain 生态的流动性支柱
在加密市场中,用户除了参与一级和二级交易,还有一种低门槛参与的就是空投。从 2021 年 DeFi 成为主流开始,空投一直都是“以小搏大”的机会,通过参与项目早期的链上交互和任务以获取空投奖励,近几年已成为一种广受欢迎…...
Hadoop和Spark大数据挖掘与实战
1.概述 本节将系统讲解大数据分析的完整流程,包括数据采集、预处理、存储管理、分析挖掘与结果可视化等核心环节。与此同时,我们还将对主流数据分析工具进行横向对比,帮助读者根据实际需求选用最合适的工具,提升数据价值挖掘的效…...
TCP vs UDP:核心区别、握手过程与应用场景(附对比图)
🌐 引言 在网络通信中,TCP(传输控制协议)和UDP(用户数据报协议)是两大核心传输层协议。它们各有优劣,适用于不同场景。本文将用图文对比实战示例,帮你彻底理解两者的区别࿰…...
人工智能-深度学习之多层感知器
深度学习 任务任务1任务2任务3 机器学习的弊端多层感知器 (MLP/人工神经网络)MLP实现非线性分类Keras介绍与实战准备Keras or TensorflowKeras建立MLP模型 实战(1): 建立MLP实现非线性二分类实战(2): MLP实…...
Improving Deep Learning For Airbnb Search
解决问题 问题1: 解决推荐酒店与用户实际预定酒店价格存在偏差问题,实际预定比推荐要更便宜: 所以问题为是否更低价格的list更倾向于用户偏好,应该被优先推荐? 1. 该文通过数据分析与模型演进,将模型改造为item sco…...
多模态大型模型,实现以人为中心的精细视频理解
大家看完觉得有帮助记得点赞和关注!!! 抽象 精细理解视频中人类的动作和姿势对于以人为中心的 AI 应用程序至关重要。在这项工作中,我们介绍了 ActionArt,这是一个细粒度的视频字幕数据集,旨在推进以人为中…...
向量数据库Milvus的部署与使用
Milvus介绍 Milvus是一个开源、高性能、高扩展性的向量数据库,Milvus可以用来存储文本、图像、音频等非结构化数据,本质上是用Embeddings将非结构化数据转换成能够捕捉其基本特征的数字向量,然后将这些向量存储在向量数据库中,从…...
1.文档搜索软件Everything 的使用介绍
Everything 是 Windows 文件搜索的效率天花板,通过灵活语法和极速响应,彻底告别「找文件焦虑」。 定位:一款专注于 极速文件名搜索 的 Windows 工具,免费且轻量(安装包仅几 MB)。 核心优势…...
2025系统架构师---论企业集成平台的技术与应用
摘要 本文探讨了企业集成平台的技术与应用,以某商业银行开发的绩效考核平台系统为例,分析了企业集成平台的基本功能及关键技术,并详细阐述了在表示集成、数据集成、控制集成和业务流程集成方面的应用和实施方式。通过异构系统之间的集成,绩效考核平台与其他系统实现了有机…...
STM32Cubemx-H7-16-FreeRTOS-1-创建工程,实现两个灯的基本亮灭
前言 裸机也是开发到一半快要结束了,接下来开始上操作系统,然后先能使用基本的,后面再讲理论。 Cubemx创建工程 基本打开生成就不说了,直接从界面开始 从这里开始吧 1.首先开启外部高速晶振 2.先这样选择 选择HSE时钟环ÿ…...
深入浅出限流算法(二):更平滑的滑动窗口
好的,接续上一篇关于固定窗口计数器的讨论,我们现在来看看它的改进版——滑动窗口算法,它旨在解决固定窗口那个恼人的“临界突变”问题。 在上一篇文章中,我们探讨了最简单的固定窗口计数器限流算法,并指出了它最大的缺…...
纷析云开源财务软件:基于Spring Boot的轻量化财务中台实践
一、技术架构与核心设计 全栈开源技术栈 后端框架:基于Spring Boot 3.x构建,集成MyBatis-Plus作为ORM层,支持JDK 17特性(如虚拟线程并发处理),确保高吞吐与稳定性。 前端框架:采用Vue 3 TypeS…...
软考-软件设计师中级备考 5、数据结构 树和二叉树
1、树的基本概念 节点的度:节点拥有的子树数目。例如,若一个节点有 3 棵子树,其度为 3。树的度:树中节点的最大度数。如树中所有节点的度最大为 4,则树的度是 4。叶子节点:度为 0 的节点,也…...
php 需要学会哪些技术栈,掌握哪些框架
作为一个「野生」程序员,我的学习过程比较急功近利。 我记得自己写的第一个 PHP 程序是留言本。一上来对 PHP 一窍不通,所以直接去网上找了个留言本的源码,下载下来后先想办法让它在自己电脑上运行起来。通过这个过程掌握了 PHP 开发环境的搭…...
短视频矩阵系统贴牌批量剪辑功能开发,支持OEM
一、引言 在短视频行业蓬勃发展的当下,短视频矩阵运营已成为企业和个人实现品牌推广、流量增长的重要策略。然而,面对大量的视频素材和多个运营账号,传统的单个视频剪辑、发布方式效率极低,难以满足矩阵运营的需求。为了提高内容…...
【Java EE初阶】多线程(二)
1.在图中代码,我们调用了start方法,真正让系统调用api创建了一个新线程,而在这个线程跑起来之后,就会自动执行到run。调用start方法动作本身速度非常快,一旦执行,代码就会立即往下走,不会产生任…...
分布式链路追踪理论
基本概念 分布式调用链标准-openTracing Span-节点组成跟踪树结构 有一些特定的变量,SpanName SpanId traceId spanParentId Trace(追踪):代表一个完整的请求流程(如用户下单),由多个Span组成…...
conda和bash主环境的清理
好的!要管理和清理 Conda(或 Bash)安装的包,可以按照以下步骤进行,避免冗余依赖,节省磁盘空间。 📌 1. 查看已安装的包 先列出当前环境的所有安装包,找出哪些可能需要清理ÿ…...
Linux系统管理与编程14:Shell变量及定制bash登录界面
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1.准备工作 创建用户wu useradd wu passwd wu 修改权限 chmod uw /etc/sudoers 编辑 visudo 在root行下,添加:“wu ALL……” 图14- 1 恢复文件权限并…...
微信小程序开发笔记
一、首先,下载一个微信开发者工具。前端项目就正常创建,由于本人的前端一塌糊涂,就让AI给我生成了一个我想要的前端项目(包括后面写功能)。 这里开发的时候会用到这个,但是一定注意服务部署到服务器上再本…...