Короткий ответ
Нейросеть рисует шесть пальцев не потому, что глючит. Она делает ровно то, чему её научили, просто задача с руками объективно тяжёлая.
Модель не знает, что у человека пять пальцев. У неё вообще нет понятия «пальцы», «рука», «скелет». Она видела миллионы плоских картинок и запомнила, как обычно располагаются пиксели рядом друг с другом. Всё. Никакого понимания анатомии внутри нет.
Пока пиксели складываются в привычный узор, всё хорошо. Рука это как раз тот случай, где узор постоянно ломается.
Почему именно руки
Есть несколько причин, и они складываются.
Пальцы похожи друг на друга. Модель видит группу вытянутых розовых форм и «на всякий случай» добавляет ещё одну. Ей не с чего понять, что их уже достаточно: она не считает, она угадывает по общему виду.
Пальцы перекрывают друг друга. На реальных фото часть пальцев спрятана за другими, согнута, скрыта в кулаке. Восстанавливая скрытое, модель может дорисовать лишнее, чтобы «заполнить» то, что кажется недостающим.
Рука принимает тысячи форм. Сравните с лицом: оно почти всегда фронтально, симметрично, глаза и нос на своих местах. Модель легко выучила его закономерность. А рука бывает сжата, раскрыта, в профиль, держит предмет, показывает жест. Разнообразие такое, что чёткого правила из него не выводится.
Модель собирает картинку по частям и не ведёт счёт. Она формирует изображение фрагментами и не держит в голове глобальную картину. Может добавить палец с одной стороны кисти, забыв, сколько их уже с другой.
Если хотите разобраться в самой механике генерации, из которой всё это следует, есть отдельная статья: как работает генерация изображений.
Та же причина: текст, зубы, толпа
Кривые руки это самый известный симптом, но не единственный. У всех этих багов один корень: модель воспроизводит узор, не понимая содержания.
Текст на картинке. Буквы для модели это орнамент. Она рисует нечто похожее на буквы, но не понимает, что они складываются в слова. Получается псевдотекст: форма букв вроде правильная, а прочитать нельзя. С кириллицей хуже, чем с латиницей, потому что русского текста в обучении было в разы меньше.
Зубы. Тот же случай, что с пальцами: много похожих одинаковых элементов в ряд. Модель легко добавляет лишний зуб или делает улыбку неестественно широкой.
Лица на заднем плане. В фокусе лицо получается хорошо, а вот у людей в толпе позади оно часто «плывёт»: модель уделяет им меньше внимания, и закономерность ломается.
Симметричные предметы. Очки, колёса, окна зданий. Всё, где важна точная повторяемость, модель может сбить.
Понимание этого помогает предсказывать, где будут проблемы, ещё до генерации: везде, где много одинаковых мелких деталей в ряд.
Как чинить: три уровня
Уровень 1. Правильная модель
Самое простое и часто самое эффективное. Новые и более детальные модели справляются с руками заметно лучше старых: в их обучении было больше качественных изображений, и они внимательнее к мелким деталям.
Практический приём: не воюйте с одной моделью, если она упорно портит руки. Прогоните тот же промпт через несколько моделей и выберите лучший результат. Одна и та же сцена у разных архитектур выходит по-разному, и часто у соседней модели руки получаются с первого раза.
Уровень 2. Умный промпт и композиция
Если руки не главное в кадре, уберите их из фокуса. Способы:
- спрятать руки: в карманах, за спиной, держащими предмет, который их частично закрывает,
- увести на второй план, вне резкости,
- выбрать план, где кистей просто не видно (портрет по грудь, где руки за кадром).
Если модель поддерживает негативный промпт, вынесите туда то, чего быть не должно: искажённые руки, лишние пальцы, деформированные кисти. Это не гарантия, но статистику улучшает.
И не описывайте руки слишком сложно. «Изящные пальцы, унизанные кольцами, сжимающие бокал» это заявка на брак: чем сложнее задача с кистью, тем выше шанс, что модель её завалит.
Уровень 3. Инпейнт (перегенерация зоны)
Самый надёжный способ, когда картинка в целом удалась, а рука подвела.
Инпейнт это перегенерация части изображения. Вы выделяете проблемную зону (кисть) и просите модель перерисовать только её, оставив всё остальное как есть. Модель концентрируется на маленьком участке, и шанс получить нормальную руку резко растёт.
Это гораздо эффективнее, чем генерировать всю картинку заново в надежде, что в этот раз повезёт. Заново вы рискуете испортить то, что уже хорошо, а инпейнт трогает только проблему.
Чего делать не стоит
Не бейте по одному промпту десятки раз без изменений. Если модель упорно ломает руки на этой сцене, ещё десять попыток ситуацию не изменят. Меняйте модель, композицию или переходите к инпейнту.
Не полагайтесь только на негативный промпт. Он помогает, но не решает. «Плохие руки» в негативе не заставят модель понять анатомию, они лишь чуть сместят вероятности.
Не ждите, что новая модель решит всё. Прогресс есть, но пока модели статистические, а не понимающие, руки будут иногда ломаться. Проще заложить это в процесс, чем расстраиваться каждый раз.
Коротко
Кривые руки это не поломка, а закономерное следствие того, как устроена генерация: модель повторяет узоры, не понимая анатомии. Из той же причины растут искажённый текст, лишние зубы и плывущие лица в толпе.
Лечится тремя уровнями: выбрать модель поновее и посильнее, спрятать руки из фокуса или вынести артефакты в негативный промпт, а если картинка в целом удалась, перегенерировать проблемную кисть через инпейнт. Полностью проблема не уйдёт, но до незаметной довести можно.