浅析扩散模型与图像生成【应用篇】(八)——BBDM

8. BBDM: Image-to-Image Translation with Brownian Bridge Diffusion Models

  本文提出一种基于布朗桥(Brownian Bridge)的扩散模型用于图像到图像的转换。图像到图像转换的目标是将源域 A A A中的图像 I A I_A IA,映射到目标域 B B B中得到图像 I B I_B IB。在一般的扩散模型中(如DDPM),是从目标域 B B B中采集样本作为起点 x 0 x_0 x0对其进行扩散,得到纯噪声 x T x_T xT;然后,再从纯噪声中采样进行反向去噪,生成目标图像 x 0 {x}_0 x0。为了实现图像到图像的转换,一般会将参考图像作为条件 y y y,引入到生成过程中,噪声估计网络 ϵ θ \epsilon_{\theta} ϵθ同时根据前一步的结果 x t x_t xt,时刻 t t t和条件 y y y来估计噪声,进而得到新的去噪结果 x t − 1 x_{t-1} xt1,如下图A所示。
在这里插入图片描述

  不同于一般的扩散模型,其扩散过程只依赖于起始点 x 0 x_0 x0,布朗桥扩散过程同时依赖起点 x 0 x_0 x0和终点 x T x_T xT,其数学表达如下 p ( x t ∣ x 0 , x T ) = N ( ( 1 − t T ) x 0 + t T x T , t ( T − t ) T I ) (8-1) p\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}, \boldsymbol{x}_{T}\right)=\mathcal{N}\left(\left(1-\frac{t}{T}\right) \boldsymbol{x}_{0}+\frac{t}{T} \boldsymbol{x}_{T}, \frac{t(T-t)}{T} \boldsymbol{I}\right)\tag{8-1} p(xtx0,xT)=N((1Tt)x0+TtxT,Tt(Tt)I)(8-1)基于此,作者将条件 y y y取代纯噪声作为终点 x T x_T xT,然后从条件 y y y开始进行反向去噪得到目标图像 x 0 {x}_0 x0。值得注意的是,在生成过程中,条件 y y y只作为起点,而不作为噪声估计网络 ϵ θ \epsilon_{\theta} ϵθ的条件,如上图B所示。
  为了提升学习的效率和泛化能力,作者在浅层空间中完成扩散和重建过程,而不是在图像空间中,作者先利用VQGAN的编码器将图像 I A I_A IA映射到潜在空间中 L A L_A LA,经过扩散和重建后得到目标域的潜在特征 L A → B L_{A\rightarrow B} LAB,最后再利用VQGAN的解码器恢复得到图像 I A → B I_{A\rightarrow B} IAB
在这里插入图片描述

