首页 > 其他分享 >蛙跳扩散模型轨迹预测

蛙跳扩散模型轨迹预测

时间:2024-07-24 11:26:18浏览次数:16  
标签:轨迹 mathbf widehat theta mathcal 蛙跳 扩散 gamma left

在这里插入图片描述

扩散模型轨迹预测

文章目录

参考论文《Leapfrog Diffusion Model for Stochastic Trajectory Prediction》
CVPR2024

1. 问题定义

目的是得到model g θ ( ⋅ ) g_{\theta}(\cdot) gθ​(⋅),参数 θ \theta θ来生成分布 P θ = g θ ( X , X N ) \mathcal{P}_{\theta}=g_{\theta}(\mathbf{X},\mathbb{X}_{\mathcal{N}}) Pθ​=gθ​(X,XN​),基于分布 P θ \mathcal{P}_\theta Pθ​来画 K K K个样本, Y ^ = { Y 1 ^ , Y 2 ^ , . . . , Y K ^ } \hat{\mathcal{\mathbf{Y}}}=\{\hat{\mathbf{Y_1}},\hat{\mathbf{Y_2}},...,\hat{\mathbf{Y_K}}\} Y^={Y1​^​,Y2​^​,...,YK​^​},这样至少有一个样本是接近真实的未来轨迹。总体问题定义:
θ ∗ = min ⁡ θ min ⁡ Y ^ i ∈ Y ^ D ( Y ^ i , Y ) ,  s.t.  Y ^ ∼ P θ \theta^{*}=\min _{\theta} \min _{\widehat{\mathbf{Y}}_{i} \in \widehat{\mathcal{Y}}} D\left(\widehat{\mathbf{Y}}_{i}, \mathbf{Y}\right), \quad \text { s.t. } \widehat{\mathcal{Y}} \sim \mathcal{P}_{\theta} θ∗=minθ​minY i​∈Y ​​D(Y i​,Y), s.t. Y ​∼Pθ​
X \mathbf{X} X和 X N \mathbb{X}_{\mathcal{N}} XN​分别表示ego车辆的过去轨迹和neighboring车辆, Y \mathbf{Y} Y是ego车辆的未来轨迹。
通过一系列去噪步骤来学习轨迹分布,先执行前向diffusion的加噪到 未来轨迹的ground-truth上,然后,用条件去噪过程从过去轨迹的噪声中来恢复未来轨迹。
Diffusion 过程:

2. 方法论

在这里插入图片描述

2.1 前向扩散

Y 0 = Y \mathbf{Y}^{0}=\mathbf{Y} Y0=Y
初始化扩散轨迹,
Y γ = f diffuse  ( Y γ − 1 ) , γ = 1 , ⋯   , Γ \mathbf{Y}^{\gamma}=f_{\text {diffuse }}\left(\mathbf{Y}^{\gamma-1}\right), \gamma=1, \cdots, \Gamma Yγ=fdiffuse ​(Yγ−1),γ=1,⋯,Γ
使用前向 f d i f f u s e ( ⋅ ) f_{diffuse}(\cdot) fdiffuse​(⋅)向 Y γ − 1 \mathbf{Y}^{\gamma-1} Yγ−1添加连续噪声来获取扩散后的 Y γ \mathbf{Y}^{\gamma} Yγ,其中 Y γ \mathbf{Y}^{\gamma} Yγ是第 γ \gamma γ次diffusion步骤

2.2 逆过程

