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

news2024/10/22 14:25:49

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.coloradmin.cn/o/1498660.html

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

相关文章

【重要!!退税!退税!】一年一度个人所得税综合年度汇算开始了!

目录标题 如何退税?2023年度个人所得税综合所得汇算清缴操作指南汇算准备标准申报 退税骗局?1.“您有一笔退税待领取”骗局2.“专业人员帮你多退税”骗局3.“诱导填报虚假个税信息”骗局4.“税务稽查人员联系你”骗局 如何退税? 2023年度个人…

【elementplus】el-image图片预览的显示不全问题(和el-table、el-dialog组合使用时)

问题&#xff1a; 在和el-table、el-dialog组合使用时&#xff0c;el-image图片预览的时候&#xff0c;会可能出现显示不全图片的情况。 解决方法&#xff1a; <el-image-viewer:z-index"3000":teleported"true"/>element文档中有属性&#xff1a;…

【SpringBoot3.x教程03】SpringBoot自动配置详解

前言&#xff1a;什么是自动配置 自动配置的原理 Spring Boot自动配置尝试根据添加到项目中的jar依赖、定义的bean以及各种属性设置来自动配置Spring应用。这是通过EnableAutoConfiguration注解实现的&#xff0c;该注解通常是通过SpringBootApplication注解间接应用的。Spring…

如何实现数据中心布线变更管理?

前言 随着科技的不断发展&#xff0c;数据中心作为企业的核心基础设施之一&#xff0c;承载着大量重要的业务数据。在数据中心运维过程中&#xff0c;变更管理流程变得尤为重要&#xff0c;它是确保数据中心基础设施稳定运行和保障数据安全的关键环节。变更管理的定义是指在维…

阿珊解说Vue中`$route`和`$router`的区别

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

栈和队列OJ题:有效的括号,用栈实现队列,用队列实现栈,设计循环队列(C语言版,图文并茂,超级详细)

目录 前言 1. 有效的括号 &#xff08;1&#xff09;题目及示例 &#xff08;2&#xff09;思路及解法 2.用栈实现队列 &#xff08;1&#xff09;题目及示例 &#xff08;2&#xff09;解析及思路 &#xff08;3&#xff09;各部分代码 2.3.1 数据结构设计和创造队列…

官网:随便搞个?那不如不搞,搞不好就给公司减分了。

官网建设确实需要认真对待&#xff0c;不能随便搞。一个粗制滥造的官网可能会给公司带来负面影响&#xff0c;降低品牌形象和用户体验。以下是一些官网建设的重要原则&#xff1a; 专业性&#xff1a;官网应该展示公司的专业性和专业知识。它应该以专业的设计、内容和功能来展示…

1.4 Word2Vec是如何工作的? Word2Vec与LDA 的区别和联系?

1.4 Word2Vec&#xff1a;词嵌入模型之一 场景描述 谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。 Word2Vec实际是一种浅层的神经网络模型,它有两种网络结构&#xff0c;分别是CBOW(Continues Bag of Words)和Skip-gram。 知识点 Word2Vec,隐狄利克雷模型(LDA),…

nginx部署前端工程替代方案gateway

nginx部署前端工程替代方案gateway 有市场要求部署的前端vue工程不使用nginx中间件。想弄国产替代的东方通之类的&#xff0c;公司没有购买该产品&#xff0c;我参考了网上的一些java网关框架&#xff0c;springcloud组件&#xff1a;gateway实现代替。 注意后台都是用java编…

网络安全-appcms-master

一、环境 gethub上面自己找appcms-master 二、分析一下源码以及闯关思路 首先是有一个函数循环以及函数过滤&#xff0c;我们的post会将我们所传的所有val值去进行一个循环&#xff0c;之后通过htmlspecialchars这个函数进行过滤和转换所以val值不能通过单双引号闭合注入的方…

微信私域运营时如何有效降本增效?

在如今这个以流量为王的时代&#xff0c;成功地将流量转化为商业价值显得尤为重要。许多企业选择将流量转移到微信的私域流量中&#xff0c;以提高转化率和营销效果。 但是由于微信平台的限制&#xff0c;比如一台设备在正常情况下只能登录一个账号&#xff0c;无法实现聚合管理…

Pytorch从零开始实战20

Pytorch从零开始实战——指定生成手势图像 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——指定生成手势图像环境准备模型选择模型训练可视化分析生成指定图像总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c…

✅图片上传组件使用

简述 图片压缩、图片预览、图片多图上传、默认高清压缩 前情提示 暂仅支持:bmp, gif, jpg, jpeg, png格式,暂不支持svg、webp等格式【升级后支持】 一只哈基米~~ 截图 使用方式(主打一个代码可直接复制) 单张图:缩略图、头像、营业执照 <a-form-model-item label=…

如何将中科方德桌面操作系统加入Windows域

往期文章&#xff1a;自定义SSH客户端连接时的显示信息 | 统信UOS | 麒麟KYLINOS Hello&#xff0c;大家好啊&#xff0c;今天我非常高兴地给大家带来一篇关于如何将中科方德桌面操作系统加入Windows域的教程文章。对于使用中科方德桌面操作系统的用户来说&#xff0c;将其加入…

运算符重载(Operator Overloading)

定义 在C中&#xff0c;运算符重载&#xff08;Operator Overloading&#xff09;是一种允许程序员为自定义数据类型重新定义或重载已有的运算符的功能。通过运算符重载&#xff0c;我们可以使得自定义类型的对象能够像内置类型&#xff08;如int、float等&#xff09;一样使用…

基于iOS真机的Appium自动化测试

必要条件 XCode > 6.0, 7.1.1&#xff08;注意Appium并不一定支持最新版本的Xcode&#xff09;Mac OS X 10.10 or 更高, 建议使用10.11.1 Xcode 安装 APP Store安装 注意事项&#xff1a; Xcode 安装包很大&#xff08;5G左右&#xff09;&#xff0c;Xcode移动到应用程序…

响应式编程五股票订阅系统实现

响应式编程五 使用StepVerifier测试响应式流StepVerifier要点 使用StepVerifier进行高级测试股票订阅系统数据库表 使用StepVerifier测试响应式流 出于测试目的&#xff0c;Reactor 提供了额外的 reactor-test 模块&#xff0c;该模块提供了 StepVerifier。StepVerifier 提供了…

Android 13 WMS-动画流程

动画的类型如下 IntDef(flag true, prefix { "ANIMATION_TYPE_" }, value {ANIMATION_TYPE_NONE,ANIMATION_TYPE_APP_TRANSITION,ANIMATION_TYPE_SCREEN_ROTATION,ANIMATION_TYPE_DIMMER,ANIMATION_TYPE_RECENTS,ANIMATION_TYPE_WINDOW_ANIMATION,ANIMATION_TYPE_…

以人为本的AI技术升级

我们需要以人为本的技术来提高生产力和投资回报率。 通过在数据标注流程中融合机器学习辅助技术&#xff0c;可以减少数据标注所需的时间、资金和人力。 有很多方法可以防止标注员被模型的预测误导。 在传统的机器学习&#xff08;Machine Learning&#xff09;方法下&#…

一篇长文教你进行全方位的使用appium【建议收藏】

随着移动应用的日益普及&#xff0c;移动应用的测试成为了软件开发的重要组成部分。Python&#xff0c;作为一种易于学习&#xff0c;功能强大的编程语言&#xff0c;特别适合进行这种测试。本文将详细介绍如何使用Python进行APP测试&#xff0c;并附带一个实例。 Python 和 A…