August 28, 2023

Midjourney — как исключать «минус-слова»?

“Oh, --no!”

Midjourney не понимает отрицательных выражений в тексте запроса. Если вы просите её убрать зонтик, используя фразы «без зонтика», «не зонтик», «убери зонтик» или «убери ну пожалуйста», то она сделает ровно наоборот, поскольку вы упомянули зонтик.

Поэтому в моделях 3, 4, 5 и Niji есть параметр “--no”, после которого можно через запятую перечислить слова, которые нужно исключить из финального изображения. В нашем случае, это будет зонтик:

Почти всегда есть что-то, что хочется убрать с финальной картинки:
Midjourney злоупотребляет макияжем? — "--no cosmetics, makeup"Нейронка лепит вотермарки на всё подряд? — "--no watermark"

Возьмём Джека Воробья (капитана Джека Воробья) и попросим Midjourney побрить его и немного отмыть:

Джек Воробей нормального человека

Кстати, это похоже на баг, но “--no” — единственный параметр, который можно использовать в запросе больше, чем один раз:

a dove --no leaves --no olive branch --no peace

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

Антигравитация

Можно поступить иначе: разделить запрос на фрагменты, перечислить все ненужное в одном из них и назначить этому фрагменту отрицательный вес, например так:

drenched young man stands in a downpour :: umbrella :: -0.5

Jack the Sparrow portrait :: mustache, hat, makeup :: -0.8

Этот способ чуть более гибкий, но не забывайте три правила:

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