Y ^ k Γ ∼ i . i . d P ( Y ^ Γ ) = N ( Y ^ Γ ; 0 , I ) , sample  K  times  \widehat{\mathbf{Y}}_{k}^{\Gamma} \stackrel{i . i . d}{\sim} \mathcal{P}\left(\widehat{\mathbf{Y}}^{\Gamma}\right)=\mathcal{N}\left(\widehat{\mathbf{Y}}^{\Gamma} ; \mathbf{0}, \mathbf{I}\right) \text {, sample } K \text { times } Y kΓ​∼i.i.dP(Y Γ)=N(Y Γ;0,I), sample K times 
从正态分布中抽取 K K K个独立同分布的样本初始化去噪轨迹 Y k Γ ^ \hat{\mathbf{Y}^\Gamma_k} YkΓ​^​
Y ^ k γ = f denoise  ( Y ^ k γ + 1 , X , X N ) , γ = Γ − 1 , ⋯   , 0 \widehat{\mathbf{Y}}_{k}^{\gamma}=f_{\text {denoise }}\left(\widehat{\mathbf{Y}}_{k}^{\gamma+1}, \mathbf{X}, \mathbb{X}_{\mathcal{N}}\right), \gamma=\Gamma-1, \cdots, 0 Y kγ​=fdenoise ​(Y kγ+1​,X,XN​),γ=Γ−1,⋯,0
迭代应用去噪操作 f d e n o i s e ( ⋅ ) f_{denoise}(\cdot) fdenoise​(⋅)以过去轨迹 X , X N \mathbf{X},\mathbb{X}_\mathcal{N} X,XN​为条件获取去噪轨迹。
Y k γ ^ \hat{\mathbf{Y}_k^\gamma} Ykγ​^​是第 γ \gamma γ次去噪轨迹第 k k k次采样,最终 K K K个预测轨迹 Y = { Y ^ 1 0 , Y ^ 2 0 , … , Y ^ K 0 } ^ \hat{\mathcal{Y}=\left\{\hat{\mathbf{Y}}_{1}^{0}, \widehat{\mathbf{Y}}_{2}^{0}, \ldots, \widehat{\mathbf{Y}}_{K}^{0}\right\}} Y={Y^10​,Y 20​,…,Y K0​}^​
Note:
前向扩散处理不会用于推理步骤,在训练期间, Y γ \mathbf{Y}^\gamma Yγ是第 γ \gamma γ步 Y k γ ^ \hat{\mathbf{Y}^\gamma_k} Ykγ​^​的监督
每个去噪步骤都是扩散步骤的逆过程,每个 Y γ \mathbf{Y}^{\gamma} Yγ和 Y k γ ^ \hat{\mathbf{Y}^\gamma_{k}} Ykγ​^​共享基础分布。
以上是问题定义建模,传统扩散模型受限于大量去噪的步骤的运算时间限制,但是轨迹预测需要实时推理,如果去噪的步骤很少会导致未来分布的表示能力很弱。
方法
[图片]

2.3 蛙跳扩散模型的步骤

