(Arxiv-2025)Magic 1-For-1:在一分钟内生成一分钟视频剪辑

Magic 1-For-1:在一分钟内生成一分钟视频剪辑

paper是PKU发布在Arxiv 2025的工作

paper title:Magic 1-For-1: Generating One Minute Video Clips within One Minute

Code:地址

Abstract

在本技术报告中,我们提出了 Magic 1-For-1(Magic141),这是一种在内存消耗和推理延迟方面经过优化的高效视频生成模型。其核心思想很简单:将文本到视频的生成任务分解为两个更容易的子任务,即文本到图像生成和图像到视频生成,从而实现扩散步蒸馏。我们验证了,在相同的优化算法下,相较于文本到视频任务,图像到视频任务确实更容易收敛。
我们还探索了一系列优化技巧,从三个方面降低训练图像到视频(I2V)模型的计算成本:1)通过多模态先验条件注入来加速模型收敛;2)通过应用对抗性步蒸馏来加速推理延迟;3)通过参数稀疏化来优化推理阶段的内存消耗。
利用这些技术,我们能够在3秒内生成5秒的视频片段。通过在测试时使用滑动窗口机制,我们能够在一分钟内生成时长为一分钟的视频,在显著提升视觉质量和动作动态的同时,实现平均每秒视频生成耗时不到1秒。
我们还进行了一系列初步探索,以寻找扩散步蒸馏中计算成本与视频质量之间的最佳权衡点,并希望这可以作为开源探索的一个良好的基础模型。

图1

图一:在General VBench上的对比实验结果表明,Magic 1-For-1具有很强的性能。在性能和效率方面,我们的模型优于其他开源TI 2 V模型,包括CogVideoX-I2 VSAT,I2 Vgen-XL,SEINE-512 x320,VideoCrafter-I2 V和SVD-XT-1.0。

图2

图2:Magic 1-For-1可以生成具有优化的效率-质量权衡的视频剪辑。

1 Introduction

近年来,扩散模型在生成高质量图像和视频方面表现出色,较传统的生成对抗网络(GAN)方法展现出更广泛的多样性。然而,传统扩散模型通常需要数百甚至上千步来逐渐将噪声转换为结构化数据,计算开销巨大,限制了其实际应用。例如,近期的一个开源视频生成模型 [18] 在未经过优化的情况下,生成一个5秒的视频片段大约需要8块GPU和15分钟。

近期关于扩散步蒸馏的工作 [28, 31, 26, 26] 旨在通过减少推理步骤来加速生成过程,同时保持较高的样本质量。然而,大多数研究集中在图像生成方面。尽管这些方法具有潜力,但在视频生成中常常牺牲生成质量,并且需要精心设计的架构才能达到令人满意的效果。正如 SeaweedAPT [20] 所指出的,当这些方法迁移到视频生成任务时,大多数一步视频生成算法仍然在运动动态和结构方面存在显著的质量下降。

在本报告中,我们提出将视频生成任务简化为两个独立的子任务:文本到图像生成和图像到视频生成。这一策略与 Emu Video [?] 关注于提升视频生成质量的目标不同,我们更关注于减少扩散推理步骤。文本到图像任务本身较为简单,并且有大量先前的研究支持,因此天生就需要更少的扩散步骤。

我们通过实验证明,在文本到图像生成任务中,扩散步蒸馏算法的收敛速度显著更快,并且能够提升最终的生成质量。为了进一步增强生成先验,我们引入多模态输入,通过将文本编码器与视觉输入结合使用。借助量化技术,我们将内存消耗从40G降低到28G,并将扩散步骤从50步减少到仅4步,在生成质量几乎没有下降的情况下实现性能优化。

总之,我们的贡献如下:

• 生成先验注入:我们通过任务分解引入更强的生成先验,提出了一种新颖的视频生成加速策略。

• 多模态引导:我们提出一种多模态引导机制,通过引入视觉输入辅助文本输入,加快模型收敛。

• 全面优化策略:我们结合多种模型加速技术,在生成质量和推理效率之间实现了最优的权衡。

2 Related Works

