Janus Pro: إطلاق ديب سيك نموذج توليد الصور بالذكاء الاصطناعي 2025

أطلقت شركة DeepSeek الصينية الناشئة نموذجًا جديدًا لتوليد الصور باستخدام الذكاء الاصطناعي يُسمى Janus Pro، والذي يُعتبر تطورًا لنموذجها السابق Janus. يأتي هذا الإطلاق بعد فترة قصيرة من إطلاق نموذج R-1، الذي لاقى اهتمامًا عالميًا كبديل مفتوح المصدر ومنخفض التكلفة لنموذج o1 من OpenAI. يُقدم Janus Pro تحسينات كبيرة في توليد الصور من النصوص، مدعيًا تفوقه على نماذج شهيرة مثل Dall-E 3 من OpenAI وStable Diffusion من Stability AI. ولكن هل يُحقّق Janus Pro هذه الادعاءات؟ دعونا نستعرض التفاصيل.
جدول المحتويات
ما هو Janus Pro؟
Janus Pro هو نموذج ذكاء اصطناعي متعدد الوسائط (multimodal) قادر على فهم الصور والنصوص وإنشاء صور من أوصاف نصية. يُعتبر نسخة مُحسنة من نموذج Janus الأصلي، حيث يتميز بتحسينات في طريقة التدريب، وزيادة حجم البيانات، وتوسيع نطاق النموذج. كما يُقدّم Janus Pro نتائج أكثر استقرارًا للأوامر النصية القصيرة، مع تحسين جودة الصور المرئية، وإضافة تفاصيل أكثر ثراءً، والقدرة على توليد نصوص بسيطة.
على سبيل المثال، عند إدخال أمر نصي مثل “وجه فتاة جميلة”، يُنتج Janus Pro صورة أكثر تفصيلاً وجودة مقارنة بنموذج Janus الأصلي. كما يُظهر Janus Pro تحسنًا ملحوظًا في قدرته على عرض النصوص داخل الصور، مثل إنشاء صورة لسبورة خضراء داكنة مكتوب عليها كلمة “Hello” بخط أبيض واضح.
التفاصيل التقنية لـ Janus Pro
يعتمد Janus-Pro على طرق ترميز مرئي منفصلة لمهام فهم الوسائط المتعددة وتوليد الصور. هذا التصميم يهدف إلى تقليل التعارض بين هذه المهام وتحسين الأداء العام.
- لفهم الوسائط المتعددة، يستخدم Janus Pro مُرمِّز SigLIP لاستخراج السمات الدلالية عالية الأبعاد من الصور، والتي يتم تحويلها إلى مساحة إدخال النموذج اللغوي الكبير (LLM) عبر مُحول فهم.
- لتوليد الصور، يستخدم النموذج مُرمِّز VQ لتحويل الصور إلى رموز منفصلة، والتي يتم تحويلها أيضًا إلى مساحة إدخال النموذج اللغوي الكبير عبر مُحول توليد.
في اختبارات تقييم الأداء، حقق Janus Pro 7B درجة 0.80 على معيار GenEval، متفوقًا على نماذج مثل Dall-E 3 وStable Diffusion 3 Medium. كما حقق درجة 84.19 على معيار DPG-Bench، مما يُظهر قدرته على اتباع التعليمات المعقدة لتوليد الصور من النصوص.
هل Janus Pro أفضل من Dall-E 3 وStable Diffusion؟
وفقًا لمعايير DeepSeek الداخلية، تفوّق Janus Pro على Dall-E 3 وStable Diffusion في اختبارات GenEval وDPG-Bench. ومع ذلك، فإن هذه الادعاءات تحتاج إلى اختبارات عملية لتأكيدها. عند مقارنة النتائج بشكل عملي، يبدو أن Dall-E 3 لا يزال يتفوق في جودة الصور الناتجة، خاصة في تفاصيل الوجوه ونسب الجسم، بالإضافة إلى قدرته على عرض النصوص بشكل أكثر وضوحًا.
على سبيل المثال، عند إدخال أمر نصي مثل “صورة لقطيع من الأغنام الحمراء في حقل أخضر”، كانت نتائج Dall-E 3 أكثر واقعية وتفصيلاً مقارنة بـ Janus Pro. كما أظهر Janus Pro صعوبة في عرض النصوص بشكل واضح، مثل صورة صبي صغير يمسك لوحة مكتوب عليها “AI is awesome!”.

