# 777 **Repository Path**: youtingyang/777 ## Basic Information - **Project Name**: 777 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图像检索项目 使用说明 本 README 说明如何在本仓库(Django + TensorFlow + FAISS)上准备环境、构建特征索引并运行图像检索服务。 **项目结构(相关)** - `search/`:包含特征提取、训练脚本和视图逻辑。 - `static/data/`:用于训练/索引的图片语料。 - `static/model/`:期望放置 VGG16 权重文件以及保存的 FAISS 索引(默认路径)。 - `image_search/settings.py`:Django 配置,包含 `TRAINING_IMAGES` 与 `FAISS_INDEX` 路径。 **前提** - Windows 或类 Unix 环境。 - 已安装 Python 3.8+(建议 3.10/3.11)。 - 推荐在项目目录使用虚拟环境(`venv`)。 ## 快速入门 1) 创建并激活虚拟环境 ```powershell python -m venv .venv .\.venv\Scripts\Activate.ps1 # PowerShell # 或者 cmd: .\.venv\Scripts\activate.bat ``` 2) 安装依赖(如果仓库内没有 `requirements.txt`,请使用下面的包) ```powershell pip install -U pip pip install tensorflow faiss-cpu pillow numpy tqdm psutil django ``` (提示:在国内网络可加 `-i https://pypi.tuna.tsinghua.edu.cn/simple`) 3) 把预训练权重放入项目(推荐) - 将 `vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5` 放在 `static/model/` 目录下,或在 `image_search/settings.py` 中设置 `VGG16_WEIGHTS_PATH` 指向该文件。 - 如果无法下载/放置预训练权重,可临时使用未预训练模型进行功能测试:在运行构建脚本时设置环境变量 `USE_NO_PRETRAINED=1`(注意检索质量会显著下降)。 4) 构建 FAISS 索引(从项目图片) ```powershell # 设置 Django settings 环境变量(Windows PowerShell) $env:DJANGO_SETTINGS_MODULE = "image_search.settings" # 在虚拟环境中运行 Python 命令构建索引 .\.venv\Scripts\python.exe -c "from search import train; train.build_index(batch_size=32)" # 如果网络或权重缺失,临时使用未预训练模型: $env:USE_NO_PRETRAINED=1 .\.venv\Scripts\python.exe -c "from search import train; train.build_index(batch_size=8)" ``` 说明:构建索引会遍历 `settings.TRAINING_IMAGES` 指定的图片集合,提取特征并保存 FAISS 索引到 `settings.FAISS_INDEX`(默认 `static/model/faiss_index_database`)。代码已实现对 Windows 上 FAISS 写入失败的 Python 序列化回退。 5) 运行 Django 开发服务器并测试上传查询 ```powershell .\.venv\Scripts\python.exe manage.py runserver # 在浏览器打开 http://127.0.0.1:8000/ (视项目路由而定) ``` ## 常见问题与故障排查 - 权重下载失败(连接被重置 / WinError 10054): - 建议手动从可信来源下载 `vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5`(例如 Keras 官方镜像或其它 CDN),然后放到 `static/model/`。 - 可在 `image_search/settings.py` 中设置 `VGG16_WEIGHTS_PATH` 为该文件的绝对路径。 - FAISS 写入/读取错误(Windows 路径问题): - 代码已实现 Python 级的序列化回退(当 `faiss.write_index` 失败时会用 Python 保存),确保 `static/model/` 目录存在且有写权限。 - 若仍出错,请确认路径中没有被系统锁定或包含非常规字符导致权限问题。 - 构建很慢或内存占用高: - 调整 `build_index(batch_size=...)` 中的 `batch_size`(减小以节省内存),或在更强机器上运行。 ## 开发者备注 - 功能要点:使用 VGG16(top 去除,pooling='max')做特征提取,L2 归一化后使用 FAISS 的 `IndexFlatIP`(内积)实现近似余弦相似度检索。 - 若需要把项目部署到生产,请: 1. 确保使用预训练权重并重新构建索引。 2. 把索引文件与模型权重放到稳定的存储中(并在 `settings.py` 指定路径)。 3. 在生产环境使用适当的进程/队列与缓存策略来加速查询。 ## 联系与下一步 - 若要我直接帮你把预训练权重放到 `static/model/` 并重建索引,请确认你允许我在当前工作区写入该权重文件(或提供下载链接)。 --- (此 README 已为本地开发与快速验证准备;如需我为项目生成 `requirements.txt` 或自动下载脚本,我可以继续添加。) # KMeans Palette Extractor 一个使用KMeans聚类算法从图像中提取主色调的Gradio Web应用程序。 ## 功能特性 - 🎨 **自动提取主色调**: 使用KMeans算法从上传的图像中自动识别并提取5种主要颜色 - 📊 **可视化调色板**: 以条形图形式展示提取的颜色,包含十六进制颜色代码 - 📱 **响应式设计**: 适配不同屏幕尺寸,操作简单直观 - 🖼️ **示例图像**: 提供多个示例图像,可直接查看效果 - ⚡ **高效处理**: 自动调整图像大小以提高处理速度 ## 技术栈 - **Python**: 主要编程语言 - **Gradio**: 构建交互式Web界面 - **NumPy**: 图像数据处理 - **PIL**: 图像处理 - **Matplotlib**: 生成调色板可视化 - **Scikit-learn**: 实现KMeans聚类算法 ## 安装方法 1. 确保已安装Python 3.7或更高版本 2. 安装所需依赖包: ```bash pip install gradio numpy pillow matplotlib scikit-learn ``` ## 使用方法 1. 运行应用程序: ```bash python app.py ``` 2. 在浏览器中打开显示的URL (通常是 http://127.0.0.1:7860) 3. 使用以下两种方式之一处理图像: - 点击"Click to Upload Image"按钮上传本地图像 - 直接拖放图像到上传区域 - 点击示例图像查看效果 4. 系统会自动提取并显示5种主色调及其十六进制代码 ## 工作原理 1. **图像预处理**: - 将图像转换为RGB格式 - 调整图像大小以提高处理效率(最大边长400像素) 2. **颜色聚类**: - 将图像像素数据重塑为二维数组 - 使用KMeans算法对像素颜色进行聚类 - 设置n_clusters=5提取5种主色调 3. **结果排序**: - 根据每种颜色在图像中出现的频率进行排序 - 频率最高的颜色排在第一位 4. **可视化输出**: - 生成包含所有提取颜色的调色板图像 - 为每种颜色添加十六进制代码标签 - 根据颜色亮度自动选择文字颜色(深色背景用白色文字,浅色背景用黑色文字) ## 示例 ![示例图像](https://images.unsplash.com/photo-1506905925346-21bda4d32df4?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80) 提取的调色板: - #1a1a1a (25.3%) - #3a3a3a (24.7%) - #5a5a5a (20.1%) - #7a7a7a (17.8%) - #9a9a9a (12.1%) ## 自定义配置 您可以通过修改代码中的以下参数来自定义应用程序: - `n_colors`: 要提取的颜色数量(默认5种) - `max_size`: 图像预处理的最大尺寸(默认400像素) - `palette_size`: 生成的调色板图像大小