Если вы пытались автоматизировать генерацию контента на Python, то наверняка бились головой о ту же стену: генерация изображений с текстом.
Но, кажется, эту боль наконец-то вылечили. Alibaba выпустили Qwen-Image — 20B модель, которая доступна через библиотеку diffusers
и, что самое главное, умеет рендерить текст. Корректно. На разных языках. С учетом перспективы.
Потенциально это новый мощный инструмент для скриптов, ботов и приложений. Давайте разберем, как интегрировать Qwen-Image в Python-проект.
Чем отличается Qwen-Image от других моделей?
Большинство моделей для генерации изображений "не видят" буквы так, как мы. Для них текст — это просто набор сложных визуальных паттернов, похожих на узоры или текстуры. Модель может выучить, как выглядит "форма" буквы 'A', но не понимает ее как лингвистическую единицу.
Поэтому, когда вы просите надпись, она пытается воспроизвести знакомые ей "закорючки", но без понимания их смысла и последовательности. Результат — та самая "нейроглифика", которая стала мемом.
Qwen-Image подходит к задаче иначе. Разработчики уделили особое внимание именно связке "визуальный образ + текст как осмысленная структура". Судя по примерам, они обучили модель не просто копировать формы букв, а понимать их как часть единого целого, корректно вписывая в общую композицию, стиль и даже перспективу.
[!NOTE] Ключ к успеху для нас — это нативная поддержка в библиотеке Diffusers. Это значит, что мы можем забыть про кривые API, ботов в Discord и прочие костыли. Мы можем импортировать пайплайн и генерировать изображения прямо в нашем Python-коде, как мы привыкли это делать с другими моделями.
Это открывает массу сценариев автоматизации, которые раньше были головной болью:
- Автоматическая генерация open-graph картинок для статей в блоге.
- Создание уникальных превью для видео на YouTube с динамическими заголовками.
- Прототипирование интерфейсов с реалистичными текстовыми метками.
- Разработка ботов (например, в Telegram), которые создают кастомные мемы или открытки по запросу пользователя.
- Массовая генерация креативов для A/B-тестирования в маркетинге.
По сути, Qwen-Image превращает diffusers
из инструмента для генерации абстрактных картинок в полноценный программный дизайн-комплекс.
Запускаем Qwen-Image в Python: пошаговая инструкция
Перейдем к практике. Модель доступна на Hugging Face и работает через библиотеку diffusers
. Вот что нужно сделать, чтобы запустить ее локально.
[!WARNING] Требования к железу: Модель весит 20B параметров. Для комфортной работы потребуется видеокарта NVIDIA с как минимум 16 ГБ VRAM. На картах с меньшим объемом памяти запуск возможен, но может быть медленным или потребовать дополнительных оптимизаций.
Шаг 1: Установка зависимостей
Сначала убедитесь, что у вас установлен Python (версии 3.8 и выше) и pip
. Затем ставим необходимые библиотеки. Разработчики рекомендуют устанавливать diffusers
прямо из репозитория git
, чтобы получить свежие обновления.
Откройте терминал и выполните:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install git+https://github.com/huggingface/diffusers
pip install transformers>=4.51.3 accelerate
torch
: Основная библиотека для глубокого обучения. Убедитесь, что устанавливаете версию с поддержкой CUDA.diffusers
&transformers
: Библиотеки от Hugging Face для работы с диффузионными моделями.accelerate
: Утилита для эффективного использования GPU.
Шаг 2: Код для генерации
Теперь создадим простой Python-скрипт для генерации нашего первого изображения.
# main.py
import torch
from diffusers import DiffusionPipeline
# Определяем устройство и тип данных
if torch.cuda.is_available():
device = "cuda"
torch_dtype = torch.bfloat16
else:
device = "cpu"
torch_dtype = torch.float32
# Загружаем модель
# Этот шаг может занять время при первом запуске, т.к. модель будет скачиваться
print("Загрузка модели... Это может занять несколько минут.")
pipe = DiffusionPipeline.from_pretrained(
"Qwen/Qwen-Image",
torch_dtype=torch_dtype
)
pipe = pipe.to(device)
print("Модель загружена.")
# Промпт с текстом
prompt = "A movie poster. The first row is the movie title, which reads 'Imagination Unleashed'. The second row is the movie subtitle, which reads 'Enter a world beyond your imagination'. The central visual features a sleek, futuristic computer."
# Магическая добавка для улучшения качества
positive_magic = " Ultra HD, 4K, cinematic composition."
full_prompt = prompt + positive_magic
# Негативный промпт (рекомендуется использовать, даже если пустой)
negative_prompt = " "
# Настройки генерации
seed = 42 # Можете поменять для получения разных результатов
width, height = 1664, 928 # Соотношение 16:9
generator = torch.Generator(device=device).manual_seed(seed)
print("Начало генерации изображения...")
# Запускаем генерацию
image = pipe(
prompt=full_prompt,
negative_prompt=negative_prompt,
width=width,
height=height,
num_inference_steps=50,
true_cfg_scale=4.0, # аналог guidance_scale
generator=generator
).images[0]
print("Генерация завершена.")
# Сохраняем результат
image.save("example_poster.png")
print("Изображение сохранено в example_poster.png")
Сохраните этот код в файл main.py
и запустите его из терминала командой python main.py
. После скачивания модели и выполнения скрипта в той же папке появится файл example_poster.png
.

