51-43 DragNUWA,集成文本、图像和轨迹实现视频生成细粒度控制

微软 NÜWA 系列主要功能及发布时间如下:

  • 22年11月,微软亚洲研究院、北京大学联合提出同时覆盖语言、图像和视频的统一多模态生成模型女娲NÜWA,直接包揽草图转图像、图像补全、视频预测、文字指导修改视频等8项SOTA。
  • 23年3月,微软亚洲研究院发布多模态新模型NUWA-XL,可直接生成11分钟长动画。
  • 23年8月,微软亚洲研究院联合北大、中科院提出了一种基于开放域的新型视频生成模型DragNUWA。

生成视频时,主要关注两种运动,即摄像机和对象运动。DragNUWA同时引入simultaneously introduce文本、图像和轨迹信息三种控制因素,使得模型能够同时控制摄像机运动camera movements、多个对象移动object motions以及复杂轨迹complex trajectories从语义、空间和时间层面对视频内容实现细粒度控制,从而生成具有真实世界场景和艺术绘画特色的视频

您只要在图上Drag给出运动轨迹,DragNUWA就能让图像中的物体对象按照该轨迹移动位置生成一致连贯的视频!!!

为解决当前研究领域中开放域轨迹控制open-domain trajectory control限制的问题,DragNUWA提出了三个方面的轨迹建模:

  • 一个轨迹采样器Trajectory Sampler,TS:能够从开放域视频流中动态采样轨迹,保证了任意轨迹arbitrary trajectories的开放域控制。
  • 一个多尺度融合Multiscale Fusion,MF:不同细粒度的控制轨迹,使得视频的生成更加灵活和精确。
  • 一个自适应训练策略Adaptive Training,AT:确保视频生成的一致性和连贯性。

2024年1月,微软更新 DragNUWA 到 DragNUWA 1.5 版本并开源了代码。

Abstract

近年来,可控视频生成引起了极大的关注,但是存在两个主要限制:

  • 首先,大多数现有的工作都单一集中在文本、图像或基于轨迹的控制上,无法在视频内容生成中实现细粒度的控制。
  • 其次,轨迹跟踪控制研究仍处于早期阶段,大多数实验是在 Human3.6M 等简单数据集上进行。

该约束限制了模型处理开放域图像的能力,并有效地处理复杂的曲线轨迹。在本文中,我们提出了 DragNUWA,这是一种基于开放域扩散视频生成模型。

为了解决现有工作中控制粒度不足的问题,我们同时引入文本、图像和轨迹信息,从语义、空间和时间角度对视频内容进行细粒度控制。

为了解决当前研究中有限的开放域轨迹控制问题,我们提出了三个方面的轨迹建模

  • 轨迹采样器 (TS) 实现任意轨迹的开放域控制;
  • 多尺度融合 (MF) 控制不同粒度的轨迹;
  • 自适应训练 (AT) 策略生成与轨迹一致的视频。

实验验证了 DragNUWA 的有效性,证明了它在视频生成细粒度控制方面拥有优越的性能。

1 Introduction

可控视频生成是当前研究热点,这些研究大多集中在可控的视觉生成上。早期的研究主要强调图像到视频的生成,使用初始帧图像作为控制,在空间上操纵生成的视频。然而,仅依靠图像作为控制并不能确定视频的后续帧。因此,人们对文本到视频的研究越来越感兴趣,使用文本在语义上约束视频生成。一些研究还利用文本和图像条件对视频生成进行更精确的控制。尽管如此,语言和图像在表达视频时间信息方面仍然有限,例如相机运动和复杂的物体轨迹。

为了控制视频的时间信息,基于轨迹的控制已成为一种用户友好的方法,越来越受到研究的关注。CVG、C2M对图像和轨迹进行编码、预测光流图,并将特征扭曲warp为可控视频生成的中间结果。然而,这些操作通常会导致不自然的扭曲。为了解决这个问题,II2V和iPOKE将视频压缩成密集的潜在空间,并学习使用 RNN 操纵这些潜在变量,或者MCDiff通过自回归方式利用扩散潜在Diffusion latent预测未来帧。虽然MCDiff取得了很好的结果,但它依赖于HRNet为每个人提取17个关键点来构建数据,而且它只能控制人类运动。此外,MCDiff 和上述模型忽略了考虑语言的控制,这反过来限制了它们有效控制视频的能力。

