Comments 53
и даже на Apple M1, это, вероятно, потребует дополнительных усилий.
Скорее - вот так, и в пару кликов.
Наверное, тупой вопрос, но… почему все так носятся с цензурой? Что плохого в том, чтобы генерить сиськи-письки?
Это достаточно дискуссионный вопрос. Но, как мне кажется, основное — законы. Если просто запретить все, что подходит под 18+, то компании просто будет проще. Я сейчас про компании типа Midjourney.
Ну и вопрос этичности никто не отменял. Обучить ИИ на фотографиях конкретного человека и клепать всякий интересный контент с этим человеком без его согласия -- это плохо
Обучить ИИ на фотографиях конкретного человека и клепать всякий интересный контент с этим человеком без его согласия -- это плохо
А вот это как раз интересный дискуссионный вопрос. Мечтать о человеке в сексуальном смысле без его согласия этично?
Мечты — это внутренний «продукт». Поэтому я считаю, что вопрос этичности лежит на мечтателе, до тех пор, пока мечты остаются только в голове человека.
Мечтами, конечно, можно сделать контент в виде разговора или действительно написать картину. Но разговоры — это лишь воздействие на собеседника подумать о чем-то конкретном. Это не вызовет ту же картинку и те же желания х)
Написание картины — это нелегкий процесс, требующий (а) умения (б) желания и (в) мотивации. Да и будет грустно, если «модель» (успешно) попытается уничтожить картину.
Современные технологии в этом плане обесценивают старания. Взял чекпоинты для SD, которые натренированы рисовать прекрасных дам без одежды и понеслась.
Гурманы могут взять ещё какую-нибудь модификацию на конкретного человека или что там им нравится. Я пока готовил эту статью, я находил Textual Inversion, которые рисует женщин-бодибилдеров и чекпоинты (не помню, LoRA, кажется) на какую-то известную женщину. Ух, сколько всего можно придумать! На ровном месте сгенерировать сотни правдоподобных изображений, а интернет помнит всё.
Пожалуй, дополню свой предыдущий комментарий замечанием, что делать контент, а затем распространять без согласия — вот это плохо. Пока контент не трогает других людей (и даже так не нарушает законы) — ну штош, пусть будет.
Можно и не обучать, берёшь любую фотку, sd 1.5 inpainting, понеслась
Плохо что под действие цензуры попадает «на всякий случай» сильно бульше чем предусмотрено изначально. Вот и у вас упомянуты «сиськи-письки» в целом, а значит и бо́льшая часть творчества скульпторов возрождения.
Локально (на старых моделях без цензуры) гененируется обнаженка, всевозможных видов.
Детская порнография заполнит Интернеты.
Так наоборот же хорошо - сильно упадёт спрос на реальных малолеток. Кто будет организовывать съёмки живых моделей с риском поиметь кучу проблем с законом, когда нейронкой можно будет сделать ничуть не хуже и главное 100% безопасно для всех (в первую очередь для самих детей)?
сильно упадёт спрос на реальных малолеток.
Если бы это было научно доказано, то не запрещали бы уже созданное видео и рисованное порно типа хентая.
О, спасибо, надо сохранить мануальЧЕГ :)
А можно как-то в img2img сделать разные уровни влияния чёрно-белого канала и цветности? Там вроде есть ползунок, если чуть влево сдвинуть, картинка претерпевает минимальные изменения, вправо — почти теряет связь с образцом, а вот для штрихового бы рисунка как-то бы деликатно попросить зашумлять цвет побольше, а яркости трогать поменьше?
Да-да, именно. Чтобы робот-раб наброски раскрашивал жестокому кожаному мешку :-D
Я такое не пробовал.
Но в документации AUTOMATIC1111 есть очень скупо про Alpha Mask, возможно, это применимо в вашем случае
Я пробовал раскрашивать концепты. Для ч/б получалось паршивенько, даже при активных попытках пофиксить это масками и настройками. Зато значительно лучше получалось, если сначала залить нужные области хотя бы примерными цветами, а уже шейдинг оставить на откуп сетке.
Stable Diffusion откровенно плоха там, где требуется серьёзно менять цветовую палитру исходника. Поэтому для массовой раскраски ч/б картинок или для перекраски (рескиннинга) одного персонажа в другого лучше обучить
Специализированную нейронку типа CUT
На Хабре помнится была серия статей, посвящённая нейросетевой раскраске старых фотографий - там всё подробно расписывалось.
а вот для штрихового бы рисунка как-то бы деликатно попросить зашумлять цвет побольше, а яркости трогать поменьше?
Это достаточно затруднительно реализовать, потому что внутри сэмплера крутится вовсе не RGB-изображение, а его Z-представление. Входная картинка сперва пропускается через автоэнкодер, и внутрь цикла зашумления-регенерации поступает уже векторная проекция, в которой отсутствуют цвета индивидуальных пикселей. А после завершения цикла готовое изображение декодируется VAE и уже тогда выводится пользователю в виде RGB.
Теоретически можно попробовать сделать декодирование на каждой итерации цикла: декодировать, перевести в HSV, замиксовать, вновь сконвертить в RGB, и опять закодировать в Z-вектора, пустив дальше по циклу. Вот только автоэнкодер - это кодирование с потерями, и всего через 10-15 итераций картинку перекорёжит.
Грубо говоря, чем больше размер пятна, тем упорнее сеть пытается сохранить его цвет. я видел инструкции по раскрашиванию манги, они все сводятся к "берём редактор и щедрыми жестами сеятеля раскрашиваем всё крпное. Мелочь сама дораскрасится. Потом уже пихаем в img2img, а зматем inpaint-ом правим то, что получилось не так."
Эмбеддинг (Textual Inversion) активируется только при явном указании в запросе имени файла.
Эмбеддинг (Hypernetwork) может быть активирован через вкладку Settings -> Stable Diffusion. Тогда эмбеддинг будет отзываться на перечисленные слова. А звездочка позволит активироваться при любом запросе.
Если не делать аннотаций, то подставляется имя файла.
Имя файла до обработки: 1.png
Имя файла после обработки: 00000-0-1.png
Подстановка в [filewords]
: 1
Поле Initialization text по умолчанию имеет значение *. Это значит, что эмбеддинг будет влиять на любые слова.
Нет, это начальная точка, от которой начнёт плясать градиентный спуск. Её выбор очень сильно влияет на итоговое качество обучения.
"*" выглядит универсальным "нейтральным" вариантом, позволяющим получить приемлемое качество.
Для гиперсетей этот модификатор должен быть очень маленьким.
А для эмбеддингов зависит от конкретной сетки. Обычно неплохим вариантом является 5e-4, то есть в 10 раз меньше умолчального. Также поле принимает специальный синтаксис, позволяющий задать ступенчатую кривую (для тех, кто всерьёз заморачивается созданием эмбеддингов).
визуализация того, как на текущий момент нейронная сеть реагирует на ваши данные
Верить этой визуализации не стоит, потому что результат генерации зависит в том числе и от рандома. Намного удобнее по завершении обучения составить матрицу изображений, отложив по оси X разные seed'ы, а по Y - эмбеддинг на разном количестве шагов. И выбрать оптимальный вариант.
Я обучал до 100_000 шагов. Это занимает около 10 часов на Tesla A100 с Batch Size = 1
100000 - это слишком много. Уже после 20 000 дальнейшего улучшения результатов не происходит, даже наоборот - идёт переобучение, и изображение сильно обедняется деталями, а эмбеддинг начинает становиться "дубовым", давя все остальные ключевики запроса.
Оптимум обычно лежит в интервале 5000 - 15000, потому имеет смысл сделать до 20000 шагов и выбрать оптимальную точку.
Обучение можно прервать в любой момент, а затем продолжить с того же места
При этом в случае тренировки эмбеддинга не сохраняется текущее состояние оптимизатора, и после возобновления обучения результат слегка проседает и требуется примерно 1-2 тыс. шагов, чтобы выйти на прежний уровень.
Благодарю за уточнения!
Выбирать минимальное возможное количество, которое только позволяет нейронке правильно "захватить" форму персонажа. Потому что чем больше векторов, тем труднее потом работать с таким эмбеддингом. Так, к эмбеддингу в 6 векторов уже невозможно добавлять веса без того, чтоб всю картинку начало корёжить. Эмбеддинг в 12 векторов вдобавок нельзя двигать вперёд-назад по тексту запроса (тоже всё искажает). Очень большие эмбеддинги приводят к тому, что сетка начинает игнорировать всё больше и больше ключевиков запроса, выбирая информацию только из эмбеддинга. Поэтому чем меньше, тем лучше.
Увы, многие сложные персонажи, о которых нейронка "не знает", требуют довольно много векторов для успешного захвата. С ростом количества векторов изображение становится более резким и мусорным, а генерируемые картинки всё более однообразными.
Вот вам в качестве примера эмбеддинги, созданные на одном и том же датасете с одинаковыми параметрами. Изображения для сравнения сгенерированы одним и тем же запросом с тем же набором Seed'ов.
7 векторов
16 векторов
Что до количества изображений, то их должно быть минимум вдвое больше, чем векторов, а лучше вчетверо. При этом нейронка чётко следует принципу "Garbage in - Garbage out", он же "принцип мясорубки": если в мясорубку засыпать лебеду, то и на выходе получится исключительно лебеда, а никак не мясной фарш. И всего 5% мусора в датасете существенно просадит качество эмбеддинга.
Поэтому для датасета нужно отобрать наиболее характерные картинки, почистить их от всего лишнего (например, от текста и разного мусорного фона, если тот богат крупными резкими деталями) и тщательно тегировать. К каждой картинке желательно создать запрос, по которому нейронка сгенерирует максимально похожее (та же поза, тот же фон, примерный стиль). Рядом с каждой картинкой должен лежать txt-файл с тем же именем, в котором лежит соответствующий запрос.
Для полуавтоматической разметки больших тематических датасетов придуманы нейронки-Interrogator'ы (фреймворк от AUTOMATIC1111 поддерживает их интеграцию). Для ряда крупных франшиз (MLP как пример) созданы специализированные Interrogator'ы, дающие существенно лучший результат.
У онлайн бота SD в дискорде есть возможность задавать отрицательные значения cfg_scale и это порождает очень странные (очень!) пугающие картины в которых фигурируют ладони, искаженные лица и красные крапинки.
Причём, крипоты добавляет то, что этот сюжет появляется вне зависимости от промпта...
[ДАННЫЕ УДАЛЕНЫ]
Предположительно ██████ ██████ █████.
Сделать шаг вперёд и раздвинуть их рожи радиатором BFG, и услышать «!oremoR nhoJ ,em llik tsum uoy ,emag eht niw oT»
Если не ошибаюсь там какое-то криповое лицо было?
habr.com/ru/company/generations/blog/705012
Никакой магии, в каментах подробно разобрали это «феномен»
Я даже скажу, в каком именно камменте основная часть разбора :)
Добрых 90%, наверное.
CFG Scale -1 это то же самое что и CFG Scale +1, только позитивный и негативный промпты поменяны местами.
Вот ещё неплохой UI для начинающих https://github.com/cmdr2/stable-diffusion-ui
Правда по умолчанию он использует первую версию и автоматом загружаются веса для v1. Но можно в настройках включить галочкой вторую.
webio.sh --lowvram
буквально пол года до этого, памяти видеокарты не хватало и работало только на cpu (примерно 3.5мин на изображение), кстати интересный момент, количество потоков при этом выставлено где то в дебрях torch в 6 потоков, даже если процессор — 12.
У меня на 1050 работает с этим ключом.
Не знаю, какие именно оптимизации применяет ваш скрипт, но в интерфейсе Aumtomatic-а не так давно появилась возможность исспользовать xformers без возни с установкой колёс руками.
xformers - это библиотека, которая ещё сильнее урезает требования по памяти, ценой точности (ломает воспроизводимость страрых сидов).
Ловите лайфхак - то же самое можно погонять бесплатно на Google Collab с приемлемой производительностью:
https://colab.research.google.com/github/camenduru/stable-diffusion-webui-colab/blob/main/stable_diffusion_v2_1_webui_colab.ipynb - переходим залогиненным в гуглоаккаунте и нажимаем run, минут через несколько появится временнная ссылка с таким же интерфейсом, как в статье.
И ещё много моделей https://github.com/camenduru/stable-diffusion-webui-colab и https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Online-Services
Так что прикоснуться к прекрасному можно и без видеокарты. Автору спасибо огромное, до этого гонял только демку на Hugging Face, но там нет img2img.
Сколько времени уходило на генерацию одной картинки на этой конфигурации?
SD – это Linux, а Midjourney – Mac: краткое полное руководство по Stable Diffusion