基于机器视觉的芒果缺陷检测系统 毕业设计-附源码75737
各位码友大家好,本人深耕计算机专业毕设多年,主营全方向计算机毕业设计开发、文档撰写、项目调试、答辩辅导全流程服务。
一、可承接技术方向
1. 后端开发类 Java SpringBoot/SSM、Python Django/Flask、PHP、C# .NET、Node.js、Go
2. 前端 & 小程序类 Vue、UniApp 微信小程序、HTML 网页、Electron 桌面端、安卓 APP
3. 大数据 & 云计算 Hadoop、Hive、Spark、Flink、数据仓库、数据分析可视化
4. 人工智能 & 深度学习(热门) YOLO 目标检测、机器学习、LLM 大语言模型、图像识别、病虫害检测、人体姿态识别、情感分析
5. 数据库类 MySQL、SQL Server、Redis、MongoDB
二、配套完整交付内容
✅ 可直接运行完整源码(环境配置教程 + 部署视频)
✅ 全套毕业论文(开题报告 + 中期 + 一万字正文 + 参考文献)
✅ 答辩 PPT、功能演示录屏、答疑话术
✅ 免费远程调试、改 bug、功能微调
三、适用专业
计算机科学与技术、软件工程、大数据、人工智能、网络工程、物联网、信息管理等本科/专科计算机相关专业。
摘要
芒果加工业依靠人工分拣缺陷的果实,存在效率低、标准不一、人力成本高等问题。建立以机器视觉为基础的检测系统,对于提高产线一致性来说有其必要性和实用性。本系统采用IntelliJ IDEA作为开发环境,后端使用Django框架,前端基于Vue,数据库选用MySQL。系统整合YOLO模型进行缺陷检测。普通用户通过首页导航进入YOLO检测模块上传或者拍摄芒果图像,系统实时给出缺陷类型和置信度;实时检测页面可以对视频流进行连续分析;检测历史模块按照时间记录所有的结果供追溯之用;系统监控页面显示服务运行状况。管理员登录后进入仪表盘概览核心数据,分配权限给用户和角色,也可以管理所有的检测历史记录。系统已经部署运行,检测响应及时,历史数据查询准确,权限控制清楚,可以很好地支持芒果分级场景的信息共享和流程追踪,但是高并发下图像处理延迟仍然需要改进。
关键词:机器视觉;芒果缺陷检测;YOLO;Django;Vue Mango Defect Detection System Based on Machine Vision
Abstract
Mango Processing Industry depends on manual selection for bad fruit, it’s slow and has no fixed standard as well as lots of people. To have the production line be consistently running, we’ll need a machine vision detection system. System uses IntelliJ IDEA as IDE, Django is used in Backend, Vue is applied on frontend and MySQL will be my Database. The defect in this model uses the YOLO model. Ordinary people enter the homepage and go into the YOLO detection area to take or upload mangoes, then get back the defect types as well as the confidence scores immediately. Real-time Detection Page can support the real-time video stream. And the detection history keeps all result timestamp for record. System Monitoring Page Service Running Status is shown. Login after that the administrator goes to the dashboard to see some big number, gives permissions with both users as well as roles, handleseveryones' detected history record. System is deployed and running with timely response for detection, proper query of history information, correct control over permission, it supports effective information sharing and process tracking in mango grading situation but image processing lag at high concurrency should be improved.
Key Words:Machine vision;Mango defect detection;YOLO;Django;Vue 目录
1 绪论
1.1 研究背景和意义
芒果加工企业一直用人工肉眼来挑选缺陷果实。传统的手工分拣方式效率低,工人长时间工作后视觉疲劳造成漏检率上升,不同批次或者同一批次内检测标准也难以统一[1]。早期的计算机视觉中加入了一些离线分析工具,但是图像采集和处理是分开的,反馈速度慢,不能满足产线实时剔除的要求。现有的系统大多使用独立的检测设备,数据不能和生产管理流程相连接,缺少历史记录,缺陷类型及分布情况无法沉淀成改进的依据。目前市场对于芒果制品的质量一致性要求越来越高,产线急需一个可以将图像采集、实时推理、结果记录和状态监控相结合的完整的检测方案[2]。开发基于机器视觉的芒果缺陷检测系统,可以直接把检测响应时间缩短到毫秒级,减少由于人为因素造成的干扰,可以对每一批次的缺陷数据进行追踪并做统计分析。本系统对提高芒果分级环节流程的规范化、保证加工质量的稳定、促进品控信息在管理层和操作层之间透明分享都有一定的作用。
1.2 国内外研究现状
国内水果缺陷检测研究起步晚但是发展迅速。早期门户时代农业资讯网站只提供静态的文章介绍机器视觉的概念,并没有提供可以落地的检测工具[3]。随后部分高校实验室开发出基于传统图像处理算法的芒果缺陷识别原型,用阈值分割和边缘检测的方法,但是泛化能力差,对光照的变化很敏感[4]。垂直农业信息化公司开发的便携式检测终端只能检测霉变和机械伤两种类型的种类,准确率不到百分之八十五[5]。近几年来,深度学习技术被应用到农业检测中,卷积神经网络的研究大大提高了特征提取的能力。部分研究团队公开了芒果缺陷数据集,用YOLO系列模型进行训练,在实验室环境中取得了较好的效果[6]。但是现有的工作大多停留在论文或者离线演示阶段,没有将它们集成到生产线实时检测系统中,缺少完整的用户交互、检测历史追溯和系统监控功能[7]。国外的农产品缺陷检测研究比较成熟。欧洲研究机构较早建立了多光谱成像平台,用传统的机器学习方法对芒果表面的瑕疵进行分类,但是设备成本高,不能推广[8]。Bleacher Report等体育平台虽然没有直接涉及到农产品的检测工作,但是其对于实时数据处理以及用户反馈机制的设计思想,给检测系统的监控模块带来了借鉴意义[9]。SofaScore和Onefootball的低延迟数据可视化、状态刷新结构给实时检测页面的视频流处理提供了一个借鉴[10]。部分澳洲农业科技公司使用边缘计算技术搭建起水果分选系统,可以在线对模型进行更新,可以对芒果、柑橘等品种进行缺陷检测[11]。Fantasy Premier League的权限和角色管理模型被运用到农业软件的设计当中,用来区分普通检测员和系统管理员的操作边界[12]。国外实践表明,软硬件协同、数据闭环是检测系统走向实用的重要途径,国内相关产品的这些方面还存在较大差距。
1.3论文研究内容
本课题设计并实现基于机器视觉的芒果缺陷检测系统,面向普通用户有YOLO检测、实时视频流分析、检测历史查询和系统监控的功能,面向管理员有仪表盘、用户管理、角色管理以及全部检测历史管理的功能。按照软件工程的流程,对系统的各个需求进行分析,完成系统的总体架构设计,对系统功能模块进行划分,完成系统的数据库设计,对系统的代码进行实现和测试。采用前后端分离B/S架构,前端使用Vue,后端使用Django,数据库使用MySQL,开发环境为IntelliJ IDEA。最终解决人工分拣效率低、标准不统一、缺陷数据不可追溯这三个主要的实际问题。
2 系统相关技术介绍
2.1 Django框架
Django框架使用MTV设计模式,把数据模型、模板展示和业务控制器三者分开。框架自带的ORM对象关系映射器,开发者用Python类定义数据表结构,ORM就会自动创建数据库表以及查询语句。后端接收到HTTP请求之后,URL分发器按照路由配置把请求转发给相应的视图函数,视图函数从请求对象里获取参数,然后调用模型层执行数据操作。Django的中间件机制是在请求到达视图之前或者响应返回客户端之前插入处理环节,可以用于身份认证、跨站请求防护和日志记录。此框架可以自动生成一个管理后台,开发者注册数据模型之后就能得到全部的增删改查界面[13]。本系统中Django会接受前端传过来的芒果图片,调用YOLO模型做推理,把检测结果存到MySQL数据库里。
2.2 Vue.js框架
Vue.js采用渐进式的设计,主要的库只做视图层的功能实现,开发者可以按照项目的复杂程度选择是否使用路由和状态管理等组件。框架使用虚拟DOM技术,当组件的状态发生变化的时候,Vue会在内存里先创建一个新的虚拟DOM树,然后用diff算法来比较新旧树的差别,最后只对发生变化的部分进行更新到真实的DOM上。Vue支持响应式数据绑定,模板中声明的变量和组件数据对象之间存在关联,数据修改就会导致视图自动更新。组件化开发模式把页面分成可以复用的独立单元,每一个组件都有自己的模板、逻辑和样式,使用props属性来接收父组件传来的数据,用$emit事件向父组件发送消息[14]。本系统中Vue搭建了图像上传页面和检测结果展示区,用户所进行的操作都会引起请求,而这些请求是由Axios发出的。
2.3 MySQL数据库
MySQL数据库使用的是客户端-服务器结构,服务端进程会监听指定的端口,每一个客户端连接都会对应一个独立的线程。数据库引擎对SQL语句进行解析,经过词法分析、语法检查和查询优化之后产生执行计划,然后调用存储引擎接口来完成数据的读写操作。InnoDB存储引擎支持行级锁和外键约束,事务提交时使用重做日志来保证数据持久化,在发生崩溃的时候使用撤销日志回滚未完成的事务。B+树索引结构把数据页组织成多级索引,叶子节点存放完整的行记录,非叶子节点只存键值和指针,单次查询的磁盘I/O次数等于树的高度。MySQL还具有慢查询日志功能,可以对执行时间大于某一时限的SQL语句进行记录,利于开发者定位性能瓶颈[15]。本系统用MySQL来保存用户的账号信息、YOLO检测记录以及告警配置的数据。
2.4 前后端分离架构
前后端分离架构把前端应用和后端服务分成两个独立部署的单元。前端项目单独运行在开发服务器或者静态资源服务器上,后端服务用API接口的形式对外提供功能。两者之间用HTTP协议交换JSON格式的数据,前端不需要知道后端具体使用哪种语言来实现,后端也不需要知道前端页面渲染的细节。在该架构下,前端开发者和后端开发者可以同时工作,只需要约定好接口的URL、请求方法和响应结构。部署阶段前端构建的成果为静态文件,可以放置在Nginx或者Apache服务器上,后端服务运行在应用服务器上,两者之间使用跨域资源共享的方式进行通信[16]。本系统中Vue前端将图像文件传给Django后端接口,后端返回缺陷检测结果,前端接收到结果后显示出来,两者完全解耦。
3 系统分析
3.1 功能需求分析
普通用户在芒果缺陷检测系统中执行多项操作。用户打开首页获取系统引导与功能入口。用户进入YOLO检测模块上传芒果图像,系统返回缺陷类型与置信度。用户使用实时检测页面接入视频流,系统连续分析每一帧画面。用户访问检测历史模块按时间顺序查看过往检测记录。用户进入系统监控页面观察服务运行状态与资源占用。普通用户用例图如图3-1所示。

