- BrainTools - https://www.braintools.ru -
Модель R-1 от DeepSeek в последние несколько дней попала в заголовки мировых СМИ. Это доступная альтернатива модели o1 от OpenAI с открытым исходным кодом. Но еще до того, как шумиха вокруг R-1 улеглась, китайский стартап представил еще одну ИИ-модель с открытым исходным кодом под названием Janus-Pro.
DeepSeek утверждает, что Janus-Pro 7B превосходит Dall-E 3 и Stable Diffusion от OpenAI в нескольких бенчмарках. Но так ли она хороша на самом деле? Соответствует ли она заявленным характеристикам, или это всего лишь очередная модель, пользующаяся шумихой вокруг ИИ?
Давайте узнаем.
Говоря простым языком, Janus-Pro – это мощная ИИ-модель, способная понимать изображения и текст, а также создавать изображения на основе текстовых описаний.
Janus-Pro – это улучшенная версия модели Janus, разработанная для унифицированного мультимодального понимания и генерации. Она имеет лучший метод обучения [1], больше данных и более крупную модель. Кроме того, она обеспечивает более стабильные результаты для коротких промптов, улучшенное визуальное качество, более подробные детали и возможность генерировать простой текст.
Посмотрите на несколько примеров ниже:
Промпт: The face of a beautiful girl
Новая модель также лучше справляется с рендерингом текстов.
Промпт: A clear image of a blackboard with a clean, dark green surface and the word ‘Hello’ written precisely and legibly in the center with bold, white chalk letters.
Серия Janus-Pro включает в себя два размера моделей: 1 миллиард и 7 миллиардов, показывая масштабируемость метода визуального кодирования и декодирования. Разрешение изображения, генерируемого обеими моделями, составляет 384 × 384.
Что касается коммерческого лицензирования, то данная модель доступна с разрешительной лицензией как для научного, так и для коммерческого использования.
Janus-Pro использует отдельные методы визуального кодирования для задач мультимодального понимания и визуальной генерации. Такая структура направлена на смягчение конфликтов между этими двумя задачами и повышение общей производительности.
Для мультимодального понимания Janus-Pro использует кодировщик SigLIP [2] для извлечения высокоразмерных семантических признаков из изображений, которые затем сопоставляются с входным пространством LLM с помощью адаптера понимания.
Для визуальной генерации модель использует токенизатор VQ [3] для преобразования изображений в дискретные идентификаторы, которые затем отображаются на входное пространство LLM с помощью адаптера генерации.
При выполнении инструкций по преобразованию текста в изображение Janus-Pro-7B набирает 0,80 балла в бенчмарке GenEval [4], опережая другие модели, такие как Dall-E 3 от OpenAI и Stability AI от Stable Diffusion 3 Medium.
Кроме того, Janus-Pro-7B набирает 84,19 балла в DPG-Bench [5], превосходя все другие методы и демонстрируя свою способность следовать четким инструкциям при генерации изображения из текста.
Согласно внутренним бенчмаркам DeepSeek, модели Dall-E 3 и Stable Diffusion получили меньше баллов в бенчмарках GenEval и DPG-Bench.
Но я принимаю эту информацию с долей сомнения из-за того, как выглядят образцы изображений. Лучший способ доказать это – провести собственные тесты. Давайте посмотрим на некоторые примеры ниже:
Промпт: A photo of a herd of red sheep on a green field.
Промпт: A beautiful 35 year old woman of average build wearing a pink tulle dress sits on the ground in front of the Eiffel Tower. Soft light illuminates her face as she poses for a photo with Paris in the background in Chanel style. Her shoulder length brown hair is styled in loose waves that fall to one side.
Промпт: An image of a little boy holding a white board with the text “AI is awesome!”
Судя по приведенным выше примерам, Dall-E 3 явно работает лучше, чем Janus Pro. Пропорции лиц и тел на выходе Janus Pro заметно нарушены, а примеры рендеринга текста говорят о том, что и в этой области он испытывает трудности.
Вполне возможно, что я что-то упускаю – возможно, для улучшения результатов требуются особые параметры или тонкая настройка. Однако при настройках по умолчанию результат кажется неудовлетворительным.
DeepSeek выпустила Janus в открытый доступ на HuggingFace, чтобы поддержать более широкий и разнообразный спектр исследований как в научных, так и в коммерческих сообществах.
Janus-1.3B: Hugging Face [6]
JanusFlow-1.3B: Hugging Face [7]
Janus-Pro-1B: Hugging Face [8]
Janus-Pro-7B: Hugging Face [9] link
Обратите внимание [10], что модель Janus-Pro с 7 миллиардами параметров может съесть почти 15 гигабайт вашей внутренней памяти [11].
Если вы не хотите запускать модель на собственном оборудовании, вы можете просто запустить демо-версию Gradio на HuggingFace [12].
Пользоваться им довольно просто. Просто опишите изображение, которое вы хотите сгенерировать, и нажмите на кнопку «Generate image». Скорость генерации зависит от количества пользователей, одновременно использующих приложение.
Также вы можете попробовать функцию мультимодального понимания, загрузив изображение и попросив ИИ описать его. Вот пример:
Промпт: Explain this meme
This image is a humorous comparison between two types of visual encoding methods, using the popular “buff Doge vs. Cheems” meme format. 1. **Decoupling Visual Encoding (Buff Doge)**: – The left side of the image shows a muscular, buff Doge, representing a strong and robust method of visual encoding. This could symbolize a more powerful or efficient approach to encoding visual information, such as deep learning models or advanced neural networks that can handle complex visual tasks.
2. **Single Visual Encoder (Cheems)**: – The right side of the image shows a smaller, less muscular Doge sitting down, representing a simpler or less powerful method of visual encoding. This could symbolize a traditional or less advanced approach, such as a single neural network or a basic encoding method that may not perform as well as more complex systems.
### Overall Meaning: The meme humorously contrasts the strength and efficiency of two different methods of visual encoding. The buff Doge represents a more advanced, powerful, and robust method, while the Cheems represents a simpler, less powerful one. This could be interpreted as a commentary on the evolution of visual encoding techniques, with deep learning and neural networks being seen as more advanced and effective compared to traditional methods.
Он точен, и я вижу в нем отличный инструмент для автокапчи или добавления alt-текстов к фотографиям.
Разработчики могут скачать модель и запустить ее на своем компьютере. Вот пример фрагмента кода для генерирования изображения из текста:
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,
)
Я понимаю шумиху вокруг этой новой имиджевой модели. Люди утверждают, что это хорошая альтернатива Dall-E 3, но я с этим не согласен. Я сам пробовал Janus-Pro, но качество изображений оказалось не таким впечатляющим, как я думал.
Одно из ключевых ограничений – ограниченное разрешение – 384 × 384 пикселей. Кроме того, относительно низкое разрешение для генерации изображений в сочетании с потерями при восстановлении, вызванными токенизатором зрения [13], может привести к тому, что изображения не будут обладать той степенью детализации, которую ожидают многие пользователи.
Тем не менее, быстрое появление таких моделей с открытым исходным кодом, как Janus-Pro, свидетельствует о том, что DeepSeek уже позиционирует себя как грозного разрушителя в ИИ-гонке. Несмотря на существующие ограничения по качеству, их стремление к доступным, открытым инновациям, несомненно, заставит лидеров отрасли искать способы адаптации.
Автор: NeyroEntuziast
Источник [14]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/11643
URLs in this post:
[1] обучения: http://www.braintools.ru/article/5125
[2] кодировщик SigLIP: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdocs%2Ftransformers%2Fen%2Fmodel_doc%2Fsiglip&postId=1779972
[3] токенизатор VQ: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Farxiv.org%2Fabs%2F2212.03185&postId=1779972
[4] бенчмарке GenEval: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fgithub.com%2Fdjghosh13%2Fgeneval&postId=1779972
[5] DPG-Bench: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fgithub.com%2FTencentQQGYLab%2FELLA&postId=1779972
[6] Hugging Face: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdeepseek-ai%2FJanus-1.3B&postId=1779972
[7] Hugging Face: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdeepseek-ai%2FJanusFlow-1.3B&postId=1779972
[8] Hugging Face: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdeepseek-ai%2FJanus-Pro-1B&postId=1779972
[9] Hugging Face: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdeepseek-ai%2FJanus-Pro-7B&postId=1779972
[10] внимание: http://www.braintools.ru/article/7595
[11] памяти: http://www.braintools.ru/article/4140
[12] HuggingFace: https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fspaces%2Fdeepseek-ai%2FJanus-Pro-7B&postId=1779972
[13] зрения: http://www.braintools.ru/article/6238
[14] Источник: https://habr.com/ru/articles/877546/?utm_source=habrahabr&utm_medium=rss&utm_campaign=877546
Нажмите здесь для печати.