上述研究启发了我们进行可控视频生成的双重愿景。

首先,现有工作中对文本、图像和基于轨迹的控制考虑还不够全面。我们认为这三种控制是必不可少的,因为它们都有助于从语义、空间和时间的角度调节视频内容。如下图,仅文本和图像的组合不足以传达视频中存在的复杂运动细节,可以通过结合轨迹信息来补充。此外,虽然图像和轨迹可能无法充分表示视频中的未来对象,但语言可以弥补这一缺点。最后,仅依靠轨迹和语言可以在表达抽象概念时产生歧义,例如区分现实世界的鱼和鱼的绘画,而图像可以提供必要的区别。

其次,目前对轨迹控制的研究仍处于早期阶段,大多数实验是在Human3.6M等简单数据集上进行的。该约束限制了模型处理开放域图像,并处理复杂的弯曲轨迹、多个对象运动和相机运动的能力。

基于这些观察结果,我们提出了 DragNUWA,我们工作的主要贡献如下:

  • 我们介绍了 DragNUWA,这是一种端到端的视频生成模型,可以无缝集成三个基本控制——文本、图像和轨迹——提供强大且用户友好的可控性。
  • 我们专注于三个方面的轨迹建模:轨迹采样器 (TS) 以实现任意轨迹的开放域控制,多尺度融合 (MF) 控制不同粒度的轨迹,以及自适应训练 (AT) 策略生成遵循轨迹的一致性视频。
  • 我们进行了广泛的实验来验证 DragNUWA 的有效性,证明了它在视频合成的细粒度控制中的优越性能。

2 Related Works

2.1 Text/Image Control in Video Synthesis

早期的研究主要强调图像到视频的生成,后来引入文本描述在语义上控制视频生成。

  • GODIVA: Generating Open-DomaIn Videos from nAtural Descriptions.(MSRA,21.4)
  • NUWA: Visual Synthesis Pre-training for Neural visUal World creAtion.(MSRA,21.11)
  • CogVideo: Large-scale Pretraining for Text-to-Video Generation via Transformers(Tsinghua,22.5)
  • Make-A-Video: Text-to-Video Generation without Text-Video Data.(Meta,22.9)
  • Imagen Video: High Definition Video Generation with Diffusion Models(Google,22.10)
  • Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models.(Nvidia,23.4)

然而,仅靠文本不能准确地描述视觉的空间信息。因此,MAGE强调文本到图像到视频,利用来自文本的语义信息和来自图像的空间信息进行精确的视频控制。同样,GEN-1使用交叉注意机制将深度图与文本集成以进行控制。在长视频生成领域,文本到图像到视频也得到了广泛的应用。例如,[ Variable Length Video Generation from Open Domain Textual Descriptions ] 通过自回归引入前一帧和文本来生成后续帧,实现了长视频生成;NUWA-XL采用分层扩散架构,根据前一帧和文本连续完成中间帧。

虽然文本和图像可以有效地传达语义和外观,但它们很难充分表示复杂的运动信息和相机运动。与这些方法不同,DragNUWA 将轨迹控制添加到文本和图像控制中,从而能够在语义、外观和运动方面对视频进行细粒度控制。

2.2  Trajectory Control in Video Synthesis

为了更好地控制视频中的运动,未来的视频预测方法根据给定的视频帧控制后续帧生成。另一方面,视频到视频的生成将完整视频或视频草图的风格转移到一个新的领域,提供了丰富的控制信息。然而,这要求用户提供视频输入并限制细粒度控制,因为风格迁移基于原始视频的骨架。因此,出现了图像轨迹到视频的方法,通过图像中给出的轨迹来控制视频的发展。然而,由于轨迹控制在像素级上运行,它是稀疏的,容易出现歧义。为了解决这个问题,首先将稀疏笔画转换为密集流,然后使用自回归基于密集流预测未来的帧。为了实现对开放域对象的控制,Video Composer 最近使用 MPEG-4 从视频中提取运动矢量信息作为训练条件,但由于运动矢量中缺乏高级语义信息,只能控制简单的对象运动。