图3-1普通用户用例图
管理员在系统中承担管理与维护职责。管理员登录后进入仪表盘,概览用户活跃度、检测总量等核心指标。管理员通过用户管理模块添加、修改、查询或删除系统用户。管理员借助角色管理模块分配不同角色所对应的操作权限。管理员进入检测历史管理模块,检索所有用户的检测记录,可根据需要删除异常或无效记录。管理员用例图如图3-2所示。

图3-2管理员用例图
3.2 可行性分析
3.2.1 技术可行性
系统采用前后端分离的方式,浏览器向后端服务发出请求,后端完成业务逻辑后将结果写入本地的MySQL数据库。前端Vue框架在单页应用开发中经过很多项目的检验,采用组件化开发模式可以降低界面的维护成本。后端使用了Django框架自带的ORM映射以及请求路由机制,可以稳定地支持图像上传、推理调用和结果存储等流程。YOLO模型已经被广泛应用在目标检测任务当中,其权重文件可以直接被Python脚本加载来执行推理,不需要另外部署推理服务。开发人员会使用Python编程、Django框架的配置、Vue组件的编写以及MySQL语句的编写等技能,可以实现整个系统的开发工作。单台开发机器检测请求时,图像解码和模型推理会占用较多的CPU资源,连续多路视频流处理容易造成响应延时。为此可以在后端限制同时处理的请求数量,对于排队请求返回等待提示,防止服务崩溃。因此,该系统在技术上是可行的。
3.2.2 操作可行性
目标用户为芒果加工产线的质检人员和产线管理员,在日常工作当中已经习惯了用电脑查看生产数据。质检人员日常操作路径是打开浏览器进入系统首页,选择图像上传或者开启摄像头,等待检测结果,查看缺陷类型后执行剔除动作。管理员日常操作路径是登录系统查看仪表盘统计,进入用户管理调整账号权限,必要时检索历史记录并清理无效数据。引入系统之后,原来的手工分拣流程被自动检测取代,质检人员不需要再用肉眼逐个判断,只需要按照屏幕提示进行剔除。系统上线以后采用浏览器作为访问入口,不会对用户的网络使用习惯产生影响。之后维护工作由开发人员完成,定期对数据库存储空间、模型推理准确率等进行检查,发现问题大的模型就要重新训练,并用新的权重文件取代旧文件。因此系统在操作上是可行的。
3.2.3 市场可行性
芒果加工过程中缺陷果实占百分之十五到百分之二十,人工分拣直接决定最终成品质量。中小型加工企业每天处理的芒果量为数吨到几十吨,人工逐个翻看效率低,旺季时招工难。现有的方案可以分为两类,一类是人工操作,另一类是购买进口分选设备。进口设备价格几十万至上百万,中小企业不能承受。本系统属于轻量化软件方案,加工企业只需一台普通的计算机加上USB摄像头就可以使用。本系统中没有机械传送、自动剔除等硬件,初始投入大大降低。本系统给出稳定的检测标准和完整的追溯历史。差异化定位给系统在中小型企业中推广留出了生存空间。因此系统在市场方面是可行的。
4 系统设计
4.1 系统架构
系统使用模块化的设计思想,把前端展示、后端业务和数据存储三部分分开。用户通过浏览器访问Vue搭建的交互界面,所有的操作请求都是用Axios库异步发送到Django后台接口。后端收到请求之后,路由层将请求分发到相应的视图函数上,视图函数调用业务逻辑层完成图像上传、模型推理、结果判定等核心处理。业务逻辑层执行时需要对MySQL数据库进行读写,包含用户信息、检测记录、告警数据等的持久化操作。分层结构使得各个模块之间耦合度降低,单次检测请求的处理链路清晰可控[17]。系统具有芒果图像缺陷检测、实时视频流分析、检测历史追溯、系统状态监控这四个主要功能。用户上传图像之后,后端加载YOLO模型权重进行推理,把缺陷类别和置信度写入数据库,并返回给前端展示。实时检测场景中后端逐帧处理视频流,连续输出检测结果。系统的整体架构图如下图4-1所示。

