Цель проекта — обучить нейросеть Stable Diffusion стилю генерации персонажа без лица.
Предпосылки
Идея возникла на поле заигрывания с деанонимизацией, на которую вдохновил проекта Зака Бласа «Facial Weaponization Suite», 2011–14. Это проект, борющийся с деанонимизацией, в ходе которого была создана маска, чтобы технологии тех времен, распознающие лица, не смогли проидентифицировать человека.

Zach Blas, «Facial Weaponization Suite», 2011–14
сегодня технологии шагнули вперед, и теперь нейросети же создают прецеденты, когда нельзя верить своим глазам.
Концепция
Обучить нейросеть генерировать персонажа без лица (с чем у LoRA проблемы) это может быть полезно для стокового использования картинок, которые подразумевают намеренную скрытность и анонимность, ведь люди привыкли к идентификации друг друга и в технологиях по лицу. За основу обработки взята не так давно популярная дримкор эстетика.
За основу была взята собственноручно произведённая съёмка, задающая рамки для персонажа.
Пошаговое написание кода
Сначала в локальную директорию гугл коллаба были загружены изображения для дальнейшего обучения.
Была подключена учётная запись на Hugging Face, создан триггер и токен для каждого из изображений для дальнейшего на них обучения
На обучение модели ушло около часа с параметрами разрешения 512×512, размер батча 2, градиент накоп 3 и максимальным количеством шагов 400 с чекпоинтом на середине
ГенИИ в проекте помимо обученной нейросети не использовался
В конце для удобства модель сохранена на учетную запись Hugging Face, чтобы оптимизировать процесс использования и не потерять прогресс сеанса гугл коллаб
Затруднения и решения
при первом запуске этапа обучения модели, я столкнулась с ошибкой вызванной нахождением файла «metadata.jsonl» в папке с датасет изображениями, и при обработке он пытался обработать этот файл как другие изображения, из-за чего возникала ошибка
PIL.UnidentifiedImageError: cannot identify image file '/content/character_data/metadata.jsonl'
поэтому перед этим, я вынесла файл «metadata.jsonl» из папки «haracter_data» в папку «content» с помощью этого кода:
! mv /content/character_data/metadata.jsonl /content/metadata.jsonl #переместила ! ls /content/character_data #проверила, что остались только картикни
из-за нетипичного запроса на «отсутствие лица у персонажа», после оптимизирующей ячейки из исходного кода
vae = AutoencoderKL.from_pretrained («madebyollin/sdxl-vae-fp16-fix», torch_dtype=torch.float16) pipe = DiffusionPipeline.from_pretrained ( «stabilityai/stable-diffusion-xl-base-1.0», vae=vae, torch_dtype=torch.float16, variant="fp16», use_safetensors=True ) pipe.load_lora_weights («cyalpa/dreamcore_tok_girl_LoRA») pipe.fuse_lora (lora_scale=0.5) _ = pipe.to («cuda»)
генерации проходили хуже, компенсировать получилось перераспределением ключевых фраз внутри промта и большим количеством генераций.
Итоги
Модель уловила общие черты стиля, а именно: она соблюдает как минимум 3 параметра (наличие женской фигуры в белой одежде и с длинными волосами). Основная идея с загорождением лица вспышкой удалась не полностью, вероятно потому, что в понимании модели изначально все люди должны быть с лицами и это перевешивает идею мной собранного датасета. Однако вспышки появляются либо рядом, либо просто присутсвуют на генерации. Так же при некоторых итерациях лицо было закрыто, но не полностью или не вспышкой.
Самые удачные генерации
Не полностью соответствующие






