编辑任何场景! 3DitScene:通过语言引导的解耦 Gaussian Splatting开源来袭!
文章:https://arxiv.org/pdf/2405.18424
项目:https://zqh0253.github.io/3DitScene/
huggingface:https://huggingface.co/spaces/qihang/3Dit-Scene
场景图像编辑在娱乐、摄影和广告设计中至关重要。现有方法仅专注于2D个体对象或3D全局场景编辑,导致缺乏一种在3D层面上以不同粒度有效控制和操作场景的统一方法。
本研究提出了3DitScene,这是一种新颖且统一的场景编辑框架,利用语言引导的解耦Gaussian Splatting实现从2D到3D的无缝编辑,允许对场景组成和个体对象进行精确控制。首先结合通过生成先验和优化技术细化的3D Gaussian Splatting。然后通过CLIP引入的语言特征为3D几何体赋予语义,实现对象的解耦。借助解耦的Gaussian Splatting,3DitScene允许在全局和个体层面上进行操作,革新了创意表达并增强了对场景和对象的控制。实验结果展示了3DitScene在场景图像编辑中的有效性和多样性。
介绍
场景图像编辑在娱乐、专业摄影和广告设计等多个领域具有重要意义。内容编辑能够为观众创造沉浸式和引人入胜的体验,有效传达艺术愿景,并实现预期的美学效果。随着深度生成建模的快速发展,许多尝试已被用于有效编辑图像。然而,这些方法遇到了限制,阻碍了它们的潜力。
以往的方法主要集中在2D图像空间的场景编辑。它们通常依赖于生成先验,如生成对抗网络(GANs)和扩散模型(DM),并采用修改交叉注意力机制和优化网络参数等技术来编辑场景图像中的外观和对象身份。尽管有些尝试扩展了这些方法到3D编辑,但它们忽视了3D线索,在改变相机姿态时难以保持3D一致性。此外,这些方法通常专注于全局场景,缺乏准确解耦对象的能力,导致在3D层面上对个体对象的控制有限。
为了编辑任意场景图像并实现对场景及其个体对象的3D控制,本文提出了3DitScene,一种利用新场景表示的场景编辑框架——语言引导的解耦Gaussian Splatting。具体来说,给定的图像首先被投影到3D Gaussian Splatting中,这些Gaussian Splatting通过2D生成先验进一步细化和丰富。因此获得了一个综合的3D场景表示,自然支持给定图像的新视角合成。
此外,CLIP的语言特征被提取到相应的3D Gaussian Splatting中,引入语义到3D几何中。这些语义3D Gaussian Splatting帮助从整个场景表示中解耦出个体对象,形成语言引导的解耦Gaussian Splatting用于场景分解。它们还允许更用户友好的交互,即用户可以通过文本查询特定对象或兴趣点。为此,3DitScene实现了从2D到3D的无缝编辑,并允许在全局和个体层面上进行修改,赋予创作者对场景构图和对象级别编辑的精确控制。
这一流程称为3DitScene。不同于以前专注于单一类型编辑的工作,3DitScene在一个统一框架内整合了编辑需求。示意图展示了3DitScene的多功能性,展示了其在各种场景图像中的应用。在不同设置下对3DitScene进行了评估,结果显示相比基线方法有显著改进。
相关工作
使用生成模型进行图像编辑 随着生成对抗网络(GANs)和扩散模型的发展,2D图像合成领域取得了显著进展。许多研究利用生成模型中embedding的丰富先验知识进行图像编辑。一些研究使用GANs进行各种图像编辑任务,包括图像到图像翻译、潜在空间操作以及文本引导的操作。
然而,由于在大规模数据上训练的限制,GANs在处理现实场景图像时常表现不佳。随着扩散模型的显著进步,社区越来越关注利用强大的文本到图像扩散模型进行真实图像编辑。然而,这些方法局限于2D领域,难以在3D空间中编辑对象。同时,其他研究试图解决3D感知的图像编辑,但在编辑过程中引入了不一致性,且无法改变整个场景的相机视角。相反,本文的模型利用显式3D高斯将2D图像转换为3D空间,同时借助语言引导解耦对象。该方法不仅使本文的模型能够一致地执行3D感知对象编辑,还能促进场景级的新视角合成。
单视角3D场景合成 在3D场景生成领域中,基于单视角的条件生成提出了独特的挑战。先前的方法通过训练一个通用模型来应对这一挑战,该模型能够基于单个输入图像推断场景的3D表示。然而,这些方法需要大量的数据集进行训练,且在面对相机视角的显著变化时,往往会产生模糊的纹理。最近,一些工作采用扩散先验来获取未见视角的概率分布,从而获得更好的合成效果。然而,这些方法通常集中于对象中心的场景或缺乏3D一致性。本文的方法通过显式3D高斯连接2D图像和3D场景,并结合扩散知识,克服了上述挑战。
方法
本文的目标是提出一个3D感知的场景图像编辑框架,允许对相机和对象进行同步控制。为实现这一目标,先介绍了一种新颖的场景表示方法,称为语言引导的解耦Gaussian Splatting。为了实现对象级控制,进一步将语言特征提取到Gaussian Splatting表示中,实现对象级解耦。接着详细说明了优化过程,最后展示了本文的框架在推理过程中所提供的灵活用户控制。
从单个图像生成3D Gaussian Splatting
预备知识 3D Gaussian Splatting(3DGS)已被证明在重建和生成设置中都很有效。它通过一组显式的3D高斯来表示3D场景。每个3D高斯通过一个中心向量
、一个缩放因子
、一个旋转四元数
来描述其位置,并存储一个不透明度值
和用于体渲染的球谐函数(SH)系数
(k表示SH的自由度)。所有上述参数可以表示为
,其中𝑁是3D高斯的数量。一个基于瓦片的光栅化器用于将这些高斯渲染成2D图像。
图像到3DGS的初始化 给定一个输入图像
,应用一个现成的深度预测模型来估计其深度图
。然后,可以将图像像素转换到3D空间,形成相应的3D点云:
其中,K和T分别是相机的内参矩阵和外参矩阵。这些点云P然后被用来初始化3DGS,通过直接复制位置和颜色值来进行初始化,其他与GS相关的参数则随机初始化。为了优化3DGS的外观,采用重建损失:
其中,𝑓是渲染函数。进一步利用图像生成基础模型(即Stable Diffusion)的先验知识来增强渲染质量。它以Score Distillation Sampling损失(记为LSDS)的形式,为当前3DGS渲染的图像提供更新方向。
通过修补扩展3D GS 当相机视角发生变化时,由于遮挡或超出原始视锥的新区域,渲染视图会出现空洞。使用Stable Diffusion来修补未覆盖的区域。然后,需要将新添加的像素准确地转换到3D空间,以无缝对齐现有的3D高斯。
之前的方法首先预测深度值,然后使用启发式方法调整这些值以对齐现有的3D结构。然而,依赖启发式方法往往忽略了各种场景,导致深度不连续或形状变形等问题。
相反,本文提出了一种新方法,将新的内容提升到3D,同时确保无缝对齐而无需任何启发式过程。关键见解是将问题视为图像修补任务,并利用最先进的基于扩散的深度估计模型作为先验来解决任务。在去噪步骤中,不是使用模型预测整个图像的噪声,而是采用前向扩散过程来确定固定区域的值。这种方法保证了最终结果在去噪后符合原始固定部分的深度,确保了平滑扩展。
在通过深度修补平滑扩展3DGS后,将设想的全新视图作为参考视图,并应用重建损失Lrecon来监督更新的3DGS。对于从用户提供的视点和新设想视图之间插值的相机视角渲染的视图,采用SDS损失LSDS。
语言引导的解耦Gaussian Splatting
基于单个输入图像生成的3DGS,用户可以生成新视图。进一步将CLIP语言特征提取到3D高斯中。这将语义引入到3D几何中,有助于从整个场景表示中解耦个体对象。
语言特征提取 为每个3D高斯增加一个语言embedding
,其中
表示通道数。与RGB图像I类似,也可以通过光栅化器渲染出一个2D语义特征图
。为了学习embedding,首先使用Segment Anything Model (SAM)获得语义mask
。然后,可以获取每个对象的embedding
,并根据提取损失来监督渲染特征图E上的相应区域:
其中,
是CLIP的图像编码器,⊙表示元素逐次相乘。根据LangSplat,还训练了一个自编码器来压缩embedding空间,以优化语言embedding e的内存消耗。
场景分解 在提取语言特征后,可以将场景分解为不同的对象。这使得用户能够查询并定位特定对象,并对单个对象进行编辑(例如平移、旋转、移除、重新造型)。值得注意的是,这种场景分解特性不仅在推理阶段允许更灵活的编辑,还在优化过程中提供了对场景布局的增强。由于现在可以独立查询和渲染每个对象,对对象应用随机平移、旋转和移除。这种对场景布局的增强显著改善了遮挡区域的外观,最终提升了编辑视图的整体质量。
训练 总体训练目标可以表示为:
其中,
、
和
是平衡各损失项的系数。
推理
由于本文的表示方法具有解耦的特性,用户现在可以以灵活的方式与对象进行交互和操作。这里,主要讨论通过两种不同模态来提示对象:
文本提示 用户可以通过文本提示查询对象,如下图3所示。
根据LERF和LangSplat,计算3D高斯中的语言embedding e与文本提示的embedding
之间的相关性得分:
其中,
是包括“object”(对象)、“things”(事物)、“stuff”(物品)和“texture”(纹理)等常见短语的CLIP embedding。相关性得分低于预定阈值的高斯将被排除。剩余部分被识别为用户感兴趣的对象。
边界框 用户还可以通过在输入图像上绘制一个大致的边界框来选择对象。首先识别边界框内的3D高斯,然后根据它们的语言embedding e进行K均值聚类。假设对象是边界框内最显著的一个,数量不超过阈值比例的聚类将被丢弃。
同时,用户还可以通过指定内参和外参来调整相机视点。
实验
###设置
实现细节:为了将图像提升到3D,使用GeoWizard估计其相对深度。采用Stable Diffusion的修补流程为3DGS的扩展生成新内容。利用MobileSAM和OpenCLIP对渲染视图进行分割和计算特征图,这些特征图进一步用于监督3D高斯的语言embedding。在优化过程中,使用Stable Diffusion进行Score Distillation Sampling。得益于显式3DGS初始化的良好图像质量,采用低分类器无关指导的比例。
基线:将本文的方法与以下场景图像编辑工作进行比较:
-
AnyDoor是一种基于2D扩散模型的方法,可以将目标对象传送到给定的场景图像中。它通过微调Stable Diffusion来利用其强大的图像生成先验。
-
Object 3DIT旨在通过语言指令进行3D感知的对象中心图像编辑。它在包含原始图像、语言指令和编辑图像对的合成数据集上微调Stable Diffusion。
-
Image Sculpting也旨在进行3D感知的对象中心图像编辑。它从输入图像中的对象估计3D模型,以实现对几何形状的精确3D控制。它还使用Stable Diffusion来优化编辑后的图像质量。
-
AdaMPI侧重于相机视角的控制。它利用单目深度估计和颜色修补,采用自适应分层深度表示。
-
LucidDreamer通过使用稠密相机轨迹查询Stable Diffusion的修补流程来处理新视图合成。
定量结果
研究者们进行用户研究,以比较本文方法与已建立基线方法的编辑结果。每种方法生成20个样本,并要求用户根据与原始图像的一致性和每个样本的质量投票选择其偏好。收集了25名用户的反馈,并在下表1中报告结果。
本文的方法在一致性和图像质量方面始终优于以前的基线。根据之前的研究建议,GPT-4v具有评估3D一致性和图像质量的能力。因此,将GPT-4v作为额外的评估标准。GPT-4v的偏好与人类偏好高度一致,这再次证明了3DitScene的优越性。
定性结果
下图4展示了本文框架生成的新视图及其相应的特征图。特征图显示出在捕捉图像的语义内容方面具有显著的准确性。这种能够清晰分离语义信息的能力在实现精确的对象级控制中起着关键作用。接下来,展示了本文框架实现的对场景图像的灵活编辑,并与基线方法进行了比较。
对象操作
由于不同的方法在不同的坐标系中定义对象操作,特别是平移操作,因此在统一和公平的设置下评估它们变得具有挑战性。因此,根据各自的特定设置评估每种方法,以达到最佳结果。如下图5所示,AnyDoor在操作对象布局时难以维持对象身份和3D一致性,主要是由于缺乏3D线索。
Object 3DIT,在合成数据集上训练,展示了有限的对真实图像的泛化能力。通过利用从输入图像中导出的3D模型,Image Sculpting取得了更好的结果。尽管如此,在操作对象时仍然遇到一致性问题。这是因为它们仅依赖3D模型提供粗略指导,导致在优化过程中丢失了更细微的细节。
相比之下,本文的方法提供了令人满意的3D感知对象级编辑结果。在重新排列布局后,它保持了编辑对象的准确3D一致性。此外,它保留了场景内的遮挡关系,例如将女孩移动到最后一行示例中被前景对象部分遮挡。
相机控制 将本文的方法与AdaMPI和LucidDreamer进行相机控制的比较。如下图6所示,AdaMPI仅专注于相机放大的情况,并不考虑新视图合成。因此,当需要大范围相机控制时,此方法不适用于需要3D感知图像编辑。LucidDreamer还利用Stable Diffusion的修补能力进行新视图合成。然而,它在帧内内容的突然转换中遇到问题(参见底部行的示例)。它还需要密集的相机姿态。相比之下,本文的方法只需要尽少至三个相机姿态,并实现了从输入视图到新视图的平滑过渡,增强了用户对相机视角的控制。
消融研究
优化过程中的布局增强 由于表示在对象级别上进行了解缠,可以在优化过程中进行布局增强。在这里,研究了解缠属性是否有助于优化过程。使用移除对象的任务来评估解缠程度。如下图7所示,在优化过程中禁用布局增强时,可以观察到浮动伪影。发现这些高斯位于对象内部。它们被表面上的高斯遮挡。由于它们不会对渲染结果产生影响,因此它们在优化过程中不会被梯度下降更新,导致它们的语言embedding无监督。
相比之下,在优化过程中应用布局增强,当前景对象移开时,这些高斯将会暴露出来,因此得到更新。通过这种消融,得出结论:所提出的表示的解缠属性不仅能够实现更灵活的推断,而且有助于优化过程。
损失项 在优化过程中,采用三个损失项:
。
在将语言embedding蒸馏到3D中起着关键作用。其余两个项侧重于增强图像的视觉质量。在这里,通过消融研究来研究这两个项的贡献。由于输入图像可以提供整体结构和详细外观的指导,因此无需为SDS损失应用大的分类器自由指导(CFG)值。因此,默认情况下,选择5作为CFG值。
如下图8所示,如果没有
或
,图像质量会严重下降。没有
时,图像仅由SDS损失进行了细化,这与原始图像存在差异。当CFG值设定为较低值时,如默认的5,图像缺乏细节,并显示出异常的纹理图案。增加CFG值会引入更多细节,但会与原始图像产生不一致,同时奇怪的纹理图案问题仍然存在。此外,仅应用
会导致浮动伪影和整个图像的模糊。
综上所述,SDS和重建损失对于获得体面的图像质量至关重要。
深度修补 在扩展3DGS到新视图时,需要估计未见区域的深度图。这里将基于修复的深度估计与启发式方法进行了比较。下图9显示了左侧部分具有深度图像的图像。任务是预测右侧部分的深度图。依赖启发式对齐的方法会导致深度不连续等伪影。相比之下,本文提出的方法能够生成准确的深度图,与左侧已知部分很好地对齐。
结论与讨论
本文提出了一个新的框架,3DitScene,用于场景图像编辑。主要目标是在统一的框架内促进对对象和整个场景的3D感知编辑。通过利用新的场景表示,即语言引导的解缠场景表示,实现了这一目标。通过将CLIP的语言特征蒸馏到3D高斯中来学习此表示。语义3D高斯有效地从整个场景中解缠出单个对象,从而实现了局部对象编辑。通过在不同的设置下测试了3DitScene,并证明了与先前方法相比其优越性。
参考文献
[1] 3DitScene: Editing Any Scene via Language-guided Disentangled Gaussian Splatting
相关文章:

