基于深度学习的水果分类系统

基于深度学习的水果分类系统

本项目是一个基于 Django 和 PyTorch 的水果图像分类系统,支持水果图片上传、模型选择、分类预测和结果展示。
项目已将系统名称、数据集参数和类别索引统一为水果分类场景,数据来源以本地项目文件为准。

技术栈

本项目采用前后端分离与深度学习模型相结合的技术架构,各组件分工明确:

  • Django:负责后端页面渲染、URL 路由分发、文件上传处理以及模板引擎整合,提供完整的 Web 服务支持。
  • PyTorch / torchvision:作为深度学习框架,承担图像预处理(Resize、Normalize、ToTensor)、模型加载与推理计算,支持 GPU/CPU 自动切换。
  • HTML / CSS:构建前端上传页面与结果展示页面,采用响应式布局适配不同屏幕尺寸,提升用户体验。
  • openpyxl + matplotlib:读取训练过程中保存的 Excel 日志文件,动态生成准确率与损失曲线图,便于直观分析模型训练效果。
  • Pillow:用于图片格式转换与基础图像处理,确保上传图片兼容性。

数据集说明

数据集目录位于DjangoProject/dataset/fruits,按类别分文件夹存放。当前训练集图片共 1317 张,测试集图片 327 张,涵盖 5 个常见水果类别,各类别分布如下:

类别训练集测试集合计
apple27064334
banana22857285
grape25865323
orange28371354
pear27870348
合计13173271644

数据集图片均为自然场景拍摄,包含不同光照、角度和背景,有助于提升模型在实际应用中的泛化能力。训练前会自动对图片进行统一尺寸缩放(224×224)和数据增强(随机翻转、色彩抖动等)。

水果数据集样例图

系统首页截图

系统结果页效果图

系统功能

系统围绕水果图像分类的核心需求,设计了以下完整功能模块:

  • 水果图片上传:用户通过 Web 页面选择本地水果图像,支持 JPG、PNG 格式,上传后自动保存至临时目录并显示预览。
  • 模型选择:系统自动扫描models/目录下的预训练权重文件,以下拉列表形式展示可用模型,用户可自由切换不同架构进行对比。
  • 分类预测:调用对应模型的predict.py脚本,对上传图片进行预处理后送入模型推理,输出 Softmax 概率分布,取最高概率类别作为预测结果。
  • 结果展示:预测完成后返回模型名称、预测水果类别、分类置信度(百分比)以及上传的原图,结果页面支持一键重新上传测试。
  • 历史记录(可选扩展):记录每次预测的图片、模型和结果,便于后续分析模型在不同样本上的表现差异。

模型

本项目集成了丰富的深度学习模型库,覆盖经典卷积网络与前沿 Transformer 架构,方便对比不同模型在水果分类任务上的表现:

  • 经典 CNN 系列:AlexNet、VGGNet、GoogLeNet(Inception v1)、ResNet(残差网络)、DenseNet(密集连接网络)
  • 轻量级系列:MobileNet(适合移动端部署)、ShuffleNet(分组卷积优化)、EfficientNet(复合缩放策略)
  • 最新架构系列:RegNet(设计空间搜索)、Swin Transformer(层级式窗口注意力)、Vision Transformer(ViT,纯 Transformer 图像分类)
  • 基础入门系列:LeNet(适合快速验证流程)

每个模型均提供独立的predict.py推理脚本,权重文件存放于models/目录下,命名格式为模型名_fruits.pth。用户可在前端页面自由切换模型,系统自动加载对应权重并完成推理。

运行流程

按照以下步骤即可在本地启动并体验水果分类系统:

  1. 进入项目目录

    cdDjangoProject
  2. 激活 conda 环境(确保已安装 PyTorch 和 Django 依赖)

    conda activateenv
  3. 启动 Django 开发服务器

    python manage.py runserver

    默认监听http://127.0.0.1:8000/,如需自定义端口可追加端口号。

  4. 打开浏览器访问
    在浏览器地址栏输入http://127.0.0.1:8000/,进入系统首页。

  5. 上传图片并查看结果

    • 点击「选择文件」按钮,从本地选择一张水果图片
    • 从下拉列表中选择要使用的模型
    • 点击「开始预测」按钮,等待推理完成
    • 结果页面将展示预测类别、置信度分数以及上传的原图

💡 提示:首次启动时 Django 会自动创建 SQLite 数据库文件,无需额外配置数据库。

项目总结与优化方向

  • 补充 Apple 类样本,缓解类别不均衡
  • 补齐各模型的最终训练权重,保证页面可选模型都能预测
  • 增加混淆矩阵展示、误分类样本分析及接口异常提示
  • 将英文类别映射为中文水果名称,提升界面友好度