Proyek ini menyediakan aplikasi web yang menghasilkan avatar dari headshots yang diambil melalui webcam atau file yang diunggah. Ini memanfaatkan fungsionalitas img2img
dari API REST difusi yang stabil, yang diintegrasikan melalui WebUI difusi stabil.
Proyek ini berpusat di sekitar aplikasi Python ( app.py
) yang memperlihatkan API REST. API ini memproses gambar asli bersama dengan parameter opsional (level fantasi dan preferensi gender) dan mengembalikan avatar yang dihasilkan. Direktori dan file berikut disertakan:
.
├── 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
Aplikasi Python dikonfigurasi untuk terhubung ke API REST difusi stabil di http://localhost:7861/sdapi/v1/img2img
secara default. Ikuti langkah -langkah ini untuk menginstal dan mengatur API REST secara lokal:
Klon Repositori Webui difusi yang stabil
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Unduh model difusi yang stabil dari wajah memeluk
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Buat lingkungan virtual
python3 -m venv venv
source venv/bin/activate
Instal dependensi dan mulai webui
Jalankan skrip untuk menginstal persyaratan dan mulai aplikasi:
./webui.sh
Setelah aplikasi berjalan di http://127.0.0.1:7860
, Anda dapat menghentikannya dengan Ctrl+C
.
Catatan: Langkah ini hanya diperlukan selama pengaturan awal.
Mulailah API REST
Jika Anda tidak memiliki GPU, Anda dapat memulai API menggunakan CPU:
python3 launch.py --nowebui --skip-python-version-check --always-cpu --skip-torch-cuda-test
API akan dapat diakses melalui browser Anda di http://localhost:7861/docs#/default/img2imgapi_sdapi_v1_img2img_post
.
Untuk menguji aplikasi secara lokal:
Mulai API REST Difusi yang stabil dan pastikan http://localhost:7861/sdapi/v1/img2img
dapat dijangkau.
Mulai Aplikasi Web
Siapkan lingkungan Python dan jalankan aplikasi:
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Akses Aplikasi Web
Buka browser web dan navigasikan ke http://localhost:5000
untuk menggunakan generator avatar.
Untuk menggunakan aplikasi pada instance AWS EC2, ikuti proses yang biasa mengatur server, memastikan bahwa Python 3.10, WebUI difusi yang stabil, dan ketergantungan lainnya diinstal dengan benar. Sesuaikan grup keamanan dan tipe instance berdasarkan apakah Anda menggunakan GPU. Lihat dokumentasi AWS untuk instruksi terperinci.
Panduan ini menguraikan langkah -langkah untuk menyebarkan aplikasi generator avatar pada instance AWS EC2 yang dilengkapi dengan GPU.
g4dn.xlarge
Perbarui paket sistem
sudo apt-get update
sudo apt-get upgrade -y
Verifikasi keberadaan perangkat nvidia
sudo lshw -c video
Anda harus melihat output yang menunjukkan keberadaan GPU NVIDIA, seperti:
*-display:1
description: 3D controller
product: TU104GL [Tesla T4]
vendor: NVIDIA Corporation
Pasang driver NVIDIA
sudo apt install -y ubuntu-drivers-common
sudo ubuntu-drivers autoinstall
Reboot contoh
sudo reboot
Setelah reboot, verifikasi driver NVIDIA diinstal dengan benar:
nvidia-smi
Output yang diharapkan harus menunjukkan versi driver NVIDIA dan versi CUDA.
Untuk detail tambahan tentang menginstal driver NVIDIA, lihat dokumentasi Ubuntu.
Klon Repositori Webui difusi yang stabil
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Unduh model difusi yang stabil
cd models/Stable-diffusion
wget https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticVisionV51_v51VAE.safetensors
cd ../..
Instal Penginstal Paket Python
sudo apt install python3-pip
Membuat dan mengaktifkan lingkungan virtual
python3 -m venv venv
source venv/bin/activate
Instal dependensi dan mulai webui
./webui.sh
Anda dapat menghentikan aplikasi dengan Ctrl+C
setelah mulai berjalan di http://127.0.0.1:7860
.
Mulailah API REST
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test
Buat skrip startup untuk API REST
Buat skrip untuk dengan mudah memulai API di masa depan:
$ 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 "
Klon Repositori Aplikasi Web
git clone https://github.com/aborroy/communitylive-avatar.git
cd communitylive-avatar
Buat lingkungan virtual dan mulai aplikasi
python3 -m venv venv
source venv/bin/activate
pip install flask requests Pillow boto3
python3 app.py
Buat skrip startup untuk aplikasi web
Buat skrip untuk dengan mudah memulai aplikasi 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 "
Karena aplikasi menggunakan webcam, diperlukan koneksi HTTPS yang aman. Gunakan AWS Route 53 untuk merutekan lalu lintas ke instance EC2. Contoh DNS: communitylive-avatar.alfdemo.com
.
Instal Nginx
sudo apt-get install nginx
Instal Plugin Certbot dan Nginx
sudo apt-get install certbot python3-certbot-nginx
Konfigurasikan nginx
Buat file konfigurasi nginx:
sudo vi /etc/nginx/sites-available/app
Tambahkan konfigurasi berikut:
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 ;
}
}
Aktifkan konfigurasi nginx
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled
Uji konfigurasi dan muat ulang nginx
sudo nginx -t
sudo systemctl reload nginx
Dapatkan Sertifikat SSL
sudo certbot --nginx -d communitylive-avatar.alfdemo.com
Certbot akan secara otomatis mengkonfigurasi NGINX untuk menggunakan TLS pada port 443.
Untuk mengaktifkan pengiriman email avatar menggunakan AWS SES (layanan email sederhana), ikuti langkah -langkah ini:
Instal AWS Cli :
Konfigurasikan AWS CLI :
aws configure
Mengatur AWS SES :
aws ses verify-email-identity --email-address [email protected]
Uji SES SES Sending :
aws ses send-email --from [email protected] --destination [email protected] --message " Subject={Data=Test Email},Body={Text={Data=Hello!}} "
Dengan AWS SES yang dikonfigurasi, aplikasi Anda akan dapat mengirim avatar yang dihasilkan melalui email ke penerima yang ditentukan.
Jika semua langkah diselesaikan dengan sukses, aplikasi Anda akan dapat diakses di https://CommunityLive-Avatar.alfdemo.com.