Dieses Projekt bietet eine Webanwendung, die Avatare aus Headshots generiert, die über Webcam oder hochgeladene Dateien erfasst wurden. Es nutzt die img2img
-Funktionalität der stabilen Diffusionsruhe -API, die durch das stabile Diffusions -Webui integriert wird.
Das Projekt dreht sich um eine Python -Anwendung ( app.py
), die eine REST -API enthüllt. Diese API verarbeitet ein Originalbild zusammen mit optionalen Parametern (Fantasy -Ebene und Geschlechterpräferenz) und gibt den generierten Avatar zurück. Die folgenden Verzeichnisse und Dateien sind enthalten:
.
├── 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
Die Python -Anwendung ist so konfiguriert, dass sie standardmäßig eine Verbindung zu der stabilen Diffusionsruhe -API unter http://localhost:7861/sdapi/v1/img2img
herstellt. Befolgen Sie die folgenden Schritte, um die Rest -API lokal zu installieren und einzurichten:
Klonen Sie das stabile Diffusions -Webui -Repository
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Laden Sie ein stabiles Diffusionsmodell vom Umarmungsgesicht herunter
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Erstellen Sie eine virtuelle Umgebung
python3 -m venv venv
source venv/bin/activate
Installieren Sie Abhängigkeiten und starten Sie das Webui
Führen Sie das Skript aus, um Anforderungen zu installieren und die Anwendung zu starten:
./webui.sh
Sobald die Anwendung unter http://127.0.0.1:7860
ausgeführt wird, können Sie sie mit Ctrl+C
stoppen.
HINWEIS: Dieser Schritt ist nur während des ersten Einrichtungs erforderlich.
Starten Sie die Rest -API
Wenn Sie keine GPU haben, können Sie die API mit der CPU starten:
python3 launch.py --nowebui --skip-python-version-check --always-cpu --skip-torch-cuda-test
Die API ist über Ihren Browser unter http://localhost:7861/docs#/default/img2imgapi_sdapi_v1_img2img_post
zugänglich.
Um die Anwendung lokal zu testen:
Starten Sie die stabile Diffusionsruhe -API und stellen Sie sicher, dass http://localhost:7861/sdapi/v1/img2img
erreichbar ist.
Starten Sie die Webanwendung
Richten Sie die Python -Umgebung ein und führen Sie die Anwendung aus:
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Greifen Sie auf die Webanwendung zu
Öffnen Sie einen Webbrowser und navigieren Sie zu http://localhost:5000
um den Avatar -Generator zu verwenden.
Um die Anwendung in einer AWS -EC2 -Instanz bereitzustellen, befolgen Sie den üblichen Prozess der Einrichtung eines Servers und stellen Sie sicher, dass Python 3.10, die stabile Diffusions -Webui und andere Abhängigkeiten ordnungsgemäß installiert sind. Passen Sie Sicherheitsgruppen und Instanztypen an, basierend darauf, ob Sie eine GPU verwenden. Ausführliche Anweisungen finden Sie in der AWS -Dokumentation.
In diesem Handbuch werden die Schritte zum Bereitstellen der Avatar -Generatoranwendung in einer mit einer GPU ausgestatteten AWS -EC2 -Instanz beschrieben.
g4dn.xlarge
Systempakete aktualisieren
sudo apt-get update
sudo apt-get upgrade -y
Überprüfen Sie die Präsenz von Nvidia Geräte
sudo lshw -c video
Sie sollten die Ausgabe sehen, die das Vorhandensein einer Nvidia -GPU angibt, wie z. B.:
*-display:1
description: 3D controller
product: TU104GL [Tesla T4]
vendor: NVIDIA Corporation
Installieren Sie Nvidia -Treiber
sudo apt install -y ubuntu-drivers-common
sudo ubuntu-drivers autoinstall
Starten Sie die Instanz neu
sudo reboot
Überprüfen Sie nach dem Neustart die NVIDIA -Treiber sind korrekt installiert:
nvidia-smi
Die erwartete Ausgabe sollte die NVIDIA -Treiberversion und die CUDA -Version anzeigen.
Weitere Informationen zur Installation von NVIDIA -Treibern finden Sie in der Dokumentation von Ubuntu.
Klonen Sie das stabile Diffusions -Webui -Repository
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Laden Sie ein stabiles Diffusionsmodell herunter
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Installieren Sie das Python -Paket -Installationsprogramm
sudo apt install python3-pip
Erstellen und aktivieren Sie eine virtuelle Umgebung
python3 -m venv venv
source venv/bin/activate
Installieren Sie Abhängigkeiten und starten Sie Webui
./webui.sh
Sie können die Anwendung mit Ctrl+C
einstellen, nachdem sie unter http://127.0.0.1:7860
ausgeführt wird.
Starten Sie die Rest -API
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test
Erstellen Sie ein Startskript für die Rest -API
Erstellen Sie ein Skript, um die API in Zukunft problemlos zu starten:
$ 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 "
Klonen Sie das Webanwendungs -Repository
git clone https://github.com/aborroy/communitylive-avatar.git
cd communitylive-avatar
Erstellen Sie eine virtuelle Umgebung und starten Sie die Anwendung
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Erstellen Sie ein Startskript für die Webanwendung
Erstellen Sie ein Skript, um die Webanwendung einfach zu starten:
$ 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 "
Da die Anwendung eine Webcam verwendet, ist eine sichere HTTPS -Verbindung erforderlich. Verwenden Sie die AWS -Route 53, um den Verkehr an die EC2 -Instanz weiterzuleiten. Beispiel DNS: communitylive-avatar.alfdemo.com
.
Installieren Sie Nginx
sudo apt-get install nginx
Installieren Sie Certbot und Nginx Plugin
sudo apt-get install certbot python3-certbot-nginx
Konfigurieren Sie Nginx
Erstellen Sie eine Nginx -Konfigurationsdatei:
sudo vi /etc/nginx/sites-available/app
Fügen Sie die folgende Konfiguration hinzu:
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 ;
}
}
Aktivieren Sie die Nginx -Konfiguration
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled
Testen Sie die Nginx -Konfiguration und laden Sie neu
sudo nginx -t
sudo systemctl reload nginx
Erhalten Sie ein SSL -Zertifikat
sudo certbot --nginx -d communitylive-avatar.alfdemo.com
Certbot konfiguriert NGINX automatisch so, dass sie TLS auf Port 443 verwendet.
Befolgen Sie die folgenden Schritte, um die E -Mail -Zustellung von Avataren mit AWS SES (Simple E -Mail -Service) zu ermöglichen:
AWS CLI installieren :
AWS CLI konfigurieren :
aws configure
AWS SES aufstellen :
aws ses verify-email-identity --email-address [email protected]
Testen Sie die SES -E -Mail -Senden :
aws ses send-email --from [email protected] --destination [email protected] --message " Subject={Data=Test Email},Body={Text={Data=Hello!}} "
Wenn AWS SES konfiguriert ist, kann Ihre Anwendung die generierten Avatare per E -Mail an die angegebenen Empfänger senden.
Wenn alle Schritte erfolgreich ausgeführt werden, ist Ihre Bewerbung unter https://communitylive-avatar.alfdemo.com zugänglich.