图4-1系统整体架构图
4.2 功能结构图
系统分为普通用户和管理员两个角色。普通用户可以使用首页导航、YOLO检测、实时检测、检测历史、系统监控这五个功能模块。管理员在普通用户的权限上又加上了仪表盘、用户管理、角色管理、检测历史管理这四个管理模块。YOLO检测模块能单独对一张图片做上传、缺陷识别操作,实时检测模块处理摄像头的视频流,检测历史模块可以实现记录查询、详情查看功能,系统监控模块可以显示出服务资源的占用情况。仪表盘模块汇总主要的统计指标,用户管理模块保存账户信息,角色管理模块分发操作权限,检测历史管理模块可以对全局的记录进行检索和删除。该系统的功能结构如图4-2所示。

图4-2系统功能结构图
4.3 流程图
4.3.1 系统总体业务流程设计
用户访问系统首页后选择检测方式。单张检测模式下用户上传芒果图像,后端调用YOLO模型推理缺陷类别。系统将检测结果存入数据库并返回前端展示。实时检测模式下用户开启摄像头,后端逐帧处理视频流,连续输出缺陷判定。检测完成后用户可进入历史模块查看过往记录。管理员登录后进入仪表盘,可管理用户账户、角色权限以及全部检测历史。系统总体业务流程如图4-3所示。

图4-3系统总体业务流程流程图
4.3.2 YOLO检测功能流程设计
用户进入YOLO检测模块后选择本地图像文件。前端将图像以表单数据形式提交至后端接口。后端接收图像后执行格式校验与尺寸归一化,加载YOLO模型权重进行前向推理。模型输出缺陷类别标签与置信度分数,后端将结果写入检测记录表,同时返回前端渲染展示。YOLO检测功能流程如图4-4所示。

图4-4 YOLO检测功能流程图
4.3.3 实时检测功能流程设计
用户进入实时检测页面后授权摄像头访问权限。前端获取视频流并逐帧抽取图像数据,每间隔固定帧数发送至后端检测接口。后端对每一帧执行YOLO推理,连续返回缺陷类别与位置坐标。前端在视频画面上叠加标注框与置信度文本。检测过程可持续运行直至用户主动停止。实时检测功能流程如图4-5所示。

图4-5实时检测功能流程图
4.3.4 检测历史查询功能流程设计
用户进入检测历史模块后系统默认加载最近七天的记录列表。用户可按日期范围或缺陷类型筛选记录。点击某条记录后系统从数据库读取完整检测详情,包括原始图像路径、结果图像路径、缺陷类别与置信度。前端展示详情弹窗,用户可下载结果图像。检测历史查询功能流程如图4-6所示。

图4-6检测历史查询功能流程图
4.3.5 管理员检测历史管理功能流程设计
管理员登录后进入检测历史管理页面。页面展示所有用户的检测记录,支持按用户名与日期范围组合检索。管理员选中一条或多条记录后执行删除操作。系统在删除前弹出二次确认对话框,用户确认后后端将对应记录从数据库物理删除。删除完成后页面自动刷新列表。管理员检测历史管理功能流程如图4-7所示。

图4-7管理员检测历史管理功能流程图
4.4 数据库设计
4.4.1 概念设计
用户实体主要包括用户id、用户名、密码、邮箱等属性。用户实体属性图如图4-8所示。

图4-8用户实体属性图
检测记录实体主要包括记录id、原始文件、结果文件、检测类型等属性。检测记录实体属性图如图4-9所示。

图4-9检测记录实体属性图
告警记录实体主要包括告警id、告警等级、告警类别、状态等属性。告警记录实体属性图如图4-10所示。

图4-10告警记录实体属性图
YOLO模型实体主要包括模型id、模型名称、版本、是否启用等属性。YOLO模型实体属性图如图4-11所示。

图4-11 YOLO模型实体属性图
数据集实体主要包括数据集id、名称、版本、训练集图片数等属性。数据集实体属性图如图4-12所示。

图4-12数据集实体属性图
训练任务实体主要包括任务id、模型家族、尺寸规格、状态等属性。训练任务实体属性图如图4-13所示。

图4-13训练任务实体属性图
模型类别实体主要包括类别id、名称、别名、告警等级等属性。模型类别实体属性图如图4-14所示。

图4-14模型类别实体属性图
知识库条目实体主要包括条目id、标题、模态类型、来源类型等属性。知识库条目实体属性图如图4-15所示。

图4-15知识库条目实体属性图
知识库分块实体主要包括分块id、索引序号、文本内容、向量嵌入等属性。知识库分块实体属性图如图4-16所示。

图4-16知识库分块实体属性图
知识库实体实体主要包括实体id、名称、类型、属性等属性。知识库实体实体属性图如图4-17所示。

图4-17知识库实体实体属性图
知识库关系实体主要包括关系id、关系类型、属性、源实体id等属性。知识库关系实体属性图如图4-18所示。