X \mathbf{X} X和 X N \mathbb{X}_\mathcal{N} XN​分别是ego和neighboring智能体过去的轨迹, Y \mathbf{Y} Y是ego的未来轨迹, τ \tau τ是leapfrog的步数。
Y 0 = Y \mathbf{Y}^{0}=\mathbf{Y} Y0=Y
Y γ = f diffuse  ( Y γ − 1 ) , γ = 1 , ⋯   , Γ \mathbf{Y}^{\gamma}=f_{\text {diffuse }}\left(\mathbf{Y}^{\gamma-1}\right), \gamma=1, \cdots, \Gamma Yγ=fdiffuse ​(Yγ−1),γ=1,⋯,Γ
Y ^ τ ∼ K P ( Y ^ τ ) = f L S G ( X , X N ) \widehat{\mathcal{Y}}^{\tau} \stackrel{K}{\sim} \mathcal{P}\left(\widehat{\mathbf{Y}}^{\tau}\right)=f_{\mathrm{LSG}}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}\right) Y ​τ∼KP(Y τ)=fLSG​(X,XN​)
和标准扩散模型的步骤最主要的区别在这里,初始化器 f L S G ( ⋅ ) f_{LSG}(\cdot) fLSG​(⋅)直接对第 τ \tau τ个去噪分布 P ( Y τ ^ ) \mathcal{P}(\hat{\mathbf{Y}^\tau}) P(Yτ^)建模,假设等价于执行 ( Γ − τ ) (\Gamma-\tau) (Γ−τ)个去噪步骤,从分布 P ( Y τ ^ ) \mathcal{P}(\hat{\mathbf{Y}^\tau}) P(Yτ^)中抽样并获取 K K K个未来轨迹 Y ^ τ = { Y ^ 1 τ , Y ^ 2 τ , … , Y ^ K τ } \widehat{\mathcal{Y}}^{\tau}=\left\{\widehat{\mathbf{Y}}_{1}^{\tau}, \widehat{\mathbf{Y}}_{2}^{\tau}, \ldots, \widehat{\mathbf{Y}}_{K}^{\tau}\right\} Y ​τ={Y 1τ​,Y 2τ​,…,Y Kτ​}
Y ^ k γ = f denoise  ( Y ^ k γ + 1 , X , X N ) , γ = τ − 1 , ⋯   , 0 \widehat{\mathbf{Y}}_{k}^{\gamma}=f_{\text {denoise }}\left(\widehat{\mathbf{Y}}_{k}^{\gamma+1}, \mathbf{X}, \mathbb{X}_{\mathcal{N}}\right), \gamma=\tau-1, \cdots, 0 Y kγ​=fdenoise ​(Y kγ+1​,X,XN​),γ=τ−1,⋯,0
在这一步,只需要对每个轨迹 Y k γ ^ \hat{\mathbf{Y}^{\gamma}_k} Ykγ​^​应用剩余 τ \tau τ个去噪步骤来获取最终的预测 Y ^ = { Y ^ 1 0 , Y ^ 2 0 , … , Y ^ K 0 } \widehat{\mathcal{Y}}=\left\{\widehat{\mathbf{Y}}_{1}^{0}, \widehat{\mathbf{Y}}_{2}^{0}, \ldots, \widehat{\mathbf{Y}}_{K}^{0}\right\} Y ​={Y 10​,Y 20​,…,Y K0​}
Note:
去噪步骤由 Γ \Gamma Γ减少到了 τ \tau τ,其远远小于 Γ \Gamma Γ,模型初始化器对 τ \tau τ去噪步骤直接提供了轨迹,加快了推理。和标准扩散模型相比,这里的抽样并非来自独立同分布的结果。
新模型和蛙跳模型使用相同的前向扩散过程,保证了表达能力。

2.4 蛙跳初始化器

