一、PixelRNN
PixelRNN 是一种基于循环神经网络(RNN)的像素级生成模型,通过逐个像素地生成图像来构建完整的图像,其核心思想是将图像中的像素视为序列,并利用 RNN 的能力来捕捉像素之间的依赖关系。
- 序列生成:PixelRNN 按像素的行列顺序生成图像,每次生成一个像素,并将其作为下一个像素的上下文信息。
- 条件概率:对于每个像素,PixelRNN 根据之前生成的所有像素来预测当前像素的条件概率分布。
- LSTM 单元:PixelRNN 使用长短期记忆(LSTM)单元来捕捉像素之间的长期依赖关系。这些 LSTM 层在状态中使用 LSTM 单元,并采用卷积来同时计算数据中空间维度的所有状态。
- 二维结构:PixelRNN 的二维结构确保信号在左右和上下方向上都能很好地传播,这对于捕捉图像中的对象和场景理解至关重要。
- 残差连接:为了提高深层网络的训练效果,PixelRNN 在 LSTM 层周围引入了残差连接。
二、PixelCNN
PixelCNN 是一种基于卷积神经网络(CNN)的像素级生成模型,它使用掩码卷积来捕捉像素之间的依赖关系。
- 掩码卷积:PixelCNN 使用掩码卷积来确保在生成每个像素时只考虑前面的像素,而不包括未来的像素。这种掩码卷积分为 A 型和 B 型,分别对应不同的上下文信息。
- 条件概率:PixelCNN 根据前面的像素输出当前像素的条件概率分布,类似于 PixelRNN,但使用 CNN 代替 RNN 来构建这种分布。
- 并行计算:与 PixelRNN 不同,PixelCNN 在训练阶段可以并行处理所有像素,因为卷积操作可以并行执行,这使得 PixelCNN 在训练时比 PixelRNN 更高效。
- 残差块:PixelCNN 包含多个残差块,这些残差块由 1x1 和 3x3 的掩码卷积层组成,有助于模型捕捉局部特征并提高训练稳定性。
- 多通道处理:PixelCNN 还考虑了 RGB 三个通道之间的相互影响,每个像素的三个颜色通道都依赖于其他通道以及所有先前生成的像素。