DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro. Лучше ли он, чем Dall-e 3?

—

от автора

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

Модель R-1 от DeepSeek в последние несколько дней попала в заголовки мировых СМИ. Это доступная альтернатива модели o1 от OpenAI с открытым исходным кодом. Но еще до того, как шумиха вокруг R-1 улеглась, китайский стартап представил еще одну ИИ-модель с открытым исходным кодом под названием Janus-Pro.

DeepSeek утверждает, что Janus-Pro 7B превосходит Dall-E 3 и Stable Diffusion от OpenAI в нескольких бенчмарках. Но так ли она хороша на самом деле? Соответствует ли она заявленным характеристикам, или это всего лишь очередная модель, пользующаяся шумихой вокруг ИИ?

Давайте узнаем.

Что такое Janus-Pro?

Говоря простым языком, Janus-Pro — это мощная ИИ-модель, способная понимать изображения и текст, а также создавать изображения на основе текстовых описаний.

Janus-Pro — это улучшенная версия модели Janus, разработанная для унифицированного мультимодального понимания и генерации. Она имеет лучший метод обучения, больше данных и более крупную модель. Кроме того, она обеспечивает более стабильные результаты для коротких промптов, улучшенное визуальное качество, более подробные детали и возможность генерировать простой текст.

Посмотрите на несколько примеров ниже:

Промпт: The face of a beautiful girl

Изображение от DeepSeek

Изображение от DeepSeek

Новая модель также лучше справляется с рендерингом текстов.

Промпт: 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.

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

Серия Janus-Pro включает в себя два размера моделей: 1 миллиард и 7 миллиардов, показывая масштабируемость метода визуального кодирования и декодирования. Разрешение изображения, генерируемого обеими моделями, составляет 384 × 384.

Что касается коммерческого лицензирования, то данная модель доступна с разрешительной лицензией как для научного, так и для коммерческого использования.

Технические детали о Janus-Pro

Janus-Pro использует отдельные методы визуального кодирования для задач мультимодального понимания и визуальной генерации. Такая структура направлена на смягчение конфликтов между этими двумя задачами и повышение общей производительности.

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

Для мультимодального понимания Janus-Pro использует кодировщик SigLIP для извлечения высокоразмерных семантических признаков из изображений, которые затем сопоставляются с входным пространством LLM с помощью адаптера понимания.

Для визуальной генерации модель использует токенизатор VQ для преобразования изображений в дискретные идентификаторы, которые затем отображаются на входное пространство LLM с помощью адаптера генерации.

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

При выполнении инструкций по преобразованию текста в изображение Janus-Pro-7B набирает 0,80 балла в бенчмарке GenEval, опережая другие модели, такие как Dall-E 3 от OpenAI и Stability AI от Stable Diffusion 3 Medium.

Кроме того, Janus-Pro-7B набирает 84,19 балла в DPG-Bench, превосходя все другие методы и демонстрируя свою способность следовать четким инструкциям при генерации изображения из текста.

Лучше ли Janus-Pro, чем Dall-E 3 или Stable Diffusion?

Согласно внутренним бенчмаркам DeepSeek, модели Dall-E 3 и Stable Diffusion получили меньше баллов в бенчмарках GenEval и DPG-Bench.

Но я принимаю эту информацию с долей сомнения из-за того, как выглядят образцы изображений. Лучший способ доказать это — провести собственные тесты. Давайте посмотрим на некоторые примеры ниже:

Промпт: A photo of a herd of red sheep on a green field.

Janus-Pro

Janus-Pro
Dall-E 3

Dall-E 3

Промпт: 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.

Janus-Pro

Janus-Pro
Dall-E 3

Dall-E 3

Промпт: An image of a little boy holding a white board with the text “AI is awesome!”

Janus-Pro

Janus-Pro
Dall-E 3

Dall-E 3

Судя по приведенным выше примерам, Dall-E 3 явно работает лучше, чем Janus Pro. Пропорции лиц и тел на выходе Janus Pro заметно нарушены, а примеры рендеринга текста говорят о том, что и в этой области он испытывает трудности.

Вполне возможно, что я что-то упускаю — возможно, для улучшения результатов требуются особые параметры или тонкая настройка. Однако при настройках по умолчанию результат кажется неудовлетворительным.

Как получить доступ к Janus-Pro?

DeepSeek выпустила Janus в открытый доступ на HuggingFace, чтобы поддержать более широкий и разнообразный спектр исследований как в научных, так и в коммерческих сообществах.

Обратите внимание, что модель Janus-Pro с 7 миллиардами параметров может съесть почти 15 гигабайт вашей внутренней памяти.

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

Если вы не хотите запускать модель на собственном оборудовании, вы можете просто запустить демо-версию Gradio на HuggingFace.

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

Пользоваться им довольно просто. Просто опишите изображение, которое вы хотите сгенерировать, и нажмите на кнопку «Generate image». Скорость генерации зависит от количества пользователей, одновременно использующих приложение.

Также вы можете попробовать функцию мультимодального понимания, загрузив изображение и попросив ИИ описать его. Вот пример:

Промпт: Explain this meme

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

DeepSeek выпустила собственный ИИ-генератор изображений Janus-Pro

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 пикселей. Кроме того, относительно низкое разрешение для генерации изображений в сочетании с потерями при восстановлении, вызванными токенизатором зрения, может привести к тому, что изображения не будут обладать той степенью детализации, которую ожидают многие пользователи.

Тем не менее, быстрое появление таких моделей с открытым исходным кодом, как Janus-Pro, свидетельствует о том, что DeepSeek уже позиционирует себя как грозного разрушителя в ИИ-гонке. Несмотря на существующие ограничения по качеству, их стремление к доступным, открытым инновациям, несомненно, заставит лидеров отрасли искать способы адаптации.


ссылка на оригинал статьи https://habr.com/ru/articles/877546/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *