Views
No views yet
1import torch
2from PIL import Image
3import requests
4from transformers import JanusForConditionalGeneration, JanusProcessor
5
6model_id = "deepseek-community/Janus-Pro-7B"
7
8# Prepare input for generation
9messages = [
10 {
11 "role": "user",
12 "content": [
13 {'type': 'image', 'url': 'http://images.cocodataset.org/val2017/000000039769.jpg'},
14 {'type': 'text', 'text': "What do you see in this image?"}
15 ]
16 },
17]
18
19# Set generation mode to 'text' to perform text generation
20processor = JanusProcessor.from_pretrained(model_id)
21model = JanusForConditionalGeneration.from_pretrained(
22 model_id, torch_dtype=torch.bfloat16, device_map="auto"
23)
24
25inputs = processor.apply_chat_template(
26 messages,
27 add_generation_prompt=True,
28 generation_mode="text",
29 tokenize=True,
30 return_dict=True,
31 return_tensors="pt"
32).to(model.device, dtype=torch.bfloat16)
33
34output = model.generate(**inputs, max_new_tokens=40, generation_mode='text', do_sample=True)
35text = processor.decode(output[0], skip_special_tokens=True)
36print(text)image as shown below.1import torch
2from transformers import JanusForConditionalGeneration, JanusProcessor
3
4model_id = "deepseek-community/Janus-Pro-7B"
5
6# Load processor and model
7processor = JanusProcessor.from_pretrained(model_id)
8model = JanusForConditionalGeneration.from_pretrained(
9 model_id, torch_dtype=torch.bfloat16, device_map="auto"
10)
11
12messages = [
13 {
14 "role": "user",
15 "content": [
16 {"type": "text", "text": "A dog running under the rain."}
17 ]
18 }
19]
20
21# Apply chat template
22prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
23inputs = processor(
24 text=prompt,
25 generation_mode="image",
26 return_tensors="pt"
27).to(model.device, dtype=torch.bfloat16)
28
29# Set number of images to generate
30model.generation_config.num_return_sequences = 2
31
32outputs = model.generate(
33 **inputs,
34 generation_mode="image",
35 do_sample=True,
36 use_cache=True
37)
38
39# Decode and save images
40decoded_image = model.decode_image_tokens(outputs)
41images = processor.postprocess(list(decoded_image.float()), return_tensors="PIL.Image.Image")
42
43for i, image in enumerate(images["pixel_values"]):
44 image.save(f"image{i}.png")@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}
}