与之前研究包括CVG、C2M、II2V、iPOKE和MCDiff相比,DragNUWA只关注管理人体运动或基本物体运动,通过拖动图像中的任何物体,促进对多个对象的控制,使其适应复杂的轨迹和相机运动。

DragNUWA成为实现细粒度开放域视频生成的开创性方法。

3 Method

图 3:DragNUWA训练流程概览。DragNUWA支持三种可选输入:文本p、图像s和轨迹g,并专注于从三个方面设计轨迹。首先,轨迹采样器(TS)从开放域视频流中动态采样轨迹。其次,多尺度融合(MF)将轨迹与UNet架构的每个块中的文本和图像深度集成。最后,自适应训练(AT)将模型从光流条件调整为用户友好的轨迹。最终,DragNUWA能够处理具有多个对象及其复杂轨迹的开放域视频。 

与以往要么只支持基于文本text-based、基于图像image-based或基于轨迹trajectory-based控制的工作不同,DragNUWA旨在结合所有三种控制类型,同时强调从三个方面的轨迹建模:

1)为了实现任意轨迹的开放域控制,在训练过程中使用轨迹采样器(TS)(在第3.1节中介绍)直接从开放域视频流中采样轨迹,而不是特定领域,如MCDiff 中使用的人体姿势轨迹。

2)为了实现对不同轨迹粒度的控制,利用多尺度融合(MF)(在第 3.2 节中介绍)将轨迹下采样到各种尺度,并将其与 UNet 架构每个块内的文本和图像深度集成,而不是像[ Motion-Conditioned Diffusion Model for Controllable Video Synthesis ] 那样直接将控制与扩散噪声连接。

3)为了生成稳定且一致的视频,我们采用了自适应训练(AT)(在第 3.3 节中介绍)方法,最初以密集流为条件来稳定视频生成,然后在稀疏轨迹上进行训练以适应模型。

3.1 Trajctory Sampler,TS 

在训练数据中,由于它只包含视频和文本对 < v, p >,因此从视频中提取轨迹至关重要。以往的研究主要利用关键点跟踪模型对视频轨迹进行预训练进行训练。然而,这种方法有两个主要缺点。

  • 首先,由于这些模型是在特定领域(例如人体姿势)上训练的,因此它们处理开放域视频的能力有限。 
  • 其次,在实际应用中,很难保证用户准确地输入关键点的轨迹,导致训练和推理之间有gap。

为了便于开放域视频轨迹,使用户能够输入任意轨迹,我们设计了一种直接从视频光流中采样轨迹的轨迹采样器(TS),允许模型在开放域设置中学习各种可能的轨迹。

###  TS工作流程,为了实现开放域任意轨迹的控制,DragNUWA使用轨迹采样器直接从开放域视频流WebVid和VideoHD中采样轨迹。

  • 首先,通过Unimatch光流估计器,获取到视频对应的光流。获取轨迹的简单做法是取得视频第一帧到第二帧的光流信息,依据光流变化强度进行采样。但是这种简单的采样会使得模型对不太运动的场景关注不够。因此,作者采用了等概率均匀采集光流信息( λ 间隔),同时考虑到要让采集到的光流尽可能覆盖图片所有区域,作者添加了一个随机扰动项 δ 。通过上述操作之后,拿到一个较为稀疏的光流 f^{a}
  • 随后,作者将一张图片上最大轨迹数量定义为 N ,在决定一张图片要从光流中保留多少条轨迹的时候,就从均匀分布中随机采样一个数值n ∼ U [1, N ]。此外,考虑到大小变动的轨迹强度,作者最终依据多项式分布M从光流 f^{a}中保留一定量轨迹 f^{s}。需要注意的是, f^{s} 是逐帧更新的,作者通过跟踪 f 来更新轨迹起始点的位置。
  • 由于此时得到的 f^{s} 比较稀疏,所以作者对 f^{s} 进行高斯滤波,得到最终的轨迹 f^{g}