编辑任何场景! 3DitScene:通过语言引导的解耦 Gaussian Splatting开源来袭!
文章:https://arxiv.org/pdf/2405.18424 项目:https://zqh0253.github.io/3DitScene/ huggingface:https://huggingface.co/spaces/qihang/3Dit-Scene 场景图像编辑在娱乐、摄影和广告设计中至关重要。现有方法仅专注于2D个体对象或3D全局场景编辑&…...

CCIG 2024:合合信息文档解析技术突破与应用前景
目录 背景当前大模型训练和应用面临的问题训练Token耗尽训练语料质量要求高LLM文档问答应用中文档解析不精准 合合信息的文档解析技术1. 具备多文档元素识别能力2. 具备版面分析能力3. 高性能的文档解析4. 高精准、高效率的文档解析文档多板式部分示例 文档解析典型技术难点元素…...

关于TeamSpeak3-网易音乐机器人的基础使用方法(胎教级教程)
本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接:点我访问 序言:在自己的ts服务器上安装了网易音乐机器人,写这篇文章旨在教群友/网友如何使用机器人!😋👍 一、TS3Audi…...

看广告赚金币提现小游戏app开发源码
开发一个看广告赚金币并可以提现的小游戏APP,源码的搭建涉及到多个方面,包括前端界面设计、后端逻辑处理、数据库管理以及广告平台的对接等。以下是一些建议的步骤和考虑因素: 前端界面设计: 使用HTML5、CSS3和JavaScript等技术…...