Шаг 3: Улучшаем промпты с помощью Prompt Enhance
Одна из крутых фишек, которую предлагают разработчики Qwen, — это инструмент для "улучшения" промптов. По сути, это еще одна нейросеть (Qwen-Plus), которая берет ваш короткий запрос и превращает его в детализированный, богатый промпт, лучше понятный для Qwen-Image.
Чтобы этим воспользоваться, нужен API-ключ от DashScope (сервис Alibaba Cloud). Его можно получить в их личном кабинете.
Вот как модифицировать код, чтобы он сначала улучшал промпт, а потом генерировал картинку.
- Устанавливаем библиотеку DashScope:
pip install dashscope
- Создаем файл
prompt_utils.py
(код взят из официального репозитория):# prompt_utils.py import os import dashscope def api(prompt, model, kwargs={}): api_key = os.environ.get('DASHSCOPE_API_KEY') if not api_key: raise EnvironmentError("Переменная окружения DASHSCOPE_API_KEY не установлена") messages = [{'role': 'user', 'content': prompt}] response = dashscope.Generation.call( api_key=api_key, model=model, messages=messages, result_format='message' ) if response.status_code == 200: return response.output.choices[0].message.content else: raise Exception(f'Ошибка API: {response}') def rewrite(input_prompt): # Здесь должен быть системный промпт для улучшения, он довольно большой. # Для краткости, представим, что он уже здесь. # Полный код можно найти в репозитории Qwen-Image. system_prompt = "You are a Prompt optimizer..." # и так далее prompt = f"{system_prompt}\n\nUser Input: {input_prompt}\n\n Rewritten Prompt:" try: polished_prompt = api(prompt, model='qwen-plus') return polished_prompt.strip().replace("\n", " ") except Exception as e: print(f"Ошибка при улучшении промпта: {e}") return input_prompt # В случае ошибки возвращаем исходный промпт
- Обновляем
main.py
:# ... (импорты и загрузка модели как раньше) ... from prompt_utils import rewrite # Устанавливаем API-ключ как переменную окружения # export DASHSCOPE_API_KEY='ваш_ключ' (в терминале) prompt = "Милый котик сидит в саду" print("Улучшение промпта...") enhanced_prompt = rewrite(prompt) print(f"Улучшенный промпт: {enhanced_prompt}") # ... (далее генерация с enhanced_prompt) ...
Такой подход позволяет строить приложения, где пользователь вводит простую идею, а ваш Python-скрипт сам обогащает ее деталями перед отправкой в diffusers
.
Понравился материал?
Ваша поддержка — это энергия для новых статей и проектов. Спасибо, что читаете!
Вердикт: Стоит ли игра свеч?
Сильные стороны Qwen-Image:
- Рендеринг текста: Это абсолютный топ. На данный момент ни одна общедоступная модель не справляется с текстом так же хорошо, особенно с кириллицей и сложными языками. Если ваша основная задача — генерация изображений с надписями, Qwen-Image — ваш выбор №1 без каких-либо оговорок.
- Понимание сложных промптов: Модель отлично разбирает длинные, детализированные запросы с множеством объектов и их взаимосвязей. Пример с инфографикой, где нужно было разместить 6 блоков текста с иконками, это наглядно демонстрирует.
- Хорошая фотореалистичность и стилизация: Хотя акцент сделан на тексте, модель не уступает конкурентам в генерации качественных изображений в разных стилях, от фотореализма до аниме.
- Открытость: В отличие от закрытой Midjourney, Qwen-Image доступна для локального запуска, что дает полный контроль над процессом и возможность для дальнейшей доработки (fine-tuning).
Слабые стороны и нюансы:
- Высокие требования к железу: 20B параметров — это серьезно. Без мощной видеокарты с большим объемом VRAM локальный запуск будет либо невозможен, либо мучительно долог. Это отсекает значительную часть аудитории энтузиастов.
- Скорость генерации: Даже на топовом железе генерация занимает ощутимое время, уступая по скорости оптимизированным моделям вроде SDXL Turbo.
- Экосистема: Пока что вокруг модели нет такой развитой экосистемы, как у Stable Diffusion, с тысячами готовых LoRA-моделей, плагинов и огромным сообществом. Но это лишь вопрос времени.
[!TIP] Итоговый вывод: Qwen-Image — это хороший инструмент в арсенале Python-разработчика, занимающегося AI-генерацией. Она не заменяет SDXL для задач, где нужна экосистема LoRA, но становится стандартом де-факто для всего, что связано с текстом на изображениях.
Но если же текст для вас не важен, и вы цените скорость и разнообразие готовых моделей, то привычные инструменты пока останутся более удобным выбором.
Но факт остается фактом: Alibaba сделали большой шаг вперед.