Chuyển đến nội dung chính
Hướng dẫn AI

Xây dựng stylist tủ đồ AI riêng tư với Dress AI Service

Tìm hiểu cách triển khai Dress AI Service bằng Docker hoặc Python, số hóa quần áo với tính năng gắn thẻ AI, tạo đề xuất trang phục theo thời tiết và dựng hình ảnh phối đồ ảo. Hướng dẫn này cũng đề cập đến quyền truy cập API, cấu hình mô hình cục bộ, triển khai GPU, tích hợp Ollama và các công cụ phát triển.

Xây dựng stylist tủ đồ AI riêng tư với Dress AI Service

Dịch vụ Dress AI là gì?

Dress AI Service là một nền tảng thời trang mã nguồn mở, tự lưu trữ, giúp biến ảnh quần áo thành tủ đồ ảo có thể tìm kiếm. Dịch vụ sử dụng AI để phân loại trang phục, đề xuất cách phối đồ và tạo hình ảnh trực quan cho các bộ trang phục được gợi ý.

Dịch vụ chạy trên backend FastAPI với frontend HTML và Tailwind CSS nhẹ. SQLite là cơ sở dữ liệu mặc định, trong khi PostgreSQL được hỗ trợ như một lựa chọn thay thế. CLIP đảm nhiệm việc hiểu hình ảnh, còn Stable Diffusion XL hoặc FLUX có thể tạo hình ảnh trực quan cho trang phục. Ollama có thể tùy chọn cung cấp khả năng suy luận bằng mô hình ngôn ngữ cục bộ.

Vì ứng dụng được tự lưu trữ, ảnh tủ đồ vẫn nằm trên hạ tầng do bạn kiểm soát thay vì được tải lên một dịch vụ Dress AI được lưu trữ tập trung.

Tính năng chính

  • Gắn thẻ tủ đồ bằng AI: Phát hiện danh mục, màu chủ đạo, họa tiết, chất liệu, phong cách và mùa từ ảnh quần áo.
  • Đề xuất trang phục: Phối quần áo dựa trên lý thuyết màu sắc, dịp sử dụng, thời tiết, độ tương đồng hình ảnh và các quy tắc thời trang.
  • Trực quan hóa ảo: Kết xuất các bộ trang phục được đề xuất bằng Stable Diffusion XL hoặc FLUX.
  • Gợi ý theo thời tiết: Đề xuất chất liệu và lớp trang phục phù hợp bằng thông tin thời tiết theo thời gian thực.
  • Hồ sơ theo dịp: Tạo diện mạo cho các sự kiện thường ngày, môi trường công sở, buổi hẹn hò, chuyến du lịch, bữa tiệc và buổi tập gym.
  • Tổ chức tủ đồ: Tạo mục yêu thích và bộ sưu tập, tải nhiều món đồ theo lô và phát hiện các mục trùng lặp.
  • Phân tích: Xem lại những màu được sử dụng thường xuyên, các món đồ ít được dùng và những khoảng trống tiềm ẩn trong tủ đồ.
  • Chia sẻ và xuất: Xuất bảng phối đồ dưới dạng PNG hoặc PDF, hoặc tạo liên kết có thể chia sẻ.
  • Khả năng mở rộng: Thêm các công cụ đề xuất tùy chỉnh thông qua hệ thống plugin.
  • Nhiều giao diện: Sử dụng ứng dụng trình duyệt, REST API hoặc PWA có thể cài đặt.

Cách hệ thống hoạt động

Số hóa tủ đồ

Khi bạn tải ảnh quần áo lên, dịch vụ sẽ tiền xử lý ảnh và có thể tùy chọn xóa nền. Sau đó, CLIP phân loại các thuộc tính như danh mục, màu sắc, họa tiết và chất liệu. Ứng dụng lưu siêu dữ liệu thu được cùng embedding trực quan để phục vụ các lần tìm kiếm và đề xuất sau này.

Đề xuất trang phục