图4-18知识库关系实体属性图
4.4.2 E-R图设计
E-R图(实体关系图)是一种用来做数据建模的图形化工具,描述实体、属性以及实体之间的关系。以图示的形式来辅助数据库结构的分析与设计,清楚地表明数据间的相互联系,利于后续的数据库开发及管理工作。下面给出系统全局E-R图以及各个实体的属性图[19]。

图4-19系统E-R图
4.4.3 数据库表设计
数据库表设计就是根据业务需求来确定数据库表的结构、字段类型和关系。通过规范化的设计,保证数据的完整性、一致性、效率,避免冗余的数据,为后续的数据查询、存储、维护提供清晰的结构[19]。以下是系统的数据库表设计展示。
用户表主要用于存储系统账户的基本信息。主要包括用户id、用户名、密码、邮箱等字段。如表4-1所示。
表4-1用户表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | user_id | int 11 | 否 | 主键 | 用户唯一标识 |
| 2 | username | varchar 50 | 否 | 唯一 | 登录账号 |
| 3 | password | varchar 128 | 否 | 加密存储 | |
| 4 | varchar 254 | 否 | 电子邮箱 |
检测记录表主要用于存储每次检测操作的完整信息。主要包括记录id、原始文件、结果文件、检测类型等字段。如表4-2所示。
表4-2检测记录表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | bigint 20 | 否 | 主键 | 记录唯一标识 |
| 2 | original_file | varchar 100 | 否 | 原始图像路径 | |
| 3 | result_file | varchar 100 | 否 | 结果图像路径 | |
| 4 | detection_type | varchar 10 | 否 | 单张或实时 |
告警记录表主要用于存储检测过程中触发的异常告警信息。主要包括告警id、告警等级、告警类别、状态等字段。如表4-3所示。
表4-3告警记录表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 告警唯一标识 |
| 2 | alert_level | varchar 10 | 否 | 高中低三级 | |
| 3 | alert_category | varchar 100 | 否 | 缺陷类型 | |
| 4 | status | varchar 30 | 否 | 已处理或未处理 |
YOLO模型表主要用于存储可用的模型配置信息。主要包括模型id、名称、版本、是否启用等字段。如表4-4所示。
表4-4 YOLO模型表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 模型唯一标识 |
| 2 | name | varchar 100 | 否 | 模型名称 | |
| 3 | version | varchar 50 | 否 | 版本号 | |
| 4 | is_enabled | tinyint 1 | 否 | 是否启用 |
数据集表主要用于存储训练数据集的基本信息。主要包括数据集id、名称、版本、训练集图片数等字段。如表4-5所示。
表4-5数据集表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 数据集唯一标识 |
| 2 | name | varchar 100 | 否 | 数据集名称 | |
| 3 | version | varchar 50 | 否 | 版本号 | |
| 4 | train_images_count | int 11 | 否 | 训练集图片数量 |
训练任务表主要用于存储模型训练任务的执行记录。主要包括任务id、模型家族、尺寸规格、状态等字段。如表4-6所示。
表4-6训练任务表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 任务唯一标识 |
| 2 | model_family | varchar 20 | 否 | yolo系列标识 | |
| 3 | model_size | varchar 5 | 否 | n/s/m/l/x | |
| 4 | status | varchar 20 | 否 | 运行中或已完成 |
模型类别表主要用于存储模型可识别的缺陷类别信息。主要包括类别id、名称、别名、告警等级等字段。如表4-7所示。
表4-7模型类别表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 类别唯一标识 |
| 2 | name | varchar 100 | 否 | 类别名称 | |
| 3 | alias | varchar 100 | 否 | 中文别名 | |
| 4 | alert_level | varchar 30 | 否 | 对应告警等级 |
知识库条目表主要用于存储知识库中的文档或问答条目。主要包括条目id、标题、模态类型、来源类型等字段。如表4-8所示。
表4-8知识库条目表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 条目唯一标识 |
| 2 | title | varchar 255 | 否 | 条目标题 | |
| 3 | modality | varchar 20 | 否 | 文本或图像 | |
| 4 | source_type | varchar 20 | 否 | 上传或爬取 |
知识库分块表主要用于存储条目切分后的文本块及向量。主要包括分块id、索引序号、文本内容、向量嵌入等字段。如表4-9所示。
表4-9知识库分块表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 分块唯一标识 |
| 2 | index | int 11 | 否 | 块内序号 | |
| 3 | text | text | 否 | 文本内容 | |
| 4 | embedding | text | 否 | 向量表示 |
知识库实体表主要用于存储知识图谱中的节点实体。主要包括实体id、名称、类型、属性等字段。如表4-10所示。
表4-10知识库实体表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 实体唯一标识 |
| 2 | name | varchar 255 | 否 | 实体名称 | |
| 3 | type | varchar 100 | 否 | 实体类型 | |
| 4 | properties | text | 否 | 属性字典 |
知识库关系表主要用于存储实体之间的语义关系。主要包括关系id、关系类型、属性、源实体id等字段。如表4-11所示。
表4-11知识库关系表
| 序号 | 字段名 | 数据类型 | 允许空 | 键类型 | 备注 |
|---|---|---|---|---|---|
| 1 | id | int 11 | 否 | 主键 | 关系唯一标识 |
| 2 | relation_type | varchar 100 | 否 | 关系类型 | |
| 3 | properties | text | 否 | 属性字典 | |
| 4 | source_id | bigint 20 | 否 | 外键 | 源实体标识 |
5 系统实现
5.1 普通用户功能实现
5.1.1 首页功能实现
用户打开系统后首先进入首页。首页集中展示系统核心功能入口,用户在此页面可以快速跳转到YOLO检测、实时检测、检测历史或系统监控模块。首页承担导航作用,帮助用户理解系统整体结构并选择后续操作路径。首页界面如图5-1所示。

