Skip to content

ElysiaFollower/Muse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Muse - 智能视觉资产管理平台

Project Muse 是一个现代化的 B/S 架构视觉资产管理系统,定位于 AIGC 生产力的上游基础设施,致力于填补"图片收藏"与"模型训练"之间的巨大鸿沟。

系统集成了 WD14 Tagger(自动图片打标)和 CLIP(语义向量化)等 AI 模型,结合 LLM 驱动的对话式检索,为创作者提供从素材采集智能整理数据集输出的全链路解决方案。

✨ 核心特性

  • 🤖 自动图片打标: 使用 WD14 Tagger 模型自动生成 Danbooru 风格标签,无需手动标注
  • 🔍 混合检索系统: 支持 SQL 标签搜索(精确筛选)与 CLIP 向量搜索(语义检索)的混合查询
  • 📦 LoRA 数据集导出: 提供交互式标签编辑和 Kohya_ss 标准格式导出功能
  • 📱 PWA 多端支持: 基于 PWA 技术,支持桌面端和移动端访问
  • 💬 对话式检索: 集成 LLM(Deepseek),支持自然语言图像搜索

🛠️ 技术栈

领域 技术选型 版本/规范
前端 (Frontend) React 19 + TypeScript Vite, Tailwind CSS, Shadcn/ui, PWA
后端 (Backend) Python FastAPI Pydantic v2, SQLAlchemy 2.0 (AsyncIO)
异步计算 (Worker) Celery + ONNX Runtime Redis (Broker), ONNX Runtime (Inference)
元数据存储 MySQL 8.0 InnoDB 引擎, JSON 类型支持
向量存储 Qdrant HNSW 索引, Cosine 距离
对象存储 MinIO S3 兼容协议
基础设施 Docker Compose Nginx (Gateway), Nvidia Container Toolkit

📋 前置要求

  • Docker & Docker Compose (必需)
  • Node.js 18+pnpm (仅前端开发需要)
  • NVIDIA GPU (可选,用于加速 AI 推理,CPU 模式也可运行)

🚀 快速部署

1. 克隆项目

git clone <repository-url>
cd Muse

2. 配置环境变量

deploy 目录下创建 .env 文件:

cd deploy
cp .env.example .env  # 如果存在示例文件
# 或手动创建 .env 文件

必需的环境变量

# 数据库配置
MYSQL_DATABASE=muse_db
MYSQL_USER=muse_user
MYSQL_PASSWORD=muse_password
MYSQL_ROOT_PASSWORD=root_password
MYSQL_EXTERNAL_PORT=3306

# MinIO 对象存储
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_EXTERNAL_PORT_API=9000
MINIO_EXTERNAL_PORT_UI=9001

# Redis 消息队列
REDIS_EXTERNAL_PORT=6379

# Qdrant 向量数据库
QDRANT_EXTERNAL_PORT_API=6333
QDRANT_EXTERNAL_PORT_GRPC=6334

# 后端服务配置
SECRET_KEY=your-secret-key-here  # 生产环境请使用强随机字符串
CORS_ORIGINS=http://localhost:5173,10.x.x.x  # 允许的前端地址

# LLM API 配置(用于对话式检索功能)
DEEPSEEK_API_KEY=your-deepseek-api-key  # 可选,用于"与我对话"功能
DEEPSEEK_BASE_URL=https://api.deepseek.com

# 管理员账户(首次启动时自动创建)
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
ADMIN_EMAIL=admin@example.com

注意:

  • SECRET_KEY 用于 JWT 令牌签名,生产环境请务必修改为强随机字符串
  • DEEPSEEK_API_KEY 为可选配置,不配置时"与我对话"功能将不可用
  • CORS_ORIGINS 支持特殊值 10.x.x.x 允许所有 10.x.x.x IP 地址访问

3. 下载 AI 模型(首次部署)

AI 模型文件需要单独下载,存储在 deploy/models 目录:

cd deploy

# 安装依赖
pip install "huggingface_hub[hf_transfer]"

# 下载模型
python download_models.py

这将下载以下模型:

  • WD14 Tagger: 用于自动图片打标(Danbooru 风格标签)
  • CLIP ViT-L/14: 用于图片和文本的向量化(语义搜索)

提示: 模型文件较大(约 2-3 GB),首次下载可能需要较长时间。建议使用 hf_transfer 加速下载。

4. 启动所有服务

cd deploy
docker-compose up -d

这将启动以下服务:

  • 基础设施: MySQL, MinIO, Redis, Qdrant
  • 后端 API: FastAPI (端口 8000)
  • AI Worker: Celery Worker(处理图片 AI 识别)

5. 验证服务状态

检查所有服务是否正常运行:

docker-compose ps

访问以下地址验证:

6. 启动前端服务

前端需要单独启动(开发模式,支持热重载):

cd frontend

# 安装依赖 (使用 pnpm)
pnpm install

# 启动开发服务器
pnpm dev

前端地址: http://localhost:5173

📖 使用指南