这篇文章我读着很迷惑,从源域转换到目标域,那么根据上图的表示源域应该是真实图片,目标域是漫画图像,那么所谓的条件也就是参考图像 y y y应该是来自于源域啊。为什么文章中又说从目标域 B B B中采样得到 y y y呢?而且前文一直在讲,把 y y y作为前向扩散过程的终点和反向去噪过程的起点,那为什么上图灰色区域中前向扩散的终点是目标域的图像呢?不知道是我自己的理解问题,还是作者本身的写作有误。下文会按照我自己的理解来写,可能会与原文有一点点微弱的出入。

  分别从源域 A A A和目标域 B B B中采集成对的样本 ( y , x ) (y,x) (y,x),经过VQGAN的编码器处理后得到对应的特征向量 y , x \boldsymbol{y,x} y,x,则布朗桥前向扩散过程可写为 q B B ( x t ∣ x 0 , y ) = N ( x t ; ( 1 − m t ) x 0 + m t y , δ t I ) (8-2) q_{B B}\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}, \boldsymbol{y}\right)=\mathcal{N}\left(\boldsymbol{x}_{t} ;\left(1-m_{t}\right) \boldsymbol{x}_{0}+m_{t} \boldsymbol{y}, \delta_{t} \boldsymbol{I}\right)\tag{8-2} qBB(xtx0,y)=N(xt;(1mt)x0+mty,δtI)(8-2)其中 x 0 = x , m t = t T \boldsymbol{x}_{0}=\boldsymbol{x}, \quad m_{t}=\frac{t}{T} x0=x,mt=Tt T T T表示扩散过程的总步数,方差 δ t \delta_t δt定义为 δ t = 2 s ( m t − m t 2 ) (8-3) \delta_{t}=2 s\left(m_{t}-m_{t}^{2}\right)\tag{8-3} δt=2s(mtmt2)(8-3)其中 s s s作为一个放缩系数,用于控制采样的多样性,默认值为1。这样的设置,保证了当 t = 0 t=0 t=0 t = T t=T t=T时, δ t \delta_t δt都为0,而 x t x_t xt分别为 x 0 x_0 x0 y y y,满足了前文所述的扩散的起点和终点。扩散过程中单步的转移公式如下 q B B ( x t ∣ x t − 1 , y ) = N ( x t ; 1 − m t 1 − m t − 1 x t − 1 + ( m t − 1 − m t 1 − m t − 1 m t − 1 ) y , δ t ∣ t − 1 I ) (8-4) q_{B B}\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{t-1}, \boldsymbol{y}\right)=\mathcal{N}\left(\boldsymbol{x}_{t} ; \frac{1-m_{t}}{1-m_{t-1}} \boldsymbol{x}_{t-1}+\left(m_{t}-\frac{1-m_{t}}{1-m_{t-1}} m_{t-1}\right) \boldsymbol{y}, \delta_{t \mid t-1} \boldsymbol{I}\right) \tag{8-4} qBB(xtxt1,y)=N(xt;1mt11mtxt1+(mt1mt11mtmt1)y,δtt1I)(8-4)其中 δ t ∣ t − 1 = δ t − δ t − 1 ( 1 − m t ) 2 ( 1 − m t − 1 ) 2 (8-5) \delta_{t \mid t-1}=\delta_{t}-\delta_{t-1} \frac{\left(1-m_{t}\right)^{2}}{\left(1-m_{t-1}\right)^{2}}\tag{8-5} δtt1=δtδt1(1mt1)2(1mt)2(8-5)
  经过前向扩散过程,我们将目标域的图像 x 0 x_0 x0映射到源域中的 x T = y x_T=y xT=y,在接下来的反向去噪过程中,我们将从 y y y出发逐步去噪生成一个新的目标域图像 x 0 {x}_0 x0,单步的去噪过程如下 p θ ( x t − 1 ∣ x t , y ) = N ( x t − 1 ; μ θ ( x t , t ) , δ ~ t I ) (8-6) p_{\theta}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{y}\right)=\mathcal{N}\left(\boldsymbol{x}_{t-1} ; \boldsymbol{\mu}_{\theta}\left(\boldsymbol{x}_{t}, t\right), \tilde{\delta}_{t} \boldsymbol{I}\right)\tag{8-6} pθ(xt1xt,y)=N(xt1;μθ(xt,t),δ~tI)(8-6)其中均值 μ θ ( x t , t ) \boldsymbol{\mu}_{\theta}\left(\boldsymbol{x}_{t}, t\right) μθ(xt,t)是由一个神经网络根据 x t , t \boldsymbol{x}_{t}, t xt,t估计得到的,而方差 δ ~ t \tilde{\delta}_{t} δ~t则是一个无需学习的仅与 t t t有关的变量。那么下面的任务就是如何训练一个网络来估计均值 μ θ ( x t , t ) \boldsymbol{\mu}_{\theta}\left(\boldsymbol{x}_{t}, t\right) μθ(xt,t)了。与DDPM类似,作者也是给出一个了可变分下界的目标函数 E L B O = − E q ( D K L ( q B B ( x T ∣ x 0 , y ) ∥ p ( x T ∣ y ) ) + ∑ t = 2 T D K L ( q B B ( x t − 1 ∣ x t , x 0 , y ) ∥ p θ ( x t − 1 ∣ x t , y ) ) − log ⁡ p θ ( x 0 ∣ x 1 , y ) ) (8-7) \begin{aligned} E L B O & =-\mathbb{E}_{q}\left(D_{K L}\left(q_{B B}\left(\boldsymbol{x}_{T} \mid \boldsymbol{x}_{0}, \boldsymbol{y}\right) \| p\left(\boldsymbol{x}_{T} \mid \boldsymbol{y}\right)\right)\right. \\ & +\sum_{t=2}^{T} D_{K L}\left(q_{B B}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right) \| p_{\theta}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{y}\right)\right) \\ & \left.-\log p_{\theta}\left(\boldsymbol{x}_{0} \mid \boldsymbol{x}_{1}, \boldsymbol{y}\right)\right) \end{aligned}\tag{8-7} ELBO=Eq(DKL(qBB(xTx0,y)p(xTy))+t=2TDKL(qBB(xt1xt,x0,y)pθ(xt1xt,y))logpθ(x0x1,y))(8-7)其中第一项为常数,可以忽略。重点看第二项, q B B ( x t − 1 ∣ x t , x 0 , y ) q_{B B}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right) qBB(xt1xt,x0,y)根据贝叶斯理论可得 q B B ( x t − 1 ∣ x t , x 0 , y ) = q B B ( x t ∣ x t − 1 , y ) q B B ( x t − 1 ∣ x 0 , y ) q B B ( x t ∣ x 0 , y ) = N ( x t − 1 ; μ ~ t ( x t , x 0 , y ) , δ ~ t I ) (8-8) \begin{aligned} q_{B B}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right) & =\frac{q_{B B}\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{t-1}, \boldsymbol{y}\right) q_{B B}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{0}, \boldsymbol{y}\right)}{q_{B B}\left(\boldsymbol{x}_{t} \mid \boldsymbol{x}_{0}, \boldsymbol{y}\right)} \\& =\mathcal{N}\left(\boldsymbol{x}_{t-1} ; \tilde{\boldsymbol{\mu}}_{t}\left(\boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right), \tilde{\delta}_{t} \boldsymbol{I}\right) \end{aligned}\tag{8-8} qBB(xt1xt,x0,y)=qBB(xtx0,y)qBB(xtxt1,y)qBB(xt1x0,y)=N(xt1;μ~t(xt,x0,y),δ~tI)(8-8)其中均值 μ ~ t ( x t , x 0 , y ) \tilde{\boldsymbol{\mu}}_{t}\left(\boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right) μ~t(xt,x0,y) μ ~ t ( x t , x 0 , y ) = δ t − 1 δ t 1 − m t 1 − m t − 1 x t + ( 1 − m t − 1 ) δ t ∣ t − 1 δ t x 0 + ( m t − 1 − m t 1 − m t 1 − m t − 1 δ t − 1 δ t ) y (8-9) \begin{aligned} \tilde{\boldsymbol{\mu}}_{t}\left(\boldsymbol{x}_{t}, \boldsymbol{x}_{0}, \boldsymbol{y}\right) & =\frac{\delta_{t-1}}{\delta_{t}} \frac{1-m_{t}}{1-m_{t-1}} \boldsymbol{x}_{t} \\ & +\left(1-m_{t-1}\right) \frac{\delta_{t \mid t-1}}{\delta_{t}} \boldsymbol{x}_{0} \\ & +\left(m_{t-1}-m_{t} \frac{1-m_{t}}{1-m_{t-1}} \frac{\delta_{t-1}}{\delta_{t}}\right) \boldsymbol{y} \end{aligned}\tag{8-9} μ~t(xt,x0,y)=δtδt11mt11mtxt+(1mt1)δtδtt1x0+(mt1mt1mt11mtδtδt1)y(8-9)方差 δ ~ t \tilde{\delta}_{t} δ~t δ ~ t = δ t ∣ t − 1 ⋅ δ t − 1 δ t (8-10) \tilde{\delta}_{t}=\frac{\delta_{t \mid t-1} \cdot \delta_{t-1}}{\delta_{t}}\tag{8-10} δ~t=δtδtt1δt1(8-10)由于在推理过程中 x 0 x_0 x0是未知的,因此可以根据公式8-2由当前的 x t x_t xt反向估计一个 x ^ 0 \hat{x}_0 x^0,将其带入公式8-9中可得 δ ~ t = δ t ∣ t − 1 ⋅ δ t − 1 δ t μ ~ t ( x t , y ) = c x t x t + c y t y + c ϵ t ( m t ( y − x 0 ) + δ t ϵ ) (8-11) \tilde{\delta}_{t}=\frac{\delta_{t \mid t-1} \cdot \delta_{t-1}}{\delta_{t}}\tilde{\boldsymbol{\mu}}_{t}\left(\boldsymbol{x}_{t}, \boldsymbol{y}\right)=c_{x t} \boldsymbol{x}_{t}+c_{y t} \boldsymbol{y}+c_{\epsilon t}\left(m_{t}\left(\boldsymbol{y}-\boldsymbol{x}_{0}\right)+\sqrt{\delta_{t}} \boldsymbol{\epsilon}\right)\tag{8-11} δ~t=δtδtt1δt1μ~t(xt,y)=cxtxt+cyty+cϵt(mt(yx0)+δt ϵ)(8-11)其中 c x t = δ t − 1 δ t 1 − m t 1 − m t − 1 + δ t ∣ t − 1 δ t ( 1 − m t − 1 ) c y t = m t − 1 − m t 1 − m t 1 − m t − 1 δ t − 1 δ t c ϵ t = ( 1 − m t − 1 ) δ t ∣ t − 1 δ t (8-12) \begin{array}{l} c_{x t}=\frac{\delta_{t-1}}{\delta_{t}} \frac{1-m_{t}}{1-m_{t-1}}+\frac{\delta_{t \mid t-1}}{\delta_{t}}\left(1-m_{t-1}\right) \\ c_{y t}=m_{t-1}-m_{t} \frac{1-m_{t}}{1-m_{t-1}} \frac{\delta_{t-1}}{\delta_{t}} \\ c_{\epsilon t}=\left(1-m_{t-1}\right) \frac{\delta_{t \mid t-1}}{\delta_{t}} \end{array}\tag{8-12} cxt=δtδt11mt11mt+δtδtt1(1mt1)cyt=mt1mt1mt11mtδtδt1cϵt=(1mt1)δtδtt1(8-12)与DDPM中一样,作者不直接预测均值 μ ~ t \tilde{\mu}_t μ~t,而是对其中的噪声 ϵ \epsilon ϵ进行预测。 p θ ( x t − 1 ∣ x t , y ) p_{\theta}\left(\boldsymbol{x}_{t-1} \mid \boldsymbol{x}_{t}, \boldsymbol{y}\right) pθ(xt1xt,y)中的均值项 μ θ ( x t , t ) \boldsymbol{\mu}_{\theta}\left(\boldsymbol{x}_{t}, t\right) μθ(xt,t)可以重写为 x t , y \boldsymbol{x}_{t},\boldsymbol{y} xt,y和估计噪声 ϵ θ \epsilon_{\theta} ϵθ的线性组合 μ θ ( x t , y , t ) = c x t x t + c y t y + c ϵ t ϵ θ ( x t , t ) (8-13) \boldsymbol{\mu}_{\boldsymbol{\theta}}\left(\boldsymbol{x}_{t}, \boldsymbol{y}, t\right)=c_{x t} \boldsymbol{x}_{t}+c_{y t} \boldsymbol{y}+c_{\epsilon t} \boldsymbol{\epsilon}_{\theta}\left(\boldsymbol{x}_{t}, t\right)\tag{8-13} μθ(xt,y,t)=cxtxt+cyty+cϵtϵθ(xt,t)(8-13)则目标函数 E L B O ELBO ELBO可以简化为 E x 0 , y , ϵ [ c ϵ t ∥ m t ( y − x 0 ) + δ t ϵ − ϵ θ ( x t , t ) ∥ 2 ] (8-14) \mathbb{E}_{\boldsymbol{x}_{0}, \boldsymbol{y}, \boldsymbol{\epsilon}}\left[c_{\epsilon t}\left\|m_{t}\left(\boldsymbol{y}-\boldsymbol{x}_{0}\right)+\sqrt{\delta_{t}} \boldsymbol{\epsilon}-\boldsymbol{\epsilon}_{\theta}\left(\boldsymbol{x}_{t}, t\right)\right\|^{2}\right]\tag{8-14} Ex0,y,ϵ[cϵt mt(yx0)+δt ϵϵθ(xt,t) 2](8-14)