视频生成是一个快速发展的研究领域,依托深度学习和生成模型的进步而不断取得突破。早期方法依赖自回归模型 [17],通过基于过去帧逐帧生成视频,但该方法容易出现累积误差问题。随后引入了变分自编码器(VAE)[2] 和生成对抗网络(GAN)[34, 7],这些方法在提升视觉保真度方面表现更好,但在长序列中仍然难以保证时间一致性。

近年来,基于 Transformer 架构和扩散模型的突破推动了视频生成的发展。VideoGPT [39] 将类似 GPT 的架构用于视频标记化和合成,能够有效捕捉长期依赖关系。扩散模型同样展现出出色的生成能力,例如 Video Diffusion Models (VDMs) [12] 将图像扩散模型扩展到视频生成,通过迭代去噪建模时空动态。此外,基于潜空间的方法如 Imagen Video [13] 和 Make-A-Video [30] 则在压缩表示空间中进行高效的高分辨率合成,这些方法显著提升了视频生成的质量和时间一致性,使得生成具有高度真实感的视频成为可能。

扩散步蒸馏的最新研究则提出了多种方法,以加速扩散模型的采样过程,降低计算成本,同时保持高质量输出。Salimans 和 Ho(2022)提出了渐进式蒸馏(Progressive Distillation),通过让学生模型匹配具有更多采样步数的教师模型的输出,逐步减半采样步数,实现更快的采样同时保持图像质量 [28]。Meng 等人(2023)针对无分类器引导的扩散模型开发了蒸馏方法,大幅加速了推理过程 [21]。Geng 等人(2024)提出将扩散模型蒸馏为单步生成器的方法,采用深度平衡架构,在图像质量损失最小的前提下实现高效采样 [9]。

Watson 等人(2024)提出了 EM 蒸馏方法,一种基于最大似然估计的策略,可将扩散模型压缩为单步生成器,有效减少采样步骤,同时保持感知质量 [36]。Zhou 等人(2024)提出了简单快速蒸馏(Simple and Fast Distillation,SFD),简化了现有的蒸馏范式,将微调时间最多减少 1000 倍,同时实现高质量图像生成 [42]。Yin 等人(2024)提出了分布匹配蒸馏(Distribution Matching Distillation,DMD),该方法可将扩散模型转化为一步图像生成器,对图像质量影响极小 [40]。

这些研究的共同目标是显著降低计算开销,从而使基于扩散的生成模型在实际应用中更加高效和可行。

3 Method

图像先验生成

我们同时采用基于扩散的方法和基于检索的方法来获取图像。我们定义了一个统一的函数 G \mathcal{G} G,它将基于扩散的生成与基于检索的增强结合在一起:

x 0 = G ( x T , y , R ( y ) ; θ ) \mathbf{x}_0=\mathcal{G}\left(\mathbf{x}_T, y, \mathcal{R}(y) ; \theta\right) x0=G(xT,y,R(y);θ)

其中, x T ∼ N ( 0 , I ) \mathbf{x}_T \sim \mathcal{N}(0, I) xTN(0,I) 表示初始噪声, y y y 是文本输入, R ( y ) \mathcal{R}(y) R(y) 是检索到的相关图像集合, θ \theta θ 表示模型参数。检索函数 R \mathcal{R} R 被形式化定义为:

R ( y ) = { r i ∣ r i = arg ⁡ max ⁡ x ∈ D sim ⁡ ( ϕ ( y ) , ψ ( x ) ) } \mathcal{R}(y)=\left\{\mathbf{r}_i \mid \mathbf{r}_i=\arg \max _{\mathbf{x} \in \mathcal{D}} \operatorname{sim}(\phi(y), \psi(\mathbf{x}))\right\} R(y)={riri=argxDmaxsim(ϕ(y),ψ(x))}

其中, D \mathcal{D} D 是图像语料库, ϕ ( y ) \phi(y) ϕ(y) ψ ( x ) \psi(\mathbf{x}) ψ(x) 分别是文本和图像的嵌入表示, sim ⁡ ( ⋅ , ⋅ ) \operatorname{sim}(\cdot, \cdot) sim(,) 是一个相似度函数(例如余弦相似度)。被检索到的图像作为在去噪过程中的额外条件信号:

x t − 1 = x t − α t ϵ θ ( x t , t , y , R ( y ) ) + σ t z \mathbf{x}_{t-1}=\mathbf{x}_t-\alpha_t \epsilon_\theta\left(\mathbf{x}_t, t, y, \mathcal{R}(y)\right)+\sigma_t \mathbf{z} xt1=xtαtϵθ(xt,t,y,R(y))+σtz

其中 ϵ θ \epsilon_\theta ϵθ 是学习得到的噪声预测模型, α t \alpha_t αt 是步长, σ t \sigma_t σt 是噪声方差, z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(0, I) zN(0,I)

这种检索增强的扩散过程确保了生成图像在保持高保真度的同时,也具备较强的事实准确性。近期的方法如检索增强扩散模型(RDM)[27] 和 kNN-Diffusion [29] 也证明了该方法的有效性,在提升生成图像的真实感和语义对齐方面具有显著作用。

图像先验注入与多模态引导设计

图像到视频(Image-to-Video,I2V)任务旨在根据给定的文本描述生成一段与其语义一致的视频,同时使用输入图像作为第一帧。具体而言,I2V 模型的输入是一个形状为 T × C × H × W T \times C \times H \times W T×C×H×W 的潜变量张量 X X X,其中 T , C , H , W T, C, H, W T,C,H,W 分别表示压缩视频的帧数、通道数、高度和宽度。

类似于 Emu Video [10],为了引入图像条件 I I I,我们将图像 I I I 视为视频的第一帧,并通过零填充构造一个维度为 T × C × H × W T \times C \times H \times W T×C×H×W 的张量 I o I_o Io,如图 3 所示。同时,我们引入一个形状为 T × 1 × H × W T \times 1 \times H \times W T×1×H×W 的二值掩码 m m m,其在时间维度的第一个位置设置为 1,其余位置设置为 0。然后,将潜变量张量 X X X、填充后的张量 I o I_o Io 和掩码 m m m 在通道维度上拼接,作为模型的输入。

由于输入张量的通道维度从 C C C 增加到了 2 C + 1 2C+1 2C+1(见图 3),我们将模型首个卷积模块的参数从 ϕ = ( C in ( = C ) , C out , s h , s w ) \phi=\left(C_{\text{in}}(=C), C_{\text{out}}, s_h, s_w\right) ϕ=(Cin(=C),Cout,sh,sw) 调整为 ϕ ′ = ( C in ′ ( = 2 C + 1 ) , C out , s h , s w ) \phi^{\prime}=\left(C_{\text{in}}^{\prime}(=2C+1), C_{\text{out}}, s_h, s_w\right) ϕ=(Cin(=2C+1),Cout,sh,sw)。其中, C in C_{\text{in}} Cin C in ′ C_{\text{in}}^{\prime} Cin 分别表示修改前后的输入通道数, C out C_{\text{out}} Cout 是输出通道数, s h s_h sh s w s_w sw 分别是卷积核的高度与宽度。

为了保留 T2V 模型的表达能力, ϕ ′ \phi^{\prime} ϕ 的前 C C C 个输入通道直接复制自原始参数 ϕ \phi ϕ,而新增通道则初始化为零。该 I2V 模型在与 T2V 模型相同的数据集上进行预训练,以保证一致性。

为了进一步增强图像参考的语义对齐能力,我们通过 VLM 文本编码器的视觉分支提取图像的嵌入表示,并将其与文本嵌入拼接,如图 3 所示。该机制提升了模型对图像与文本联合

图3

图3:Magic 1-For-1的整体架构。

3.1 Diffusion Distillation


扩散模型推理的迭代特性,其多步采样过程成为推理速度的主要瓶颈。对于如我们13B参数规模的扩散模型 Magic 1-For-1 来说,这一问题尤为突出,因为每一步采样都伴随着显著的计算开销。如图4所示,我们通过引入双重蒸馏策略,结合步骤蒸馏与CFG蒸馏,有效提升采样速度。

