Как сделать свою Lora из своего датасета?

26 сообщений / 0 новое
Последнее сообщение
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109
Как сделать свою Lora из своего датасета?

Привет всем. Попытался сделать свою Лору по своему датасету из 66 картинок. В инете нашел советы. Но все равно генерится не так, как я делаю руками в даз. Поделитесь советами кто как делает.

Вверх
Понравилось 0.
Некто_Дима
Аватар пользователя Некто_Дима
В сети
Последнее посещение: 3 мин. 26 сек. назад
Регистрация: 13.05.2020
Сообщения: 1501
Рейтинг: 773

надо болько инфы. под какую нейронку лора. Какой learning rate, batch size, steps. Тренировка конкретного персонажа или общий стиль. И что именно не так генерится

Вверх
Понравилось 0.

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

egorkae
Аватар пользователя egorkae
Не в сети
Последнее посещение: 2 часа 28 мин. назад
Регистрация: 19.09.2016
Сообщения: 6155
Рейтинг: 2205

Товарищи Аишники, а чего ноньче можно сделать в формате 3д to нейрореазм? Вот есть у меня мой персонажик, что его лучше всего сможет оживить без потери похожести и соблюдать эту похожесть при изменении поз перонажика? Типа раньше можно было сделать реализм в аи без проблем, но персонаж становится просто другим внешне, при том от кадра к кадру его внешность могла торятся, а сейчас чего? И главное чем?
Интересует АИшка, которая максимально нежно отнеся к оригинальному рендеру, сделает реализм с минимумом отсебятины? Вы меня простите, я просто не слежу чего там в мире генераций происходит, stablediffusion еще котируется или уже все?

Вверх
Понравилось 0.

И хотя нам прошлого немного жаль, ХУДЬШЕЕ конечно впереди

didigital
Аватар пользователя didigital
Не в сети
Последнее посещение: 5 дней 19 часов назад
Регистрация: 27.06.2016
Сообщения: 283
Рейтинг: 209

да вообще рассказать где что взять и как чё сделать)

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

На что лору делаете? Что именно тренируете? Для какой модели лора? У меня есть небольшой опыт, но тут действительно как Некто_Дима говорит, нужно четко понимать что не так и для чего надо, чтобы хоть что-то посоветовать.

Вверх
Понравилось 0.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

Все, что могу сказать, тк плохо разбираюсь:
Хочу натренировать на свой общий стиль в стейбл дифьюжн. Видеокарта 3060 12Гб
Натренированная лора не генерит картинки общего вида с таким же стилем, как делаю я. И много искажений в предметах.
Показать пример не могу, тк удалил полностью и картинки, и лору.

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

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

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

По всем этим причинам я выбираю локальный вариант тренировки LORA.
Далее вам нужен инструмент, вот ссылка на гитхаб
https://github.com/ostris/ai-toolkit
Это первоисточник, на него наделано много форков и портабл версий. Но я ставил отсюда по инструкции автора.
Сам автор этого тулкита Ostris, он сделал достаточно удобный интерфейс и т.д. И с помощью этого тулкита вы можете обучать лоры локально на разные архитектуры моделей, их там множество, начиная с SD1.5, SDXL, Flux, Qwen, Z-image, LTX, WAN.

Насколько я понял вы хотите сделать лору для SD, это либо SD1.5 либо SDXL.
Вот вам ссылка на обзор программы и как с ней работать.
https://www.youtube.com/watch?v=4ZlUdhQ5Iqg
В этом видео автор приводит пример обучения на архитектуре Z-image, и тренирует лору он именно на стиль. Но суть везде одна. Просто переведите эту аналогию на SD1.5 или SDXL
Вам только нужно выбрать архитектуру модели подходящую SD1.5 или SDXL. При первом запуске обучения, прога сама сначала начнет скачивать модель с Hugging Face.

По умолчанию для SD1.5 это будет базовая модель stable-diffusion-v1-5
По умолчанию для SDXL это будет базовая модель stable-diffusion-xl-base-1.0
Эти модели устанавливаются в папку C:\Users\ВАШ ПОЛЬЗОВАТЕЛЬ\.cache\huggingface\hub\
Вот на какой модели обучать вашу лору вы вольны выбирать сами, но по умолчанию предлагаются базовые модели.

Тут немного поясню. У вас 12 ГБ видеопамяти, этого должно хватать чтобы обучать SD1.5 и SDXL. Для видео WAN и LTX этого явно недостаточно. Другие типа Z-image, Qwen по идее должны работать, только если там выставлять кватнованные (урезанные) модели и low VRAM, возможно кэшировать картинки на диск или выгружать Text Encoder, короче выставлять все те настройки на минимум чтобы хватило памяти. И лора будет обучаться, но процесс просто будет дольше по времени.