完整的训练流程如下
在这里插入图片描述
  经过训练得到噪声估计网络 ϵ θ ( x t , t ) \boldsymbol{\epsilon}_{\theta}\left(\boldsymbol{x}_{t}, t\right) ϵθ(xt,t),就可以从源域中任意采样一个条件输入 y \boldsymbol{y} y作为生成的起点 x T \boldsymbol{x}_T xT,经过反向去噪得到生成结果 x 0 x_0 x0,如下所示
在这里插入图片描述
  上述的采样过程也可以利用DDIM提出的加速技巧进行加速。整体上而言,BBDM就是将原本扩散过程从图像到噪声的变换,改成了从目标图像到源图像的变换。然后,在反向去噪时,只需给定一个源图像就能据此生成对应目标域中的样本。虽然不用像其他条件扩散模型那样,将条件引入模型中用于训练,但在BBDM的训练过程需要成对的样本,这限制了BBDM在许多情景中的应用。

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

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

相关文章

详解事件循环机制

浏览器最主要的进程 : 渲染主线程 如何理解JS的异步 任务没有优先级,但消息队列有优先级 阐述一下JS的事件循环

图书馆管理系统(2)

接下来实现系统的子菜单,在写一个子模块的时候,其他子模块先屏蔽起来,因为没实现,代码运行就通不过 屏蔽起来写上todo,后面(Ctrl键F)搜索,找todo来实现 先来实现图书管理模块 第一步,先要把图…