在步骤蒸馏方面,我们采用了DMD2,这是一种为高效分布对齐与加速采样设计的最新算法。受 Score Distillation Sampling(SDS)[25] 启发,DMD2 通过三模型协同训练范式实现步骤蒸馏。三种模型包括:

  • 一步/四步生成器 G ϕ G_\phi Gϕ,其参数在训练过程中被持续优化;
  • 真视频模型 u θ real u_\theta^{\text{real}} uθreal,用于近似真实数据分布 p real p_{\text{real}} preal
  • 假视频模型 u θ fake u_\theta^{\text{fake}} uθfake,用于建模生成数据分布 p fake p_{\text{fake}} pfake

值得注意的是,所有三个模型均初始化自同一预训练模型,从而保证了训练的一致性并简化了流程。

步骤蒸馏的分布匹配目标可表述为:

∇ ϕ L D M D ≜ E t ∇ ϕ D K L ( p fake ∥ p real ) ≈ − E t ∫ ϵ ( [ z t − σ t u θ real ( z t , t ) − z t + σ t u θ fake ( z t , t ) ] ∂ G ϕ ( ϵ ) ∂ ϕ d ϵ ) \nabla_\phi L_{\mathrm{DMD}} \triangleq \mathbb{E}_t \nabla_\phi \mathcal{D}_{\mathrm{KL}}\left(p_{\text{fake}} \| p_{\text{real}}\right) \approx -\mathbb{E}_t \int_\epsilon \left( \left[ z_t - \sigma_t u_\theta^{\text{real}}(z_t, t) - z_t + \sigma_t u_\theta^{\text{fake}}(z_t, t) \right] \frac{\partial G_\phi(\epsilon)}{\partial \phi} d\epsilon \right) ϕLDMDEtϕDKL(pfakepreal)Etϵ([ztσtuθreal(zt,t)zt+σtuθfake(zt,t)]ϕGϕ(ϵ)dϵ)

其中, z t \mathbf{z}_t zt 表示第 t t t 步的视频潜变量, z t = σ t z 1 + ( 1 − σ t ) z ^ 0 z_t = \sigma_t z_1 + (1 - \sigma_t) \hat{z}_0 zt=σtz1+(1σt)z^0 z ^ 0 \hat{z}_0 z^0 为少步生成器输出, σ t \sigma_t σt 为噪声调度参数。

该形式将传统基于 score function 的分布匹配(标准 DMD2 中固有)重构为以 t = 0 t = 0 t=0 为中心的分布对齐方法,此重构确保了与 Magic 1-For-1 的训练方法保持一致性。

此外,DMD2 要求对 u θ fake u_\theta^{\text{fake}} uθfake 实时更新,以精准拟合生成数据分布 p fake p_{\text{fake}} pfake。该更新由以下损失函数控制:

L f a k e = E z ^ 0 , z 1 , t ∼ [ 0 , 1 ] [ ∥ z 1 − z ^ 0 − u θ f a k e ( z t , t ) ∥ 2 2 ] L_{\mathrm{fake}} = \mathbb{E}_{\hat{z}_0, z_1, t \sim [0, 1]} \left[ \left\| z_1 - \hat{z}_0 - u_\theta^{\mathrm{fake}}(z_t, t) \right\|_2^2 \right] Lfake=Ez^0,z1,t[0,1][ z1z^0uθfake(zt,t) 22]

在实际实现中,训练 DMD2 需要同时使用三个模型,即生成器、真实模型与伪模型,这使得即便在每个节点配备 8 张 80GB 显存的 GPU、使用 ZeRO3 配置的情况下,也难以完成标准训练,显存消耗极为巨大。

为了解决这一限制,我们提出利用 LoRA(低秩适配)仅对伪模型的参数进行更新,从而显著减少训练所需的内存开销。

此外,我们还观察到,直接采用标准 DMD2 进行训练常常导致训练崩溃。其根本原因在于:真实模型的输入来源于少步生成器的输出,而该输出的数据分布与预训练阶段使用的训练数据分布存在显著差异,导致真实模型难以适应。

为缓解这一问题,我们采用了一种简单但有效的解决策略:通过调整低秩分支的权重因子,使真实模型的参数轻微向伪模型的参数方向偏移。这一调整有助于对齐两者之间的数据分布,从而保证训练过程的稳定性。