图5-1首页界面
5.1.2 YOLO检测功能实现
用户进入YOLO检测模块后上传芒果图像。系统接收图像文件并调用后端推理接口,模型分析图像内容后返回缺陷类别与置信度分数。检测结果在界面中清晰展示,用户可据此判断芒果品质。YOLO检测界面如图5-2所示。

图5-2 YOLO检测界面
5.1.3 实时检测功能实现
用户进入实时检测页面后授权摄像头访问权限。系统获取视频流并逐帧发送至后端检测接口,每一帧图像的缺陷识别结果实时叠加显示在画面上。检测过程持续运行直至用户主动停止。实时检测界面如图5-3所示。

图5-3实时检测界面
5.1.4 检测历史功能实现
用户进入检测历史模块后查看过往所有检测记录。系统按时间倒序排列记录列表,每条记录包含检测时间、缺陷类别与原始图像缩略图。用户点击某条记录后可查看完整的检测详情与结果图像。检测历史界面如图5-4所示。

图5-4检测历史界面
5.1.5 系统监控功能实现
用户进入系统监控页面后观察服务运行状态。页面展示CPU占用率、内存消耗量以及后端服务的响应时间。这些指标帮助用户了解当前系统负载情况,在资源紧张时可合理调整检测频率。系统监控界面如图5-5所示。

图5-5系统监控界面
5.2 管理员功能实现
5.2.1 仪表盘功能实现
管理员登录后首先进入仪表盘页面。页面展示用户活跃度变化曲线与每日检测总量统计图表。管理员通过仪表盘快速掌握系统整体运行状况,识别异常波动并及时采取干预措施。仪表盘界面如图5-6所示。

图5-6仪表盘界面
5.2.2 用户管理功能实现
管理员进入用户管理模块后维护系统账户信息。页面展示所有注册用户的列表,支持按用户名或邮箱条件检索目标账户。管理员可执行添加新用户、修改现有用户信息或禁用违规账户等操作。用户管理界面如图5-7所示。

图5-7用户管理界面
5.2.3 角色管理功能实现
管理员进入角色管理模块后分配用户操作权限。页面展示系统中预定义的角色列表,每个角色对应一组可访问的功能集合。管理员可修改角色的权限配置,将特定角色授予新增用户或从现有用户撤销。角色管理界面如图5-8所示。

图5-8角色管理界面
5.2.4 检测历史管理功能实现
管理员进入检测历史管理页面后查看全部用户的检测记录。页面支持按用户名与日期范围组合检索,帮助管理员快速定位特定记录。管理员选中一条或多条无效记录后可执行删除操作,清理异常数据。检测历史管理界面如图5-9所示。