IDEA 配置文件乱码,项目编码设置

见下图 其中第一二项控制全局以及工程的编码格式,下方的则是 properties 配置文件的格式,统一调整为 UTF-8 后不再乱码

网络原理初识(2)

目录 一、协议分层 1、分层的作用 2、OSI七层模型 3、TCP / IP五层(或四层)模型 4、网络设备所在分层 5、网络分层对应 二、封装和分用 发送过程(封装) 1、应用层(应用程序) QQ 2、输入层 3、网络层 4、数据链路层 5、物理…

ai直播数字人!AI大模型应用开发高级技术

AI直播数字人是一种新兴的技术应用,通过AI大模型的应用开发,实现了数字人的虚拟化呈现。数字人作为一种虚拟人物形象,在直播平台或其他媒介中可以展现出真实人物的表情、动作和声音,并且能够与观众进行实时互动,给人带…

视觉slam十四讲学习笔记(七)视觉里程计 2

介绍直接法的原理,并利用 g2o 实现直接法中的一些核心算法。 前言 1. 理解光流法跟踪特征点的原理。 2. 理解直接法是如何估计相机位姿的。 3. 使用 g2o 进行直接法的计算。 哔哩哔哩课程连接:视觉SLAM十四讲ch7_2_哔哩哔哩_bilibili 一、直接法…