Перед тем как обучать лору, вам нужно сделать датасет. Начните с минимума 50-80 картинок будет достаточно. Обычно рекомендуют привести изображения к нужному формату 512*512, 1024*1024. Но в этой проге OstrisAI-Toolkit это необязательно. То есть прога сама приводит файлы к нужным размерам, для этого только нужно выставить фильтры Resolutions 512*512, 768*768, 1024*1024.

К файлам датасета идут текстовые файлы .txt с таким же названием что и сам файл, которые описывают датасет.
Например файл называется style_01.png, значит рядом с ним должен быть сопроводительный файл который будет называться style_01.txt (в этом текстовом файле будет содержаться описание и фокус [или по другому вес], на что следует обращать внимание при тренировке).
И многие пренебрегают этим пунктом типа и так сойдет. Но именно этот пункт дает фокус на что направлено обучение. Сама подготовка и поиск датасета отнимает много времени, так тут еще и грамотное описание txt отжирает время. Этот процесс описания известен как caption. Разные люди делают это по разному, кто-то строит сам ноды в comfy. У меня другой инструмент для этой задачи, вот ссылка
https://github.com/jhc13/taggui

Вся фишка заключается в том что, просто можно задолбаться описывать 50 картинок вручную, а если их 500 или 5000. Так вот эта прога taggui делает это быстро и позволяет пакетно, на лету, обрабатывать описание и теги к файлам-картинкам. Опять же все основано на моделях которые смотрят на картинку и моментально описывают вам что изображено на картинке.
Но такие модели можно условно разбить на два вида.
1. Это теггеры, отсылка к названию программы taggui.
2. Это кепчеры, отсылка к слову caption. Когда просто говорят, надо сделать кепшены для файлов.
И эти вещи между собой постоянно путают.

В общем нам (для наших задач) нужны модели теггеры. Эти модели как правило мало весят, порядка 1-3 ГБ. Но их суть в том что они описывают картинку тегами, коротко и емко.
Например так: brown hair, nape, from behind, facing away, realistic, portrait, multicolored hair, mature woman.
А есть другие более продвинутые модели которые делают кепшены полностью описывая картинку удобным для человека языком, но весят они много до 20 ГБ и более или менее. И такая продвинутая модель будет описывать картинку
Например так: Зрелая женщина стоит спиной к зрителю. Каштановые, местами переливающиеся многоцветными оттенками волосы мягко ложатся на шею и затылок, создавая реалистичный и тихо завораживающий образ. Это я все к чему... в общем чтобы сделать описания для вашего датасета вам нужны модели теггеры, а моделей настолько много что когда ты входишь в эту воду первый раз глаза разбегаются, а какую же модель использовать.
Я пользуюсь SmilingWolf/wd-eva02-large-tagger-v3 но можно использовать и разные другие, они плюс минус похожи, но это теггеры и мало весят.

Суть описания такова. На примере: Я обучаю персонаж, у меня готов датасет. В текстах я описываю ТОЛЬКО ТО ЧЕМУ ХОЧУ НАУЧИТЬ ЛОРУ и ничего лишнего (описание это ВЕС для лоры, фокус). Если у моего персонажа на руках надеты часы, и я хочу чтобы мой персонаж всегда при генерации был с часами, описывая персонажа я везде пишу в текстах, наручные часы, наручные часы, наручные часы.... При обучении через несколько проходов нейронка начнет воспринимать часы и персонажа как единое целое, и потом при генерации всегда будет делать персонажа с этими часами, даже если вы начнете понижать вес лоры, она будет стараться впендюрить эти часы. Ну а если вы поставите слишком низкий вес лоры 0.3 к примеру, нейронка может и уберет часы, но это уже будет отрабатывать МОДЕЛЬ НА КОТОРОЙ ВЫ ГЕНЕРИТЕ а не ваша лора и поэтому она уберет часы, потому что именно модель будет оказывать 70% влияния, а лора всего 30%. И при весе 0.3 от часов то вы избавитесь, но и схожесть вашего персонажа исчезнет.
Поэтому если вы тренируете персонажа, и на какой-то картинке в датасете у вас он с часами (часы это как пример, может быть что угодно, и цвет в том числе) и вы не хотите видеть эти часы когда вы сделаете лору и будете ее применять, НЕ ОПИСЫВАЙТЕ ЧАСЫ, чтобы нейронка не заучила их как данность персонажа.

Со стилем проще, можно описывать вообще все, так как весь ваш датасет вышел из Даза с характерным однотипным стилем. Показывая эти картинки нейронке через несколько проходов она и так всасет весь этот стиль, потому что у вас в датасете нет ничего другого что могло бы сбить ее с толку, нет же фотореализма или векторынх иллюстраций и т.д. Можно усилить лишь триггером ваш стиль. То есть во все капшены добавить условно слово "my style", любое слово триггер, которое будет триггерить ваш стиль. Вот смотрите на всех ваших 50 фотках, в 50 txt файлах будет прописано слово my3d5tyle. Нейрока привяжется к этому слову my3d5tyle (я намеренно вместо S написал 5) и когда лора обучится, будет знать что на это слово my3d5tyle надо отзываться по полной. И намеренно в слове my3d5tyle я допустил ошибку, так как это лично ваш триггер и он будет триггерить именно вашу лору. И он не спутается с другими лорами или с базовой моделью на которой вы генерите, так как базовая модель может слово style описывать по своему.

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

