يوفر هذا المشروع تطبيق ويب يقوم بإنشاء صور شخصية من Headshots التي تم التقاطها عبر كاميرا الويب أو الملفات التي تم تحميلها. إنه يعزز وظيفة img2img في واجهة برمجة تطبيقات REST المستقرة ، والتي يتم دمجها من خلال WebUI المستقرة.

يتركز المشروع حول تطبيق Python ( app.py ) الذي يعرض واجهة برمجة تطبيقات 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 المستقرة للانتشار على 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 REST
إذا لم يكن لديك وحدة معالجة الرسومات ، فيمكنك بدء واجهة برمجة التطبيقات باستخدام وحدة المعالجة المركزية:
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 المستقر للانتشار وضمان 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 المستقر ، والتبعيات الأخرى بشكل صحيح. اضبط مجموعات الأمان وأنواع المثيلات بناءً على ما إذا كنت تستخدم وحدة معالجة الرسومات. ارجع إلى وثائق AWS للحصول على إرشادات مفصلة.
يوضح هذا الدليل الخطوات لنشر تطبيق المولد الآلهة على مثيل 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 REST
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 (خدمة بريد إلكتروني بسيطة) ، اتبع هذه الخطوات:
تثبيت 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.