基于深度学习的智能图像管理与语义检索平台。支持图片搜集(上传+网络抓取)、AI 自动标签、CLIP 语义搜索、FAISS 向量检索,以及 SVD/QR 图像有损压缩。
| 模块 | 功能 | 技术 |
|---|---|---|
| 📤 图片搜集 | 拖拽上传、网络搜图、一键导入 | FastAPI + ddgs/LoremFlickr |
| 🤖 智能分析 | 目标检测、自动标签、描述生成 | YOLOv8 ONNX + 规则引擎 |
| 🔍 语义检索 | 自然语言搜图、关键词匹配、组合排序 | CLIP + FAISS + 文本匹配 |
| 🏷️ 标签管理 | 自动/人工标签分类、来源追踪 | JSON 列 + Pydantic |
| 📦 图像压缩 | SVD / QR 有损压缩、质量评估 | NumPy 手写算法 |
| 📊 搜索历史 | 查询记录、一键重搜 | SQLAlchemy 2.0 异步 |
# 1. 安装后端依赖
cd backend
pip install -r requirements.txt
# 2. 下载 ONNX 模型(需要网络,约 650MB)
python setup_models.py
# 3. 安装前端依赖并构建
cd ../frontend
npm install
npm run build
# 4. 回到项目根目录,一键启动
cd ..
python launcher.py浏览器自动打开 http://localhost:8000,API 文档在 http://localhost:8000/docs。
注意: ONNX 模型文件约 650MB,请确保磁盘空间充足。如模型下载失败,系统仍可启动但语义搜索和目标检测功能不可用(降级为关键词搜索)。
| 层级 | 技术 |
|---|---|
| 后端框架 | Python 3.12 + FastAPI |
| 数据库 | SQLite + SQLAlchemy 2.0(异步) |
| 向量检索 | FAISS (IndexFlatIP) |
| 模型推理 | ONNX Runtime (CLIP ViT-B/32 + YOLOv8n) |
| 图像处理 | Pillow + NumPy + OpenCV |
| 前端 | React 19 + TypeScript + Vite |
| 压缩算法 | SVD 奇异值分解 / QR 正交分解 |
├── launcher.py # 一键启动器(自动构建前端)
├── README.md
├── .gitignore
│
├── backend/ # Python 后端
│ ├── main.py # FastAPI 入口 + 全部路由
│ ├── engine.py # 核心引擎(CLIP+YOLO+FAISS+搜索)
│ ├── models.py # SQLAlchemy ORM 数据模型
│ ├── schemas.py # Pydantic 请求/响应校验
│ ├── config.py # 全局配置
│ ├── database.py # 异步数据库连接管理
│ ├── setup_models.py # ONNX 模型下载脚本
│ ├── requirements.txt # Python 依赖
│ ├── core/
│ │ └── compressor.py # SVD/QR 压缩算法
│ ├── models/ # ONNX 模型文件(需手动下载)
│ │ ├── clip-vit-b32/ # CLIP 图像+文本编码器
│ │ └── yolov8n.onnx # YOLOv8 目标检测
│ ├── uploads/ # 原图存储
│ └── thumbnails/ # 缩略图存储
│
└── frontend/ # React 前端
└── src/
├── App.tsx # 主界面(搜集/检索双标签页)
├── api.ts # API 调用封装
├── types.ts # TypeScript 类型定义
└── components/
├── CollectionTab.tsx # 图片搜集(上传+网络搜图)
├── SearchTab.tsx # 语义检索
├── ImageGrid.tsx # 图片网格
├── ImageDetailModal.tsx # 详情弹窗
└── TagChip.tsx # 标签组件
将图像和文本映射到同一 512 维空间,通过向量相似度实现"以文搜图"。
对图像每个颜色通道做奇异值分解 A = U·Σ·V^T,保留前 k 个最大奇异值。Eckart-Young 定理保证这是 F-范数下的最优低秩近似。
对每个通道做 QR 分解 A = Q·R,保留前 k 列和前 k 行。计算速度比 SVD 快但近似质量略逊。
CLIP 语义搜索(模糊匹配) + 关键词搜索(精确匹配)→ 加权融合,优势互补。
- PSNR: 峰值信噪比,>40dB 优秀,30-40dB 良好
- MSE: 均方误差,越小越好
- 压缩率: 理论存储比,k×(m+n+1)/(m×n)
详细的 项目复盘、技术要点 和 代码阅读路径 请查看 study/ 目录。
MIT