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

图像修复和编辑大一统 | 腾讯北大等联合提出BrushEdit:BrushNet进阶版来了

文章链接:https://arxiv.org/pdf/2412.10316
项目链接:https://liyaowei-stu.github.io/project/BrushEdit

亮点直击

  • 提出了BrushEdit,这是先前BrushNet模型的高级迭代版本。BrushEdit通过开创基于修复(inpainting)的图像编辑方法,扩展了可控图像生成的能力。该统一模型支持指令引导的图像编辑和修复,提供了用户友好的、自由形式的、多轮交互编辑体验。

  • 通过集成现有的预训练多模态大语言模型和视觉理解模型,BrushEdit显著提高了语言理解能力和可控图像生成能力,而无需额外的训练过程。

  • 将BrushNet扩展为一个通用的图像修复框架,能够适应任意形状的mask。这消除了为不同类型的mask配置使用单独模型的需求,并增强了其对现实世界用户mask的适应性。

总结速览

解决的问题
当前基于扩散模型的图像编辑方法存在两大问题:

  • 基于反演(inversion)的方法在进行大幅度修改(如添加或移除物体)时效果较差,原因在于反演噪声的结构性限制了编辑的灵活性。

  • 基于指令(instruction)的方法通常采用黑箱操作,限制了用户直接指定编辑区域和强度的能力。

提出的方案
提出了一种新的图像编辑范式 BrushEdit,基于图像修复(inpainting)和指令引导,结合多模态大语言模型(MLLMs)和双分支图像修复模型,构建了一个代理协作框架,实现:

  • 编辑类别分类。

  • 主体对象识别。

  • mask区域获取。

  • 编辑区域的修复与生成。

应用的技术

  • 多模态大语言模型(MLLMs)用于解析用户自由形式的编辑指令并指导编辑流程。

  • 双分支图像修复模型,用于在mask区域内生成符合用户指令的编辑内容。

  • 代理协作框架,通过分类、识别、mask生成和修复的多步流程协同完成图像编辑。

达到的效果
通过大量实验验证,BrushEdit 框架能够高效结合 MLLMs 和图像修复模型,在七个关键指标上实现性能优越,包括:

  • mask区域的精准性保持。

  • 编辑效果的连贯性和自然性。

  • 更高的用户交互自由度与操作便捷性。

方法

BrushEdit的概述如下图2所示。框架通过代理协作,将MLLM与双分支图像修复模型集成在一起,从而实现自由形式的、多轮交互的指令编辑。具体而言,一个预训练的MLLM作为编辑指导者(Editing Instructor),解析用户的指令以识别编辑类型、定位目标对象、获取编辑区域的检测结果并生成编辑后的图像文本描述。在此信息的引导下,修复模型作为编辑指挥者(Editing Conductor),根据目标文本说明填充被遮掩的区域。这个迭代过程允许用户在任何阶段修改或优化中间控制输入,支持灵活和交互式的基于指令的编辑。

编辑指导者

在BrushEdit中,我们使用MLLM作为编辑指导者来解析用户的自由形式编辑指令,将其分类为预定义类型(添加、删除、局部编辑、背景编辑),识别目标对象,并利用预训练的检测模型找到相关的编辑mask。最后,生成编辑后的图像说明。在下一阶段,这些信息将被打包并发送到编辑系统,以图像修复方法完成任务。
正式过程如下:给定编辑指令和源图像,我们首先使用预训练的MLLM识别用户的编辑类型和相应的目标对象。然后,MLLM调用预训练的检测模型,基于搜索目标对象mask 。获得mask后,MLLM将、和结合起来生成最终的编辑图像说明。源图像、目标mask和说明被传递到下一阶段,编辑指挥者,进行基于图像修复的编辑。

编辑指挥者

编辑指挥者基于之前的BrushNet,采用混合微调策略,使用随机mask和分割mask相结合。这种方法使修复模型能够处理多种mask基础的修复任务,而不受mask类型的限制,达到相当或更优的性能。具体而言,通过额外的控制分支将mask图像特征注入到预训练的扩散网络(例如Stable Diffusion 1.5)中。这些特征包括噪声隐空间,以增强语义一致性,通过VAE提取的mask图像隐空间,以引导前景提示和背景之间的语义一致性,以及通过立方插值下采样的mask,用于明确指示前景填充区域的位置和边界。

为了保持mask图像特征,BrushEdit使用了预训练扩散模型的副本,去除了所有注意力层。预训练的卷积权重作为提取mask图像特征的强大先验,而排除跨注意力层确保该分支专注于纯背景信息。BrushEdit的特征逐层集成到冻结的扩散模型中,实现分层、密集的每像素控制。根据ControlNet,使用零卷积层将冻结模型与可训练的BrushEdit连接,减轻早期训练阶段的噪声。特征插入操作定义为公式5。

其中,表示网络中第层的特征,其中,表示层的总数。相同的符号也适用于。
网络处理连接的噪声隐空间、mask图像隐空间和下采样的mask ,其中连接用表示。表示零卷积操作,是保留尺度,调节BrushEdit对预训练扩散模型的影响。

先前的研究强调,在隐空间融合过程中,下采样可能引入不准确性,且VAE编码解码过程具有固有的局限性,影响图像的完整重建。为了确保未遮掩区域的一致重建,先前的方法探索了多种策略。一些方法[29],[31]依赖于复制粘贴技术,直接转移未遮掩区域,但这些方法通常导致输出缺乏语义一致性。受BLD启发的隐空间融合方法也难以有效保留未遮掩区域中的所需信息。

在这项工作中,提出了一种简单的像素空间方法,在使用模糊mask进行复制粘贴之前先进行mask模糊处理。虽然这可能会稍微影响mask边界附近的精确度,但这种误差几乎不可察觉,并显著改善了边界一致性。

BrushEdit的架构本质上设计为能够无缝地与各种预训练的扩散模型进行即插即用集成,从而实现灵活的保留控制。具体而言,BrushEdit的灵活功能包括:

  • 即插即用集成:由于BrushEdit不修改预训练扩散模型的权重,因此可以轻松地与任何社区微调的模型集成,便于采用和实验。

  • 保留尺度调整:可以通过将BrushEdit特征与冻结的扩散模型中的权重结合,控制未遮掩区域的保留尺度,从而调整BrushEdit对保留级别的影响。

  • 模糊和融合自定义:可以通过调整模糊尺度并根据需要应用融合操作,进一步细化保留尺度。这些功能为编辑过程提供了细粒度和灵活的控制。

实验

评估基准和指标

基准

为了全面评估BrushEdit的性能,在图像编辑和图像修复基准上进行了实验:

  • 图像编辑:使用了PIE-Bench(基于提示的图像编辑基准)来评估BrushEdit和所有基准方法在图像编辑任务上的表现。PIE-Bench包含700张图像,涵盖10种编辑类型,均匀分布在自然和人工场景(例如画作)之间,分为四个类别:动物、人类、室内和室外。每张图像包含五个标注:源图像提示、目标图像提示、编辑指令、主要编辑内容和编辑mask。

  • 图像修复:在之前工作的基础上,用BrushBench替代了传统基准[81]–[86],用于基于分割的mask和EditBench用于随机刷子mask。这些基准涵盖了人体、动物以及室内和室外场景的真实和生成图像。EditBench包含240张图像,其中自然和生成内容各占一半,每张图像都带有mask和说明。BrushBench,如图3所示,包含600张带有人工标注mask和说明的图像,均匀分布在自然和人工场景(例如画作)之间,并涵盖人类、动物以及室内/室外环境等多种类别。

将任务细化为两种基于分割mask的修复场景:内部修复和外部修复,从而实现对不同图像区域的详细性能评估。

值得注意的是,BrushEdit通过利用统一的高质量修复mask图像进行训练,超越了BrushNet,能够处理所有mask类型。这使得BrushEdit成为一个统一的模型,能够执行所有修复和编辑基准任务,而BrushNet则需要为每种mask类型进行单独的微调。

数据集

在之前版本中提出的BrushData的基础上,整合了两种子集:分割mask和随机mask,并进一步扩展了来自Laion-Aesthetic 数据集的数据,形成了BrushData-v2。一个关键的区别是,我们选择背景干净的图像,并随机与分割mask或随机mask配对,实际上创建了模拟基于删除的编辑的配对,显著增强了我们框架在图像编辑中的删除能力。数据扩展过程如下:使用Grounded-SAM标注开放世界mask,然后根据置信度分数进行过滤,仅保留高置信度的mask。同时,在过滤过程中考虑了mask的大小和连续性。

指标

评估了五个指标,重点关注未编辑/未修复区域的保留和已编辑/已修复区域的文本对齐。此外,我们还进行了广泛的用户研究,以验证BrushEdit在编辑指令对齐和背景保真度方面的优越性能。

  • 背景保真度:我们采用标准指标,包括峰值信噪比(PSNR)、学习的感知图像块相似性(LPIPS)、均方误差(MSE)和结构相似性指数测量(SSIM),来评估生成图像与原始图像之间未mask区域的一致性。

  • 文本对齐:使用CLIP相似度(CLIP Sim)来评估文本与图像的一致性,通过将两者投影到CLIP模型的共享嵌入空间中,并测量它们表示之间的相似性。

实现细节

除非另有说明,否则在一致的设置下评估各种修复方法,即使用NVIDIA Tesla V100 GPU及其开源代码,以Stable Diffusion v1.5作为基础模型,50步,指导比例为7.5。每种方法在所有图像上使用其推荐的超参数,以确保公平性。BrushEdit和所有消融模型在8台NVIDIA Tesla V100 GPU上训练430k步,约需要3天时间。值得注意的是,对于所有图像编辑(PnPBench)和图像修复(BrushBench和EditBench)任务,BrushEdit使用在BrushData-v2上训练的单一模型,达成了统一的图像编辑和修复。相比之下,我们之前的BrushNet需要为不同的mask类型进行单独的训练和测试。更多细节请参见提供的代码。

定量比较(图像编辑)

表II和表III比较了在PnPBench上的定量图像编辑性能。评估了先前基于反演的方法的编辑结果,包括四种反演技术——DDIM反演、Null-Text反演、Negative-Prompt反演和StyleDiffusion——以及四种编辑方法:Prompt-to-Prompt、MasaCtrl、pix2pix-zero和Plug-and-Play。

表II中的结果确认了BrushEdit在保留未编辑区域和确保编辑区域文本对齐方面的优越性。尽管基于反演的方法,如DDIM反演(DDIM)和PnP反演(PnP),能够实现高质量的背景保留,但它们本质上受到重建误差的限制,影响了背景的保持。相比之下,BrushEdit通过一个专门的分支单独建模未编辑的背景信息,而主网络则基于文本提示生成编辑区域。结合预定义的用户mask和混合操作,它确保了几乎无损的背景保留和语义一致的编辑。

更重要的是,方法能够在不受反演方法中不可恢复的结构噪声影响的情况下,保持高保真度的背景信息。这使得像添加或移除物体这样的操作成为可能,这在基于反演的编辑方法中通常是无法实现的。此外,由于不需要反演,BrushEdit只需要单次前向传递即可执行编辑操作。如表III所示,BrushEdit的编辑时间显著较短,极大提高了图像编辑的效率。

定性比较(图像编辑)

图4展示了与先前图像编辑方法的定性比较。呈现了在多种编辑任务上的结果,包括删除物体(I)、添加物体(II)、修改物体(III)和交换物体(IV),任务涉及人工图像和自然图像。BrushEdit在编辑区域和未编辑区域之间始终保持卓越的一致性,在遵循编辑指令、编辑mask边界的平滑度以及整体内容一致性方面表现出色。特别地,图4中的I和II任务包括删除花朵或笔记本电脑,添加领子或耳环等。

定量比较(图像修复)

表IV和表V展示了在BrushBench和EditBench上的定量比较。评估了几种图像修复方法,包括采样策略修改方法Blended Latent Diffusion、专门的修复模型Stable Diffusion Inpainting、HD-Painter、PowerPaint,以及基于Plug-and-Play方法的ControlNet,这些方法都在修复数据上进行过训练。此外,还包括之前的BrushNet。

结果证实了BrushEdit在保持未修复区域的完整性和确保修复区域的文本对齐方面的优越性。Blended Latent Diffusion表现最差,主要原因是由于它忽视了mask边界,并且在mask区域与未mask区域之间的过渡不一致,导致了混合引发的隐空间损失。HD-Painter和PowerPaint,都基于Stable Diffusion Inpainting,在内部修复任务中与其基础模型取得了相似的结果。然而,在外部修复任务中,它们的性能急剧下降,因为它们仅设计用于内部修复。ControlNet,明确为修复任务而训练,具有与我们相似的实验设置,但其与修复任务的设计不匹配,限制了其保持mask区域完整性和文本对齐的能力,因此需要与Blended Latent Diffusion结合才能取得合理的结果。即使使用了这种组合,它仍然无法超越专门的修复模型和BrushEdit。

在EditBench上的表现与BrushBench上的结果相一致,均显示出BrushEdit的优越性。这表明我们方法在各种修复任务中,包括分割、随机、内修复和外修复mask方面都表现稳定优异。

值得注意的是,与BrushNet相比,BrushEdit现在通过一个模型超越了BrushNet,在基于分割mask和随机mask的基准测试中取得了更强大且通用的修复能力。这一进步主要归功于统一的mask类型和BrushData-v2中更丰富的数据分布。

定性比较(图像修复)

图5展示了与以往图像修复方法的定性比较。评估了在人工和自然图像上的修复结果,涵盖了多种修复任务,包括随机mask修复和分割mask修复。BrushEdit在生成区域与未mask区域之间的内容和颜色一致性方面表现始终优越(I,II)。特别是在图5 II(左侧)中,任务要求生成一只猫和一条金鱼。尽管所有先前的方法未能识别出mask图像中已有的金鱼,并错误地生成了另一条鱼,但BrushEdit通过其双分支解耦设计准确地将背景上下文融入修复中。此外,BrushEdit在整体修复性能上超越了我们之前的BrushNet,且无需针对特定mask类型进行微调,在随机mask和分割mask的修复结果上均能取得相当甚至更优的表现。

灵活控制能力

图6和图7展示了BrushEdit在两个关键领域提供的灵活控制:基础扩散模型选择和尺度调整。这种灵活性不仅限于图像修复,也扩展到图像编辑,主要通过改变主干网络的生成先验和分支信息注入强度来实现。在图6中,我们展示了BrushEdit如何与各种社区微调的扩散模型结合使用,使用户能够选择最适合其特定编辑或修复需求的模型。这大大增强了BrushEdit的实用价值。图7则展示了对BrushEdit的尺度参数的控制,允许用户在编辑或修复过程中调整未mask区域的保护程度,从而提供精细的控制,确保结果精准且可定制。

消融研究

进行了消融研究,以考察不同模型设计对图像修复任务的影响。由于BrushEdit基于图像修复模型,编辑任务是通过推理过程完成的,链式连接MLLMs、BrushEdit和图像检测模型作为代理。修复能力直接反映了我们模型的训练结果。表VI比较了双分支和单分支设计,表VII则重点展示了附加分支架构的消融研究。

在BrushBench上进行的消融研究对内修复和外修复的性能进行了平均。表VI中的结果表明,双分支设计显著优于单分支设计。此外,在双分支设置中微调基础扩散模型的结果优于冻结模型。然而,微调可能会限制模型的灵活性和控制能力。考虑到性能与灵活性之间的权衡,我们选择采用冻结的双分支设计。表VII解释了关键设计选择的理由:(1)使用VAE编码器而非随机初始化的卷积层处理mask图像,(2)将完整的UNet特征逐层集成到预训练UNet中,以及(3)移除BrushEdit中的文本交叉注意力,以防止mask图像特征受到文本的影响。