【vue】@、@/、../和./的区别
:表示vue语法中v-on的简写;绑定事件的专用格式。当事件触发的时候,函数才会来调用; /:在build文件夹下webpack.base.conf.js找到,便能知道代表什么了; 这里指向src文件夹 . /:表示当前目录下&…...

imx93 uboot 构建
1. 信息来源 从 nxp 的英文网站中可以找到 imx93 的构建信息,当前的最新版本为:Linux 6.6.3_1.0.0 # 网址如下: https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-application…...

视觉SLAM十四讲:从理论到实践(Chapter7:视觉里程计1)
前言 学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可 一、目标 1.理解图像特征点的意义,并掌握在单幅图像中提取特征点及多幅图像中匹配特征点的方法。 2.理解对极几何的原理,利用对极几何的约束&…...

c++指针的*
1.*运算符 *运算符被称为间接值(indirect value)或者解除引用(dereferencing)运算符 将其应用于指针可以得到该地址处存储的值 由于 * 也有乘法的意思,c通过上下文来确定是乘法还是解除引用 2.如何声明和初始化指针 …...

快团团大团长帮卖团长团长如何获得物流查询码?
一、功能说明 团长可自行生成物流查询码,直接将码发给顾客,顾客扫码可查询自己订单的物流状态! 用户扫码后,会出现用户在该团长处下单的所有快递订单。团员可查看该订单物流信息、进行退款申请,或直接联系团长。 二…...