3.2 Multiscale Fusion,MF

Encoding of Video

Encoding of Text Control

Encoding of Image Control

Encoding of Trajectory Control

对于文本条件 p,通过提示交叉注意将其注入隐藏状态 h,隐藏状态 作为 q 处理,文本 作为 k和 v 处理。

为了支持各种条件组合,我们在将文本、图像和轨迹输入多尺度融合之前,通过随机删除 omitting它们,将随机性引入训练过程。对于丢弃的文本,我们使用空字符串作为替换,而对于丢弃的图像和轨迹,则使用全0填充的帧。通过这种涉及混合条件的训练范式,我们的模型能够在不同条件组合的推理过程中生成一致的视频。

### DragNUWA使用多尺度融合MF来在不同分辨率下融合文本、图像和轨迹信息。

  • 首先完成视频v、图像s、文本p、轨迹g的编码。
  • 然后实现多尺度融合MF,使模型可以同时接受text p, image s, and trajectory g作为条件输入。对于图片和轨迹 ,MF的操作是相同的。首先,将轨迹和图像下采样到不同的尺度,然后在UNet网络每个块中,通过线性投影将轨迹和图像与文本提示融合到隐藏状态 h 中。文本按照潜在扩散模型LDM常规操作,作用在UNet网络的 cross attention 的K、V上,隐藏状态 h 作为Q。
  • 为了支持不同的条件组合,训练过程中随机Drop掉一些文本、图像和轨迹信息,以增强模型的泛化能力。

3.3 Adaptive Training,AT

在保持视觉一致性的同时,对图像和稀疏轨迹的视频生成过程进行调节是一项重大挑战。为了解决这个问题,我们采用自适应训练Adaptive Training(AT)策略来优化 DragNUWA。在第一阶段,为了生成视觉上和动态上一致的视频,我们为模型提供提示p、密集光流 和重复第一帧 作为条件,对模型进行优化,使 UNet 输出 εθ (xt, p, s, f)与附加噪声ε之间的距离最小。考虑到光流的密度,我们没有使用高斯滤波进行增强。损失方程如下:

如果提供完整的光流 f 作为条件,在保留第一帧的情况下更容易生成动态一致的视频。在第二阶段,为了使模型从完整的光流适应于用户友好的轨迹,我们继续使用轨迹采样器TS从原始光流中采样轨迹 f^{g} 来训练模型。损失方程变更为:

尽管轨迹比光流稀疏得多,但该模型能够生成与轨迹一致的动态,同时保持从先前训练中学习到的稳定性和一致性。

### 为保证生成连续的视频,作者使用了AT策略,其包括两个阶段。

  • 在第一阶段,使用完整的光流 f 作为轨迹对模型进行训练,生成连续流畅的视频。
  • 在第二阶段,使用降采样的轨迹 f^{g} 微调模型。

3.4 Inference

在推理过程中,给定文本、图像和轨迹,DragNUWA 能够生成真实和上下文一致的视频 v。文本由CLIP 文本编码器编码,得到文本嵌入 p。图像重复 L 次并编码为 s。输入轨迹首先由高斯滤波器和零帧填充处理,然后编码为 g。之后,使用 Unet εθ (xt, p, s, g)从纯高斯噪声xT迭代采样 x0。最后,通过图像自动编码器image autoencoder将采样的潜在编码 x0 解码为视频像素 v。

4 Experiments

Table 1: Implementation details of DragNUWA.  

4.1 Datasets

在训练过程中,我们利用WebVid和VideoHD来优化DragNUWA。

  • WebVid 是一个庞大的数据集,包含 1000 万个网络视频,包含具有不同真实世界场景和相应的标题。它涵盖了广泛的运动模式,使其适用于基于开放域轨迹的视频生成。
  • VideoHD,我们基于网络爬取的视频,构建了 VideoHD 数据集。我们首先从互联网上收集了 75K 个高分辨率、高质量的视频剪辑。随后,这些剪辑使用 BLIP2 进行标注。最后,我们手动过滤掉生成结果中的一些错误。