1. Имя вашей лоры. Например myDream.
2. Слово триггер. Например my3d5tyle.
3. Архитектуру модели (в вашем случае это SD1.5 или SDXL)
4. Непосредственно саму модель на которой и будет происходить обучение (по умолчанию предлагается базовая)
5. Сам тагрет Lora (просто есть еще и LyCoris, (это отдельная тема))
6. Rank модели 16 или 32 (это просто вместимость, просто ваш файл lora.safetensors будет весить при rank 32 примерно 150-170 мб, при rank 64 примерно 320-340 мб)
7. Data Type тип данных всегда BF16 (он более стабилен), а FP16 float он более упрощен, его ставить только в том случае если не пойдет с BF16
8. Batch Size и Gradient Accumulation (в вашем случае 1)
9. Steps это тупо шаги. Кол-во шагов за сколько обучается лора полностью. (2000-3000) . Если за 3000 шагов
лора все еще не приблизилась к вашему стилю можно поднять кол-во шагов до 4000 или 5000.
10. Optimizer AdamW8bit или (в вашем случае можно выставить чуть оптимайзер чуть проще Adafactor)
11. Learning Rate и Weight Decay (вообще эти настройки всегда по умолчанию 0,0001)(все уже протестено и придумано, не надо изобретать велосипед с нуля, ну если только для эксперементов)
12. Timestep Bias (ставим Balanced, для sd насколько я знаю не делится на высокий и низкий шум)
13. Text Encoder Optimizations (в вашем случае возможно потребуется включить галочку Unload TE)
14. В датасете включить Cache Latents (комп один раз сделает кеш вашего датасета и сохранит кеш в папке датасета в папке _latent_cache (просто для небольшого ускорения))

Вот в принципе и все.

Вверх
Понравилось 2.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

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

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Ссылка:

https://dropmefiles.com/BjHno

В общем там архив, в котором еще 4 архива по темам.
1. Lora - Maria Это моя лора на вымышленный персонаж милфа Мария (типа училка). Вот когда делал лору мне нужно было добиться чтобы нейронка запомнила все данные персонажа, лицо, тип волос, одинаковое телосложение этой милфы, причем в обнаженном состоянии, отвисшая грудь и т.д. Насколько получилось судите сами, и датасет у меня был скупой, так как датасет я создавал опять же с помощью нейросети. Там есть пара видео чувствительных так сказать. У меня же тема сама по себе чувствительная, вы наверное в курсе, Марья Ивановна и пиздюк Владик. Так вот этот пиздюк подросток, школьник и тема на грани. Поэтому видосы прилагать не буду, суть с одного видео понятна.
2. Lora - Pubic hair Это моя лора на лохматые лобки у барышень. И тут в дискуссии вступать не собираюсь по поводу кому как нравится. Мне нравится естественность, так хочу, так сделал. Потому что на CivitAI, не нашел лору которая нормальную мохнатость наращивает.
3. Styles - CivitAI Это просто набор стилей с CivitAI, это уже не мои лоры, но я собрал их чтобы показать. Дело в том что мне нужно близко к реализму, а стили я не тренирую для себя, их достаточно много на CivitAI. И здесь просто решил показать что во всех картинках используется один промпт, один сид и вообще все параметры одинаковые, а ИЗМЕНЯЮТСЯ ЛИШЬ ЛОРЫ С РАЗНЫМ СТИЛЕМ.
4. ComicBook - QwenEdit 2511. Здесь показываю как можно удерживать стиль и персонажей локально используя модель QwenEdit 2511. Эта модель можно сказать аналог нанобананы, может быть она не настолько крута, но реально она держит стиль и персонажа, меняет ракурсы. В общем мне нравится.

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

Вверх
Понравилось 2.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

Допустим, я хочу сделать несколько картинок с пещерой. Но у меня пещеры плохо получаются. Мне надо в датасет добавлять картинки с пещерой и вставлять слово Пещера? Ведь в таком случае нейросеть сделает такую же плохую пещеру.

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Пещеры плохо получаются где? При генерации плохие пещеры генерируются или ваши 3д картинки вышедшие из даза или другого 3d софта для датасета плохие?

Если у вас датасет с плохими пещерами, то ровно тому вы и обучите нейронку, а именно — плохим пещерам.

Если у вас датасет хороший (разные ракурсы, красивые картинки пещер которые вы получаете в дазе или в другом 3d софте) и хорошего качества (не мелкие по размеру, не сжатые в хлам с артефактами) и цель состоит в том чтобы сделать лору (которая будет генерировать красивые пещеры) ТОГДА ДА, в капшенах можно прописывать слово cave, или синонимы которые вам может дать сам autocaptioning.