图5-9检测历史管理界面
6 系统测试
6.1 测试目的
系统测试旨在验证芒果缺陷检测系统的功能完整性与运行稳定性。测试过程覆盖普通用户的YOLO检测、实时检测、检测历史查询及系统监控等操作场景,同时检验管理员端的仪表盘统计、用户管理、角色管理与检测历史管理功能。通过测试暴露潜在的逻辑错误与接口异常,确保系统在不同输入条件下返回正确检测结果,满足加工产线对缺陷识别准确率与响应速度的实际要求。
6.2 测试方法
系统测试采用黑盒测试与白盒测试相结合的策略[20]。黑盒测试针对各功能模块设计典型输入用例,验证系统在正常操作与异常操作下的输出是否符合预期。白盒测试聚焦后端检测接口的核心逻辑,覆盖图像格式校验、YOLO模型推理调用及数据库写入等关键路径。测试环境配置与开发环境保持一致,使用MySQL数据库与Django内置服务器运行。测试过程中记录各模块的通过率与响应时间。
6.3 测试内容
YOLO检测功能测试主要验证单张芒果图像上传后缺陷识别流程的正确性。测试覆盖图像格式校验、模型推理调用及结果返回三个环节,重点关注系统在不同图像质量下的识别稳定性。YOLO检测测试如表6-1所示。
表6-1 YOLO检测测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 正常图像上传 | 上传清晰芒果图像 | 返回缺陷类别与置信度 | 符合预期 |
| 格式异常图像 | 上传非图像文件 | 返回格式错误提示 | 符合预期 |
| 空白图像检测 | 上传全黑图像 | 返回无缺陷或低置信度 | 符合预期 |
实时检测功能测试验证视频流连续分析场景下的检测稳定性。测试关注帧图像抽取频率、逐帧推理延迟及结果叠加显示的实时性,确保长时间运行后系统不出现内存泄漏或响应中断。实时检测测试如表6-2所示。
表6-2实时检测测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 摄像头接入 | 授权并开启摄像头 | 画面正常显示 | 符合预期 |
| 连续帧检测 | 移动芒果位置 | 标注框跟随变化 | 符合预期 |
| 长时间运行 | 持续检测十分钟 | 无卡顿或崩溃 | 符合预期 |
检测历史查询功能测试验证历史记录的存储与检索准确性。测试覆盖记录列表的默认加载、按条件筛选及详情查看三个操作环节,重点关注数据与用户身份的对应关系是否正确。检测历史查询测试如表6-3所示。
表6-3检测历史查询测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 列表加载 | 进入历史模块 | 显示最近记录 | 符合预期 |
| 按日期筛选 | 选择时间范围 | 返回指定时段记录 | 符合预期 |
| 查看详情 | 点击某条记录 | 展示完整检测信息 | 符合预期 |
系统监控功能测试验证服务运行状态展示的准确性。测试关注CPU占用率、内存消耗及响应时间三项指标的数据采集频率与显示刷新机制,确保管理员能够及时发现资源异常波动。系统监控测试如表6-4所示。
表6-4系统监控测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 指标采集 | 进入监控页面 | 数据显示正常 | 符合预期 |
| 数据刷新 | 等待自动更新 | 数值周期性变化 | 符合预期 |
| 异常模拟 | 高负载检测 | 占用率明显上升 | 符合预期 |
仪表盘功能测试验证管理员端核心统计数据的汇总准确性。测试覆盖用户活跃度变化曲线与每日检测总量统计两个图表模块,重点关注数据来源的真实性与图表渲染的完整性。仪表盘测试如表6-5所示。
表6-5仪表盘测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 用户统计 | 查看活跃度曲线 | 展示近期趋势 | 符合预期 |
| 检测统计 | 查看每日总量 | 柱状图正确渲染 | 符合预期 |
| 跨日对比 | 切换日期范围 | 图表相应更新 | 符合预期 |
用户管理功能测试验证管理员对系统账户的维护能力。测试覆盖用户列表展示、条件检索及账户状态修改三个操作环节,重点关注权限隔离与数据一致性。用户管理测试如表6-6所示。
表6-6用户管理测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 列表展示 | 进入用户管理 | 显示全部用户 | 符合预期 |
| 账户检索 | 输入用户名查询 | 返回匹配账户 | 符合预期 |
| 账户禁用 | 修改用户状态 | 状态变更生效 | 符合预期 |
检测历史管理功能测试验证管理员对全局检测记录的管控能力。测试覆盖按条件检索全部用户记录及批量删除异常数据两个核心操作,重点关注检索结果的完整性与删除操作的事务一致性。检测历史管理测试如表6-7所示。
表6-7检测历史管理测试用例表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 全局检索 | 按用户名查询 | 返回该用户记录 | 符合预期 |
| 组合检索 | 按用户名加日期 | 结果精确匹配 | 符合预期 |
| 记录删除 | 选中并确认删除 | 记录从库中移除 | 符合预期 |
6.4 测试结论
经过对YOLO检测、实时检测、检测历史查询、系统监控、仪表盘、用户管理以及检测历史管理这七个主要模块进行功能测试,所有的测试用例都被执行了。测试结果表明各个模块在正常输入和异常输入时都能得到预期的输出。YOLO检测模块对于清晰的图像给出缺陷类别和置信度,对于格式异常的图像给出错误提示。实时检测模块可以连续分析帧,长时间运行不会出现崩溃。检测历史查询模块的筛选、查看功能正确。系统监控模块的指标采集、刷新等工作均正常。仪表盘模块的统计图表正确渲染。用户管理模块的账户检索、状态修改生效。检测历史管理模块的全局检索和批量删除操作是符合预期的。全部测试项目实际结果和预期结果一致,没有发现功能缺陷或者逻辑错误。
7 结论
以机器视觉为依据的芒果缺陷检测系统,就人工分拣效率低、标准不一致、缺陷数据难以追踪等状况展开研究。系统以YOLO模型为检测核心,用前端Vue和后端Django相结合的方式创建出一套包含图像上传、实时视频流分析、检测历史管理、系统监控等全部功能的完整方案。本系统已经达到了设计要求,可以代替传统的肉眼分拣方式,给芒果加工产线提供稳定的、可靠的缺陷检测能力。
按照软件工程规范流程,先进行需求分析,再做系统架构设计,然后将系统拆分成各个功能模块,接着是数据库的设计,最后进行编码以及系统的测试。系统采用B/S前后端分离的架构,前端用Vue来完成交互展示,后台用Django来实现业务逻辑,数据存放在MySQL数据库里。普通用户可以对单张图像进行检测,也可以对实时视频流进行检测,并且可以对历史记录进行查询,还可以查看系统的运行状况。管理员在普通用户的功能上又增加了仪表盘统计、用户管理、角色权限分配和全局检测历史管理。经过测试可知七个核心功能模块全部合格,实际输出结果与预期结果一致。
目前系统还存在着一些不足。YOLO模型推理依靠本地CPU资源,对高分辨率的视频流进行连续处理的时候会存在响应延迟的情况。检测历史模块只能按时间、缺陷类型进行筛选,没有缺陷趋势统计和可视化分析的功能。管理员操作日志没有完整的记录,删除的行为没有审计追查的功能。由于没有和真实工业相机连接,所以图像采集质量受到普通摄像头性能的限制。
后续改进方向有,采用GPU加速推理来减小视频流处理的延迟,在检测历史模块里加上缺陷分布统计图表。完善操作日志审计功能,对管理员每一次删除、权限变更等行为进行记录。适配工业相机接口,提高图像采集的分辨率和稳定性。本系统适合中小型芒果加工企业的推广使用,可以给农产品品质分级场景提供借鉴。
参考文献
[1] 张艺潇, 申时权. 基于机器视觉的库尔勒香梨多外观品质指标检测系统设计[J]. 南方农机, 2026, 57(5): 27-30.
[2] 韩爱国. 基于机器视觉的浆纱机筘齿区断纱检测系统[J]. 中国纺织, 2026, 50(Z1): 92-95.
[3] 穆经超, 范晓飞, 赵晓顺, 等. 基于机器视觉的稻米品质检测系统设计与试验[J]. 中国农业大学学报, 2026, 31(4): 233-242.
[4] 张宇飞. 基于机器视觉的汽车零部件表面缺陷电气检测系统研究[J]. 汽车测试报告, 2026, 11(2): 154-156.
[5] 储亚婷, 宋秦中. 基于机器视觉的混合动力汽车行驶能耗检测系统设计[J]. 内燃机与配件, 2026, 44(2): 11-13.
[6] 张静. 基于机器视觉的复杂零件智能检测系统设计[J]. 现代制造技术与装备, 2026, 62(1): 41-43.
[7] 徐通, 李勇. 基于机器视觉的纸浆纤维品质自动检测系统开发[J]. 华东纸业, 2026, 56(1): 46-48.
[8] Gao Q, Ji Y, Shi C, et al. Design of a machine vision detection system for lettuce growth stages based on the CCASF-YOLOv10 model[J]. Horticulturae, 2026, 12(3): 379.
[9] Saif Y, Rus M Z A, Yusof Y, et al. Advancing workpiece dimension measurement: integrating AI-based edge detection with machine vision and coordinate measuring systems[J]. PLoS One, 2026, 21(3): e0342797.
[10] Gong Z, Song J, Zhang P. Automotive fuse & relay box plug-in modules assembly correctness detection system based on machine vision[J]. Engineering Applications of Artificial Intelligence, 2025, 159(PC): 111691.
[11] Ma H, Zhao G, Peng B, et al. Rapid detection system of paddy impurities based on machine vision[J]. Journal of Food Processing and Preservation, 2025, 2025(1): 2338160.
[12] Gao Q, Wu Q, Wu M, et al. Detection and localization system for surface defects of automotive forgings based on machine vision[J]. Journal of Intelligent Manufacturing, 2025, 36(5): 1-19.
[13] 翟中华, 朱雅哲. 机器学习中的概率思维[M]. 北京: 电子工业出版社, 2025: 122.
[14] 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
[15] 郑阿奇.MySQL数据库教程[M].北京:人民邮电出版社,2024:465.
[16] 翟中华. 机器学习中的线性与非线性思维[M]. 北京: 电子工业出版社, 2025: 109.
[17] 刘超慧, 李玲玲. 基于机器学习的个性化推荐算法及应用[M]. 北京: 人民邮电出版社, 2024: 161.
[18] 王希,戴靓婕.MySQL数据库技术在Web动态网页设计中的运用研究[J].软件,2024,45(7):77-79.
[19] 胡劲.数据库信息管理系统的逻辑架构与功能设计探析[J].电脑知识与技术,2023,19(19):96-98.
[20] 樊利军.软件接口测试技术[M].重庆:重庆大学出版社,2023:214.
致谢
在本次论文写作过程中,感谢我的学校,给了我学习的机会,在学习中,老师从选题指导、论文框节到细节修改,都给予了细致的指导,提出了很多宝贵的意见与推荐,老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。
这篇论文是在老师的精心指导和大力支持下才完成的,感谢所有授我以业的老师,没有这些年知识的积淀,我没有这么大的动力和信心完成这篇论文。感恩之余,诚恳地请各位老师对我的论文多加批评指正,使我及时完善论文的不足之处,谨以此致谢。
最后,我要向百忙之中抽时间对本文进行审阅的各位老师表示衷心的感谢。
📦 本文提供 完整源码 + 数据库脚本 + 运行文档
👥 适合人群: 🎓 计算机专业毕设 📚 课程设计 💻 项目练手
⚡ 获取方式: 👍 点赞 + ⭐ 收藏 + 🔔 关注 → 💬 私信领取
更多推荐

所有评论(0)