AIGC: MaskGIT (Masked Generative Image Transformer) 笔记
论文详情
MaskGIT: Masked Generative Image Transformer
Huiwen Chang, Han Zhang, Lu Jiang, Ce Liu, William T. Freeman
官方的 Colab Demo: https://colab.research.google.com/github/google-research/maskgit/blob/main/MaskGIT_demo.ipynb
ImageGPT 工作机制
先简单介绍一下 ImageGPT (Generative Pretraining From Pixels) 的工作机制。ImageGPT 工作机制分为两步——
将图像转换为一系列的 Token
根据之前的 Token,迭代生成新的 Token (利用 Maximum Likelihood Estimation / Negative Log-likelihood Minimization)

Autoregressive 时,目标为
Bert 时,目标为
以上流程的弊端:
不符合人类绘图的逻辑
序列长度增长迅速,很容易形成一个特别长的序列
生成时间慢
长期的关联性弱
难以完成一些特定的任务(如 impainting)
MaskGIT 工作机制
先利用 VQ-encoder 将图像转化为 token 序列 , N 代表了序列长度。
创建一个二元遮罩 .
被遮罩的地方,使用一个特殊的 [MASK] Token,并且被遮罩的序列用 表示。
目标依旧是 negative log-likelihood minimization,即:
生成图像的步骤如下:
输入遮罩后的序列
, 模型输出一个概率
, K 为 codebook 的大小
根据第 i 个被遮罩的"像素"的概率
, 从 codebook 中采样一个 token, 记录其 condifence score, 未被遮罩的地方分数为 1.0
根据一个 mask scheduling function γ,计算下一步的序列中要被遮罩的 token 的总数 n
根据第二步的 condifence score, 遮罩 n 个 token
迭代执行以上步骤


一些细节性的东西省去不写了,效果图和更多细节参见原论文