4.2 Implementation Details

如表 1。

4.3 Trajectory Controllability

与现有的专注于文本或图像控制的研究相反,DragNUWA 主要强调建模轨迹控制。为了验证轨迹控制的有效性,我们从摄像机运动和复杂的轨迹两个方面测试了DragNUWA。

Camera movements. 在视频制作中,相机运动在为观众创建动态和引人入胜的视觉方面发挥着重要作用。不同类型的相机运动可以帮助讲述故事,或强调场景中的元素。常见的相机运动不仅包括水平和垂直运动,还包括放大和缩小。如图 4 所示,我们发现虽然 DragNUWA 没有明确地模拟相机运动,但它从开放域轨迹的建模中学习各种相机运动。

图 4:通过使用相同的文本和图像,同时改变拖动轨迹,可以实现各种相机移动效果。例如,放大和缩小效果可以通过在所需的缩放位置绘制方向轨迹来表达。 

Complex Trajectories. 由于不同物体之间存在多个运动物体、复杂的运动轨迹和不同的运动振幅,为视频生成中的运动建模带来了挑战。为了评估DragNUWA在精确建模复杂运动方面的能力,我们使用相同的图像和文本对各种复杂的阻力轨迹进行了测试,如图5所示。我们的研究结果表明,DragNUWA可以可靠地控制复杂的运动。这包括几个方面:首先,DragNUWA 支持复杂的弯曲轨迹,从而能够生成沿特定复杂轨迹移动的对象(参见第 6 行)。其次,DragNUWA 允许可变轨迹长度,轨迹更长,导致运动幅度更大(参见第 7行)。最后,DragNUWA 能够同时控制多个对象的轨迹。据我们所知,目前还没有视频生成模型有效地实现了这种轨迹可控性,突出了 DragNUWA 在未来应用中推进可控视频生成的巨大潜力。

图 5:通过在改变拖动轨迹的同时使用相同的文本和图像,可以实现各种复杂的轨迹效果。DragNUWA支持复杂的曲线轨迹,允许可变轨迹长度,并支持对多个对象的轨迹进行并发控制。 

4.4 Essential of Three Controls

虽然DragNUWA主要强调轨迹控制建模,但它也包含了对文本和图像的控制。我们认为,文本、图像和轨迹分别代表了视频的三个基本控制方面之一:语义、空间和时间视角。图6通过展示文本(p)、轨迹(g)和图像(s)的不同组合,包括s2v、p2v、gs2v、ps2v和pgs2v,说明了这些条件的必要性。需要注意的是,我们没有对g2v和pg2v进行建模,因为我们认为没有图像的轨迹是没有意义的。

图 6:DragNUWA通过集成三个基本控件来实现细粒度视频生成:文本、图像和轨迹,分别对应于语义、空间和时间方面。 

s2v和p2v举例说明了当用作单独条件时图像和文本控制的约束。如s2v所示,尽管图像单独提供了一些潜在的语义和动态信息,但它不允许对背景和角色的运动进行精确控制。如p2v所示,当只提供文本时,模型成功地生成了与文本相关的视频,然而,外观和动态仍然完全不可控。gs2v和ps2v强调文本(p)和轨迹(g)的重要性。在没有文本的情况下,无法确定模糊的图像是表示在海上冲浪还是在雪地上冲浪。在没有轨迹的情况下,模型会自动假设角色正在向左移动。pgs2v演示了所有三个基本条件的综合影响,能够控制在雪地上冲浪和向右移动。

值得一提的是,一些研究将视频作为一种条件,这超出了本研究的范围。我们关注的是基本条件,而视频条件提供了过多的信息,极大地限制了视频的创作。此外,视频条件要求用户提供特定的视频材料,因此在实际应用中提出了重大挑战。

5 Conclusion

我们提出了DragNUWA,这是一种端到端的视频生成模型,可以无缝地结合文本、图像和轨迹输入,从而能够从语义、空间和时间角度进行细粒度和用户友好的控制。此外,我们的轨迹建模框架由轨迹采样器TS、多尺度融合MF和自适应训练AT组成,解决了开放域轨迹控制的挑战,从而能够根据复杂的轨迹生成连贯的视频。实验验证了DragNUWA的优越性,证明了它能够有效地生成细粒度视频。