通过学习的方式建模第 τ \tau τ个去噪分布 P ( Y ^ ) \mathcal{P}({\hat{\mathbf{Y}}}) P(Y^),将分布拆解为三个部分:均值、全局方差和样本预测部分。过程如下:
μ θ = f μ ( X , X N ) ∈ R T f × 2 \mu_{\theta}=f_{\mu}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}\right) \in \mathbb{R}^{T_{\mathrm{f}} \times 2} μθ​=fμ​(X,XN​)∈RTf​×2
σ θ = f σ ( X , X N ) ∈ R \sigma_{\theta}=f_{\sigma}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}\right) \in \mathbb{R} σθ​=fσ​(X,XN​)∈R
S ^ θ = [ S ^ θ , 1 , ⋯   , S ^ θ , K ] = f S ^ ( X , X N , σ θ ) ∈ R T f × 2 × K \widehat{\mathbb{S}}_{\theta}=\left[\widehat{\mathbf{S}}_{\theta, 1}, \cdots, \widehat{\mathbf{S}}_{\theta, K}\right]=f_{\widehat{\mathbf{S}}}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}, \sigma_{\theta}\right) \in \mathbb{R}^{T_{f} \times 2 \times K} S θ​=[S θ,1​,⋯,S θ,K​]=fS ​(X,XN​,σθ​)∈RTf​×2×K
Y ^ k τ = μ θ + σ θ ⋅ S ^ θ , k ∈ R T f × 2 Y ^ k τ = μ θ + σ θ ⋅ S ^ θ , k ∈ R T f × 2 \widehat{\mathbf{Y}}_{k}^{\tau}=\mu_{\theta}+\sigma_{\theta} \cdot \widehat{\mathbf{S}}_{\theta, k} \in \mathbb{R}^{T_{\mathrm{f}} \times 2}\widehat{\mathbf{Y}}_{k}^{\tau}=\mu_{\theta}+\sigma_{\theta} \cdot \widehat{\mathbf{S}}_{\theta, k} \in \mathbb{R}^{T_{\mathrm{f}} \times 2} Y kτ​=μθ​+σθ​⋅S θ,k​∈RTf​×2Y kτ​=μθ​+σθ​⋅S θ,k​∈RTf​×2
其中, f μ ( ⋅ ) , f σ ( ⋅ ) , f S ^ ( ⋅ ) f_{\mu}(\cdot), f_{\sigma}(\cdot), f_{\widehat{\mathbb{S}}}(\cdot) fμ​(⋅),fσ​(⋅),fS ​(⋅)是三个可训练模块, μ θ , σ θ \mu_{\theta}, \sigma_{\theta} μθ​,σθ​是 P ( Y ^ τ ) \mathcal{P}\left(\widehat{\mathbf{Y}}^{\tau}\right) P(Y τ)的均值和方差, S ^ θ , k \widehat{\mathbf{S}}_{\theta, k} S θ,k​是第 k k k次采样的正则化位置。
e μ θ social  = softmax ⁡ ( f q ( X ) f k ( X N ) ⊤ d ) f v ( X N ) \mathbf{e}_{\mu_{\theta}}^{\text {social }}=\operatorname{softmax}\left(\frac{f_{\mathrm{q}}(\mathbf{X}) f_{\mathrm{k}}\left(\mathbb{X}_{\mathcal{N}}\right)^{\top}}{\sqrt{d}}\right) f_{\mathrm{v}}\left(\mathbb{X}_{\mathcal{N}}\right) eμθ​social ​=softmax(d ​fq​(X)fk​(XN​)⊤​)fv​(XN​)注意力模块社交编码
e μ θ t e m p = f G R U ( f conv ⁡ 1 D ( X ) ) \mathbf{e}_{\mu_{\theta}}^{\mathrm{temp}}=f_{\mathrm{GRU}}\left(f_{\operatorname{conv} 1 \mathrm{D}}(\mathbf{X})\right) eμθ​temp​=fGRU​(fconv1D​(X))GRU时序编码
μ θ = f fusion  ( [ e μ θ social  : e μ θ temp  ] ) \mu_{\theta}=f_{\text {fusion }}\left(\left[\mathbf{e}_{\mu_{\theta}}^{\text {social }}: \mathbf{e}_{\mu_{\theta}}^{\text {temp }}\right]\right) μθ​=ffusion ​([eμθ​social ​:eμθ​temp ​])融合均值估计,得到轨迹均值(MLP)
采样预测模块 f S ^ ( ⋅ ) f_{\widehat{\mathbb{S}}}(\cdot) fS ​(⋅)将标准差的估计作为输入,计算过程如下:
e S ^ θ σ = f encode  ( σ θ ) \mathbf{e}_{\widehat{\mathbb{S}}_{\theta}}^{\sigma}=f_{\text {encode }}\left(\sigma_{\theta}\right) eS θ​σ​=fencode ​(σθ​)将标准差的估计经过编码生成高维的embedding e S ^ θ σ \mathbf{e}_{\widehat{\mathbb{S}}_{\theta}}^{\sigma} eS θ​σ​,这样标准差的估计也在样本的预测过程中涉及了。
S ^ θ = f fusion  ( [ e S θ social  : e S ^ θ temp  : e S ^ θ σ ] ) \widehat{\mathbb{S}}_{\theta}=f_{\text {fusion }}\left(\left[\mathbf{e}_{\mathbb{S}_{\theta}}^{\text {social }}: \mathbf{e}_{\widehat{\mathbb{S}}_{\theta}}^{\text {temp }}: \mathbf{e}_{\widehat{\mathbb{S}}_{\theta}}^{\sigma}\right]\right) S θ​=ffusion ​([eSθ​social ​:eS θ​temp ​:eS θ​σ​])
从蛙跳初始化器获取到K个样本 Y ^ τ = { Y ^ 1 τ , Y ^ 2 τ , … , Y ^ K τ } \widehat{\mathcal{Y}}^{\tau}=\left\{\widehat{\mathbf{Y}}_{1}^{\tau}, \widehat{\mathbf{Y}}_{2}^{\tau}, \ldots, \widehat{\mathbf{Y}}_{K}^{\tau}\right\} Y ​τ={Y 1τ​,Y 2τ​,…,Y Kτ​},然后执行 τ \tau τ个去噪步骤来迭代精炼预测轨迹。
问题:剩余的 τ \tau τ步指的是哪 τ \tau τ步?采样K次是为了什么?