在扩散模型的推理阶段,常常在每一步采样中使用无分类器扩散引导(Classifier-Free Diffusion Guidance,CFG)[14,6]。CFG 通过在去条件化(dropout-conditioning)下执行额外的计算,增强了生成结果对于指定条件的保真度。然而,这会引入显著的计算开销,从而降低推理速度。

为消除该开销并提升推理效率,我们引入了 CFG 蒸馏(CFG Distillation)[21]。我们定义了一个蒸馏目标,训练学生模型 u θ s u_\theta^s uθs 直接产生引导后的输出。具体而言,我们最小化以下关于时间步与引导强度的期望损失:

L c f g = E w ∼ p w , t ∼ U [ 0 , 1 ] [ ∥ u θ ^ ( z t , t , w , T s ) − u θ s ( z t , t , w , T s ) ∥ 2 2 ] L_{\mathrm{cfg}}=\mathbb{E}_{w \sim p_w, t \sim U[0,1]}\left[\left\|\hat{u_\theta}\left(\mathbf{z}_t, t, w, T_s\right)-u_\theta^s\left(\mathbf{z}_t, t, w, T_s\right)\right\|_2^2\right] Lcfg=Ewpw,tU[0,1][uθ^(zt,t,w,Ts)uθs(zt,t,w,Ts)22]

其中,

u θ ^ ( z t , t , w , T s ) = ( 1 + w ) u θ ( z t , t , T s ) − w u θ ( z t , t , ∅ ) \hat{u_\theta}\left(\mathbf{z}_t, t, w, T_s\right)=(1+w) u_\theta\left(\mathbf{z}_t, t, T_s\right)-w u_\theta\left(\mathbf{z}_t, t, \emptyset\right) uθ^(zt,t,w,Ts)=(1+w)uθ(zt,t,Ts)wuθ(zt,t,)

表示在条件输出与无条件输出之间的线性插值预测。 T s T_s Ts 表示文本 prompt。在该公式中, p w ( w ) = U [ w min ⁡ , w max ⁡ ] p_w(w)=\mathcal{U}\left[w_{\min }, w_{\max }\right] pw(w)=U[wmin,wmax] 表示引导强度 w w w 是在训练过程中从一个均匀分布中采样得到,这种训练方式使得蒸馏后的模型能够处理多种不同的引导尺度,无需再次训练。

为将引导权重 w w w 整合进模型,我们将其作为额外输入传入学生模型。通过该蒸馏过程,我们可以将传统 CFG 的计算过程压缩为一次简单的前向传播。

我们将总体蒸馏损失 L distillation L_{\text{distillation}} Ldistillation 构建为两个损失项的加权和。CFG 蒸馏损失用于使学生模型的输出对齐到教师模型引导后的预测,而基础预测损失则确保学生模型保留教师模型的基础生成能力。完整的蒸馏损失如下所示:

L distillation  = λ cfg  L c f g + L b a s e , L_{\text {distillation }}=\lambda_{\text {cfg }} L_{\mathrm{cfg}}+L_{\mathrm{base}}, Ldistillation =λcfg Lcfg+Lbase,

其中,

L b a s e = E z 0 , z 1 , t ∼ [ 0 , 1 ] [ ∥ z 1 − z 0 − u θ s ( z t , t , T s ) ∥ 2 2 ] L_{\mathrm{base}}=\mathbb{E}_{z_0, z_1, t \sim[0,1]}\left[\left\|z_1-z_0-u_\theta^s\left(z_t, t, T_s\right)\right\|_2^2\right] Lbase=Ez0,z1,t[0,1][z1z0uθs(zt,t,Ts)22]

λ cfg \lambda_{\text{cfg}} λcfg 是用于平衡两个损失项的重要系数。

3.2 Model Quantization


我们使用 optimum-quanto 框架进行模型量化,采用 int8 的权重量化方法以最小化模型的内存占用。该量化策略主要针对去噪网络的各个部分,包括 Transformer 块、文本编码器以及视觉语言模型(VLM)编码器。

量化过程将原始的 bfloat16 权重映射为 int8 数值。常见的做法是先将 bfloat16 值缩放到合适的范围后再进行转换。例如,可以先找出某个权重张量中绝对值的最大值,并将所有权重按比例缩放,使该最大值对应 int8 可表示的最大数值(127 或 -128),然后执行转换操作。一个简化的缩放示意如下所示:

w i n t 8 = round ⁡ ( w b f 16 × 127 max ⁡ ( ∣ w b f 16 ∣ ) ) w_{\mathrm{int} 8}=\operatorname{round}\left(w_{\mathrm{bf} 16} \times \frac{127}{\max \left(\left|w_{\mathrm{bf} 16}\right|\right)}\right) wint8=round(wbf16×max(wbf16)127)

其中, w b f 16 w_{\mathrm{bf16}} wbf16 表示原始的 bfloat16 权重, w i n t 8 w_{\mathrm{int8}} wint8 表示量化后的 int8 权重, max ⁡ ( ∣ w b f 16 ∣ ) \max \left(\left|w_{\mathrm{bf16}}\right|\right) max(wbf16) 表示该权重张量中元素的绝对值最大值。

在实际应用中,为获得更好的性能,也可以使用更复杂的技术,例如通道级量化(per-channel quantization)或量化感知训练(quantization aware training)。

为了在推理过程中缓解潜在的 CUDA 错误并确保数值稳定性,所有线性层在进行矩阵乘法前,会先将输入转换为 bfloat16,然后再与 int8 权重相乘。这种 bfloat16-int8 的乘法方式既能保持精度,又能充分利用 int8 权重所带来的内存节省优势。

在量化前,模型权重大约占用 32GB 的内存。应用 int8 量化后,模型大小减少至约 16GB。在推理运行时,峰值内存使用量约为 30GB。此优化后的模型可以在消费级及推理优化型 GPU(如 RTX 5090、A10 和 L20)上运行。

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

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

相关文章

谷歌大型推理模型曝光!击败Claude-3.7-Thinking

哎!最近推特上的网友在LMSYS Arena 发现了个泄漏的大模型 Nebula,效果据说特别好,打败了o1、o3-mini、Claude 3.7 Thinking等模型: 网友们通过询问和分析 API,发现这似乎是谷歌正在秘密测试的新推理模型!推…

css-grid布局

文章目录 1、布局2、网格轨道3、间距Gap4、网格线5、网格别名 当一个 HTML 元素将 display 属性设置为 grid 或 inline-grid 后,它就变成了一个网格容器,这个元素的所有直系子元素将成为网格元素。 1、布局 启用grid布局类似与flex布局,不过g…

菱形虚拟继承的原理