### 作为一款创新性的工具,DragNUWA 1.5提供了一个集成的控制框架,可以同时处理文本、图像和轨迹信息;能够适应开放域的任意轨迹;使用自适应训练策略,能够在保持视频一致性的同时适应用户友好的轨迹。同时,DragNUWA 1.5也面临着一些挑战和限制。例如,对于复杂和动态场景,DragNUWA 1.5的生成效果可能还需要进一步优化。

本专题由深圳季连科技有限公司AIgraphX自动驾驶大模型团队编辑,旨在学习互助。内容来自网络,侵权即删,转发请注明出处。文中如有错误的地方,也请在留言区告知。

DragNUWA: Fine-grained Control in Video Generation by Integrating Text, Image, and Trajectory.

DragNUWA-https://arxiv.org/pdf/2308.08089v1.pdf

ProjectNUWA/DragNUWA1.5 · GitHub

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

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

相关文章

LLM学习之自然语言处理简单叙述

自然语言处理基础 自然语言处理&#xff1a;让计算机读懂人所写好的这些文本&#xff0c;能够像人一样进行交互。 自然语言处理的任务和应用 任务&#xff1a; 词性标注 part of speech tagging 动词&#xff0c;名词&#xff0c;形容词&#xff1f; 命名实体的识别 name…

【Java基础】23.接口

文章目录 一、接口的概念1.接口介绍2.接口与类相似点3.接口与类的区别4.接口特性5.抽象类和接口的区别 二、接口的声明三、接口的实现四、接口的继承五、接口的多继承六、标记接口 一、接口的概念 1.接口介绍 接口&#xff08;英文&#xff1a;Interface&#xff09;&#xf…

Springboot+Vue项目-基于Java+MySQL的海滨体育馆管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Mongodb支持事务吗?

一、概念 1.1、MongoDB事务简介 MongoDB 是一个非关系型数据库管理系统&#xff0c;最初并不支持事务。然而&#xff0c;随着时间的推移&#xff0c;MongoDB 在其4.0版本中引入了多文档事务支持&#xff0c;使得在单个集合中执行多个操作成为可能。 In MongoDB, an operation…

iStat Menus for Mac:强大的系统监控工具

iStat Menus for Mac是一款功能强大的系统监控工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助用户全面了解电脑的运行状态&#xff0c;提高电脑的性能和稳定性。 iStat Menus for Mac v6.73 (1239)中文版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动…

“磁性蝴蝶”:创新结构纳米石墨烯能更精确控制自旋磁行为

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 深度好文&#xff1a;1300字丨7分钟阅读 摘要&#xff1a;新加坡国立大学的研究团队&#xff0c;开发出一种蝴蝶形磁性纳米石墨烯&#xff0c;包含四个具有铁磁和反铁磁相互作用的不…

微信小程序:基于MySQL+Nodejs的汽车品牌管理系统

各位好&#xff0c;接上期&#xff0c;今天分享一个通过本地MySQLNodejs服务器实现CRUD功能的微信小程序&#xff0c;一起来看看吧~ 干货&#xff01;微信小程序通过NodeJs连接MySQL数据库https://jslhyh32.blog.csdn.net/article/details/137890154?spm1001.2014.3001.5502 …

深入docker-swarm overlay网络模型

目录 1.简介 2.网络模型 3.docker_gwbridge网络 3.1.docker_gwbridge网关地址 3.2.检查docker_gwbridge网络 3.2.1.查找任务容器eth接口 3.2.2.查找ingress-sbox容器eth接口 4.检查ingress网络 4.1.检查ingress网络 4.2.检查ingress网络的命名空间 4.2.1.查找任务容…

Windows搭建Svn服务器

