基于深度学习的热带水果检测系统设计与实现

基于深度学习的热带水果检测系统设计与实现

项目简介

本系统是一个基于 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 检测、历史、统计、数据集查看

新注册用户默认为普通用户角色,仅能访问自身检测数据;管理员可查看全部用户数据。

相关推荐
AGI_Eval9 分钟前
AI 3D生成技术:从“可用”走向“可靠”还有多远?
人工智能·3d
程序员cxuan10 分钟前
LobeHub 是真的夯,简直 Super-Agent 最佳实现。
人工智能·后端·程序员
QXWZ_IA16 分钟前
高楼遮挡RTK失锁:三层安全网怎么搭
人工智能·安全
sun8612207728 分钟前
Hy4 Preview 高效预览与协作应用指南
人工智能
码云之上43 分钟前
10 颗一模一样的「Edit」:中后台 Web Agent 怎么找到对的那一行
前端·人工智能·浏览器
阿里云大数据AI技术1 小时前
EMR Serverless Ray:让 AI 推理融入数据处理
人工智能·spark
TDengine (老段)1 小时前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp
MobotStone1 小时前
毛选从哪篇开始读?
人工智能
QZ166560951591 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
网络·人工智能·安全·网络安全·政务