Описания делаются для того, чтобы указать приоритет, чтобы отделить нужное от ненужного. Ведь помните нейронка по любому выучит абсолютно все (за достаточное кол-во шагов). Ваша задача, отделить нужное от ненужного путем повышения ВЕСА (приоритета). А что для вас нужное или ненужное знаете только вы.

Если вы хотите сделать лору, которая будет делать пещеры, и в датасете у вас разные пещеры, разных видов, с разных ракурсов, а в пещерах у вас сундуки с золотом, грабли, лопаты, мусор всякий, грибы, летучие мыши, паутина и т.д. ...... Вы отделяете пещеры путем повышения ВЕСА от всего хлама который есть в пещерах. На все картинки прописываете слово CAVE, далее прописывать можете виды, ракурсы, мрачность, план (дальний, ближний), но НЕ ПРОПИСЫВАЙТЕ ВЕСЬ ТОТ ХЛАМ который вам не нужен.

По итогу у вас к примеру датасет из 50 картинок. Из них с весом cave/50, остальные веса распределены по разному мрачная/40, широкий угол/10, вид сверху/5, ближний план/30 и т.д и т.д. Но самый приоритетный вес на всех 50 картинках это cave. Даже если вы где-то в 5 картинках прописали слово ПАУТИНА или в 10 картинках прописали слово ЗОЛОТО, приоритет все равно на слове CAVE. Можно на все 50 картинок добавить слово 3d стиль, или из чего у вас там пещеры в 100% случаях, мрамор, гранит, лед? cave/50, 3d style/50, ice cave/50. И это нормально и не бьет логику.

А если вы и лопату пропишите 50 раз, shovel/50 то повысите вес лопате, и вероятность того что потом при генерации нейронка вам будет делать перещу с лопатой очень и очень высокая.

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

А если ваша лора вообще не видела лопату при обучении и не знает как она выглядит, и вы соответственно не прописывали никаких лопат.
Но когда при генерации изображения вы будете в промпте писать условно. "Сгенерируй мне пещеру в которой валяются лопаты". Нейросеть достанет эту лопату из той самой модели на которой вы генерируете (если та модель знает что такое лопата) а не из вашей лоры. И смешает лопату (из модели) с пещерой (из вашей лоры), и в итоге сгенерирует вам и лопату и пещеру.

Вверх
Понравилось 0.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

Мои 3д картинки пещер вышедшие из даза плохие. Я хочу, чтобы нейронка рисовала хорошие и в моем стиле)

Что будет, если я в датасете вообще не буду прописывать объекты? Просто напишу mystyle. Нейронка будет его накладывать на любые сгенерированные картинки, если в промпте будет слово mysyle? Или все-таки надо указывать более подробно в текстовых файлах для тренировки?

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

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

ТЕПЕРЬ вы начинаете генерацию на какой-то модели (джагернаут, фотон, фоториал или базовой) и просите нейронку сгенерировать вам пещеру:

Вы выставляете вашу лору с весом 1.0. Вес 1.0 (это высокий вес), с таким весом нейронка будет применять вашу лору почти по максимуму..... РЕЗУЛЬТАТ будет таким что нейронка сгенерит вам картинку с вашими плохими пещерами немного смешав его с базовой моделью. Но из базовой модели возьмет мало информации. Но это будет ваш характерный стиль лоры с плохими пещерами.

Вы выставляете вашу лору с весом 0.5. Вес 0.5 (это средний вес), с таким весом нейронка будет применять вашу лору на 50% ........ РЕЗУЛЬТАТ будет таким что нейронка смешает пещеры вашей лоры с пещерами которые она знает в базовой модели. Она смешает 50 на 50, даст возможно фотореализм пещер которые знает базовая модель или 3d стиль который знает базовая модель и смешает с вашим стилем плохих пещер из лоры. По итогу генерации вы будете видеть частично элементы вашего стиля плохих пещер и частично другой стиль который внедрила базовая модель. Результат генерации уже не будет так сильно похож на ваш стиль, но все еще будет достаточно хорошо узнаваем вами.

Вы выставляете вашу лору с весом 0.2. Вес 0.2 (это маленький вес), с таким весом нейронка будет применять вашу лору всего на 20%...... РЕЗУЛЬТАТ будет таким что нейронка смешает вашу лору с пещерами которые она знает в базовой модели. Она вытащит большую часть знаний о пещерах из базовой модели и подмешает к ним всего лишь небольшую часть вашей лоры с плохими пещерами. По итогу генерации вы будете видеть пещеру которую воспроизвела базовая модель и лишь незначительные элементы вашего стиля плохих пещер, которые были подмешаны к базовой модели из вашей лоры. Но по факту это уже будет не ваш стиль и не ваши пещеры.