首次使用

  1. 注册账户: 访问前端页面,使用配置的管理员账户登录,或注册新账户
  2. 上传图片: 点击上传按钮或拖拽图片到上传区域
  3. 等待处理: 图片上传后,系统会自动进行以下处理:
    • 生成缩略图和预览图
    • 提取 EXIF 元数据
    • AI 自动打标(WD14 Tagger)
    • 生成向量嵌入(CLIP)
    • 建立索引(MySQL + Qdrant)

核心功能

1. 图片浏览

  • 瀑布流展示: 类似 Pinterest 的极简视觉流
  • 虚拟滚动: 支持大量图片的流畅浏览
  • 图片查看器: 点击图片打开全屏查看器,支持缩放、旋转、切换

2. 搜索功能

  • 标签搜索: 在 Navbar 搜索框输入标签(如 1girl, solo, white_hair
  • 语义搜索: 通过 MiuMiu 桌宠进行自然语言搜索(如"雨中的少女")
  • 混合搜索: 使用"与我对话"功能,LLM 驱动的智能搜索

3. 数据集导出

  • 标签清洗: 在图片详情页编辑标签,支持 Include/Exclude 切换
  • 批量导出: 选择多张图片,一键导出为 Kohya_ss 标准格式(Image + Caption)

4. MiuMiu 统一入口

  • 桌宠看板娘: 右下角常驻的 MiuMiu(缪缪)提供统一操作入口
  • 功能菜单: 点击 MiuMiu 访问搜索、导出、上传等功能
  • 进度跟踪: 导出和上传任务通过 MiuMiu 显示进度

🏗️ 项目结构

Muse/
├── backend/          # FastAPI 后端服务
│   ├── app/         # 应用核心代码
│   │   ├── api/     # API 路由
│   │   ├── core/    # 核心配置
│   │   ├── models/  # 数据库模型
│   │   └── services/# 业务逻辑
│   └── requirements.txt
│
├── ai_worker/        # Celery 异步任务处理
│   ├── engines/     # AI 推理引擎
│   ├── tasks/       # Celery 任务定义
│   └── requirements.txt
│
├── frontend/         # React 前端应用
│   ├── src/
│   │   ├── components/  # 通用组件
│   │   ├── features/    # 功能模块
│   │   └── lib/         # 工具函数
│   └── package.json
│
└── deploy/           # Docker Compose 配置和基础设施
    ├── docker-compose.yml
    ├── download_models.py
    └── models/       # AI 模型文件(需单独下载)

🔧 开发说明

代码规范

  • 后端 Python: 遵循 Google Python Style Guide,包含完整的类型注解和文档字符串
  • 前端 TypeScript: 遵循 Google TypeScript Style Guide,包含完整的类型注解和 JSDoc 注释

数据库迁移

数据库迁移使用 Alembic,在容器启动时自动执行。如需手动迁移:

docker exec -it muse_api alembic upgrade head

查看日志

# 查看所有服务日志
docker-compose logs -f

# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f ai_worker

重启服务

# 重启所有服务
docker-compose restart

# 重启特定服务
docker-compose restart backend

🗑️ 数据清理(开发调试用)

警告: 以下操作会删除所有数据,请谨慎使用!

cd deploy

# 1. 停止服务
docker-compose down

# 2. 删除数据卷 (数据库、MinIO、向量库全部清空)
docker volume rm deploy_mysql_data deploy_minio_data deploy_redis_data deploy_qdrant_data

# 3. 重新启动 (数据库会自动初始化)
docker-compose up -d

🌐 服务端口说明

服务 端口 说明
MySQL 3306 数据库连接端口
MinIO API 9000 对象存储 API
MinIO UI 9001 MinIO 管理控制台
Redis 6379 消息队列端口
Qdrant 6333/6334 REST API / gRPC
后端 API 8000 FastAPI 服务
前端 5173 Vite 开发服务器(仅开发模式)

📚 更多文档

⚠️ 常见问题

1. AI Worker 无法启动

问题: ai_worker 容器启动失败,提示找不到模型文件

解决: 确保已执行模型下载步骤,模型文件位于 deploy/models 目录

2. GPU 加速不可用

问题: AI Worker 使用 CPU 模式运行,速度较慢

解决:

  • 确保已安装 NVIDIA Container Toolkit
  • 检查 docker-compose.yml 中的 GPU 配置
  • 运行 nvidia-smi 验证 GPU 是否可用

3. 前端无法连接后端

问题: 前端页面显示 API 请求失败

解决:

  • 检查后端服务是否正常运行: docker-compose ps
  • 检查 CORS_ORIGINS 配置是否包含前端地址
  • 查看后端日志: docker-compose logs backend

4. 图片上传后没有标签

问题: 上传图片后,AI 标签没有自动生成

解决:

  • 检查 AI Worker 是否正常运行: docker-compose logs ai_worker
  • 检查 Redis 队列是否有积压: docker exec -it muse_redis redis-cli LLEN celery
  • 确认模型文件已正确下载

Project Muse - 让图片数据"活"起来 🎨

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors