"Портрет, сделанный нейросетью" - все чаще читаем в новостной ленте, и каждый хотел бы сделать себе подобный, но удобные сервисы, просящие монету, или желание разбираться самому, отталкивают. Не нужно ничего скачивать. Час времени и каждый сможет сделать себе аватарку!  Значительный скачок в эволюции ИИ совершили модели "txt2img" (преобразование текста в изображение), обеспечив высококачественный и разнообразный синтез изображений из заданного текстового запроса. DreamBooth представляет новый подход к "персонализации" моделей "txt2img", специализируя их на потребностях пользователей.  Предварительно обученная модель настраивается путем добавления всего нескольких изображений объекта и соответствующего имени класса (например, "человек") в качестве входных данных. Таким образом, чтобы ИИ научилась связывать уникальный идентификатор (в нашем случае слово) с этим конкретным объектом.   Художественные представления:  Оригинальные художественные изображения собаки в стиле известных художников. Отмечается, что многие сгенерированные позы не были замечены в тренировочном наборе, например, в исполнении Ван Гога и Уорхола. Также, что некоторые работы, похоже, имеют новую композицию и точно имитируют стиль художника - даже предполагая некоторый творческий подход (экстраполяция с учетом предыдущих знаний).   Изменение "позы" представления:  Метод позволяет синтезировать изображения с заданными точками обзора для кошки (слева направо: вид сверху, снизу, сбоку и сзади). Обратите внимание, что сгенерированные позы отличаются от входных поз, а фон меняется реалистичным образом при изменении позы. Также подчеркивают сохранение сложных меховых узоров на лбу исследуемой кошки.   Изменение свойств:  Представляют изменения цвета в первом ряду (с помощью подсказок:  "[цвет] [V] автомобиль") и скрещивания конкретной собаки и разных животных во втором ряду (с помощью подсказок: "порода [V] собаки и [целевого вида]"). Метод сохраняет уникальные визуальные особенности, которые придают предмету его индивидуальность или сущность, выполняя при этом требуемую модификацию свойств. Добавление аксессуаров:  Оснащение собаки аксессуарами. Личность субъекта сохраняется и к собаке можно применить множество различных нарядов или аксессуаров, учитывая подсказку типа:    "[V] собака в костюме [полицейского / повара / ведьмы]". Наблюдается реалистичное взаимодействие между предметной собакой и одеждой или аксессуарами, а также большое разнообразие возможных вариантов. Для начала стоит убедится что на вашем Google Drive диске достаточный объем памяти. Нам потребуется не более 4-5гб, но зная среднестатистического пользователя, диск пустует и имеет 10-15гб свободного места. Заранее стоит подумать какие фотографии вы возьмете. Критериев не много, но они в значительно мере могут повлиять на результат: 1) разрешение 512px*512px (можно воспользоваться сервисом BIRME или другим аналогом). 2) объект один на фото. 3) вменяемое освещение. Создать аккаунт на сайте Hugging Face, а далее в настройках создать новый токен с ролью "write" в соответствующем разделе. В результате сгенерируется ключ, который потребуется позднее.  Открываем блокнот Google Colab, где первым делом авторизируемся в гугл аккаунте и нажимаем подключится в правом верхнем углу. На GitHub -е разработчиков будет появляется актуальная ссылка на блокнот. В самом верху, первым пунктом, проверяем выданную нам видеокарту, в большинстве случаев это будет Tesla T4 ( лучший вариант). Если же выданная карта отличается - обновите страницу и повторите подключение. Так же сойдет видеокарта P100, но скорость работы может отличаться. В разделе ресурсов, по мимо "ОЗУ" и "Диск", появится соответствующий пункт "Оперативная память графического процессора".        *Хочу заметить, что каждый пункт будет сопровождается запуском кода по нажатию на кнопку "плей" ( треугольничек в кружечке в начале каждой ячейки). Install Requirements  Устанавливаем пакеты и зависимости на выданный нам сервер. По завершению выдаст сообщение "done", а слева от пункта появится зеленая галочка с временим выполнения. Login to HuggingFace Вставляем ранее созданный токен с сайта Hugging Face и запускаем код ячейки. Install xformers from precompiled wheel Данный пункт выполнится быстро, так как все уже скомпилировано.  НО в случае возникновения ошибки, следует заменить первую строчку на код ниже и повторить. Перекомпиляция займет около 40 минут. Settings and run Если есть желание воспользоваться моделью в следующий раз, то стоит установить галочку "save_to_gdrive".  Имя и пути сохранения модели можно оставить стандартными. При запуске ячейки разрешите доступ к своему диску. Start Training Самый большой пункт, где могут возникнуть вопросы. Встречает нас таблица, ее мы пропускаем, так как она предназначается продвинутым пользователям для гибкой настройки скорости, качества и веса модели. Нас же интересует, как мы будем связывать наш объект с текстом в списке concepts_list: Первый параметр instance_prompt - идентификатор нашего объекта class_prompt - класс, который связывает наш объект с объектами знакомыми для ИИ (пример: [ваше имя] - [guy/girl] или ElonMask - Man, TeslaModelX - Car и тд.) Параметры с названием директорий для удобства называем соответственно. Запускаем ячейку. Что должно получится: instance_prompt - MossHubrGuide (мой идентификатор), class_prompt - man (класс с которым ассоциирую). Далее запускаем следующую ячейку, выбираем заготовленные изображения и ждем окончания загрузки. По окончанию загрузки изображений, в следующей ячейке нас интересуют строки: --max_train_steps - количество шагов для обучения ИИ (для портретов рекомендуется использовать значения 800-1500) --save_sample_prompt - должен иметь значение как и у instance_prompt для сохранения промежуточных выборок вместе с весами в директории. Запускаем выполнение ячейки, которая начнет скачивание модели, генерацию классов и обработку изображений. Продлится это ~30-40 минут в зависимости от того, сколько шагов выбрано для обучения. В процессе обработки могут появиться окна капчи с проверкой присутствия на странице, если не подтвердить - придется начать сначала.  Далее последовательно запускаем две ячейки, где первую оставляем пустой, а вторая сгенерирует 4 изображения "то как вас видит ИИ".  Convert weights to ckpt Данный пункт нужен если важно место на Google Drive, что сократит используемый объем до 2гб. Но для повторного использования весов пропускаем пункт. Inference Так же последовательно запускаем обе ячейки. Run for generating images. Вот начинается самое интересное!  prompt - тот самый текст/контекст, который определяет что будет рисовать ИИ. Тут уж пишите, что душе угодно (на английском языке), но есть достаточно эффективные сайты с готовыми промптом, пример: PromptsDatabase, Lexica. Промпт может выглядеть совершенно не похожем на предложения в привычном понимании, но ключевые слова и контекст имеют большую силу.  Для рисования объекта, добавленного в модель ранее, в строке prompt добавляем наш instance_prompt, а для большей точности вместе с ним и class_prompt.  Пример: "A epic and beautiful rococo painting of a young MossHubrGuide man half wolf covered in yellow cloth surrounded by wolves of ashes, standing before a desert of ashes. ultra-detailed. anime, pixiv, uhd 8k cryengine, octane render" num_samples - количество генерируемых изображений.  guidance_scalenum_inference_steps - параметры для более точного совпадения текста с содержимым. Оставляем дефолтными, а зависимость значений на результат можно увидеть в примечании в примечании. heightwidth   - размер получаемого изображения. Хотелось бы увеличить разрешение, но это может вызвать своеобразные артефакты. (*см. примечание)   Зависимость значений guidance_scale и num_inference_steps можно увидеть на следующем изображении:   При изменении высоты/ширины исходного изображения в отдельности от входящих возникают артефакты:   Запускаем ячейку! Ниже приведу пример с несколькими не самыми удачными, но не менее интересными изображениями и их промптом.  Джун