2. Что будет если вы не будете прописывать объекты. Нейросеть выучит все с одинаковым приоритетом. И если вы тренируете только стиль, такой вариант рабочий. Но, при генерации когда вы будете просить ее сгенерировать пещеру, она будет рандомно впихивать вам все то что она видела при обучении когда вы ей показывали ваши пещеры. То есть нейросеть будет принимать как ОДНО ЦЕЛОЕ все что видела и свяжет это с триггером "mysyle". И если триггером будет условно слово "mysyle", то на это слово она будет вам генерировать всегда рандомно что она знает под словом "mystyle", а это могут быть (пещеры, камень, бочки, золото, блеск, темнота, блики, темный цвет, стиль, аура, грот, вода, капли,..... и т.д. все что она видела при тренировке). Для нее не будет понимания что вода, это вода. Она будет знать слово пещера или ваш триггер mystyle, и для нее не будет разницы между водой и пещерой, и для нее вода будет = пещера, золото = скала, мрачный стиль будет = блеск..... То есть она буквально запомнит это как единое целое и при генерациях будет таскать вам в генерации разные вещи РАНДОМНО которые она видела.

А если вы при генерации дадите запрос, типа мол сделай мне кучу золота в пещере, то она возьмет образ золота из базовой модели а не из вашей лоры потому как для вашей лоры ЗОЛОТО и ПЕЩЕРА это одно и тоже, под ЗОЛОТОМ она понимает все что видела в обучении и под ПЕЩЕРОЙ она понимает все что видела при обучении, а отдельно что такое ЗОЛОТО она не знает, для нейронки это один концепт одно целое, потому что вы научили ее именно так.

3. Для обучения стиля, вообще ничего не прописывать, такой вариант имеет место быть, и это самый простой путь. Но это будет всегда РАНДОМ. Сделайте свою первую лору вообще ничего не прописывая, дайте только триггер, и потом поработав с такой лорой вы заметите как она отрабатывает и вам захочется более точного контроля.

Вверх
Понравилось 1.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

Спасибо за пояснения)

Вверх
Понравилось 0.
Михаило
Аватар пользователя Михаило
Не в сети
Последнее посещение: 9 часов 3 мин. назад
Регистрация: 01.03.2022
Сообщения: 412
Рейтинг: 109

Еще вопросы:
Какой семплер лучше использовать? Euler_a как по-умолчанию?
Сколько повторений (Repeats) использовать? 40, 10, 5?
Я обучаю через Kohya_ss

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

ИСТОРИЯ НейроночкИ.

Сидит в общем маленькая Нейроночка за партой, а вы... солидный учитель показываете ей картинки (ваш датасет) как в школе. Вы заранее дали Нейронке тетрадку с подсказками в которой написаны (подсказки в виде слов) подписи к этим картинкам.

И говорите Нейроночке что обучаться мы будем по времени (всю зиму), это 2000 шагов, и что она должна освоить материал за отведенное на это время. Урок длится (45 мин) 100 шагов.

Вот начинается урок, и вы показываете Нейроночке одну картинку какое-то время, затем другую, затем третью.
Вы показываете картинки по очереди (у вас batch size 1). Если бы был batch size 2, вы бы показывали сразу 2 картинки одновременно и нейронка смотрела бы сразу на две картинки, так то усваивается быстрее, но и устаешь быстрее. Но вы как мудрый чел понимаете, что тише едешь дальше будешь.

ВЫ показываете первую картинку:
1. Нейроночка смотрит на нее, размышляет и сверяется с подписями-подсказками. В подсказках она видит слово ПЕЩЕРА и ищет эту пещеру на картинке.
- Вот что это тут за блик, а-а может быть это и есть пещера, ну возможно так, почему бы и нет, а это что... это какие то странные желтые пятна, может это и есть пещера, может быть, ай ладно помечу лучше вот этот блик как ПЕЩЕРА и такккк сойдет.
И нейронка записывает себе в тетрадку, типо вот блик который я видела это пещера.

ВЫ показываете вторую картинку:
2. Нейроночка смотрит на нее и изучает. Смотрит в подсказки и видит слово ПЕЩЕРА, и опять на картинке видит этот блик.
- Ай, я это уже видяла... только здесь он чуть ярче блястит. И спокойная и довольная переходит к другой подсказке, потому что знает что блик это пещера, как она пометила себе в тетрадке.
Затем нейронка смотрит в подсказки дальше и видит слово ЗОЛОТО.
- Так а вот тут что-то синее течет может это и есть золото, возможно, а этот блик я уже видела это стопудова ПЕЩЕРА, а вот тут какой-то ящик может это и есть золото......а хер с ним, пусть этот ящик будет золотом, и такккк сойдет.

