
什么是 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_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/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_URL 和 OLLAMA_MODEL 与准备使用的 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该项目通过标准的 fork、功能分支、提交、推送和拉取请求工作流接受贡献,并采用 MIT License 发布。
项目支持
Dress AI Service 是一个由贡献者和赞助者支持的开源项目。

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