
Dress AI Service란?
Dress AI Service는 의류 사진을 검색 가능한 가상 옷장으로 변환하는 오픈 소스 자체 호스팅 패션 플랫폼입니다. AI를 사용해 의류를 분류하고, 조합을 추천하며, 제안된 코디의 시각적 표현을 생성합니다.
이 서비스는 FastAPI 백엔드와 경량 HTML 및 Tailwind CSS 프런트엔드로 실행됩니다. 기본 데이터베이스는 SQLite이며 PostgreSQL도 대안으로 지원됩니다. CLIP은 이미지 이해를 처리하고, Stable Diffusion XL 또는 FLUX는 코디 시각화를 생성할 수 있습니다. Ollama를 선택적으로 사용하면 로컬 언어 모델의 추론 기능을 제공할 수 있습니다.
애플리케이션을 자체 호스팅하므로 옷장 사진은 호스팅된 Dress AI 서비스에 업로드되지 않고 사용자가 관리하는 인프라에 보관됩니다.
주요 기능
- AI 옷장 태깅: 의류 사진에서 카테고리, 주요 색상, 패턴, 소재, 스타일, 계절을 감지합니다.
- 코디 추천: 색채 이론, 상황, 날씨, 시각적 유사성, 패션 규칙에 따라 의류를 조합합니다.
- 가상 시각화: Stable Diffusion XL 또는 FLUX를 사용해 추천 코디를 렌더링합니다.
- 날씨 기반 제안: 실시간 날씨 정보를 활용해 적합한 소재와 레이어를 추천합니다.
- 상황별 프로필: 캐주얼 행사, 비즈니스 환경, 데이트, 여행, 파티, 운동을 위한 스타일을 생성합니다.
- 옷장 정리: 즐겨찾기와 컬렉션을 만들고, 여러 아이템을 한 번에 업로드하며, 중복 항목을 감지합니다.
- 분석: 자주 사용하는 색상, 활용도가 낮은 의류, 옷장의 잠재적인 부족 항목을 확인합니다.
- 공유 및 내보내기: 코디 보드를 PNG 또는 PDF로 내보내거나 공유 가능한 링크를 생성합니다.
- 확장성: 플러그인 시스템을 통해 사용자 지정 추천 엔진을 추가합니다.
- 다양한 인터페이스: 브라우저 애플리케이션, REST API 또는 설치형 PWA를 사용할 수 있습니다.
시스템 작동 방식
옷장 디지털화
의류 이미지를 업로드하면 서비스가 이미지를 전처리하고 선택적으로 배경을 제거할 수 있습니다. 그런 다음 CLIP이 카테고리, 색상, 패턴, 소재 등의 속성을 분류합니다. 애플리케이션은 이후 검색과 추천에 사용할 수 있도록 생성된 메타데이터와 시각적 임베딩을 저장합니다.
코디 추천
추천 엔진은 규칙과 임베딩 유사성을 결합합니다. 규칙 기반 계층은 색상 관계, 상황 적합성, 날씨 조건을 고려합니다. CLIP 임베딩은 시각적으로 조화로운 아이템을 식별하는 데 도움을 줍니다. Ollama를 활성화하면 로컬 언어 모델이 자연어 추론과 설명을 추가할 수 있습니다.
AI 시각화
선택한 추천 코디에 대해 Dress AI Service는 의류 메타데이터로 프롬프트를 구성하고, 일반적인 이미지 생성 아티팩트를 줄이기 위한 네거티브 프롬프트를 추가합니다. Stable Diffusion 또는 FLUX가 이미지를 생성한 후, 선택적으로 업스케일링, 얼굴 복원, 배경 일관성 조정 등의 후처리를 수행할 수 있습니다.
사전 요구 사항
권장 배포 방식은 Docker와 Docker Compose를 사용하는 것입니다. 직접 설치하려면 Python 3.11 이상을 사용하고 저장소의 요구 사항을 설치하세요. 활성화하는 모델에 따라 AI 모델 다운로드와 생성 이미지에 상당한 저장 공간 및 컴퓨팅 리소스가 필요할 수 있습니다.
프로젝트를 복제하려면 Git도 필요합니다. OpenWeather API 키는 선택 사항이며 실시간 날씨 기반 추천을 활성화합니다. Ollama 역시 선택 사항이며 로컬 LLM 추론 기능을 제공합니다.
Docker로 설치
Docker는 전체 서비스를 시작하는 가장 간단한 방법입니다. 저장소를 dress-ai-service라는 디렉터리에 복제하고 환경 파일을 만든 다음 컨테이너를 빌드하세요.
git clone https://github.com/GangTailorUpgrade/undress-service.git dress-ai-service
cd dress-ai-service
cp .env.example .env
docker-compose up --build시작이 완료되면 http://localhost:8080을 여세요. 대화형 Swagger API 문서는 http://localhost:8080/docs에서 확인할 수 있으며, ReDoc은 http://localhost:8080/redoc에서 사용할 수 있습니다.
이후 백그라운드 배포를 실행하려면 다음 명령을 사용하세요.
docker-compose up -d로컬 Python으로 설치
컨테이너 없이 애플리케이션을 실행하거나 수정하려면 가상 환경을 만들고 Python 종속 항목을 설치하세요.
git clone https://github.com/GangTailorUpgrade/undress-service.git dress-ai-service
cd dress-ai-service
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtWindows에서는 다음 명령으로 환경을 활성화하세요.
venv\Scripts\activate처음 실행하기 전에 필요한 AI 모델을 다운로드하세요.
python scripts/download_models.py포트 8080에서 FastAPI 개발 서버를 시작하세요.
uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload--reload 옵션은 소스 파일이 변경될 때 서버를 재시작하므로 개발 중에 유용합니다. 일반적으로 프로덕션 실행에서는 이 옵션을 생략해야 합니다.
서비스 구성
구성은 환경 변수를 통해 제공됩니다. .env.example을 .env로 복사한 다음 배포 환경에 맞게 값을 조정하세요.
HOST=0.0.0.0
PORT=8080
DEBUG=false
DATABASE_URL=sqlite:///data/wardrobe.db
USE_LOCAL_MODELS=true
SDXL_MODEL_PATH=models/sd-xl-base
FLUX_MODEL_PATH=models/flux-schnell
CLIP_MODEL=openai/clip-vit-large-patch14
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2
OPENWEATHER_API_KEY=your_key_here
IMAGE_WIDTH=1024
IMAGE_HEIGHT=1024
NUM_INFERENCE_STEPS=20
GUIDANCE_SCALE=7.5
UPLOAD_DIR=data/uploads
MAX_UPLOAD_SIZE=20MB데이터베이스 구성
SQLite는 단일 인스턴스의 간단한 설정에 적합하며, 옷장 데이터를 data/wardrobe.db에 저장합니다. PostgreSQL을 사용하려면 다음과 같은 연결 문자열로 데이터베이스 URL을 변경하세요.
DATABASE_URL=postgresql://user:pass@localhost/dressai이미지 생성 설정
IMAGE_WIDTH와 IMAGE_HEIGHT는 출력 크기를 제어합니다. NUM_INFERENCE_STEPS는 구성된 생성 단계 수를 설정하며, GUIDANCE_SCALE은 구성된 프롬프트 안내 값을 제어합니다. 일반적으로 크기가 크고 단계가 많을수록 더 많은 연산이 필요하므로 하드웨어에 맞게 조정하세요.
저장소 설정
UPLOAD_DIR은 업로드된 옷장 이미지가 저장될 위치를 지정합니다. MAX_UPLOAD_SIZE는 개별 업로드의 크기를 제한합니다. 구성된 디렉터리가 영구적이며 애플리케이션에서 쓰기 가능한지 확인하세요.
기본 사용법
- 프런트엔드 열기: 서비스가 시작된 후 http://localhost:8080을 방문하세요.
- 의류 사진 업로드: 개별 의류를 추가하거나 폴더를 끌어다 놓아 일괄 처리하세요.
- AI 태그 검토: 감지된 의류 카테고리, 색상, 소재, 패턴, 스타일 및 계절을 확인하세요.
- 상황 선택: 캐주얼, 비즈니스, 데이트 나이트, 운동, 여행 또는 파티와 같은 프로필을 선택하세요.
- 추천 생성: 엔진이 패션 규칙, 시각적 유사도 및 구성된 날씨 정보를 활용해 적합한 옷장 아이템을 조합하도록 하세요.
- 스타일 시각화: 구성된 Stable Diffusion 또는 FLUX 모델을 사용해 추천 스타일의 AI 생성 렌더링을 요청하세요.
- 결과 정리: 의상을 즐겨찾기나 컬렉션으로 저장하거나, 제공되는 내보내기 및 공유 옵션을 사용하세요.
REST API 사용
서비스는 /api/v1 아래에 버전이 지정된 엔드포인트를 제공합니다. 먼저 애플리케이션이 정상적으로 작동하는지 확인하세요.
curl http://localhost:8080/api/v1/health현재 옷장에 저장된 의류를 나열하세요.
curl http://localhost:8080/api/v1/wardrobe/itemsITEM_ID를 해당 식별자로 바꾸어 특정 아이템을 가져오세요.
curl http://localhost:8080/api/v1/wardrobe/items/ITEM_IDHTTP DELETE 요청으로 아이템을 삭제하세요.
curl -X DELETE http://localhost:8080/api/v1/wardrobe/items/ITEM_ID주요 쓰기 작업은 다음 엔드포인트를 통해 제공됩니다.
POST /api/v1/wardrobe/upload의류 아이템을 업로드합니다.POST /api/v1/outfits/generate의상 추천을 생성합니다.POST /api/v1/outfits/{id}/visualize의상 시각화를 생성합니다.POST /api/v1/outfits/{id}/favorite의상을 즐겨찾기에 저장합니다.
설치된 버전에서 허용하는 정확한 요청 스키마를 확인하고 대화형으로 요청을 실행하려면 http://localhost:8080/docs에서 Swagger UI를 사용하세요. 이렇게 하면 업로드, 추천 또는 시각화 페이로드의 필드 이름을 임의로 가정하지 않아도 됩니다.
다음 명령으로 옷장 분석을 가져오세요.
curl http://localhost:8080/api/v1/analytics/wardrobe고급 배포 옵션
NVIDIA GPU 지원 활성화
저장소에는 GPU 전용 Docker Compose 오버라이드가 포함되어 있습니다. 두 Compose 파일을 함께 사용해 배포를 시작하세요.
docker-compose -f docker-compose.yml -f docker-compose.gpu.yml up -dOllama를 사용한 로컬 LLM 추론 추가
Ollama가 활성화된 Compose 구성을 실행하려면 다음 명령을 사용하세요.
docker-compose -f docker-compose.yml -f docker-compose.ollama.yml up -d환경 파일의 OLLAMA_URL과 OLLAMA_MODEL을 사용하려는 Ollama 서비스 및 모델에 맞추세요. Ollama는 선택 사항이며, Ollama 없이도 규칙 기반 및 임베딩 기반 추천 계층은 시스템에 포함되어 있습니다.
날씨 기반 추천 활성화
OPENWEATHER_API_KEY에 유효한 키를 추가하세요. 그러면 추천 엔진이 레이어, 소재 및 날씨에 적합한 의류를 선택할 때 현재 기상 조건을 반영할 수 있습니다.
시각화 스타일 변경
Dress AI Service는 사실적, 애니메이션 및 스케치 스타일을 위한 모델 교체를 지원합니다. SDXL_MODEL_PATH와 FLUX_MODEL_PATH를 포함해 적절한 로컬 모델 경로를 구성하고, 설치된 인터페이스 또는 API 버전에서 제공하는 모델 제어 기능을 사용하세요.
실용적인 팁
- SQLite로 시작: 서비스를 평가하는 동안에는 기본 구성을 사용하고, 배포 요구 사항에 따라 PostgreSQL로 전환하세요.
- 업로드된 파일 유지: 데이터베이스와
UPLOAD_DIR로 지정된 디렉터리를 모두 백업하세요. 두 항목 모두 옷장 데이터의 일부입니다. - 선명한 의류 사진 사용: 이미지가 명확하면 태깅 파이프라인이 의류를 분류하고 유용한 시각적 메타데이터를 추출하기가 쉬워집니다.
- 중복 항목 확인: 기본 제공 중복 감지 기능을 사용하면 대량 업로드 중 동일한 항목이 반복되는 것을 방지할 수 있습니다.
- 생성 설정은 신중하게 조정: 제공된 1024×1024 크기, 20회의 추론 단계, 7.5의 가이던스 스케일로 시작한 다음 결과와 사용 가능한 컴퓨팅 리소스에 따라 조정하세요.
- 생성된 이미지 검토: AI 시각화는 의류의 정확한 핏이나 외관을 보장하지 않는 생성 근사치입니다.
- API 문서 사용: 배포하는 버전의 요청 및 응답 스키마에 대해서는 Swagger 또는 ReDoc을 공식 참조 문서로 사용하세요.
- 네트워크 액세스 보호: localhost 외부에 서비스를 공개하는 경우 자체 호스팅 배포 환경에 적절한 운영 보안 및 액세스 제어를 추가하세요.
개발 워크플로
기여자는 가상 환경에 개발 요구 사항을 설치할 수 있습니다.
git clone https://github.com/GangTailorUpgrade/undress-service.git dress-ai-service
cd dress-ai-service
python -m venv venv
source venv/bin/activate
pip install -r requirements-dev.txt커버리지와 함께 테스트 모음을 실행하세요.
pytest tests/ -v --cov=app구성된 린팅, 포매팅 및 타입 검사 도구를 실행하세요.
ruff check app/
black app/
mypy app/변경 사항을 제출하기 전에 pre-commit 훅을 설치하고 실행하세요.
pre-commit install
pre-commit run --all-files이 프로젝트는 표준 포크, 기능 브랜치 생성, 커밋, 푸시 및 풀 리퀘스트 워크플로를 통해 기여를 받습니다. MIT 라이선스에 따라 배포됩니다.
프로젝트 지원
Dress AI Service는 기여자와 후원자의 지원을 받는 오픈 소스 프로젝트입니다.

결론
Dress AI Service는 옷장 관리, CLIP 기반 태깅, 하이브리드 의상 추천, 날씨 연동 및 생성형 시각화를 하나의 자체 호스팅 애플리케이션으로 결합합니다. Docker는 작동하는 설치 환경을 구축하는 가장 빠른 방법이며, 로컬 Python 설정과 문서화된 FastAPI 엔드포인트는 개발, 자동화 및 맞춤형 패션 애플리케이션을 위한 유연한 기반을 제공합니다.