ВЫ показываете третью картинку:
3. Нейронка смотрит на нее и изучает. Смотрит в подсказки и видит слово ПЕЩЕРА.
- А-а я это уже знаю. И ищет на картинке яркий блик, но ищет его ищет, а найти не может.
- Бля, я походу накосячила! ПЕЩЕРА это не светящееся пятно, я не вижу его на этой картинке, а в подсказке слово пещера есть, тогда что такое ПЕЩЕРА, так-с сделаю пометочку, разберемся на следующем уроке.
Далее смотрит в подсказки и видит слово ЗОЛОТО, которое она ассоциировала с ящиком, но снова смотрит, на картинку, смотрит... ищет на картинке ... ищет... уже все шары болят от просмотра а найти ящик не может.
- Блин, возможно ящик это не ЗОЛОТО, а вот тут вижу что-то желтенькое валяется может быть это ЗОЛОТО, ладно запишу что это желтое будет ЗОЛОТО.

ВЫ показываете четвертую картинку:
4. Нейронка опять начинает с самого начала, опять смотрит в подсказку видит слово ПЕЩЕРА, но так как она знает уже что блик это не ПЕЩЕРА из своего опыта усвоенного на предыдущих уроках, то она под слово ПЕЩЕРА ищет другое подходящее поведение или объект или цвет. Смотрит далее в подсказку и видит слово ЗОЛОТО, смотрит на картинку и видит что-то желтое.
- Ага вот это желтое я видела и дала ему определение ЗОЛОТО, и в подсказке есть слово золото, ну вот на картинке же я вижу, это значит точно ЗОЛОТО, ошибки быть не должно.

и так процесс длится по кругу (как у особистов) ШАГ ЗА ШАГОМ, эпоха за эпохой, сверяясь с подсказками и отбрасывая неудачные варианты, Нейроночка обрастает нейронными связями и накапливает опыт. По истечению обучения она знает что такое ВОДА, ЗОЛОТО, ПЕЩЕРА, и может воспроизвести эти вещи по требованию.
Обучение длилось (всю зиму) 2000 шагов. И вы как учитель по окончании обучения смотрите и понимаете, что у нее есть пробелы, что некоторые вещи она не усвоила и делает некоторые вещи откровенно не очень хорошо. И вы как учитель посылаете Нейроночку на дополнительное обучение еще на 1000 шагов, потому как видите что не дотягивает она до НОБЕЛЕВКИ.

Но есть опасность что вы можете переобучить Нейроночку, если пошлете ее на дополнительное обучение в целом на все 8000 шагов ПОШЛЁТЕ ЕЁ на целый год. Она уже будет все знать из ваших картинок, которые видела неоднократно, а вы будете гонять ее по этому циклу лишнее время. Целый год без отдыха, так у любого мозги сплавятся. Тогда Нейроночка начнет подкидывать вам подляны, как озорные школьники подшучивают над своими учителями в школе.

Smile

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Разумней всего использовать тот семплер на котором вы чаще всего генерируете свои изображения. Но Эйлер это как классика, если вы используете его при обучении никакой ошибки не будет, так как он много где стоит по умолчанию, и многие тупо генерируют и обучают на нем. Euler_a, DDIM, DPM и HEUN, это самые первые семплеры которые появились и они базовые, большинство остальных, производные. А DDIM и Euler вообще самое начало. Но когда я работал с SD я любил генерить на DPM++ Karras и обучал на нем, если он был доступен для обучения.
Выбирайте тот на котором вы в основном всегда генерируете ваши картинки.

Что такое параметр Repeats у Kohya_ss, честно не помню, Repeats - это повторения, только вот повторения чего. Если шаги (повторения шагов) то 40,10,5 это мало для шагов, это не steps.
Если эпоха, то тоже нет, слишком много для эпохи.

У Остриса Repeats это повтор просмотра картинок. (Поясню)

Например у вас есть датасет в одном 200 картинок, в другом 40 картинок. И вы подключаете эти 2 датасета вместе. Но чтобы уравновесить шансы обучения вы назначаете датасету в котором 40 картинок (Repeats повторные просмотры), напирмер даете ему 5 Repeats.

Тогда один датасет будет таким: 40*5=200
Второй датасет будет таким: 200*1=200

В итоге вы уравновешиваете обучение, приводите их к общему числу 200, чтобы один датасет не превалировал над другим. Но тот датасет в котором 40 изображений он скудный, и этот параметр искусственно наращивает датасет. И нейронка прогонит его пять раз, т.е. одни и те же 40 изображений просмотрит пять раз. И есть еще пункты где можно этот искусственный датасет разнообразить отразив картинки по вертикали или горизонтали. (Flip Vertical & Horizontal).
Но это искусственное наращивание, так как если вы перевернете лицо, это будет тупо копия. А лица и тела у людей не симметричны.

Думаю у Kohya_ss Repeats это именно повторы датасета (но я не уверен). У вас датасет 66 картинок? Умножте на 40 = 2640. Теперь ваш датасет уже не 66 а 2640 картинок, наверное много для одного датасета 40 раз прокручивать.

