Этот проект предоставляет веб -приложение, которое генерирует аватары из выстрелов в голову, захваченные через веб -камеру или загруженные файлы. Он использует функциональность img2img
устойчивого API Diffusion REST, который интегрируется через стабильную диффузионную WebUI.
Проект сосредоточен вокруг приложения Python ( app.py
), которое раскрывает API REST. Этот API обрабатывает исходное изображение вместе с дополнительными параметрами (уровень фантазии и гендерные предпочтения) и возвращает сгенерированный аватар. Следующие каталоги и файлы включены:
.
├── app.py # Main application file exposing REST API
├── static # Static resources for the web application
│ ├── Hyland_logo.png
│ └── style.css
└── templates # HTML templates
└── index.html
Приложение Python настроено для подключения к API стабильного Diffusion REST по адресу http://localhost:7861/sdapi/v1/img2img
по умолчанию. Следуйте этим шагам, чтобы установить и настроить API REST локально:
Клонировать репозиторий стабильного диффузии webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Скачать стабильную диффузионную модель от обнимающего лица
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Создать виртуальную среду
python3 -m venv venv
source venv/bin/activate
Установите зависимости и запустите WebUI
Запустите сценарий, чтобы установить требования и запустить приложение:
./webui.sh
Как только приложение работает по адресу http://127.0.0.1:7860
, вы можете остановить его с помощью Ctrl+C
.
Примечание. Этот шаг требуется только во время начальной настройки.
Начните API остального
Если у вас нет графического процессора, вы можете запустить API с помощью процессора:
python3 launch.py --nowebui --skip-python-version-check --always-cpu --skip-torch-cuda-test
API будет доступен через ваш браузер по адресу http://localhost:7861/docs#/default/img2imgapi_sdapi_v1_img2img_post
.
Чтобы проверить приложение локально:
Начните API стабильного Diffusion REST и убедитесь http://localhost:7861/sdapi/v1/img2img
.
Запустить веб -приложение
Установите среду Python и запустите приложение:
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Доступ к веб -приложению
Откройте веб -браузер и перейдите на http://localhost:5000
чтобы использовать генератор аватара.
Чтобы развернуть приложение в экземпляре AWS EC2, следуйте обычному процессу настройки сервера, гарантируя, что Python 3.10, стабильная диффузионная WebUI и другие зависимости устанавливаются должным образом. Регулируйте группы безопасности и типы экземпляров на основе того, используете ли вы GPU. Обратитесь к документации AWS для подробных инструкций.
В этом руководстве изложены шаги по развертыванию приложения Avatar Generator на экземпляре AWS EC2, оснащенном графическим процессором.
g4dn.xlarge
Обновление системных пакетов
sudo apt-get update
sudo apt-get upgrade -y
Проверьте присутствие устройства nvidia
sudo lshw -c video
Вы должны увидеть выход, указывающий на наличие графического процессора NVIDIA, например:
*-display:1
description: 3D controller
product: TU104GL [Tesla T4]
vendor: NVIDIA Corporation
Установите драйверы NVIDIA
sudo apt install -y ubuntu-drivers-common
sudo ubuntu-drivers autoinstall
Перезагрузите экземпляр
sudo reboot
После перезагрузки убедитесь, что драйверы nvidia правильно установлены:
nvidia-smi
Ожидаемый выход должен показывать версию драйвера NVIDIA и версию CUDA.
Для получения дополнительной информации об установке драйверов NVIDIA см. Документацию Ubuntu.
Клонировать репозиторий стабильного диффузии webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Скачать стабильную диффузионную модель
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Установите установщик пакета Python
sudo apt install python3-pip
Создать и активировать виртуальную среду
python3 -m venv venv
source venv/bin/activate
Установите зависимости и запустите WebUI
./webui.sh
Вы можете остановить приложение с помощью Ctrl+C
после того, как оно начинает работать по адресу http://127.0.0.1:7860
.
Начните API остального
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test
Создайте сценарий стартапа для API REST
Создайте сценарий, чтобы легко запустить API в будущем:
$ cat start_api.sh
#! /bin/bash
# Navigate to the stable-diffusion-webui directory
cd stable-diffusion-webui
# Create a virtual environment if it doesn't exist
if [ ! -d " venv " ] ; then
python3 -m venv venv
fi
# Activate the virtual environment
source venv/bin/activate
# Launch the application and write output to api.log
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test > ../api.log 2>&1 &
# Print a message indicating the application has started
echo " API has started. Output is being written to api.log "
Клонировать репозиторий веб -приложения
git clone https://github.com/aborroy/communitylive-avatar.git
cd communitylive-avatar
Создайте виртуальную среду и запустите приложение
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Создайте сценарий стартапа для веб -приложения
Создайте сценарий для легко запуска веб -приложения:
$ cat start_app.sh
#! /bin/bash
# Navigate to the app directory
cd communitylive-avatar
# Create a virtual environment if it doesn't exist
if [ ! -d " venv " ] ; then
python3 -m venv venv
fi
# Activate the virtual environment
source venv/bin/activate
# Launch the application and write output to app.log
python3 app.py > ../app.log 2>&1 &
# Print a message indicating the application has started
echo " Application has started. Output is being written to app.log "
Поскольку в приложении используется веб -камера, требуется безопасное HTTPS -соединение. Используйте AWS Route 53 для маршрута трафика в экземпляр EC2. Пример DNS: communitylive-avatar.alfdemo.com
.
Установите Nginx
sudo apt-get install nginx
Установить плагин Certbot и Nginx
sudo apt-get install certbot python3-certbot-nginx
Настройте Nginx
Создайте файл конфигурации NGINX:
sudo vi /etc/nginx/sites-available/app
Добавьте следующую конфигурацию:
server {
listen 80 ;
server_name communitylive-avatar.alfdemo.com;
client_max_body_size 64M ;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto $scheme ;
}
}
Включить конфигурацию NGINX
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled
Проверьте конфигурацию Nginx и перезагрузку
sudo nginx -t
sudo systemctl reload nginx
Получить сертификат SSL
sudo certbot --nginx -d communitylive-avatar.alfdemo.com
CERTBOT автоматически настраивает NGINX для использования TLS на порте 443.
Чтобы включить доставку по электронной почте аватаров с помощью AWS SES (Simple Email Service), выполните следующие действия:
Установить AWS CLI :
Настройте AWS CLI :
aws configure
Настройка AWS SES :
aws ses verify-email-identity --email-address [email protected]
Тест Электронная почта SES отправка :
aws ses send-email --from [email protected] --destination [email protected] --message " Subject={Data=Test Email},Body={Text={Data=Hello!}} "
С настройкой AWS SES ваше приложение сможет отправлять сгенерированные аватары по электронной почте указанным получателям.
Если все шаги будут выполнены успешно, ваше приложение будет доступно по адресу https://communitylive-avatar.alfdemo.com.