Show-o:集成了多模态理解和生成的统一 Transformer 模型,处理广泛的视觉语言任务

202 阅读5分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. Show-o 是一个集成了多模态理解和生成的统一 Transformer 模型。
  2. 它能够处理包括视觉问答、文本到图像生成等在内的广泛视觉语言任务。
  3. Show-o 在多模态理解和生成基准测试中展现出与现有专门模型相当或更优的性能。

Show-o 是什么

showo.png

Show-o 是集成了多模态理解和生成的统一 Transformer 模型。通过结合自回归和离散扩散建模,能灵活处理包括视觉问答、文本到图像生成、文本引导的修复和扩展,混合模态生成在内的广泛视觉语言任务。

Show-o 的主要功能

  • 视觉问题回答(VQA):能理解图像内容回答有关图像的问题。
  • 文本到图像生成:根据文本描述生成相应的图像,支持创意和多样化的视觉输出。
  • 文本引导的图像修复(Inpainting):能识别图像中的缺失部分,根据文本提示进行修复。
  • 文本引导的图像扩展(Extrapolation):在图像中添加新元素或扩展图像内容,基于文本描述进行扩展。
  • 混合模态生成:结合文本描述生成视频关键帧,为长视频生成提供可能性。
  • 多模态理解和生成:整合视觉和语言信息,处理复杂的多模态任务。

Show-o 的技术原理

  • 自回归和离散扩散建模的统一:Show-o 模型创新性地将自回归和离散扩散建模结合在一起,适应性地处理各种不同和混合模态的输入和输出。
  • 基于预训练的大型语言模型(LLM):Show-o 的架构基于预训练的 LLM,在每个注意力层前添加了 QK-Norm 操作以提高模型的稳定性和性能。
  • 离散图像标记:Show-o 采用离散去噪扩散来模拟离散图像标记,简化了额外文本编码器的需求。
  • 统一的提示策略:Show-o 设计了一种统一的提示策略,将图像和文本标记化后形成输入序列,适应不同类型的任务,如多模态理解、文本到图像的生成等。
  • 全注意力机制:Show-o 引入了全注意力机制,能根据输入序列的类型自适应地应用因果注意力或全注意力。文本标记使用因果注意力,图像标记使用全注意力,支持每个图像标记与序列中的所有其他标记交互。
  • 训练目标:Show-o 采用两种学习目标:下一令牌预测(NTP)和遮罩令牌预测(MTP),同时进行自回归和(离散)扩散建模。
  • 混合模态生成:Show-o 展现了混合模态生成的潜力,例如基于文本描述和视频关键帧的生成,为长视频生成提供了新的可能性。
  • 减少采样步骤:与自回归图像生成相比,Show-o 所需的采样步骤减少了约 20 倍,减少了计算资源的消耗,提高了模型的应用灵活性。

如何运行 Show-o

环境设置

首先,设置环境:

pip3 install -r requirements.txt

登录你的 wandb 账户:

wandb login <your wandb keys>

多模态理解推理示例

运行多模态理解推理示例,并在 wandb 上查看结果:

python3 inference_mmu.py config=configs/showo_demo_w_clip_vit_512x512.yaml \
max_new_tokens=100 \
mmu_image_root=./mmu_validation question='Please describe this image in detail. *** Do you think the image is unusual or not?'

文本到图像生成推理示例

运行文本到图像生成推理示例,并在 wandb 上查看结果(分辨率为 512x512):

python3 inference_t2i.py config=configs/showo_demo_512x512.yaml \
batch_size=1 validation_prompts_file=validation_prompts/showoprompts.txt \
guidance_scale=5 generation_timesteps=50 \
mode='t2i'

文本引导的图像修复推理示例

运行文本引导的图像修复推理示例,并在 wandb 上查看结果(分辨率为 256x256):

python3 inference_t2i.py config=configs/showo_demo.yaml \
batch_size=1 \
guidance_scale=1.75 generation_timesteps=16 \
mode='inpainting' prompt='A blue sports car with sleek curves and tinted windows, parked on a bustling city street.' \
image_path=./inpainting_validation/bus.jpg inpainting_mask_path=./inpainting_validation/bus_mask.webp

文本引导的图像扩展推理示例

运行文本引导的图像扩展推理示例,并在 wandb 上查看结果(分辨率为 256x256):

python3 inference_t2i.py config=configs/showo_demo.yaml \
batch_size=1 \
guidance_scale=1.75 generation_timesteps=16 \
mode='extrapolation' extra_direction='left *** left *** left *** right *** right *** right' offset=0 prompt='a serene natural landscape featuring a clear, blue lake surrounded by lush green trees. *** a serene natural landscape featuring a clear, blue lake surrounded by lush green trees. *** a serene natural landscape featuring a clear, blue lake surrounded by lush green trees. *** a serene natural landscape featuring a clear, blue lake surrounded by lush green trees. *** a serene natural landscape featuring a clear, blue lake surrounded by lush green trees. *** a serene natural landscape featuring a clear, blue lake surrounded by lush green trees.' \
image_path=./inpainting_validation/alpine_lake.jpg

资源

  • 关注并回复公众号【59】或【Show-o】获取相关项目资源。

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