django中URL配置和视图渲染

前提: 使用django-admin startproject XXX创建了一个django项目【项目目录为project】 django-admin startproject project 一:控制器配置 在项目的根目录创建一个Controller目录,后续所有的控制器方法都放在此目录下 这里我们在Control…

20240307-2-前端开发校招面试问题整理HTML

前端开发校招面试问题整理【2】——HTML 1、HTML 元素&#xff08;element&#xff09; Q&#xff1a;简单介绍下常用的 HTML 元素&#xff1f; 块状标签&#xff1a;元素独占一行&#xff0c;可指定宽、高。 常用的块状元素有&#xff1a; <div>、<p>、<h1&…

unity学习(50)——服务器三次注册限制以及数据库化角色信息5--角色信息数据库化收尾

上一节内容结束后确实可以写入文件了&#xff0c;但还有两个问题&#xff1a; 1.一个是players.txt中&#xff0c;每次重启服务器&#xff0c;当注册新账号创建角色时&#xff0c;players.txt之前内容都会清空。 2.players.txt之前已经注册3次的账号&#xff0c;新注册的角色…

首发:鸿蒙面试真题分享【独此一份】

最早在23年华为秋季发布会中&#xff0c;就已经宣布了“纯血鸿蒙”。而目前鸿蒙处于星河版中&#xff0c;加速了各大互联网厂商的合作。目前已经有200参与鸿蒙的原生应用开发当中。对此各大招聘网站上的鸿蒙开发需求&#xff0c;每日都在增长中。 2024大厂面试真题 目前的鸿蒙…