2.5 去噪模块

去噪模块 f d e n o i s e ( ⋅ ) f_{denoise}(\cdot) fdenoise​(⋅)从过去的轨迹 ( X , X N ) (\mathbf{X},\mathbb{X}_\mathcal{N}) (X,XN​)的条件下对轨迹,有两个训练模块,一个是基于Transformer的上下文编码模块学习社交-时序embedding和一个噪声估计模块 f ϵ ( ⋅ ) f_{\epsilon}(\cdot) fϵ​(⋅)用以估计需要减少的噪声。第 γ \gamma γ步去噪的流程如下:
C = f context  ( X , X N ) \mathbf{C}=f_{\text {context }}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}\right) C=fcontext ​(X,XN​)使用上下文编码模块从过去的轨迹中获取上下文条件 C \mathbf{C} C, f c o n t e x t ( X , X N ) f_{context}(\mathbf{X},\mathbb{X}_\mathcal{N}) fcontext​(X,XN​)和 f μ ( ⋅ ) f_{\mu}(\cdot) fμ​(⋅)是相同的结构
ϵ θ γ = f ϵ ( Y ^ k γ + 1 , C , γ + 1 ) \boldsymbol{\epsilon}_{\theta}^{\gamma}=f_{\boldsymbol{\epsilon}}\left(\widehat{\mathbf{Y}}_{k}^{\gamma+1}, \mathbf{C}, \gamma+1\right) ϵθγ​=fϵ​(Y kγ+1​,C,γ+1)通过上下文 C \mathbf{C} C的多层感知机实现的噪声估计 f ϵ ( ⋅ ) f_{\epsilon}(\cdot) fϵ​(⋅)来估计带噪声轨迹 Y ^ k γ + 1 \widehat{\mathbf{Y}}_{k}^{\gamma+1} Y kγ+1​的噪声 ϵ θ γ \boldsymbol{\epsilon}_{\theta}^{\gamma} ϵθγ​
Y ^ k γ = 1 α γ ( Y ^ k γ + 1 − 1 − α γ 1 − α ˉ γ ϵ θ γ ) + 1 − α γ z \widehat{\mathbf{Y}}_{k}^{\gamma}=\frac{1}{\sqrt{\alpha_{\gamma}}}\left(\widehat{\mathbf{Y}}_{k}^{\gamma+1}-\frac{1-\alpha_{\gamma}}{\sqrt{1-\bar{\alpha}_{\gamma}}} \boldsymbol{\epsilon}_{\theta}^{\gamma}\right)+\sqrt{1-\alpha_{\gamma} \mathbf{z}} Y kγ​=αγ​ ​1​(Y kγ+1​−1−αˉγ​ ​1−αγ​​ϵθγ​)+1−αγ​z ​ 标准去噪步骤
其中 α ˉ γ = ∏ i = 1 γ α i \bar{\alpha}_{\gamma}=\prod_{i=1}^{\gamma} \alpha_{i} αˉγ​=∏i=1γ​αi​和 α γ \alpha_\gamma αγ​是扩散过程的参数, z ∼ N ( z ; 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{z} ; \mathbf{0}, \mathbf{I}) z∼N(z;0,I)是噪声

