对于经典的扩散模型DDPM,图像逆向生成推理过程中,我们需要一步步地将随机高斯噪声\(\mathbf{x}_T\)还原成有意义的图像\(\mathbf{x}_0\),总共需要\(T\)次推理,生成速度较慢。为此,DDIM(Denoising
Diffusion Implicit
Models)采用更小的采样次数来加速推理过程,同时从随机噪音生成图像的过程并没有引入其它噪音,即逆向过程是一个确定的过程。DDIM与DDPM的优化目标是一致的,但并不要求前向过程是一个马尔可夫链。
前提
DDPM的优化目标\(L_t\)以及采样过程\(q(\mathbf{x}_{t-1}\vert\mathbf...
这是一个diffusion
model类型的图像生成模型,简单地概括就是通过在原图\(\mathbf{x}_0\)上不断地叠加高斯噪声(一共\(T\)轮),最终可以将\(\mathbf{x}_0\)变为纯高斯噪声\(\mathbf{x}_T\),而模型负责将\(\mathbf{x}_T\)还原为\(\mathbf{x}_0\)。图示如下:
其中\(\mathbf{x}_0\)到\(\mathbf{x}_T\)的过程称为前向过程,而\(\mathbf{x}_T\)到\(\mathbf{x}_0\)的过程为逆向过程或推断过程。
本文大部分内容参考自What
are Diffusion Mo...
以往的diffusion
model(DM)一般会在全图范围内进行操作,这样在运行DM模型所需的显存会变得非常大。而latent
diffusion model(LDM)则是将输入通过预训练好的autoencoder
encoder映射到潜在空间,在潜在空间上进行DM操作,最后得到的输出再通过autoencoder
decoder部分映射回原图空间。作者还通过cross
attention的方式将限制条件引入DM中,从而实现可控的图像生成。
Autoencoder
Autoencoder是一类神经网络,采用无监督的方式进行学习。训练方式是生成的图片与原图做比较,即关注的是模型重建的能力,...
Ref: https://lilianweng.github.io/posts/2017-08-20-gan/
一些背景知识
对于两个分布\(P_1\)和\(P_2\),其KL散度(Kullback-Leibler
divergence)和JS散度(Jensen-Shannon
divergence)可用于描述两个分布之间的差异,具体表示如下:
\[
\begin{aligned}
D_{KL}(P_1 \vert\vert P_2) &= \mathbb{E}_{x\sim
P_1}\left[\log\frac{P_1}{P_2}\right] = \int_x P_1\lo...
Note:
VAE并不是一个只关注重建的模型,它更重要的能力是图像生成,所以VAE并不是一个AE模型,它具备生成能力。
与常见的Autoencoder不同,变分自编码器并不是将输入映射为一个固定的向量,而是映射为一个分布\(p_\theta\)(参数为\(\theta\))。输入数据\(\mathbf{x}\)与隐变量\(\mathbf{z}\)的关系如下:
\(p_\theta(\mathbf{z})\):先验概率
\(p_\theta(\mathbf{x}\vert\mathbf{z})\):似然概率
\(p_\theta(\mathbf{z}\vert\mathbf{x})\):...
VQGAN是一个可以在多种图像生成任务上(如无条件图像生成、图像补全、条件引导图像生成等)均有着良好性能的生成模型,其中最大的亮点在于超像素级别的图像生成(百万级像素)。
模型整体流程图如下:
整体上来说与VQVAE相近,但是将VQVAE中的PixelCNN替换为Transformer,同时在训练过程中加入PatchGAN的判别器做对抗损失。
损失函数
在VQVAE中,其损失函数可以表示如下:
\[
\begin{aligned}
L_{VQ}(E,G,Z) &= L_{rec} + \vert\vert\text{sg}[E(x)] -
z_q\vert\vert_2^2 +...
正常来说图像的像素值是离散的(在0到255之间),所以我们其实可以把图像看成是一个长为\(H\times W\times
C\)的序列,在预测当前像素值时,把之前的像素值作为已知信息参与到预测中,这样递归地逐像素预测下去,即自回归模型(autoregressive
model):
\[
p(x) = p(x_1)p(x_2\vert x_1)\dots p(x_n\vert x_1,x_2,\dots,x_{n-1})
\]
但上面这一过程是逐像素生成的,所以运行速度慢。VQ-VAE借鉴了自回归模型的思想,一个最明显的特征是通过encoder得到的隐变量是一个离散变量,将图像大小压缩到了...
LSS是早期一篇使用BEV来做自动驾驶感知的开山之作,后面的很多bev相关的算法都是基于LSS这一套框架做的改变。
BEV感知
BEV(Bird‘s’ Eye
View)感知,顾名思义是用一种俯瞰的视角来解决自动驾驶感知的问题。这个视角下的目标检测、分割、跟踪等问题都会很直接,而且针对于自动驾驶场景,目标的高度信息其实并没有那么重要,下游的决策规划之类的任务大多数也是用的这种自上而下的视图来做的,多个相机信息的融合会变得方便很多,所以bev下的自动驾驶方案会更加的简单直接。
对于纯视觉的自动驾驶来说,BEV方案的关键在于如何将相机前向视角的数据给转换或者编码到俯瞰视角下。目前来说主要有四...
单目3D检测在自动驾驶领域是一个重要且充满挑战的任务,目前的难点是如何准确对目标深度进行预测。MonoRCNN利用几何关系将深度估计问题解耦为目标实际高度和在图像上的投影高度问题。
作者给这个模型的使用限定了两个条件:
模型只预测目标的航向角,即yaw角
在训练和推理阶段,相机内参已知
Architecture
模型类似于Faster
R-CNN,backbone采用ResNet-50和FPN结合的形式,之后使用RoIAlign来截取目标特征,然后就接了三个分支:2D
head、3D attribute head、3D distance head。最终预测得到以下参数:
clas...
在2D实时目标检测框架yolo上引入一个轻量级立体匹配模块来实现高效的3D物体检测。大致结构如下图:
Anchors
对于3D目标检测,原本yolo针对2D物体的anchors需要重新设计,作者采用了12个参数来表示一个anchor:
\([x_{2d}, y_{2d}, w_{2d},
h_{2d}]\),表示2D目标框
\([c_x, c_y,
z]\)表示3D目标中心在左图像中的位置去
\([w_{3d}, h_{3d},
l_{3d}]\)表示3D目标框的宽、高、长
\([sin(2\alpha),
cos(2\alpha)]\)来评估目标的角度
这里作者发现\([sin\...