129 lines
3.0 KiB
Markdown
129 lines
3.0 KiB
Markdown
# 食物识别系统
|
|
|
|
基于深度学习和CustomTkinter的食物识别应用程序,支持多图片上传、拖拽操作和实时识别结果展示。
|
|
|
|
## 功能特点
|
|
|
|
- **多图片上传**: 支持选择多张图片或拖拽上传
|
|
- **实时预览**: 点击图片可以预览原始大图
|
|
- **智能识别**: 使用深度学习模型识别食物类型
|
|
- **结果标记**: 可以手动标记识别结果的正确性
|
|
- **统计分析**: 显示识别准确率和统计信息
|
|
- **现代界面**: 使用CustomTkinter构建美观的用户界面
|
|
|
|
## 安装依赖
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## 使用方法
|
|
|
|
### 1. 训练模型(可选)
|
|
|
|
如果您有自己的数据集,可以使用提供的训练脚本:
|
|
|
|
```bash
|
|
cd train
|
|
python food_classifier.py
|
|
```
|
|
|
|
确保您的数据集结构如下:
|
|
```
|
|
dataset/
|
|
├── train/
|
|
│ ├── 回锅肉/
|
|
│ │ ├── image1.jpg
|
|
│ │ └── image2.jpg
|
|
│ └── 西红柿鸡蛋/
|
|
│ ├── image1.jpg
|
|
│ └── image2.jpg
|
|
├── test/
|
|
│ ├── 回锅肉/
|
|
│ └── 西红柿鸡蛋/
|
|
└── val/
|
|
├── 回锅肉/
|
|
└── 西红柿鸡蛋/
|
|
```
|
|
|
|
### 2. 运行食物识别应用
|
|
|
|
```bash
|
|
python food_classifier_app.py
|
|
```
|
|
|
|
### 3. 使用应用
|
|
|
|
1. **上传图片**:
|
|
- 点击"选择图片"按钮选择多张图片
|
|
- 或者直接拖拽图片到左侧上传区域
|
|
|
|
2. **预览图片**:
|
|
- 点击任意已上传的图片可以预览大图
|
|
|
|
3. **开始识别**:
|
|
- 点击"开始识别"按钮对所有图片进行识别
|
|
|
|
4. **查看结果**:
|
|
- 右侧会显示每张图片的识别结果和置信度
|
|
- 可以标记识别结果是否正确
|
|
|
|
5. **管理图片**:
|
|
- 可以删除单张图片或清空所有图片
|
|
|
|
## 界面布局
|
|
|
|
- **左侧**: 图片上传和管理区域
|
|
- 拖拽上传区域
|
|
- 操作按钮(选择、清空、识别)
|
|
- 已上传图片列表
|
|
|
|
- **右侧**: 识别结果展示区域
|
|
- 统计信息(总数、已识别、准确率)
|
|
- 详细识别结果列表
|
|
- 正确性标记按钮
|
|
|
|
## 支持的图片格式
|
|
|
|
- JPEG (.jpg, .jpeg)
|
|
- PNG (.png)
|
|
- BMP (.bmp)
|
|
- GIF (.gif)
|
|
|
|
## 模型信息
|
|
|
|
- 默认支持识别:回锅肉、西红柿鸡蛋
|
|
- 输入图片尺寸:32x32
|
|
- 模型架构:CNN(卷积神经网络)
|
|
- 框架:PyTorch
|
|
- 模型文件:model/01/best_food_model.pth
|
|
|
|
## 注意事项
|
|
|
|
1. 首次运行时,如果没有训练好的模型,程序会使用模拟识别结果
|
|
2. 建议使用清晰、光线良好的食物图片以获得更好的识别效果
|
|
3. 可以通过标记识别结果来评估模型性能
|
|
|
|
## 技术栈
|
|
|
|
- **界面框架**: CustomTkinter
|
|
- **深度学习**: PyTorch
|
|
- **图像处理**: OpenCV, PIL
|
|
- **拖拽支持**: tkinterdnd2
|
|
|
|
## 扩展功能
|
|
|
|
如需添加更多食物类别:
|
|
|
|
1. 在数据集中添加新的食物类别文件夹
|
|
2. 修改 `food_classes` 列表
|
|
3. 重新训练模型
|
|
|
|
## 故障排除
|
|
|
|
如果遇到问题:
|
|
|
|
1. 确保所有依赖都已正确安装
|
|
2. 检查图片文件格式是否支持
|
|
3. 确认模型文件路径是否正确
|
|
4. 查看控制台输出的错误信息 |