Công cụ đề xuất kết hợp các quy tắc với độ tương đồng embedding. Lớp dựa trên quy tắc xem xét mối quan hệ màu sắc, mức độ phù hợp với dịp sử dụng và điều kiện thời tiết. Embedding CLIP giúp xác định những món đồ hài hòa về mặt thị giác. Nếu bật Ollama, một mô hình ngôn ngữ cục bộ có thể bổ sung khả năng suy luận và mô tả bằng ngôn ngữ tự nhiên.

Trực quan hóa bằng AI

Đối với một đề xuất được chọn, Dress AI Service xây dựng prompt từ siêu dữ liệu của trang phục và thêm negative prompt nhằm giảm các lỗi phổ biến khi tạo ảnh. Stable Diffusion hoặc FLUX tạo ảnh trước khi thực hiện các bước hậu xử lý tùy chọn như nâng cấp độ phân giải, khôi phục khuôn mặt và điều chỉnh tính nhất quán của nền.

Điều kiện tiên quyết

Phương thức triển khai được khuyến nghị sử dụng Docker và Docker Compose. Để cài đặt trực tiếp, hãy dùng Python 3.11 trở lên và cài đặt các yêu cầu của repository. Việc tải xuống mô hình AI và ảnh được tạo có thể cần nhiều dung lượng lưu trữ và tài nguyên tính toán, tùy thuộc vào các mô hình bạn bật.

Bạn cũng cần Git để sao chép dự án. Khóa API OpenWeather là tùy chọn và cho phép đưa ra đề xuất theo thời tiết theo thời gian thực. Ollama là tùy chọn và cung cấp khả năng suy luận bằng LLM cục bộ.

Cài đặt bằng Docker

Docker là cách đơn giản nhất để khởi chạy toàn bộ dịch vụ. Sao chép repository vào một thư mục có tên dress-ai-service, tạo tệp môi trường và xây dựng các container:

git clone https://github.com/GangTailorUpgrade/undress-service.git dress-ai-service
cd dress-ai-service
cp .env.example .env
docker-compose up --build

Sau khi khởi động, hãy mở http://localhost:8080. Tài liệu API Swagger tương tác có tại http://localhost:8080/docs, còn ReDoc có tại http://localhost:8080/redoc.

Để triển khai ở chế độ chạy nền trong những lần sau, hãy chạy:

docker-compose up -d

Cài đặt bằng Python cục bộ

Nếu muốn chạy hoặc sửa đổi ứng dụng mà không dùng container, hãy tạo môi trường ảo và cài đặt các phần phụ thuộc 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.txt

Trên Windows, hãy kích hoạt môi trường bằng:

venv\Scripts\activate

Tải các mô hình AI bắt buộc trước lần chạy đầu tiên:

python scripts/download_models.py

Khởi động máy chủ phát triển FastAPI trên cổng 8080:

uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload

Tùy chọn --reload hữu ích trong quá trình phát triển vì nó khởi động lại máy chủ khi các tệp mã nguồn thay đổi. Thông thường nên bỏ tùy chọn này khi khởi chạy trong môi trường production.

Cấu hình dịch vụ

Cấu hình được cung cấp thông qua các biến môi trường. Sao chép .env.example thành .env, sau đó điều chỉnh các giá trị cho phù hợp với hoạt động triển khai của bạn.

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

Cấu hình cơ sở dữ liệu

SQLite phù hợp với thiết lập một phiên bản đơn giản và lưu dữ liệu tủ quần áo tại data/wardrobe.db. Để sử dụng PostgreSQL, hãy thay URL cơ sở dữ liệu bằng chuỗi kết nối như sau:

DATABASE_URL=postgresql://user:pass@localhost/dressai

Cài đặt tạo ảnh

IMAGE_WIDTH và IMAGE_HEIGHT kiểm soát kích thước đầu ra. NUM_INFERENCE_STEPS đặt số bước tạo ảnh được cấu hình, còn GUIDANCE_SCALE kiểm soát giá trị hướng dẫn prompt đã cấu hình. Kích thước lớn hơn và nhiều bước hơn thường cần nhiều tài nguyên tính toán hơn, vì vậy hãy điều chỉnh theo phần cứng của bạn.