3. 实践

3.1训练

分为两个阶段,第一阶段训练去噪模块、第二阶段聚焦于蛙跳初始化器。
(蛙跳初始化器的在给定分布 P ( Y ^ τ ) \mathcal{P}(\widehat{\mathbf{Y}}^\tau) P(Y τ)的情况下,蛙跳初始化器的训练更加稳定)
第一阶段使用扩散模型的标准训练模式利用噪声估计的loss训练:
L N E = ∥ ϵ − f ϵ ( Y γ + 1 , f context  ( X , X N ) , γ + 1 ) ∥ 2 \mathcal{L}_{\mathrm{NE}}=\left\|\boldsymbol{\epsilon}-f_{\boldsymbol{\epsilon}}\left(\mathbf{Y}^{\gamma+1}, f_{\text {context }}\left(\mathbf{X}, \mathbb{X}_{\mathcal{N}}\right), \gamma+1\right)\right\|_{2} LNE​= ​ϵ−fϵ​(Yγ+1,fcontext ​(X,XN​),γ+1) ​2​
其中, γ ∼ U { 1 , 2 , ⋯   , Γ } , ϵ ∼ N ( ϵ ; 0 , I ) \gamma \sim U\{1,2, \cdots, \Gamma\},\boldsymbol{\epsilon} \sim \mathcal{N}(\boldsymbol{\epsilon} ; \mathbf{0}, \mathbf{I}) γ∼U{1,2,⋯,Γ},ϵ∼N(ϵ;0,I),扩散的轨迹 Y γ + 1 = α ˉ γ Y 0 + 1 − α ˉ γ ϵ \mathbf{Y}^{\gamma+1}=\sqrt{\bar{\alpha}_{\gamma}} \mathbf{Y}^{0}+\sqrt{1-\bar{\alpha}_{\gamma}} \boldsymbol{\epsilon} Yγ+1=αˉγ​ ​Y0+1−αˉγ​ ​ϵ
反向传播loss和训练的参数在上下文编码模块和噪声估计模块。
第二阶段使用可训练的蛙跳初始化器优化蛙跳扩散模型并且冻结去噪模块。对于每一个样本,loss为
L = L distance  + L uncertainty  = w ⋅ min ⁡ k ∥ Y − Y ^ k ∥ 2 + ( ∑ k ∥ Y − Y ^ k ∥ 2 σ θ 2 K + log ⁡ σ θ 2 ) \begin{aligned} \mathcal{L} & =\mathcal{L}_{\text {distance }}+\mathcal{L}_{\text {uncertainty }} \\ & =w \cdot \min _{k}\left\|\mathbf{Y}-\widehat{\mathbf{Y}}_{k}\right\|_{2}+\left(\frac{\sum_{k}\left\|\mathbf{Y}-\widehat{\mathbf{Y}}_{k}\right\|_{2}}{\sigma_{\theta}^{2} K}+\log \sigma_{\theta}^{2}\right) \end{aligned} L​=Ldistance ​+Luncertainty ​=w⋅kmin​ ​Y−Y k​ ​2​+ ​σθ2​K∑k​ ​Y−Y k​ ​2​​+logσθ2​ ​​
其中 w ∈ R w\in\mathbb{R} w∈R是超参数权重,第一项约束了K个预测的最小距离。直观上说,如果蛙跳初始化器生成分布 P ( Y ^ τ ) \mathcal{P}(\widehat{\mathbf{Y}}^\tau) P(Y τ)的高质量估计,K个预测中之一一定与groud-truth非常接近。
第二项通过不确定性损失对重新参数化的方差估计 σ θ \sigma_\theta σθ​进行归一化,平衡预测多样性和平均精度。方差估计控制预测的分散性,弥合场景复杂性和预测多样性。
∑ k ∥ Y − Y ^ k ∥ 2 σ θ 2 K \frac{\sum_{k}\left\|\mathbf{Y}-\widehat{\mathbf{Y}}_{k}\right\|_{2}}{\sigma_{\theta}^{2} K} σθ2​K∑k​∥Y−Y k​∥2​​将 σ θ \sigma_\theta σθ​的值与场景的复杂度呈正比关系。
log ⁡ σ θ 2 \log \sigma_{\theta}^{2} logσθ2​使用正则化器为所有的预测生成高方差。
附:作者表达了技术手段,他们并不在第二阶段对蛙跳初始化器进行估计时使用显式监督的手段的原因如下:
显式监督的实现:在初始化器的估计过程中,分布 P ( Y ^ Γ ) \mathcal{P}(\widehat{\mathbf{Y}}^\Gamma) P(Y Γ)可以从正态分布中去噪,为了完成显式监督,从正态分布下的 P ( Y ^ Γ ) \mathcal{P}(\widehat{\mathbf{Y}}^\Gamma) P(Y Γ)中抽样M个(M>>K),然后通过 f d e n o i s e f_{denoise} fdenoise​去噪直到获得去噪轨迹 Y ^ τ \widehat{\mathbf{Y}}^{\tau} Y τ,然后使用这M个样本计算统计量作为均值估计 f μ ( ⋅ ) f_\mu(\cdot) fμ​(⋅)和方差估计 f σ ( ⋅ ) f_\sigma(\cdot) fσ​(⋅)的显式监督。
然而,由于 τ < < Γ \tau<<\Gamma τ<<Γ,那么对 M > > K M>>K M>>K个样本运行 ( Γ − τ ) ≈ Γ (\Gamma-\tau) \approx \Gamma (Γ−τ)≈Γ步去噪获得统计数据的过程会导致训练时间和存储消耗变得无法接受。(NBV数据集上一个epoch要6天)

