Эй, добро пожаловать!

Я создал «Петру, поэта». Он автоматически генерирует изображение с использованием модели MidJourney и, наконец, текст с использованием модели Давинчи GPT-3.

Вот как выглядит запуск моего скрипта 3 раза подряд с не лучшими результатами:

Результат-витрина-1

Результат-витрина-2

Результат-витрина-3


1. Генерация изображения:

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

Модели изображений получают некоторую форму ввода и вместе с ним генерируют вывод (изображение). В случае MidJourney ввод называется быстрый (текст, содержащий то, что вы хотите, чтобы модель генерировала)

Некоторые примеры:

Простая подсказка: «мрачный жнец»

(подсказка: мрачный жнец)

Сложная подсказка: «женщина-воин в образе ангела смерти в доспехах с массивными черными крыльями на спине, темная фантазия, туман, туман, небесный свет, эпопея, барокко, рококо, детали, фотореалистичный рендеринг, 3ds max + v ray, предельно детально и сложный, центральная композиция, элегантный, vfx, нереальный движок 5, октановый рендеринг, чрезвычайно контрастный, чрезвычайно четкие линии, 8k, —ar 2:3»

подсказка: женщина-ангел смерти

Обратите внимание, что уровень детализации и «теги» в подсказке играют огромную роль в создании более сложного, подробного и творческого изображения, которое часто называют «оперативное качество‘, интересно то, что речь идет не обязательно о размере подсказки, а об использовании «тегов», которые модель поймет

Вот увеличенная версия изображения, которое мы только что создали.

промежуточный результат


Как генерировать качественные подсказки?

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

Чтобы достичь этого, мне пришлось создать такой набор данных, я использовал селен, который является инструментом автоматизации браузера, и с его помощью я сделал то, что называется веб-скрапингом, зайдя на веб-сайт MidJourney и некоторые каналы разногласий, чтобы получить большой объем высококачественных подсказок. сделанные другими людьми. Если вы находитесь на рабочем столе, вы можете увидеть часть моего набора данных, щелкнув здесь ссылка на сайт

Тот факт, что на веб-сайте MidJourney был раздел о избранных творениях, демонстрирующий удивительные творения и подсказку, которая использовалась для их создания, очень помог.

веб-запрос-1

веб-запрос-2

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

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

Единственное, что осталось, это передать подсказку в MidJourney, чтобы он мог сгенерировать изображение, но с этим есть проблема.

Некоторые модели изображений, такие как DALL-E, планируют предоставить API, способ взаимодействия с моделью в вашем коде. С API довольно просто интегрировать модель изображения и создавать свои собственные проекты, продукты или решения, использующие модель, без API, есть еще несколько способов взаимодействия с ним, но они более непоследовательны, и я бы не рекомендовал делать это для чего-то серьезного или в производстве.

В настоящее время (на момент написания этого поста) у MidJourney нет API, поэтому для автоматической генерации изображения с этой моделью мне пришлось создать собственный скрипт, который использует селен (упомянутый мною инструмент автоматизации браузера) для входа в дискорд. учетную запись в браузере, а затем взаимодействуйте с ботом MidJourney, используя его команду /imagine


2. Генерация текста:

Для генерации текста я использую модель OpenAI. текст-davinci-002

Сначала я думал просто отправить подсказку MidJourney в davinci, но результаты всегда были очень общими и более или менее одинаковыми.

Поскольку некоторые слова, такие как «рендеринг», «8k», «иллюстрация», «детальный», «нереальный движок», «hdr», «высокий контраст» очень часто встречаются в этих подсказках, я часто видел, как давинчи говорил о них и уходил. темы, говоря об индустрии видеоигр и тому подобном (из-за таких тем, как рендеринг и нереальный движок).

Давинчи-пример

Результаты казались чисто описательными, и на полпути я понял, что это не совсем то, к чему я стремился, я понял, что хочу чего-то более поэтичного, но не стихотворения в явном виде.

Итак, сначала я подчистил подсказку, удалив кучу слов, из-за которых davinci выходит из темы, стало намного лучше, но я все еще не был удовлетворен результатами.

Затем я подумал о том, чтобы передать в davinci именно то, что можно найти на изображении, а не только подсказку, которая использовалась для его создания.

Для этого я использовал Google Vision, чтобы получить точные характеристики и элементы изображений.

Если вы не знакомы с этим продуктом Google, вот некоторые из его возможностей.


Познакомьтесь с Google Видением

Он предоставляет список «меток», которые представляют собой классификации, сделанные моделью, он часто содержит объекты, присутствующие на изображении, а также некоторые сведения, такие как «вымышленный персонаж».

метки google-vision

Он предоставляет список «объектов», обычно он возвращает очень мало объектов, но больше присутствует на изображении.

google-vision-объекты

Он предоставляет список «свойств» с фрагментами информации, такими как цвета, присутствующие в изображении, и его соотношение сторон.

google-vision-свойства

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

В настоящее время я использую сочетание обеих идей, которые у меня были, я исключил набор слов из подсказки (например, «нереальный движок» и «рендеринг») и передаю очищенную подсказку, а также облачное зрение Google. информация об изображении в модель Давинчи.


И вот окончательный результат:

раздор-ангел-смерти-результат

В общем, вот что происходит:
Резюме

Моя облачная архитектура выглядит так:
архитектура

(Поскольку я не могу изменить среду выполнения облачной функции Google, чтобы установить Chrome и использовать селен, вместо этого я использую облачный запуск Google с докером)

Ниже вы можете найти именно тот вызов API davinci, который я делаю, где переменная ‘formatted_all_features’ содержит цвета, метки и объекты, найденные на изображении, а ‘formatted_sanitized_prompt’ содержит подсказку MidJourney без ключевых слов, не имеющих отношения к davinci. генерация текста

response = openai.Completion.create(
  model="text-davinci-002",
  prompt=(
    f"Write a text talking loosely about the art that you made and its"
    f" {formatted_all_features} and {formatted_sanitized_prompt}"
  ),
  temperature=1,
  max_tokens=800,
  top_p=1,
  frequency_penalty=1.02,
  presence_penalty=1.02
)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Надеюсь, вам понравилось читать или это было информативно в любом качестве.

  • Баннер этого поста был сгенерирован с помощью MidJourney
  • MidJourney — это развивающийся проект, и опыт все еще значительно меняется, изображения, содержащиеся в этом посте, были созданы 07.08.2022 (%m/%d/%Y)

Не стесняйтесь задавать вопросы, делать предложения и связаться со мной:
Моя электронная почта: lukkamvd@gmail.com
вот мой линкин