Cài đặt lưu trữ

UPLOAD_DIR chỉ định nơi lưu các ảnh quần áo đã tải lên. MAX_UPLOAD_SIZE giới hạn kích thước mỗi tệp tải lên. Đảm bảo thư mục đã cấu hình có tính bền vững và ứng dụng có quyền ghi vào đó.

Cách sử dụng cơ bản

  1. Mở giao diện frontend: Truy cập http://localhost:8080 sau khi dịch vụ khởi động.
  2. Tải ảnh quần áo lên: Thêm từng món đồ hoặc kéo thả một thư mục để xử lý hàng loạt.
  3. Xem lại thẻ AI: Kiểm tra danh mục quần áo, màu sắc, chất liệu, họa tiết, phong cách và mùa được phát hiện.
  4. Chọn dịp sử dụng: Chọn hồ sơ như Casual, Business, Date Night, Gym, Travel hoặc Party.
  5. Tạo đề xuất: Cho phép hệ thống kết hợp các món đồ phù hợp bằng quy tắc thời trang, độ tương đồng hình ảnh và thông tin thời tiết đã cấu hình.
  6. Trực quan hóa một bộ đồ: Yêu cầu bản dựng do AI tạo cho một đề xuất bằng mô hình Stable Diffusion hoặc FLUX đã cấu hình.
  7. Sắp xếp kết quả: Lưu bộ đồ vào mục yêu thích hoặc bộ sưu tập, hoặc sử dụng các tùy chọn xuất và chia sẻ có sẵn.

Sử dụng REST API

Dịch vụ cung cấp các endpoint có phiên bản tại /api/v1. Trước tiên, hãy kiểm tra ứng dụng có đang hoạt động bình thường không:

curl http://localhost:8080/api/v1/health

Liệt kê các món đồ hiện đang được lưu trong tủ quần áo:

curl http://localhost:8080/api/v1/wardrobe/items

Lấy một món đồ cụ thể bằng cách thay ITEM_ID bằng mã định danh của món đồ:

curl http://localhost:8080/api/v1/wardrobe/items/ITEM_ID

Xóa một món đồ bằng yêu cầu HTTP DELETE:

curl -X DELETE http://localhost:8080/api/v1/wardrobe/items/ITEM_ID

Các thao tác ghi chính được cung cấp qua những endpoint sau:

  • POST /api/v1/wardrobe/upload tải một món đồ lên.
  • POST /api/v1/outfits/generate tạo các đề xuất phối đồ.
  • POST /api/v1/outfits/{id}/visualize tạo bản trực quan hóa bộ đồ.
  • POST /api/v1/outfits/{id}/favorite lưu một bộ đồ vào mục yêu thích.

Sử dụng Swagger UI tại http://localhost:8080/docs để kiểm tra schema yêu cầu chính xác được phiên bản đã cài đặt của bạn chấp nhận và thực thi yêu cầu tương tác. Cách này tránh phải giả định tên trường cho payload tải lên, đề xuất hoặc trực quan hóa.

Lấy dữ liệu phân tích tủ quần áo bằng:

curl http://localhost:8080/api/v1/analytics/wardrobe

Tùy chọn triển khai nâng cao

Bật hỗ trợ GPU NVIDIA

Kho mã bao gồm tệp ghi đè Docker Compose dành riêng cho GPU. Khởi động quá trình triển khai bằng cả hai tệp Compose:

docker-compose -f docker-compose.yml -f docker-compose.gpu.yml up -d

Thêm khả năng suy luận LLM cục bộ với Ollama

Để khởi chạy cấu hình Compose hỗ trợ Ollama, hãy chạy:

docker-compose -f docker-compose.yml -f docker-compose.ollama.yml up -d

Đặt OLLAMA_URL và OLLAMA_MODEL trong tệp môi trường khớp với dịch vụ Ollama và mô hình bạn định sử dụng. Ollama là tùy chọn; các lớp đề xuất dựa trên luật và embedding vẫn là một phần của hệ thống ngay cả khi không có Ollama.

Bật đề xuất nhận biết thời tiết

