# 1111 **Repository Path**: zhao-qibia/1111 ## Basic Information - **Project Name**: 1111 - **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-11-10 - **Last Updated**: 2025-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 手写数字识别系统 - Pinecone 云推理 基于 Pinecone 向量数据库和 MNIST 数据集的手写数字识别系统,提供 Web 界面进行实时数字识别。 ## 项目概述 本项目包含三个主要组件: 1. **Pinecone 索引创建与数据上传** - 创建向量索引并上传 MNIST 数据 2. **模型训练与测试** - 使用 Pinecone 进行 KNN 相似性搜索 3. **Web 应用** - 基于 Gradio 的实时手写数字识别界面 ## 文件结构 . ├── optimal_knn_webapp_pinecone.py # Web 应用主程序 ├── pinecone_train.py # 训练和测试脚本 ├── pinecone_example.py # Pinecone 基础示例 └── README.md # 项目说明文档 text ## 功能特性 - ✅ 使用 Pinecone 云向量数据库进行实时推理 - ✅ 基于 MNIST 数据集的 KNN 相似性搜索 - ✅ 实时手写数字识别 Web 界面 - ✅ 支持 k=11 最近邻投票机制 - ✅ 完整的日志记录和进度显示 - ✅ 错误处理和异常管理 ## 环境要求 ### Python 依赖 ```bash pip install pinecone-client scikit-learn numpy gradio pillow tqdm matplotlib Pinecone 账户 需要注册 Pinecone 账户并获取 API Key。 快速开始 1. 配置 API Key 在所有 Python 文件中替换为您的实际 Pinecone API Key: python API_KEY = "your-pinecone-api-key-here" 2. 创建索引并上传数据 运行训练脚本创建 Pinecone 索引并上传 MNIST 数据: bash python pinecone_train.py 预期输出: text 2024-11-10 | 20:35:25 | INFO | 开始MNIST数字分类任务 2024-11-10 | 20:35:25 | INFO | Pinecone连接成功 2024-11-10 | 20:35:25 | INFO | 索引 'mnist-index' 已存在,正在删除... 2024-11-10 | 20:35:35 | INFO | 索引 'mnist-index' 已成功删除... 2024-11-10 | 20:35:35 | INFO | 正在创建新索引 'mnist-index'... 2024-11-10 | 20:35:45 | INFO | 索引 'mnist-index' 创建成功... 2024-11-10 | 20:35:45 | INFO | 已成功连接到索引 'mnist-index' 上传数据到 Pinecone: 100%|██████████| 1437/1437 2024-11-10 | 20:35:55 | INFO | 成功上传了 1437 条数据到 Pinecone 测试 k=11 时的准确率: 100%|██████████| 360/360 2024-11-10 | 20:36:05 | INFO | 成功创建索引,并上传了 1437 条数据 2024-11-10 | 20:36:05 | INFO | 当 k=11 时,使用 Pinecone 的准确率为: 0.9833 3. 运行基础示例(可选) 验证 Pinecone 功能: bash python pinecone_example.py 4. 启动 Web 应用 运行 Web 应用进行实时手写数字识别: bash python optimal_knn_webapp_pinecone.py 预期输出: text Pinecone数字识别器初始化成功! 2024-11-10 | 20:50:15 | INFO | Pinecone连接成功 启动手写数字识别Web应用... 访问地址: http://127.0.0.1:7860 请确保Pinecone索引 'mnist-index' 已创建并包含MNIST数据 使用说明 Web 应用界面 访问 http://127.0.0.1:7860 在左侧画板上手写数字 0-9 系统实时显示识别结果和推理时间 首次推理可能较慢(1-3秒),后续推理会更快 技术细节 数据分割: 80% 训练数据,20% 测试数据 特征维度: 64 维(8x8 图像展平) 距离度量: 欧氏距离 (Euclidean) K 值: 11(通过投票机制确定最终结果) 预处理: 图像反色 + 尺寸调整 + 归一化 API 配置 Pinecone 索引配置 python index_name = "mnist-index" dimension = 64 metric = "euclidean" spec = ServerlessSpec(cloud="aws", region="us-east-1") 数据预处理流程 图像灰度化 颜色反转(黑底白字 → 白底黑字) 调整尺寸为 8x8 像素 归一化到 0-16 范围 展平为 64 维向量 性能指标 训练数据: 1,437 个样本 测试数据: 360 个样本 准确率: ~98.3% (k=11时) 推理时间: 首次 1-3秒,后续 <1秒 故障排除 常见问题 API Key 错误 text Pinecone连接失败: 401 Unauthorized 解决方案: 检查 API Key 是否正确配置 索引不存在 text 识别失败: Index not found 解决方案: 先运行 pinecone_train.py 创建索引 端口占用 text 启动失败: [Errno 48] Address already in use 解决方案: 更改端口号或关闭占用进程 依赖包版本冲突 text TypeError: Sketchpad.__init__() got an unexpected keyword argument 解决方案: 使用提供的简化版本或检查 Gradio 版本 日志查看 所有操作都有详细的日志记录,格式: text YYYY-MM-DD | HH:MM:SS | LEVEL | Message 项目扩展 可能的改进 添加更多预处理选项 支持自定义 K 值调整 添加批量识别功能 集成其他机器学习模型 添加用户反馈机制 相关技术 Pinecone 文档 Gradio 文档 Scikit-learn MNIST 许可证 本项目仅供学习和研究使用。 贡献 欢迎提交 Issue 和 Pull Request 来改进这个项目。 注意: 请妥善保管您的 Pinecone API Key,不要将其提交到公共仓库。 text 这个 README.md 文件提供了: 1. **完整的项目介绍** - 说明项目目的和功能 2. **详细的安装指南** - 从环境配置到运行步骤 3. **技术说明** - 算法原理和实现细节 4. **故障排除** - 常见问题和解决方案 5. **使用示例** - 预期的输入输出和界面说明 6. **扩展建议** - 项目的进一步改进方向