讨论

结论: 本文介绍了一种新颖的基于修复的指令引导图像编辑范式(IIIE),该范式结合了大型语言模型(LLMs)和即插即用的全能图像修复模型,实现了自主、用户友好和交互式的自由形式指令编辑。我们在PnPBench、我们提出的基准、BrushBench和EditBench上的定量和定性结果展示了BrushEdit在图像编辑和修复任务中,在mask背景保留和图像-文本对齐方面的优越性能。

局限性与未来工作: 然而,BrushEdit仍存在一些局限性:(1)我们模型生成的质量和内容在很大程度上依赖于所选择的基础模型;(2)即使使用BrushEdit,当mask形状不规则或提供的文本与mask图像不对齐时,仍然可能出现生成质量差的情况。在未来的工作中,我们计划解决这些挑战。

消极社会影响:图像修复模型为内容创作提供了令人兴奋的机会,但也带来了隐的风险,尤其是对个人和社会的影响。它们对互联网收集的训练数据的依赖可能会加剧社会偏见,并且存在通过操纵人类图像生成误导性内容的风险。为了减轻这些担忧,负责任的使用和建立伦理指南至关重要,这也将是我们未来发布模型时的重点。

参考文献

[1] BrushEdit: All-In-One Image Inpainting and Editing

相关文章:

图像修复和编辑大一统 | 腾讯北大等联合提出BrushEdit:BrushNet进阶版来了

文章链接:https://arxiv.org/pdf/2412.10316 项目链接:https://liyaowei-stu.github.io/project/BrushEdit 亮点直击 提出了BrushEdit,这是先前BrushNet模型的高级迭代版本。BrushEdit通过开创基于修复(inpainting)的图…...

【hackmyvm】Adroit靶机wp

tags: HMVjava反编译SQL注入 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. java反编译4. sql注入5. 解密密码6. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmAdroit 作者 alienum 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 ┌──(root㉿kali)-[~] └…...

【Python运维】自动化备份与恢复系统的实现:Python脚本实战

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着信息化进程的加速,数据的重要性日益增加,数据丢失的风险也随之增加。为了保证数据安全,定期备份和及时恢复数据是必不可少的操作。本…...

Goland 安装与使用

GoLand安装 官方网址: JetBrains GoLand:不只是 Go IDE 1. 进入官网,点击下载: ​ 2. 如下图一步步安装 ​ ​ ​ ​ ​ 3. 如下图一步步安装...

vue2 升级为 vite 打包

VUE2 中使用 Webpack 打包、开发,每次打包时间太久,尤其是在开发的过程中,本文记录一下 VUE2 升级Vite 步骤。 安装 Vue2 Vite 依赖 dev 依赖 vitejs/plugin-vue2": "^2.3.3 vitejs/plugin-vue2-jsx": "^1.1.1 vite&…...

FreeSwitch中启用WebRTC

在FreeSwitch中启用WebRTC需要进行一系列配置。以下是详细的步骤: 1. 安装必要的依赖: 确保安装了支持WebRTC的依赖库,如libsrtp。 2. 配置SIP Profile: 编辑 conf/sip_profiles/internal.xml 文件,添加或修改以下内…...

R语言的数据类型

标题:《探索R语言数据类型的奥秘》 引言: 在统计学和数据分析的世界里,R语言无疑是一颗璀璨的明星。它以其强大的数据处理能力和丰富的图形展示功能而受到广泛欢迎。然而,要熟练掌握并高效使用R语言,深入了解其数据类…...

基于UNET的图像分类

网络架构 UNet网络是一种革命性的图像分割架构,在图像分类任务中同样展现出卓越的性能。其独特的设计巧妙地平衡了全局信息捕捉和精细细节保留的需求,特别适合处理需要高度精确定位的任务。 UNet的核心设计理念体现在其 对称的编码器-解码器结构 中。这种结构不仅实现了高效…...

css文字折行以及双端对齐实现方式