使用Java生成JWT(JSON Web Token)的详细指南

介绍 在现代应用程序中&#xff0c;身份验证和授权是至关重要的。JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式用于在各方之间安全地传输信息。在本文中&#xff0c;我们将学习如何使…

驱动调试第013期-G120XA驱动同步电机应用案例

概述 SINAMICS G120XA是西门子SINAMICS系列变频器的新成员&#xff0c; 功率范围覆盖0.75 kW~560 kW&#xff0c;内置风机和水泵行业应用功能&#xff0c;汇集了优异的高性能矢量控制算法&#xff0c;可以轻松的驱动风机、水泵及压缩机等负载。胜任各种应用场合&#xff0c;专…

Postman 接口自动化测试教程:入门介绍和从 0 到 1 搭建 Postman 接口自动化测试项目

关于Postman接口自动化测试的导引&#xff0c;全面介绍入门基础和从零开始搭建项目的步骤。学习如何有效地使用Postman进行API测试&#xff0c;了解项目搭建的基础结构、环境设置和测试用例的编写。无论您是新手还是经验丰富的测试人员&#xff0c;这篇教程都将为您提供清晰的指…

pycuda安装失败问题

pycuda安装失败问题 遇到一个pycuda安装失败的问题&#xff0c; 这里有一个合理的解释可以去尝试一下&#xff0c;看起来很有道理&#xff1a;

MySQL为什么要用B+树?

二叉树&#xff08;二叉查找树&#xff09; 平衡二叉树&#xff08;B树就是B-树&#xff09;(解决了二叉查找树的极端情况&#xff09; Q&#xff1a;具体是怎么解决的呢&#xff1f; A&#xff1a; 树左右两边层数相差不大于1一旦符合条件1的时候&#xff0c;就进行左旋/右…

无法更新下载安装升级谷歌浏览器Chrome无法更新至最新版本怎么解决下载更新谷歌浏览器?

谷歌Chrome浏览器有新版本chrome可用&#xff0c;点击后无法更新chrome至最新版本&#xff0c;造成每次在电脑上打开谷歌chrome浏览器都会提示更新&#xff0c;重新安装chrome又无法打开谷歌浏览器官方网站。 谷歌浏览器Chrome无法更新至最新版本怎么办&#xff1f; 1、百度搜…

System Verilog学习笔记(十八)——线程控制

线程控制 发生器把激励传给代理时&#xff0c;环境类需要知道发生器什么时候完成任务&#xff0c;以便及时终止测试平台中还在运行的线程&#xff0c;这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组…

Numpy 数组转换为 Pandas DataFrame

参考&#xff1a;Convert Numpy Array to Pandas DataFrame Numpy 介绍 Numpy是Python中一个非常强大的科学计算库&#xff0c;它提供了许多高效的数组操作方法。Pandas是另一个重要的数据处理库&#xff0c;它基于Numpy&#xff0c;并提供了更高级别的数据分析和处理工具。在…

SMT贴片加工——品质检验要求

一、元器件贴装工艺品质要求 1.元器件贴装需整齐、正中&#xff0c;无偏移、歪斜 2.贴装的元器件型号规格应正确&#xff1b;元器件应无漏贴、错贴 3.贴片元器件不允许有反贴 4.有极性要求的贴片器件安装需按正确的极性标示安装 二、元器件焊锡工艺要求 1.FPC板面应无影响…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁&#xff08;新注解&#xff09; 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 乐观锁实现方…