이 프로젝트는 웹캠 또는 업로드 된 파일을 통해 캡처 한 헤드 샷에서 아바타를 생성하는 웹 응용 프로그램을 제공합니다. 안정적인 확산 webui를 통해 통합되는 안정적인 확산 REST API의 img2img
기능을 활용합니다.
이 프로젝트는 REST API를 노출시키는 Python Application ( app.py
)을 중심으로합니다. 이 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
파이썬 응용 프로그램은 기본적으로 http://localhost:7861/sdapi/v1/img2img
에서 안정적인 확산 REST API에 연결하도록 구성됩니다. 다음 단계에 따라 로컬로 REST API를 설치하고 설정하십시오.
안정적인 확산 webui 저장소를 복제하십시오
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
Hugging Face에서 안정적인 확산 모델을 다운로드하십시오
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를 시작하십시오
GPU가없는 경우 CPU를 사용하여 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
의 브라우저를 통해 액세스 할 수 있습니다.
로컬로 응용 프로그램을 테스트하려면 :
안정적인 확산 REST API를 시작 하고 http://localhost:7861/sdapi/v1/img2img
에 도달 할 수 있는지 확인하십시오.
웹 응용 프로그램을 시작하십시오
파이썬 환경을 설정하고 응용 프로그램을 실행하십시오.
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 문서를 참조하십시오.
이 안내서는 GPU가 장착 된 AWS EC2 인스턴스에 아바타 발전기 응용 프로그램을 배포하는 단계를 간략하게 설명합니다.
g4dn.xlarge
시스템 패키지 업데이트
sudo apt-get update
sudo apt-get upgrade -y
NVIDIA 장치의 존재를 확인하십시오
sudo lshw -c video
다음과 같은 NVIDIA GPU의 존재를 나타내는 출력이 표시됩니다.
*-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
http://127.0.0.1:7860
7860에서 실행되기 시작한 후 Ctrl+C
로 응용 프로그램을 중지 할 수 있습니다.
나머지 API를 시작하십시오
python3 launch.py --nowebui --skip-python-version-check --skip-torch-cuda-test
REST API에 대한 시작 스크립트를 만듭니다
향후 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은 포트 443에서 TLS를 사용하도록 NGINX를 자동으로 구성합니다.
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.alldemo.com에서 액세스 할 수 있습니다.