Ce projet fournit une application Web qui génère des avatars à partir de tirs capturés via une webcam ou des fichiers téléchargés. Il tire parti de la fonctionnalité img2img
de l'API de diffusion stable, qui est intégrée par le webui de diffusion stable.
Le projet est centré sur une application Python ( app.py
) qui expose une API REST. Cette API traite une image originale avec des paramètres facultatifs (niveau fantastique et préférence de genre) et renvoie l'avatar généré. Les répertoires et fichiers suivants sont inclus:
.
├── 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
L'application Python est configurée pour se connecter à l'API de diffusion stable à http://localhost:7861/sdapi/v1/img2img
par défaut. Suivez ces étapes pour installer et configurer l'API REST localement:
Clone le référentiel stable de diffusion webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Téléchargez un modèle de diffusion stable en étreignant le visage
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Créer un environnement virtuel
python3 -m venv venv
source venv/bin/activate
Installez les dépendances et démarrez le webui
Exécutez le script pour installer les exigences et démarrez l'application:
./webui.sh
Une fois l'application exécutée sur http://127.0.0.1:7860
, vous pouvez l'arrêter avec Ctrl+C
.
Remarque: Cette étape n'est requise que lors de la configuration initiale.
Démarrez l'API REST
Si vous n'avez pas de GPU, vous pouvez démarrer l'API à l'aide du CPU:
python3 launch.py --nowebui --skip-python-version-check --always-cpu --skip-torch-cuda-test
L'API sera accessible via votre navigateur sur http://localhost:7861/docs#/default/img2imgapi_sdapi_v1_img2img_post
.
Pour tester l'application localement:
Démarrez l'API REST de diffusion stable et assurez-vous http://localhost:7861/sdapi/v1/img2img
est accessible.
Démarrer l'application Web
Configurez l'environnement Python et exécutez l'application:
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Accéder à l'application Web
Ouvrez un navigateur Web et accédez à http://localhost:5000
pour utiliser le générateur d'avatar.
Pour déployer l'application sur une instance AWS EC2, suivez le processus habituel de configuration d'un serveur, garantissant que Python 3.10, le webui de diffusion stable et d'autres dépendances sont correctement installés. Ajustez les groupes de sécurité et les types d'instructions selon que vous utilisez un GPU. Reportez-vous à la documentation AWS pour des instructions détaillées.
Ce guide décrit les étapes pour déployer l'application Avatar Generator sur une instance AWS EC2 équipée d'un GPU.
g4dn.xlarge
Mettre à jour les packages système
sudo apt-get update
sudo apt-get upgrade -y
Vérifiez la présence de l'appareil Nvidia
sudo lshw -c video
Vous devriez voir la sortie indiquant la présence d'un GPU Nvidia, comme:
*-display:1
description: 3D controller
product: TU104GL [Tesla T4]
vendor: NVIDIA Corporation
Installez les pilotes NVIDIA
sudo apt install -y ubuntu-drivers-common
sudo ubuntu-drivers autoinstall
Redémarrez l'instance
sudo reboot
Après le redémarrage, vérifiez que les pilotes NVIDIA sont correctement installés:
nvidia-smi
La sortie attendue doit afficher la version Nvidia Driver et la version CUDA.
Pour plus de détails sur l'installation des pilotes Nvidia, reportez-vous à la documentation d'Ubuntu.
Clone le référentiel stable de diffusion webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Télécharger le modèle de diffusion stable
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Installez le programme d'installation du package Python
sudo apt install python3-pip
Créer et activer un environnement virtuel
python3 -m venv venv
source venv/bin/activate
Installez les dépendances et démarrez webui
./webui.sh
Vous pouvez arrêter l'application avec Ctrl+C
après qu'il commence à fonctionner sur http://127.0.0.1:7860
.
Démarrez l'API REST
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test
Créer un script de démarrage pour l'API REST
Créez un script pour démarrer facilement l'API à l'avenir:
$ 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 "
Clone le référentiel d'application Web
git clone https://github.com/aborroy/communitylive-avatar.git
cd communitylive-avatar
Créer un environnement virtuel et démarrer l'application
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Créer un script de démarrage pour l'application Web
Créer un script pour démarrer facilement l'application Web:
$ 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 "
Étant donné que l'application utilise une webcam, une connexion HTTPS sécurisée est requise. Utilisez AWS Route 53 pour acheminer le trafic vers l'instance EC2. Exemple DNS: communitylive-avatar.alfdemo.com
.
Installer nginx
sudo apt-get install nginx
Installez le plugin CERTBOT et NGINX
sudo apt-get install certbot python3-certbot-nginx
Configurer nginx
Créer un fichier de configuration Nginx:
sudo vi /etc/nginx/sites-available/app
Ajouter la configuration suivante:
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 ;
}
}
Activer la configuration Nginx
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled
Tester la configuration et le rechargement de Nginx
sudo nginx -t
sudo systemctl reload nginx
Obtenir un certificat SSL
sudo certbot --nginx -d communitylive-avatar.alfdemo.com
CERTBOT configurera automatiquement Nginx pour utiliser TLS sur le port 443.
Pour activer la livraison par e-mail des avatars à l'aide d'AWS SES (service de messagerie simple), suivez ces étapes:
Installer AWS CLI :
Configurer AWS CLI :
aws configure
Configurez AWS SES :
aws ses verify-email-identity --email-address [email protected]
Tester les e-mails SES Sending :
aws ses send-email --from [email protected] --destination [email protected] --message " Subject={Data=Test Email},Body={Text={Data=Hello!}} "
Avec AWS SES configuré, votre application pourra envoyer les avatars générés par e-mail aux destinataires spécifiés.
Si toutes les étapes sont terminées avec succès, votre application sera accessible sur https://communityLive-avatar.alfdemo.com.