كيفية الوصول إلى Janus Pro؟
أتاحت DeepSeek نماذج Janus Pro للجمهور عبر منصة HuggingFace لدعم البحث الأكاديمي والتجاري. تتوفر عدة إصدارات من النموذج، بما في ذلك:
- Janus-1.3B
- JanusFlow-1.3B
- Janus-Pro-1B
- Janus-Pro-7B
يُذكر أن نموذج Janus Pro 7B يحتاج إلى حوالي 15 جيجابايت من الذاكرة الداخلية لتشغيله. بالنسبة لأولئك الذين لا يرغبون في تشغيل النموذج على أجهزتهم، يمكنهم استخدام واجهة Gradio على HuggingFace لتوليد الصور بسهولة.
بينما يُظهر Janus Pro تحسينات كبيرة في توليد الصور من النصوص، خاصة في التفاصيل الدقيقة واستقرار النتائج، فإنه لا يزال يتفوق عليه Dall-E 3 في جودة الصور النهائية، خاصة في تفاصيل الوجوه وعرض النصوص. ومع ذلك، يُعتبر Janus Pro إضافة قوية لمجال الذكاء الاصطناعي، خاصة مع كونه مفتوح المصدر ومتاحًا للاستخدام التجاري والأكاديمي.
بالنسبة لأولئك الذين يبحثون عن أفضل أداة لتوليد الصور بالذكاء الاصطناعي، يُوصى باستخدام Flux Pro 1.1 Ultra من Flux Labs AI، والذي يُعتبر حاليًا الأفضل في السوق.
بالنسبة للمطورين، يمكنك تنزيل النموذج وتشغيله على القرص المحلي لديك. فيما يلي مثال على مقتطف من كود الاستدلال لتوليد صورة من النص:
import os
import PIL.Image
import torch
import numpy as np
from transformers import AutoModelForCausalLM
from janus.models import MultiModalityCausalLM, VLChatProcessor
# specify the path to the model
model_path = "deepseek-ai/Janus-Pro-7B"
vl_chat_processor: VLChatProcessor = VLChatProcessor.from_pretrained(model_path)
tokenizer = vl_chat_processor.tokenizer
vl_gpt: MultiModalityCausalLM = AutoModelForCausalLM.from_pretrained(
model_path, trust_remote_code=True
)
vl_gpt = vl_gpt.to(torch.bfloat16).cuda().eval()
conversation = [
{
"role": "<|User|>",
"content": "A stunning princess from kabul in red, white traditional clothing, blue eyes, brown hair",
},
{"role": "<|Assistant|>", "content": ""},
]
sft_format = vl_chat_processor.apply_sft_template_for_multi_turn_prompts(
conversations=conversation,
sft_format=vl_chat_processor.sft_format,
system_prompt="",
)
prompt = sft_format + vl_chat_processor.image_start_tag
@torch.inference_mode()
def generate(
mmgpt: MultiModalityCausalLM,
vl_chat_processor: VLChatProcessor,
prompt: str,
temperature: float = 1,
parallel_size: int = 16,
cfg_weight: float = 5,
image_token_num_per_image: int = 576,
img_size: int = 384,
patch_size: int = 16,
):
input_ids = vl_chat_processor.tokenizer.encode(prompt)
input_ids = torch.LongTensor(input_ids)
tokens = torch.zeros((parallel_size*2, len(input_ids)), dtype=torch.int).cuda()
for i in range(parallel_size*2):
tokens[i, :] = input_ids
if i % 2 != 0:
tokens[i, 1:-1] = vl_chat_processor.pad_id
inputs_embeds = mmgpt.language_model.get_input_embeddings()(tokens)
generated_tokens = torch.zeros((parallel_size, image_token_num_per_image), dtype=torch.int).cuda()
for i in range(image_token_num_per_image):
outputs = mmgpt.language_model.model(inputs_embeds=inputs_embeds, use_cache=True, past_key_values=outputs.past_key_values if i != 0 else None)
hidden_states = outputs.last_hidden_state
logits = mmgpt.gen_head(hidden_states[:, -1, :])
logit_cond = logits[0::2, :]
logit_uncond = logits[1::2, :]
logits = logit_uncond + cfg_weight * (logit_cond-logit_uncond)
probs = torch.softmax(logits / temperature, dim=-1)
next_token = torch.multinomial(probs, num_samples=1)
generated_tokens[:, i] = next_token.squeeze(dim=-1)
next_token = torch.cat([next_token.unsqueeze(dim=1), next_token.unsqueeze(dim=1)], dim=1).view(-1)
img_embeds = mmgpt.prepare_gen_img_embeds(next_token)
inputs_embeds = img_embeds.unsqueeze(dim=1)
dec = mmgpt.gen_vision_model.decode_code(generated_tokens.to(dtype=torch.int), shape=[parallel_size, 8, img_size//patch_size, img_size//patch_size])
dec = dec.to(torch.float32).cpu().numpy().transpose(0, 2, 3, 1)
dec = np.clip((dec + 1) / 2 * 255, 0, 255)
visual_img = np.zeros((parallel_size, img_size, img_size, 3), dtype=np.uint8)
visual_img[:, :, :] = dec
os.makedirs('generated_samples', exist_ok=True)
for i in range(parallel_size):
save_path = os.path.join('generated_samples', "img_{}.jpg".format(i))
PIL.Image.fromarray(visual_img[i]).save(save_path)
generate(
vl_gpt,
vl_chat_processor,
prompt,
)
قد يهمك:-
كيفية تثبيت واستخدام DeepSeek R-1 على الكمبيوتر؟
تنزيل DeepSeek V3 اخر اصدار مجانا
الخلاصة
بالرغم من الضجة الإعلامية حول نموذج Janus-Pro الجديد لتوليد الصور باستخدام الذكاء الاصطناعي، والذي يُوصف بأنه بديل جيد لنموذج Dall-E 3، إلا أن التجارب العملية تُظهر أن جودة الصور الناتجة عنه ليست بنفس المستوى المأمول. هناك عدة قيود تُقلل من فعاليته، منها:
- دقة الإدخال المحدودة: يتميز Janus-Pro بدقة إدخال تبلغ 384 × 384 فقط، مما يحد من قدرته على إنتاج صور عالية الجودة.
- فقدان التفاصيل: بسبب استخدام مُرمِّز مرئي (vision tokenizer) يعتمد على تحويل الصور إلى رموز منفصلة، تفقد الصور الناتجة بعض التفاصيل الدقيقة، مما يجعلها أقل وضوحًا مقارنة بنماذج أخرى مثل Dall-E 3.
- صعوبة عرض النصوص: يواجه Janus-Pro صعوبة في عرض النصوص داخل الصور بشكل واضح، وهو مجال لا يزال يتفوق فيه Dall-E 3.
ومع ذلك، فإن إطلاق نماذج مفتوحة المصدر مثل Janus-Pro يُظهر أن DeepSeek تُحاول أن تكون لاعبًا قويًا في سباق الذكاء الاصطناعي. هذه الخطوة تُشير إلى أن الشركة تُركز على جعل الابتكارات في مجال الذكاء الاصطناعي أكثر سهولة ووصولاً للجميع، مما يدفع الشركات الكبرى إلى التكيّف مع هذا التوجه الجديد.
في النهاية، بينما لا يزال Janus-Pro يحتاج إلى تحسينات ليكون منافسًا قويًا لنماذج مثل Dall-E 3، إلا أن ظهوره يُعتبر خطوة مهمة نحو تعزيز الابتكار المفتوح في مجال الذكاء الاصطناعي. قد لا يكون الأفضل حاليًا، ولكنه يُشير إلى مستقبل واعد حيث تصبح هذه التقنيات أكثر تقدمًا وانتشارًا.