Моя логика такова.
Установите на среднее значение 10 или 20, если по умолчанию стоит 40.
А лучше вообще на 5. Тогда ваш датасет будет 66*5 = 330.
А еще лучше (если я не ошибаюсь и этот параметр Repeats делает именно повторы датасета).
То мне лично такие повторы не нужны и я бы выставил Repeats на 1. А датасет изначально подыскивал разнообразный из 300 картинок, чтобы больше и чтобы качественнее.

Такое ощущение что там по умолчанию стоит 40. И это число выставлено с давних времен. Когда люди первый раз тренировали лоры на свои лица. И там был только SD 1.5 с его ущербным разрешением 512*512, и это было нормой в те времена (в те времена...подумал какие те времена было то года 2-3 назад, а для нейронки уже как будто 50 лет прошло) делать датасет из 30 фотографий своей рожи.
И в итоге такими нехитрыми манипуляциями в те времена из 30 фоток получали 1200=30*40 (1200 для датасета). Но искусственно.

Вверх
Понравилось 0.
doznickname
Аватар пользователя doznickname
Не в сети
Последнее посещение: 8 часов 54 мин. назад
Регистрация: 27.12.2025
Сообщения: 40
Рейтинг: 0

Я думаю что со времени, как вопрос нейронок был поднят на форуме,то форум больше нуждался не в практических советах изначально, а теоретических. Хотя бы на уровне что это,что умеет, что может, а что нет. А практика и костыли уже потом. Это мое частное мнение. Чтобы люди не выдумывали того, что не может быть в принципе, не реализуемо вообще, не реализуемо пока и.т.д..
Тренировка на хорошем сете, или намеренно на плохом это уже частности
Взять,например ЯМ.Пока ты ее не ограничишь фильтррами - она будет "нести чушь".
В t2t тоже самое.Если знать теорию хотя бы на уровне новиса,то много вопросов перестают быть таковыми .Сетка не оперирует "взял перса", "поставил его в позе",там-то и там-то", "свет ахренительный от best студии" by"художник". Хрень это всё.
Даже если в ней есть конкретно всё это- она вам это может не показать.

Вверх
Понравилось 0.
Kristinka
Аватар пользователя Kristinka
Не в сети
Последнее посещение: 1 день 18 часов назад
Регистрация: 21.01.2021
Сообщения: 599
Рейтинг: 115

Шурик, а как тренировать лору например на часть тела, например на живот. Например беременность. Какой должен быть датасет, один живот в разных ракурсах? Тогда же при генерации она будет рисовать только один живот в разных вариациях. С телом и лицом? Тогда везде на генерациях будет оди и тот же персонаж с одним и тем же лицом и фигурой. Хочу чтоб живот в разных стадиях беременности применялся к рандомным персонажам. Делают же как то лору на руки, ноги, грудь и прочие части тела. Как?

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Могу быть где-то не точен в своих формулировках, потому как мой опыт тоже только формируется и он основан по большей части на моих же ошибках и их осмыслении. Но насколько я понял, в общем если кропать слишком близко, только живот, он потом тупо и будет рисовать живот или встроит его не по пропорциям человека (не будет понимать что это и куда это встраивать). Где-то выше вроде приводил пример с трусами, здесь примерно такая же аналогия.

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

Скорее всего я бы кропал картинки для датасета слегка захватывая нижнюю часть груди (но не показывая саму грудь, соски и форму груди) и чуть ниже живота, возможно даже в половине картинок датасета захватывая таз и часть бедер (но только в половине датасета, чтобы НЕЙРОНКА не привязалась к области промежности, в другой половине вообще резал бы сразу ниже живота не захватывая гениталии).
И датасет старался бы собирать из разных фигур (толстых, худых, больших, маленьких), чтобы ИИ не привязался к одной конкретной фигуре.
Естественно нужно дать разные виды живота, сбоку, справа, слева, спереди, в три четверти. В разном положении сидячем, стоячем, намного реже в лежачем.
И по количеству датасет разбивать разумно, т.е. не надо пихать в датасет 80% вида живота сбоку, а 20% спереди. Все должно быть логично-гармонично. Фотографируют в основном же людей спереди а не сзади. Значит и датасет должен быть гармонично разбит примерно (40% - вид спереди) (12% - вид слева) (12% - вид справа) (26% - три четверти), (5% - вид сверху), (5% - вид снизу).
В целом по своему усмотрению но не нарушая логики.

При обучении НЕЙРОНКА вычленяет "похожее" из всего датасета и заучивает это как клише, штамп, одно целое.
В общем нам нужно чтобы НЕЙРОНКА заучила только живот (и привязалась только к животу), а остальное должно быть РАЗНООБРАЗНЫМ чтобы она не привязалась к чему-либо еще. Чтобы не привязалась к груди можно где-то кропнуть захватив слегка грудь, где-то чуть ниже груди (вообще чтоб грудь не видно было), где-то можно пол груди захватить, тогда нейронка будет понимать куда встраивать живот, но к груди или к ребрам не привяжется, так как они везде по разному будут кропнуты а живот всегда будет показываться нейронке.