使用flex布局后&#xff0c;文字超出容器部分不会自动折行了。实现代码如下&#xff1a; <el-row><el-col :span"24"><span class"label">姓名</span><span class"content">{{name}}</span></el-col>…...

华为云语音交互SIS的使用案例(文字转语音-详细教程)

文章目录 题记一 、语音交互服务&#xff08;Speech Interaction Service&#xff0c;简称SIS&#xff09;二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1&#xff09;…...

设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)

前言&#xff1a; 设计一个完整的 监控摄像头物联网 IoT 平台 涉及 视频直播和点播、WebRTC 和 文件存储模块&#xff0c;可以分为以下几个主要部分&#xff1a;摄像头设备、服务端处理、Web 前端、视频流存储和回放。以下是结合这些技术的一个具体完整流程设计&#xff0c;涵盖…...

学习笔记(prism--视频【WPF-prism核心教程】)--待更新

《一》框架介绍 prism是一个用于WPF…和winUI中构建的松散耦合&#xff0c;可维护和可测试的应用程序框架。帮助WPF开发人员以简化编写&#xff0c;维护和扩展来设计应用程序。 优点&#xff1a;遵循特定的约定&#xff0c;可自动将view/ViewModel建立DataContext的关系&#…...

Kafka无锁设计

前言 在分布式消息队列系统中,Kafka 的无锁设计是其高吞吐量和高并发的核心优势之一。通过避免锁的竞争,Kafka 能够在高并发和大规模的生产环境中保持高效的性能。为了更好地理解 Kafka 的无锁设计,我们首先对比传统的队列模型,然后探讨 Kafka 如何通过无锁机制优化生产者…...

【GO基础学习】gin框架路由详解

文章目录 gin框架路由详解&#xff08;1&#xff09;go mod tidy&#xff08;2&#xff09;r : gin.Default()&#xff08;3&#xff09;r.GET()路由注册 &#xff08;4&#xff09;r.Run()路由匹配 总结 gin框架路由详解 先创建一个项目&#xff0c;编写一个简单的demo&#…...

GPIO+TIM(无PWM)实现呼吸灯功能

程序特点&#xff1a; 1、模块化&#xff0c;可快速移植&#xff0c;5分钟便可完成移植。 2、通过GPIO普通定时器&#xff0c;实现呼吸灯功能。 3、PWM周期为5ms&#xff0c;占空比调节时间为20ms&#xff0c;占空比为100等份&#xff0c;即呼吸灯从暗到亮需要20ms*1002s。 …...

贪心算法.

贪心算法是指只从当前角度出发,做出当前情景下最好的选择,在某种意义上来说是局部最优解,并不从全局的角度做决策.如果贪心策略选择不恰当,可能无法得到全局最优解. 贪心算法的基本流程如下: 1.分析问题,确定优化目标,对变量进行初始化 2.制定贪心策略:在制定贪心策略时需要…...

Linux系统和makefile详解

### Linux系统详解 Linux是一个开源且功能强大的操作系统内核&#xff0c;自1991年由林纳斯托瓦兹首次发布以来&#xff0c;它已经成为全球最流行的操作系统之一。Linux的核心特性包括开源、多用户多任务、高稳定性与安全性&#xff0c;以及良好的跨平台能力。 1. **开源**&a…...

GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 GitLab作为一个广受欢迎的开源代码托管平台&#xff0c;近期宣布将停止服务中国大陆、澳门和香港地区的用户提供服务。根据官方通知&#x…...

【杂谈】-AI搜索引擎如何改变传统SEO及其在内容营销中的作用

AI搜索引擎如何改变传统SEO及其在内容营销中的作用 文章目录 AI搜索引擎如何改变传统SEO及其在内容营销中的作用1、什么是AI搜索引擎2、AI搜索引擎对SEO策略的影响3、AI搜索引擎在内容营销转型中的作用4、AI搜索引擎在营销领域的挑战、道德问题和未来5、总结 在当今的数字营销世…...

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ }&#xff0c;“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ }&#xff0c;其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...