一 :菱形继承的问题 普通的菱形继承存在数据冗余和二义性的问题 ,如下代码: class Person { public:string _name; //姓名 };class Student : public Person { protected:int _num; //学号 };class Teacher : public Person { protected:int…

<数据集>轨道异物识别数据集<目标检测>

数据集下载链接:https://download.csdn.net/download/qq_53332949/90527370 数据集格式:VOCYOLO格式 图片数量:1659张 标注数量(xml文件个数):1659 标注数量(txt文件个数):1659 标注类别数:6 标注类别…

高效PDF翻译解决方案:多引擎支持+格式零丢失

软件介绍 在AI翻译工具大行其道的今天,传统翻译软件市场逐渐饱和,但专业领域的深度需求依然存在。本文推荐的PDF翻译工具凭借20余种专业翻译接口,为学术文献、技术文档等复杂内容提供更精准的翻译服务,在保留文档原始排版的同时…

AI智能新标尺:诺姆·布朗谈token成本革命

第一章:从德州扑克到AI革命——诺姆布朗的“顿悟时刻” 1.1 从“人机对战”到“思维革命” 诺姆布朗的AI研究生涯始于2012年卡内基梅隆大学的实验室。彼时,国际象棋AI“深蓝”已横扫棋坛,围棋AI“AlphaGo”初露锋芒,但非完美信息…

碰一碰发视频系统开发者源码分析(一)

#碰一碰发视频系统# #碰一碰发视频saas系统#搭建 碰一碰发视频,是采用前沿技术搭载一套 AI 智能剪辑系统“碰一碰发视频”是一种基于近场通信(NFC)或蓝牙技术的创新交互方式,用户通过设备轻触即可触发视频传输或播放。本文将详细…

ROS2下MoveIt+Rviz+MuJoCo 三剑合璧!Panda 机械臂联动仿真!

视频讲解: ROS2下MoveItRvizMuJoCo 三剑合璧!Panda 机械臂联动仿真! 仓库代码:GitHub - LitchiCheng/ros2_package 今天介绍下,ros2下使用moveit在Rviz和mujoco联合仿真,结合上一期视频《MuJoCo 仿真 Pand…

Virtual BOX安装ubuntu及其环境配置(个人一些踩坑补充)

目录 设置中文操作界面和环境时候,下图内容切忌不要选错!安装过程中因为分辨率原因,可能安装界面无法显示全面,如何临时解决这篇文章中的缺少如何调出中文输出法部分unbuntu换源安装terminal终端小鱼一键ros安装opencv环境配置 ub…

基于Spring Boot的三国之家网站的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

二分图相关

判断二分图&#xff08;染色&#xff09; #include<bits/stdc.h> using namespace std; void __p(int x) {cerr<<x;} void __p(long long x){cerr<<x;} void __p(long double x){cerr<<x;} void __p(double x){cerr<<x;} void __p(string s){cer…

java执行jar包提示没有主清单属性

以前都没遇到过这种情况&#xff0c;什么时候打jar&#xff0c; war包都没有遇到过&#xff0c; 按照网上说的创建了META-INF/MANIFEST.MF 还是报错 于是检查下maven 打包发现&#xff1a;竟然有skip 为true 去掉 skip true &#xff0c;进行打包&#xff0c;编译后正常

运动仿真——phased.Platform

在雷达仿真过程中&#xff0c;运动仿真的必要性&#xff0c;以及运动仿真可以实现哪些功能&#xff0c;在matlab对应的user guide中已经讲的很清楚了&#xff0c;这里不再赘述。 本文主要介绍phased.Platform的一些“坑”&#xff0c;和典型的用法。 第一坑&#xff1a;系统对…

用selenium+ChromeDriver豆瓣电影 肖申克的救赎 短评爬取(pycharm 爬虫)

一、豆瓣电影 肖申克的救赎 短评url=https://movie.douban.com/subject/1292052/comments 二、基本知识点讲解 1. Selenium 的基本使用 Selenium 是一个用于自动化浏览器操作的库,常用于网页测试和爬虫。代码中使用了以下 Selenium 的核心功能: webdriver.Chrome: 启动 Chr…

万象更新(一)VTK 坐标轴、相机方向坐标轴、立方体坐标轴

VTK 坐标轴、相机方向坐标轴、立方体坐标轴 1. 坐标轴、相机方向坐标轴、立方体坐标轴2. 坐标轴3. 相机方向坐标轴4. 立方体坐标轴 1. 坐标轴、相机方向坐标轴、立方体坐标轴 在 VTK&#xff08;Visualization Toolkit&#xff09;中&#xff0c;与坐标轴相关的组件主要包括 坐…

【Golang】go语言上下文context

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

ROS2与OpenAI Gym集成指南:从安装到自定义环境与强化学习训练

1.理解 ROS2 和 OpenAI Gym 的基本概念 ROS2&#xff08;Robot Operating System 2&#xff09;&#xff1a;是一个用于机器人软件开发的框架。它提供了一系列的工具、库和通信机制&#xff0c;方便开发者构建复杂的机器人应用程序。例如&#xff0c;ROS2 可以处理机器人不同组…

基于Spring Boot的乡村养老服务管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

### Java二维字符矩阵输入解析:正确读取由0和1组成的矩阵

在解决LeetCode等编程平台上的算法问题时&#xff0c;正确处理输入数据是解题的第一步。本文以Java语言为例&#xff0c;详细讲解如何正确读取由0和1组成的二维字符矩阵&#xff0c;并解决输入过程中可能遇到的换行符问题。 --- #### **问题背景** 题目要求从输入中读取一个二…

SEO监控看板搭建:基于Data Studio的实时数据可视化

在当今数字化营销的时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为企业获取流量、提升品牌曝光的重要手段。然而&#xff0c;SEO的效果往往需要通过数据来评估和优化。为了更高效地监控SEO表现&#xff0c;许多企业开始使用数据可视化工具来搭建SEO监控看板…