跳到主要内容
AI教程

使用 Dress AI Service 构建私有 AI 衣橱造型师

部署 Dress AI Service,打造可自托管的 AI 衣橱与穿搭推荐系统

使用 Dress AI Service 构建私有 AI 衣橱造型师

什么是 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.txt

在 Windows 上,使用以下命令激活环境:

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_WIDTHIMAGE_HEIGHT 控制输出尺寸。NUM_INFERENCE_STEPS 设置生成步骤数,GUIDANCE_SCALE 控制提示词引导值。更大的尺寸和更多步骤通常需要更多计算资源,因此请根据硬件进行调整。

存储设置

UPLOAD_DIR 用于选择上传的衣橱图像存储位置。MAX_UPLOAD_SIZE 用于限制单个上传文件的大小。请确保配置的目录能够持久保存数据,并且应用具有写入权限。

基本用法

  1. 打开前端:服务启动后,访问 http://localhost:8080
  2. 上传衣物照片:添加单件衣物,或通过拖放文件夹进行批量处理。
  3. 检查 AI 标签:核对识别出的服装类别、颜色、面料、图案、风格和季节。
  4. 选择场合:选择休闲、商务、约会之夜、健身、旅行或派对等配置。
  5. 生成推荐:让引擎利用时尚规则、视觉相似度和已配置的天气信息组合合适的衣橱单品。
  6. 可视化造型:使用已配置的 Stable Diffusion 或 FLUX 模型,为推荐方案生成 AI 效果图。
  7. 整理结果:将穿搭保存到收藏或合集,或使用可用的导出与分享选项。

使用 REST API

该服务在 /api/v1 路径下提供带版本号的端点。首先检查应用是否正常运行:

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

列出衣橱中当前存储的服装:

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

ITEM_ID 替换为对应标识符,以获取特定衣物:

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

通过 HTTP 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 -d

使用 Ollama 添加本地 LLM 推理

如需启动启用了 Ollama 的 Compose 配置,请运行:

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

请让环境文件中的 OLLAMA_URLOLLAMA_MODEL 与准备使用的 Ollama 服务和模型保持一致。Ollama 是可选组件;即使不使用它,基于规则和嵌入的推荐层仍然是系统的一部分。

启用天气感知推荐

OPENWEATHER_API_KEY 中添加有效密钥。随后,推荐引擎在选择穿衣层次、面料和适合天气的服装时,便可将当前天气状况纳入考虑。

切换可视化风格

Dress AI Service 支持切换模型,以生成写实、动漫和素描风格。请配置适当的本地模型路径,包括 SDXL_MODEL_PATHFLUX_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

该项目通过标准的 fork、功能分支、提交、推送和拉取请求工作流接受贡献,并采用 MIT License 发布。

项目支持

Dress AI Service 是一个由贡献者和赞助者支持的开源项目。

Dress AI Service sponsor graphic

总结

Dress AI Service 将衣橱管理、CLIP 驱动的标签、混合式穿搭推荐、天气集成和生成式可视化整合到一个自托管应用中。Docker 是快速完成可用安装的最佳方式,而本地 Python 设置和文档完善的 FastAPI 端点,则为开发、自动化和自定义时尚应用提供了灵活基础。