Вот у меня было так, когда я тренировал нижнее белье, первый или второй раз, я собрал датасет вроде все по уму, а только уже когда натренировал лору и стал ее использовать, заметил что НЕЙРОНКА всех моих персонажей стоячих (которые стоят в обычной стойке) ставит в позу когда ноги раздвинуты на ширине плеч примерно. И когда я просмотрел свой датасет повторно, увидел что концентрировал внимание на трусах и совсем упустил из виду что большая часть моделей стояли не по стойке смирно а по стойке где ноги на ширине плеч примерно. Вот и эта поза заучилась нейронкой как паттерн. Он стойку с ногами на ширине плеч заучил вместе с трусами как данность, как одно целое. И потом он эту стойку тянул в мои генерации и даже с помощью промпта было очень тяжело избавиться от этого заученного паттерна, от этой стойки с ногами на ширине плеч.

Вверх
Понравилось 1.
Kote
Аватар пользователя Kote
Не в сети
Последнее посещение: 5 дней 6 часов назад
Регистрация: 07.04.2017
Сообщения: 304
Рейтинг: 123

В OneTrainer есть простейший графический редактор для подготовки датасета. Там есть опция "маска". Прямо в самом редакторе наносится маска - закрашивается ненужная часть изображения. Как правильно использовать этот инструмент для обучения нейронок с помощью OneTrainer есть много видео на ютубе на разных языках. Не только на английском

Вверх
Понравилось 1.

alt-lab.org/LAB/

Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Ребяты в общем я столкнулся с тем что, мои лоры которые обучал не всегда работают так предсказуемо как я от них ожидаю. И вчера пришлось дрючить gpt довольно долгое время чтобы осмыслить его версии, которые он предлагал. Вероятно я сам изначально не совсем правильно понял как капшены (captions) связываются с датасетом для контроля, и gpt дал мне информацию которая привела меня к размышлениям и переосмысливанию.

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

Изначально я усвоил, что капшены это вес слов или приоритет которые я прописываю, чтобы отделить нужные мне предметы (вероятно это было ошибочно). Но gpt меня поправляет и говорит что оно работает по-другому. И в целом из-за нестабильности своих лор думаю, что gpt более правильно информирует меня и показывает принципы как получить больший контроль над лорой. Это и собираюсь намеренно тестировать.

В общем он говорит:
Все что я пишу в капшенах можно понимать как ПЕРЕМЕННЫЙ ПАРАМЕТР который МОЖНО МЕНЯТЬ и наоборот все что я не напишу в капшенах это будет заучено как ПАТТЕРН.

Если я хочу одно лицо, одно тело, одну и ту же одежду — я не должен их прописывать.
Если наоборот хочу чтобы одежда менялась, прическа менялась — тогда должен их прописать.

Кароче еще сделаю с десяток лор, тогда уже точно врублюсь в большинство нюансов.

Вот видел на civitai лору которая очень хорошо обучена и делает телосложение худым или толстым в зависимости от веса -1 -2 очень худое и +1 +2 очень толстое (но делает очень хорошо, практически не изменяя родные черты самого персонажа, при разном состоянии, жирности или худобе, персонаж похож сам на себя). Вот автор этой лоры действительно хорошо разобрался в тонкостях и нюансах и походу знает как сделать это максимально правильно.

Вверх
Понравилось 0.
Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

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

Вверх
Понравилось 0.
Kote
Аватар пользователя Kote
Не в сети
Последнее посещение: 5 дней 6 часов назад
Регистрация: 07.04.2017
Сообщения: 304
Рейтинг: 123

Есть более свежий обучатор UI-Toolkit . Там все плюшки есть. А про вантрэйнер и тулкит никто не пишет, ввиду их особой эффективности дабы не плодить конкурентов. А Койя уже вчерашний день. И да - актуальность обучатора можно косвенно проверить по тому, какие нейронки он поддерживает и насколько быстро он обновляется по мере выхода новых сеток.

Вверх
Понравилось 0.

alt-lab.org/LAB/

Шурик
Аватар пользователя Шурик
Не в сети
Последнее посещение: 2 недели 1 день назад
Регистрация: 20.09.2024
Сообщения: 171
Рейтинг: 65

Ну с тулкитом и работаю, нет там никаких масок при подготовке датасета.

Вверх
Понравилось 0.
Kote
Аватар пользователя Kote
Не в сети
Последнее посещение: 5 дней 6 часов назад
Регистрация: 07.04.2017
Сообщения: 304
Рейтинг: 123

В OneTrainer точно есть, поскольку сами пользуемся. На ютубе есть видео на английском где то годичной давности.

Вверх
Понравилось 0.

alt-lab.org/LAB/