Thêm khóa hợp lệ vào OPENWEATHER_API_KEY. Khi đó, hệ thống đề xuất có thể tính đến điều kiện hiện tại khi lựa chọn lớp áo, chất liệu và trang phục phù hợp với thời tiết.

Thay đổi phong cách trực quan hóa

Dress AI Service hỗ trợ thay đổi mô hình cho các phong cách chân thực, anime và phác thảo. Cấu hình đường dẫn đến các mô hình cục bộ phù hợp, bao gồm SDXL_MODEL_PATH và FLUX_MODEL_PATH, rồi sử dụng các tùy chọn điều khiển mô hình được cung cấp bởi giao diện hoặc phiên bản API đã cài đặt.

Mẹo thực tế

  • Bắt đầu với SQLite: Sử dụng cấu hình mặc định trong quá trình đánh giá dịch vụ, sau đó chuyển sang PostgreSQL khi yêu cầu triển khai của bạn đòi hỏi.
  • Lưu trữ tệp đã tải lên: Sao lưu cơ sở dữ liệu và thư mục được chọn bởi UPLOAD_DIR. Cả hai đều là một phần trong dữ liệu tủ đồ của bạn.
  • Sử dụng ảnh quần áo rõ nét: Hình ảnh riêng biệt giúp pipeline gắn thẻ phân loại quần áo và trích xuất siêu dữ liệu hình ảnh hữu ích dễ dàng hơn.
  • Kiểm tra bản sao: Tính năng phát hiện bản sao tích hợp giúp ngăn các mục bị lặp lại trong quá trình tải lên hàng loạt.
  • Điều chỉnh việc tạo ảnh một cách thận trọng: Bắt đầu với kích thước 1024 x 1024, 20 bước suy luận và guidance scale 7.5 được cung cấp, sau đó tinh chỉnh dựa trên kết quả đầu ra và tài nguyên tính toán sẵn có.
  • Xem xét ảnh được tạo: Hình ảnh trực quan hóa bằng AI là kết quả mô phỏng được tạo ra, không đảm bảo quần áo vừa vặn hoặc có diện mạo hoàn toàn chính xác.
  • Sử dụng tài liệu API: Xem Swagger hoặc ReDoc là tài liệu tham chiếu chính thức cho các schema request và response trong phiên bản bạn triển khai.
  • Bảo vệ quyền truy cập mạng: Nếu cung cấp dịch vụ bên ngoài localhost, hãy bổ sung các biện pháp bảo mật và kiểm soát truy cập phù hợp cho môi trường tự lưu trữ.

Quy trình phát triển

Cộng tác viên có thể cài đặt các yêu cầu phát triển trong một môi trường ảo:

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

Chạy bộ kiểm thử kèm báo cáo độ bao phủ:

pytest tests/ -v --cov=app

Chạy các công cụ lint, định dạng và kiểm tra kiểu đã cấu hình:

ruff check app/
black app/
mypy app/

Cài đặt và thực thi các hook pre-commit trước khi gửi thay đổi:

pre-commit install
pre-commit run --all-files

Dự án tiếp nhận đóng góp thông qua quy trình tiêu chuẩn gồm fork, nhánh tính năng, commit, push và pull request. Dự án được phân phối theo Giấy phép MIT.

Hỗ trợ dự án

Dress AI Service là một dự án mã nguồn mở được hỗ trợ bởi các cộng tác viên và nhà tài trợ.

Hình ảnh nhà tài trợ Dress AI Service

Kết luận

Dress AI Service kết hợp quản lý tủ đồ, gắn thẻ dựa trên CLIP, đề xuất trang phục kết hợp, tích hợp thời tiết và trực quan hóa bằng công nghệ tạo sinh trong một ứng dụng tự lưu trữ. Docker là cách nhanh nhất để có một bản cài đặt hoạt động, trong khi thiết lập Python cục bộ và các endpoint FastAPI được dokument hóa cung cấp nền tảng linh hoạt cho việc phát triển, tự động hóa và xây dựng các ứng dụng thời trang tùy chỉnh.