3.2 推理阶段

在推理过程中,蛙跳扩散模型只需要 τ \tau τ步,而不是 Γ \Gamma Γ步去噪,从而加快了推理速度。具体来说,我们首先生成 K 个相关样本,以使用经过训练的蛙跳初始化器对分布 P ( Y ~ τ ) \mathcal{P}\left(\widetilde{\mathbf{Y}}^{\tau}\right) P(Y τ)进行建模。然后,这些样本将被输入去噪过程并迭代微调以产生最终的预测;参见算法 :
在这里插入图片描述

3.3 源码

实验复现:

conda create -n led python=3.7
conda activate led

注意spconv 1.x版本已经废弃,找不到了

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
git clone -b v1.2.1 --recursive https://github.com/traveller59/spconv.git
cd spconv
python setup.py bdist_wheel
cd dist
pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl

https://drive.google.com/drive/folders/1Uy8-WvlCp7n3zJKiEX0uONlEcx2u3Nnx
数据下载地址
训练

python main_led_nba.py --cfg led_augment --gpu 0 --train 1 --info try1

在这里插入图片描述

3.4 问题记录

问题:
在这里插入图片描述
查看日志文件
[图片]
在这里插入图片描述

看到了两处报错,一处是LIBC_PTHREAD找不到,一处是nvcc报错。
经过排查,需要完整克隆指令(https://github.com/traveller59/spconv/issues/264
在这里插入图片描述

0.11.4这个不兼容torch 1.8.0

标签:轨迹,mathbf,widehat,theta,mathcal,蛙跳,扩散,gamma,left
From: https://blog.csdn.net/qq_38853759/article/details/140657281

相关文章

  • 《昇思 25 天学习打卡营第 18 天 | 扩散模型(Diffusion Models) 》
    《昇思25天学习打卡营第18天|扩散模型(DiffusionModels)》活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp签名:Sam9029扩散模型(DiffusionModels)扩散模型概述扩散模型(DiffusionModels),特别是去噪扩散概率模型(DDPM),在图像、音频、视频生成领......
  • 如何使用OpenCV轨迹栏控制圆半径?
    我正在尝试添加一个opencv轨迹栏来调整我用于二进制掩模图像的圆半径值。问题是bitwise_and或bitwise_ortwe参数结果是相同的。掩模图像解释一下。|||这是我的代码:Here'smycode:---python#importopencvandnumpyimportcv2importnumpyasnp#Bla......
  • C++ 鼠标轨迹API【神诺科技SDK】
    一.鼠标轨迹模拟简介传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。二.鼠标轨迹算法实现AI大模型通过学习大量的人类鼠标操......
  • C++鼠标轨迹API - 神诺科技SDK
    一.鼠标轨迹模拟简介传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。二.鼠标轨迹算法实现AI大模型通过学习大量的人类鼠标操......
  • 使用Pytorch中从头实现去噪扩散概率模型(DDPM)
    扩散模型通常是一种生成式深度学习模型,它通过学习去噪过程来创建数据。扩散模型有许多变体,其中最流行的是条件文本模型,能够根据提示生成特定的图像。某些扩散模型(如Control-Net)甚至能将图像与某些艺术风格融合。在本文中,我们将构建基础的无条件扩散模型,即去噪扩散概率模型(DDPM)。......
  • 速度与质量的碰撞——对抗扩散蒸馏 (ADD) 如何彻底改变图像生成
    引言DigiOps与人工智能是最新和最令人兴奋的进步之一,它是一种将速度和质量融为一体的图像生成技术。ADD的发展经历了几个关键阶段。最初,图像生成方法非常基础,而且经常产生不令人满意的结果。生成对抗网络(GAN)的引入标志着一项重大改进,可以使用双网络方法创建逼真的图像......
  • Stable Diffusion——涂鸦幻变:稳态扩散下的艺术重生
    目录引言操作过程图片准备创建蒙版图生图优化设置参数细节调整总结引言在深入体验了StableDiffusion图生图的无限魅力之后,我们不禁为其强大的图像修复和细节丰富能力所折服。然而,在实际应用中,许多用户发现难以精准掌控最终效果的丰富度和细节层次,以达到心中理想......
  • 基于Qlearning强化学习的小车弧线轨迹行驶控制matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):  2.算法涉及理论知识概要        Q-learning是一种离散时间强化学习算法,无需模型即可直接从环境中学习最优策略。当应用于小车弧线轨迹行驶控制时,其核心任务是让小车自主学习如何控制转向和速度,以在......
  • 生成扩散模型漫谈(四):DDIM = 高观点DDPM
    相信很多读者都听说过甚至读过克莱因的《高观点下的初等数学》这套书,顾名思义,这是在学到了更深入、更完备的数学知识后,从更高的视角重新审视过往学过的初等数学,以得到更全面的认知,甚至达到温故而知新的效果。类似的书籍还有很多,比如《重温微积分》、《复分析:可视化方法》等。回到......
  • 生成扩散模型漫谈(一):DDPM = 拆楼 + 建楼
    说到生成模型,VAE、GAN可谓是“如雷贯耳”,本站也有过多次分享。此外,还有一些比较小众的选择,如flow模型、VQ-VAE等,也颇有人气,尤其是VQ-VAE及其变体VQ-GAN,近期已经逐渐发展到“图像的Tokenizer”的地位,用来直接调用NLP的各种预训练方法。除了这些之外,还有一个本来更小众的选择——扩......