HuggingFace镜像/Janus-Pro-1B
模型介绍文件和版本分析
下载使用量0

1. 简介

Janus-Pro 是一个新颖的自回归框架,它统一了多模态理解与生成能力。 该框架通过将视觉编码解耦为独立路径,解决了先前方法的局限性,同时仍采用单一的统一 transformer 架构进行处理。这种解耦不仅缓解了视觉编码器在理解和生成角色之间的冲突,还增强了框架的灵活性。 Janus-Pro 超越了以往的统一模型,并达到或超越了特定任务模型的性能。 Janus-Pro 的简洁性、高灵活性和有效性使其成为下一代统一多模态模型的有力候选。

Github 仓库

image
image

2. 模型概述

Janus-Pro 是一个统一的理解与生成多模态大语言模型(MLLM),它为多模态理解和生成任务解耦了视觉编码过程。 Janus-Pro 基于 DeepSeek-LLM-1.5b-base/DeepSeek-LLM-7b-base 构建。

在多模态理解方面,它使用 SigLIP-L 作为视觉编码器,支持 384 x 384 的图像输入。对于图像生成,Janus-Pro 使用来自 此处 的 tokenizer,下采样率为 16。

3. 使用示例

单图像推理

以下是单图像视觉理解的示例。

import torch  
from PIL import Image  
import requests  
from transformers import JanusForConditionalGeneration, JanusProcessor  

model_id = "deepseek-community/Janus-Pro-1B"

# Prepare input for generation
messages = [
    {
        "role": "user",
        "content": [
            {'type': 'image', 'url': 'http://images.cocodataset.org/val2017/000000039769.jpg'},
            {'type': 'text', 'text': "What do you see in this image?"}
        ]
    },
]

# Set generation mode to 'text' to perform text generation
processor = JanusProcessor.from_pretrained(model_id)
model = JanusForConditionalGeneration.from_pretrained(
    model_id, torch_dtype=torch.bfloat16, device_map="auto"
)

inputs = processor.apply_chat_template(
    messages,
    add_generation_prompt=True,
    generation_mode="text",
    tokenize=True,
    return_dict=True,
    return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)

output = model.generate(**inputs, max_new_tokens=40, generation_mode='text', do_sample=True)
text = processor.decode(output[0], skip_special_tokens=True)
print(text)

文本转图像生成

Janus 也可以根据提示词生成图像,只需按如下所示将生成模式设置为 image 即可。

import torch
from transformers import JanusForConditionalGeneration, JanusProcessor

model_id = "deepseek-community/Janus-Pro-1B"

# Load processor and model
processor = JanusProcessor.from_pretrained(model_id)
model = JanusForConditionalGeneration.from_pretrained(
    model_id, torch_dtype=torch.bfloat16, device_map="auto"
)

messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "A dog running under the rain."}
        ]
    }
]

# Apply chat template
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(
    text=prompt,
    generation_mode="image",
    return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)

# Set number of images to generate
model.generation_config.num_return_sequences = 2

outputs = model.generate(
    **inputs,
    generation_mode="image",
    do_sample=True,
    use_cache=True
)

# Decode and save images
decoded_image = model.decode_image_tokens(outputs)
images = processor.postprocess(list(decoded_image.float()), return_tensors="PIL.Image.Image")

for i, image in enumerate(images["pixel_values"]):
    image.save(f"image{i}.png")

4. 许可协议

本代码仓库基于 MIT 许可协议 进行许可。Janus-Pro 模型的使用受 深度求索模型许可协议 约束。

5. 引用

@article{chen2025janus,
  title={Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling},
  author={Chen, Xiaokang and Wu, Zhiyu and Liu, Xingchao and Pan, Zizheng and Liu, Wen and Xie, Zhenda and Yu, Xingkai and Ruan, Chong},
  journal={arXiv preprint arXiv:2501.17811},
  year={2025}
}

6. 联系方式

如您有任何疑问,请提交 issue 或通过邮箱 service@deepseek.com 与我们联系。