基于深度学习的热带水果检测系统设计与实现
基于 Flask 与 YOLOv8 的水果智能检测平台,可对苹果、香蕉、葡萄、橙子、菠萝、西瓜六类水果自动定位、分类与置信度评估,提供批量检测、历史记录、统计分析、模型在线训练与报告导出,数据集来自 Kaggle Fruits-detection。
项目封面

项目说明
基于深度学习的热带水果检测系统设计与实现
项目简介
本系统是一个基于 Flask Web 框架与 YOLOv8 深度学习模型的水果智能检测平台。系统面向水果识别与分类场景,能够对上传图片中的苹果、香蕉、葡萄、橙子、菠萝、西瓜等六类水果进行自动定位、分类与置信度评估,并提供批量检测、历史记录、统计分析、模型在线训练与报告导出等完整功能。
系统使用 Kaggle 公开水果检测数据集(Fruits-detection)进行模型训练,管理员可在线发起模型重新训练,训练完成后自动加载新权重。
功能模块
| 模块 | 功能说明 |
|---|---|
| 用户认证 | 用户注册、登录、退出;基于 Flask-Login 的会话管理;管理员与普通用户两级角色权限控制 |
| 控制台 | 展示总检测次数、检出水果数、今日检测、系统用户数等核心指标,近 7 天检测趋势折线图,快捷操作入口与最近检测记录列表 |
| 单张检测 | 支持拖拽或点击上传单张图片,实时执行 YOLOv8 推理,返回标注结果图、水果数量、各类别置信度与边界框坐标,并自动保存检测记录 |
| 批量检测 | 一次上传多张图片(最多 20 张)批量处理,展示每张图片的检测结果缩略图与水果数量,支持失败重试提示 |
| 检测历史 | 检测记录分页浏览与关键词搜索,查看检测详情(原图、结果图、检测框列表),删除记录,导出 CSV 与 PDF 报告 |
| 统计分析 | 水果类别分布饼图、月度检测趋势柱状图、总检测/检出/未检出/检出率/平均耗时/平均置信度等汇总指标,所有数据按当前用户权限范围统计 |
| 数据集管理 | 展示水果检测数据集信息(总图片数、训练/验证/测试集划分、类别说明、数据集路径与更新时间),提供数据集手动准备说明 |
| 模型训练 | 管理员可配置训练轮次、批次大小、图片尺寸并启动 YOLOv8 在线训练,实时查看训练状态与完成后的 mAP50、精确率、召回率等指标,查看训练历史记录 |
| 系统设置 | 管理员可调整检测置信度阈值、NMS IOU 阈值、最大上传大小、自动保存开关等系统参数 |
| 用户管理 | 管理员查看所有用户列表,启用/禁用用户账户 |
| 操作日志 | 管理员查看登录、检测、训练、设置变更等操作日志,支持分页 |
| 报告导出 | 一键导出检测记录为 PDF 报告或 CSV 表格 |
水果类别
系统支持检测以下六类水果:
| 类别 ID | 英文名称 | 中文名称 | 说明 |
|---|---|---|---|
| 0 | Apple | 苹果 | 蔷薇科苹果属果实,果皮红色 |
| 1 | Banana | 香蕉 | 芭蕉科芭蕉属果实,果皮黄色 |
| 2 | Grape | 葡萄 | 葡萄科葡萄属果实,成串生长 |
| 3 | Orange | 橙子 | 芸香科柑橘属果实,果皮橙色 |
| 4 | Pineapple | 菠萝 | 凤梨科凤梨属果实,外表多刺 |
| 5 | Watermelon | 西瓜 | 葫芦科西瓜属果实,果皮绿色 |
标准版目录结构
python-deeper-study-redaishuiguo-jiance/
├── app.py # Flask 应用主入口,页面路由与 API 接口定义
├── config.py # 系统配置(密钥、数据库路径、模型路径、类别映射、分页参数)
├── requirements.txt # Python 依赖包清单
├── mac_run.sh # macOS/Linux 一键启动脚本
├── window_run.bat # Windows 一键启动脚本
├── cleanup.py # 数据清理脚本(清除运行数据,保留用户与设置)
├── 项目说明.md # 项目功能与目录结构说明
├── 训练手册.md # 模型训练与数据集使用手册
├── 数据清理说明.md # 数据清理脚本使用说明
├── database/
│ └── models.py # SQLite 数据库表结构定义、初始化与操作日志记录
├── ml/
│ ├── detect.py # YOLOv8 检测引擎封装(模型加载、单张/批量检测、结果绘制)
│ ├── train.py # YOLOv8 模型训练脚本(训练、指标读取、任务状态更新)
│ ├── data/
│ │ └── tropical_fruit/ # 水果检测数据集(YOLO 格式)
│ │ ├── train/
│ │ │ ├── images/ # 训练集图片
│ │ │ └── labels/ # 训练集标签(YOLO txt)
│ │ ├── valid/
│ │ │ ├── images/ # 验证集图片
│ │ │ └── labels/ # 验证集标签
│ │ ├── test/
│ │ │ ├── images/ # 测试集图片
│ │ │ └── labels/ # 测试集标签
│ │ └── data.yaml # 数据集配置文件
│ └── runs/
│ └── detect/
│ └── train/
│ ├── weights/ # 训练输出的模型权重(best.pt / last.pt)
│ ├── results.csv # 训练指标记录
│ └── args.yaml # 训练参数配置
├── templates/ # Jinja2 HTML 模板
│ ├── base.html # 基础模板(导航栏、本地资源引用)
│ ├── index.html # 首页
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── dashboard.html # 控制台
│ ├── detect.html # 单张检测页
│ ├── batch_detect.html # 批量检测页
│ ├── history.html # 检测历史页
│ ├── statistics.html # 统计分析页
│ ├── dataset.html # 数据集管理页
│ ├── training.html # 模型训练页
│ ├── settings.html # 系统设置页
│ ├── users.html # 用户管理页
│ ├── logs.html # 操作日志页
│ └── error.html # 错误页
├── static/
│ ├── css/
│ │ └── style.css # 自定义样式
│ ├── js/
│ │ └── common.js # 公共工具函数
│ ├── lib/ # 本地前端资源(无需 CDN)
│ │ ├── bootstrap/ # Bootstrap 5.3 CSS/JS
│ │ ├── bootstrap-icons/ # Bootstrap Icons 字体与 CSS
│ │ └── echarts/ # ECharts 5.5 图表库
│ ├── demo/ # 演示图片(各类水果示例)
│ ├── uploads/ # 上传图片存储目录
│ └── results/ # 检测结果图存储目录
├── instance/
│ └── tropical_fruit.db # SQLite 数据库文件(自动生成)
├── .gitignore # Git 忽略规则
├── 运行步骤必看/
│ └── window.md # Windows 运行步骤说明
├── 用户上传检测文件/ # 测试用图片与检测效果展示
│ ├── Apple.jpg # 苹果示例图
│ ├── Banana.jpg # 香蕉示例图
│ ├── Grape.jpg # 葡萄示例图
│ ├── Orange.jpg # 橙子示例图
│ ├── Pineapple.jpg # 菠萝示例图
│ ├── Watermelon.jpg # 西瓜示例图
│ ├── multi_fruits.jpg # 多水果示例图
│ ├── 检测效果_橙子.jpg # 检测效果展示图
│ └── 检测效果_苹果.jpg # 检测效果展示图
├── 演示材料/
│ └── 演示视频.mp4 # 系统演示视频
└── yolov8s.pt # YOLOv8s 预训练权重(COCO 基线模型)
技术栈
| 类别 | 技术 |
|---|---|
| 后端框架 | Python 3.12 + Flask 3.0 |
| 用户认证 | Flask-Login 0.6 + Werkzeug pbkdf2:sha256 密码哈希 |
| 数据库 | SQLite 3 |
| 深度学习 | Ultralytics YOLOv8 8.4(目标检测) |
| 图像处理 | OpenCV(opencv-python-headless)+ Pillow |
| 数据处理 | NumPy + Pandas |
| 前端 | HTML5 + Bootstrap 5.3 + Bootstrap Icons + ECharts 5.5 |
| 报告生成 | ReportLab(PDF 导出) |
| 数据集来源 | Kaggle - Fruit Detection 公开数据集 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 4GB 以上(模型推理与训练时使用) |
| 磁盘 | 约 2GB(含依赖、数据集与模型权重) |
| GPU | 可选,支持 CUDA / Apple MPS / CPU 自动回退 |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
系统初始化时自动创建以下默认账户:
| 角色 | 用户名 | 密码 | 权限 |
|---|---|---|---|
| 管理员 | admin | admin123 | 全部功能,含模型训练、系统设置、用户管理、操作日志 |
| 普通用户 | user | user123 | 检测、历史、统计、数据集查看 |
新注册用户默认为普通用户角色,仅能访问自身检测数据;管理员可查看全部用户数据。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。