Нейросеть FaceChain: Создание Цифрового Двойника с Помощью Глубокого Обучения
FaceChain — это цепочка инструментов машинного обучения для создания вашего цифрового двойника.
Имея как минимум 1 портретную фотографию, вы можете создать собственный цифровой двойник и начать создавать личные портреты в различных стилях и окружениях.
FaceChain — это инструментарий для генерации вашего цифрового двойника с использованием глубокого обучения. Даже с одним портретным фото вы можете создать собственного цифрового двойника и начать генерировать персональные портреты в различных стилях (поддерживаются несколько стилей!). Вы можете обучить свою модель цифрового двойника и генерировать фотографии с помощью Python-скриптов FaceChain или через привычный интерфейс Gradio. FaceChain работает на базе ModelScope.
Новости
- Больше Технических Деталей (30 августа 2023): В статье представлены более подробные технические детали.
- Добавлена Поддержка Проверки и Ансамблирования для Обучения Lora (28 августа 2023): Добавлена поддержка проверки и ансамблирования для обучения Lora, а также InpaintTab (пока скрыта в Gradio).
- Модуль Управления Позами (27 августа 2023): Добавлен модуль управления позами.
- Улучшена Тренировка Lora для Лиц (27 августа 2023): Добавлена улучшенная тренировка Lora для лиц, увеличивающая производительность при обучении на одной фотографии и смешивании стилей.
- Доступно в HuggingFace Space (25 августа 2023): Теперь доступно в HuggingFace Space! Вы можете использовать FaceChain непосредственно с помощью 🤗.
- Поддержка Замечательных Подсказок (18 августа 2023): Добавлена поддержка замечательных подсказок!
- Поддержка Новых Моделей Стиля (16 августа 2023): Поддержка новых моделей стиля в плагин-плей моде.
- Настроенные Подсказки (16 августа 2023): Поддержка настраиваемых подсказок.
- Colab-Блокнот (15 августа 2023): Теперь доступен блокнот Colab! Вы можете использовать FaceChain непосредственно с помощью «Open In Colab».
Планы
- Поддержка Большего Количества Моделей Стиля (включая те, что на Civitai) — находится в разработке.
- Поддержка Большего Количества Эффектов Ретуширования.
- Поддержка Последних Моделей Основы, таких как SDXL.
- Поддержка Высокого Разрешения.
- Поддержка Сценария Групповой Фотографии, Например, Многоперсонное.
- Предоставление Большего Количества Забавных Приложений.
Цитирование
Если FaceChain помогает вам в исследованиях, пожалуйста, цитируйте его в своих публикациях.
Цитата:
@article{liu2023facechain,
title={FaceChain: A Playground for Identity-Preserving Portrait Generation},
author={Liu, Yang and Yu, Cheng and Shang, Lei and Wu, Ziheng and
Wang, Xingjun and Zhao, Yuze and Zhu, Lin and Cheng, Chen and
Chen, Weitao and Xu, Chao and Xie, Haoyu and Yao, Yuan and
Zhou, Wenmeng and Chen Yingda and Xie, Xuansong and Sun, Baigui},
journal={arXiv preprint arXiv:2308.14256},
year={2023}
}
Установка
Поддерживаемые Окружения
Мы успешно проверили выполнение end-to-end в следующем окружении:
- Python: py3.8, py3.10
- PyTorch: torch2.0.0, torch2.0.1
- TensorFlow: 2.8.0, tensorflow-cpu
- CUDA: 11.7
- CUDNN: 8+
- ОС: Ubuntu 20.04, CentOS 7.9
- GPU: Nvidia-A10 24G
Требования к Ресурсам
- GPU: примерно 19 ГБ
- Диск: примерно 50 ГБ
Гид по Установке
Существуют несколько способов установки:
1. Заметки ModelScope (рекомендуется):
- ModelScope Notebook предлагает бесплатный уровень, который позволяет пользователям ModelScope запустить приложение FaceChain с минимальными настройками.
2. Docker:
- Если вы знакомы с Docker, это более быстрый способ:
# Шаг 1: Подготовьте среду с GPU локально или в облаке. Мы рекомендуем использовать Alibaba Cloud ECS, см. [Alibaba Cloud ECS](https://www.aliyun.com/product/ecs).
# Шаг 2: Скачайте образ Docker (для установки Docker Engine см. [документацию](https://docs.docker.com/engine/install/)):
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0
# Шаг 3: Запустите контейнер Docker:
docker run -it --name facechain -p 7860:7860 --gpus all registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0 /bin/bash
(Примечание: вам может потребоваться установить nvidia-container-runtime, см. [документацию](https://github.com/NVIDIA/nvidia-container-runtime))
# Шаг 4: Установите Gradio в контейнере Docker:
pip3 install gradio
pip3 install controlnet_aux==0.0.6
pip3 install python-slugify
# Шаг 5: Клонируйте репозиторий FaceChain:
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
python3 app.py
# Примечание: FaceChain в настоящее время предполагает использование одной GPU. Если у вас несколько GPU, используйте следующую команду:
# CUDA_VISIBLE_DEVICES=0 python3 app.py
# Шаг 6: Запустите сервер приложения: перейдите по "public URL" --> вида https://xxx.gradio.live
3. Conda Виртуальная Среда:
- Используйте виртуальное окружение Conda и управляйте зависимостями с помощью Anaconda. После установки выполните следующие команды (Примечание: mmcv имеет строгие требования к окружению и может не совместим с некоторыми случаями. Рекомендуется использовать Docker):
conda create -n facechain python=3.8 # Подтверждены версии 3.8 и 3.10
conda activate facechain
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
pip3 install -r requirements.txt
pip3 install -U openmim
mim install mmcv-full==1.7.0
# Перейдите в каталог facechain и запустите:
python3 app.py
# Примечание: FaceChain в настоящее время предполагает использование одной GPU. Если у вас несколько GPU, используйте следующую команду:
# CUDA_VISIBLE_DEVICES=0 python3 app.py
# Наконец, перейдите по URL, сгенерированному в журнале, чтобы получить доступ к веб-странице.
4. Блокнот Colab:
- Вы можете запустить FaceChain на Colab. Подробности см. здесь.
Запуск
FaceChain поддерживает обучение и вывод в среде Python. Запустите следующую команду в клонированной папке, чтобы начать обучение:
PYTHONPATH=. sh train_lora.sh "ly261666/cv_portrait_model" "v2.0" "film/film" "./imgs" "./processed" "./output"
Параметры:
- «ly261666/cv_portrait_model»: стабильная модель базы ModelScope, используемая для обучения, не требует изменений.
- «v2.0»: номер версии базовой модели, не требует изменений.
- «film/film»: эта базовая модель может содержать несколько подкаталогов с разными стилями, в настоящее время мы используем «film/film», не требует изменений.
- «./imgs»: локальный каталог с оригинальными фотографиями, используемыми для обучения и генерации.
- «./processed»: папка с обработанными изображениями после предобработки, используется также при выводе.
- «./output»: папка, в которой хранятся веса модели после обучения.
Ожидайте 5-20 минут, чтобы завершить обучение. Вы также можете настроить другие гиперпараметры обучения, см. train_lora.sh для полного списка гиперпараметров.
Для вывода отредактируйте код в файле run_inference.py:
# Использовать управление глубиной
, по умолчанию False, действительно только при использовании управления позой
use_depth_control = False
# Использовать управление позой, по умолчанию False
use_pose_model = False
# Путь к изображению для управления позой, действительно только при использовании управления позой
pose_image = 'poses/man/pose1.png'
# Укажите папку с изображениями после предобработки выше, она должна совпадать с обучением
processed_dir = './processed'
# Количество генерируемых изображений при выводе
num_generate = 5
# Стабильная модель базы, использованная при обучении, не требует изменений
base_model = 'ly261666/cv_portrait_model'
# Номер версии этой базовой модели, не требует изменений
revision = 'v2.0'
# Эта базовая модель может содержать несколько подкаталогов с разными стилями, в настоящее время мы используем "film/film", не требует изменений
base_model_sub_dir = 'film/film'
# Папка, в которой хранятся веса модели после обучения, она должна совпадать с обучением
train_output_dir = './output'
# Укажите папку для сохранения сгенерированных изображений, этот параметр можно изменить по вашему усмотрению
output_dir = './generated'
# Использовать китайскую стильную модель, по умолчанию False
use_style = False
Затем выполните:
python run_inference.py
Сгенерированные персональные цифровые изображения будут находиться в папке output_dir.
Введение
FaceChain представляет собой инструментарий для генерации вашего собственного цифрового двойника, используя глубокое обучение. Даже с одним портретным фото, вы можете создать своего собственного цифрового двойника и генерировать персональные портреты в различных стилях. FaceChain предлагает несколько уровней кастомизации, позволяя вам управлять стилем и содержанием создаваемых портретов.
Архитектурное Обзор
Способность к созданию персональных портретов в FaceChain зависит от модели стабильной диффузии, способной преобразовывать текст в изображение. Генерация персональных портретов зависит от двух основных факторов: информации о стиле портрета и информации о характере пользователя. Для этого в FaceChain используются модель стиля LoRA, обученная оффлайн, и модель лица LoRA, обученная онлайн, чтобы извлекать эту информацию. LoRA — это модель тонкой настройки с небольшим количеством обучаемых параметров.
Обучение
Ввод: загруженные пользователем изображения, содержащие четкие области лица.
Вывод: модель лица LoRA.
Описание: Сначала обрабатываем загруженные пользователем изображения с помощью модели вращения изображения на основе оценки ориентации и метода рефинирования вращения лица на основе моделей обнаружения лиц и ключевых точек, чтобы получить изображения с прямыми лицами. Затем мы используем модель анализа человеческого тела и модель красоты портрета человека, чтобы получить высококачественные изображения лиц для обучения. Затем мы используем модель атри
бутов лица и модель аннотации текста в сочетании с методами постобработки меток для получения детализированных меток для изображений обучения. Наконец, мы используем вышеуказанные изображения и данные меток для настройки модели стабильной диффузии и получения модели лица LoRA.
Вывод
Ввод: изображения, загруженные пользователем на этапе обучения, предварительно заданные слова для генерации персональных портретов.
Вывод: персональное изображение портрета.
Описание: Сначала мы объединяем веса модели лица LoRA и модели стиля LoRA в модель стабильной диффузии. Затем мы используем функцию генерации изображения по тексту модели стабильной диффузии для предварительной генерации персональных портретов на основе предварительно заданных слов. Затем мы улучшаем детали лица на изображении с помощью модели объединения лица. Шаблонное лицо, используемое для слияния, выбирается из изображений обучения с помощью модели оценки качества лица. Наконец, мы используем модель распознавания лиц для вычисления сходства между сгенерированным изображением портрета и шаблонным лицом и используем это для сортировки изображений, выводя в качестве окончательного результата персональное изображение портрета, которое занимает первое место.
Список Моделей
В FaceChain используются следующие модели:
- Модель обнаружения лиц DamoFD: Ссылка.
- Модель вращения изображения (предоставляется в ModelScope Studio).
- Модель анализа человеческого тела M2FP: Ссылка.
- Модель кожи ABPN: Ссылка.
- Модель распознавания атрибутов лица FairFace: Ссылка.
- Модель DeepDanbooru: Ссылка.
- Модель оценки качества лица FQA: Ссылка.
- Модель слияния лица: Ссылка.
- Модель распознавания лиц RTS: Ссылка.
Дополнительная Информация
- Библиотека ModelScope: Предоставляет основу для построения экосистемы моделей ModelScope, включая интерфейс и реализацию для интеграции различных моделей в ModelScope.
Лицензия
Этот проект лицензирован по лицензии Apache (версия 2.0).