1、svn概述 1.1、svn简介 SVN&#xff08;Subversion&#xff09;是一个开源的版本控制系统&#xff0c;用于管理代码的版本控制和协作开发。它提供了一系列的命令行工具&#xff0c;以及一套客户端和服务器架构&#xff0c;用于管理代码的版本控制和协作。 在Windows系统&a…

STM32的GPIO控制寄存器开发

寄存器GPIO控制 寄存器地址 寄存器地址计算 某个寄存器地址&#xff0c;由三个参数决定&#xff1a;1、总线基地址&#xff08;BUS_BASE_ADDR&#xff09;&#xff1b;2&#xff0c;外设基于总线基地址的偏移量&#xff08;PERIPH_OFFSET&#xff09;&#xff1b;3&#xff…

百面算法工程师 | 分类和聚类

目录 6.1 为什么正确率有时不能有效评估分类算法&#xff1f; 6.2 什么样的分类器最好&#xff1f; 6.3 什么是聚类&#xff0c;你知道哪些聚类算法&#xff1f; 6.4 K-Means聚类算法如何调优? 6.5 K-Means聚类算法如何选择初始点? 6.6 K-Means聚类聚的是特征还是样本 …

【面试经典 150 | 链表】删除链表的倒数第 N 个结点

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;统计节点个数方法二&#xff1a;双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本…

向媒体投稿有了好方法财政单位信息宣传工作简单又轻松

当我初涉财政单位的信息宣传岗位,肩负起对外展示单位风采、传播政策信息的重要职责时,我深刻体验到了投稿之路的艰辛曲折。初期,对于如何有效对接媒体并成功发表稿件,我感到一片茫然,仿佛置身于浩瀚的信息海洋中,无从下手。 那时,我的工作日常就是广泛搜集各类媒体的联系方式,特…

{“errMsg“:“insertXWebCamera:fail appid privacy api banned“}

问题描述&#xff1a;微信小程序&#xff0c;在体验版本测试时&#xff0c;调用摄像头OK&#xff0c;没有任何问题&#xff0c;部署发布版本后&#xff0c;日志报错内容&#xff1a;{"errMsg":"insertXWebCamera:fail appid privacy api banned"}&#xff…

CountDownLatch倒计时器源码解读与使用

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. CountDownLatch有什么用 3. CountDownLatch底层原理 3.1. count…

代理设置方法 ubuntu git

目录 ubuntu设置代理方法 git 中 ubuntu设置代理方法 &#xff08;1&#xff09; .bashrc中写 或者 &#xff08;2&#xff09; 当自己的 虚拟机选择default switch&#xff0c;保持了虚拟机与本机的联通性&#xff08;host模式好像&#xff09;&#xff0c;这时&#xff0…

深度剖析图像处理—边缘检测

什么是边缘检测 边缘检测(Edge Detection)就是提取图像中的边缘点(Edge Point)。边缘点是与周围像素相比灰度值有阶跃变化或屋顶状变化的像素。边缘常存在于目标与背景之间、目标与目标之间、目标与其影子之间。 ​ 在图像处理和图像分析中&#xff0c;经常要用到边缘(Edge)、边…

【Git】生成patch和应用patch

生成patch 将本地所有修改打成补丁 git diff > /tmp/xxx.patch将本地对某个文件的修改打成补丁 git diff test/1.txt > /tmp/1.patch将某一次提交的修改内容打成补丁 -1表示只为单个提交创建patch&#xff0c;-o表示输出patch的文件夹路径&#xff0c;默认是用提交的…

D咖饮品机器人惊艳亮相:智能硬件改变生活习惯

在当今快节奏的生活中&#xff0c;人们对于便捷、高效的需求日益增长&#xff0c;智能硬件应运而生&#xff0c;其中饮品机器人作为一种新型的智能设备&#xff0c;正在以惊艳的姿态亮相于人们的生活中&#xff0c;为人们带来了全新的消费体验&#xff0c;改变着大众的生活习惯…

node-sass安装失败解决

老项目安装node-sass4.14.1一直失败 "node-sass": "^4.14.1",报错环境变量Path 中没有 python2.7 gyp verb check python checking for Python executable "python2.7" in the PATH安装python2.7,然后设置npm config set python C:\Python27 …