MySQL(二)基本SQL语句以及基本函数应用
1、基本SQL语句 MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 - 函数应用在sql语句中 -- 临时表 select now() from dual;-- 数学函数 二进制 -- 返回x的绝对值 select a…...

fyne apptab布局
fyne apptab布局 AppTabs 容器允许用户在不同的内容面板之间切换。标签要么只是文本,要么是文本和一个图标。建议不要混合一些有图标的标签和一些没有图标的标签。 package mainimport ("fyne.io/fyne/v2/app""fyne.io/fyne/v2/container"//&…...

Python实现定时任务的方式
大家好,在当今数字化的时代,定时任务的需求在各种应用场景中频繁出现。无论是数据的定时更新、周期性的任务执行,还是特定时间点的操作触发,Python 都为我们提供了强大而灵活的手段来实现这些定时任务。当我们深入探索 Python 的世…...

微信小程序-网络数据请求(配置request合法域名)
1.小程序中网络数据请求的限制 出于安全方面的考虑,小程序官方对数据接口的请求做出了如下两个限制: (1)只能请求HTTPS类型的接口 (2)必须将接口的域名添加到信任列表中 如果要请求某个域名下的接口&am…...

栈和队列题目练习
本节小编选了两道题来加深对栈和队列的认识理解! 有效的括号 方法1:直接用栈的结构(动态数组) 本题可以用栈这个结构来解答,将(,{,[ 左括号压入栈中,然后取出栈顶元素与右括号),},]匹配。不匹配的话&…...

【排列问题】
问题: 已知某序列有n个元素,请编写程序打印出包含该序列所有元素的所有排列。 输入要求: 输入第1行为整数n,表示该序列元素的个数;第2行为n个整数,表示需要排列的序列元素。 输出要求:输出若…...

token 无感刷新
什么是 token 无感刷新?为什么需要 token 无感刷新?让我们想象一下有这么个场景:你登录一个系统成功后,玩了 10 分钟,发现登录失效了,又要你重新登录,然后又过 10 分钟,又失效了&…...

Netty SSL双向验证
Netty SSL双向验证 1. 环境说明2. 生成证书2.1. 创建根证书 密钥证书2.2. 生成请求证书密钥2.3. 生成csr请求证书2.4. ca证书对server.csr、client.csr签发生成x509证书2.5. 请求证书PKCS#8编码2.6. 输出文件 3. Java代码3.1. Server端3.2. Client端3.3. 证书存放 4. 运行效果4…...

4.nginx反向代理、负载均衡
nginx反向代理、负载均衡 一、反向代理1、语法2、注意事项3、后端服务器记录客户端真实IP3.1 在nginx反向代理时添加x-real-ip字段3.2 后端httpd修改combined日志格式3.3 后端是nginx的情况 二、负载均衡 upstream模块1、负载均衡作用2、调度算法3、配置应用 一、反向代理 隐藏…...

浅谈申请小程序地理位置权限的正确打开方式
小程序地理位置接口有什么功能? 这篇内容会教大家如何快速申请“获取当前的地理位置(onLocationChange)”接口,以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验,来之不易,望大家…...

make modules 和 make modules_install
1. make modules 如:make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- modules 直接make,不加任何参数,就是make all,包含make modules。 make modules是单独编译模块,驱动被配置成M的都是modules,modul…...

docker 安装mysql,redis,rabbitmq
文章目录 docker 安装ngnix,mysql,redis,rabbitmq安装docker1.安装下载docker-ce源命令2.安装docker3.查看版本4.查看docker状态5.启动docker6.测试安装ngnix 安装mysql8.0.361.拉取mysql镜像2.安装mysql8 安装redis1.拉取redis7.0.11镜像2.安装redis3.进入容器内部…...

Windows配置java环境JDK
配置jdk环境非常简单,大概有以下几步: 下载jdk安装,然后双击进行安装配置环境变量(也不是一定非要配置环境变量,配置环境变量的好处就是,在任何位置,系统都可以找到安装路径,非常实用且方便) …...

英伟达驱动重装教程
离线安装NVIDIA驱动程序通常涉及下载驱动程序安装包并手动执行安装步骤。以下是详细步骤: 1. 下载NVIDIA驱动程序 首先,你需要在有网络连接的计算机上下载适合你系统的NVIDIA驱动程序安装包。可以从NVIDIA官方驱动下载页面下载。 选择你的GPU型号和操作系统,然后下载相应…...

【蓝桥杯嵌入式】 第六届国赛
目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程,先配置资源 --- 勾选完选项一…...

图片裁剪与上传处理方案 —— 基于阿里云 OSS 处理用户资料
目录 01: 通用组件:input 构建方案分析 02: 通用组件:input 构建方案 03: 构建用户资料基础样式 04: 用户基本资料修改方案 05: 处理不保存时的同步问题 06: 头像修改方案流程分析 07: 通用组件:Dialog 构建方案分析 08: 通用组件&…...

迷你主机Esxi 6.7挂载新硬盘
背景 硬件:零刻SER Pro 6 系统:vmware Exsi 6.7.0 Update 3 现有的硬盘槽位占满了,但空间不够用,想要通过USB外接移动硬盘来进行扩容。使用了一块250G的硬盘做测试。 步骤 TL;DR # 停止usbarbitrator服务 /etc/init.d/usbarbi…...

解决VSCode右键没有Open In Default Browser问题
在VSCode进行Web小程序测试时,我们在新建的HTML文件中输入 !会自动生成页面代码骨架,写入内容后,我们想要右键在浏览器中预览。发现右键没有“Open In Default Browser”选项。原因是没有安装插件。 下面是解决方案:首先在VSCode找…...

httpsok-v1.12.0支持LB证书自动部署
🔥httpsok-v1.12.0支持LB证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,基于全新的设计理念,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞…...

基于Pytorch框架的深度学习EfficientNetV2神经网络中草药识别分类系统源码
第一步:准备数据 5种中草药数据:self.class_indict ["百合", "党参", "山魈", "枸杞", "槐花", "金银花"] ,总共有900张图片,每个文件夹单独放一种数据 第二步&a…...

网络协议。
一、流程案例 接下来揭秘我要说的大事情,“双十一”。这和我们要讲的网络协议有什么关系呢? 在经济学领域,有个伦纳德里德(Leonard E. Read)创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程,来讲述…...