核心内容摘要
Agent实习模拟面试之A厂Agent开发一面面经:从异构数据处理到多服务编排的全链路实战解析
茶叶病虫害检测系统YOLODeepSeekPytorchSpringBootFlaskVue支持批量检测、图片检测、视频检测、摄像头检测四种方式。
可以上传文件夹批量检测检测结果可导出PDF。
结合DeepSeek、Qwen等大模型给出相关建议。
支持分用户管理管理员可查看所有记录普通用户只能看自己。
界面简洁美观支持主题色修改、布局样式修改、组件大小修改等。
技术栈YOLO、DeepSeek、Qwen、Pytorch、SpringBoot、MyBatis-Plus、Vue
Echarts、Ts、element-plus、Flask、Axios、MySQL。
系统还支持分用户管理分为管理员和普通用户。
普通用户只能查看自己的记录。
附
整理好的yolo格式的数据集
详细的系统部署教程
实时视频摄像头图片检测
代码简洁有注释
提供训练好的yolo权重基于 YOLO DeepSeek 的茶叶病虫害检测系统的完整技术架构、功能解析与详细代码实现含数据集说明、前后端分离、AI 融合✅
系统概览项目内容系统名称基于 YOLO DeepSeek 的茶叶病虫害智能检测系统核心技术- YOLOv8 → 实时识别茶树病虫害藻斑病、赤叶枯病等- DeepSeek / Qwen 大语言模型 → 自动生成防治建议- Flask 后端 Vue3 前端 → 构建 Web 管理平台- SpringBoot MyBatis-Plus → 用户权限管理与数据库操作任务类型图像/视频/摄像头实时检测 AI 分析 批量处理 数据导出支持输入图片上传 / 文件夹批量 / 视频文件 / 摄像头实时流RTSP输出内容检测结果图 病害分类 防治建议 PDF 导出部署方式Docker 容器化部署或本地运行✅
系统架构图┌────────────────────┐ ┌────────────────────┐ │ 前端 (Vue3 TS) │◄───►│ 后端 (Flask) │ │ (Web界面 ECharts) │ │ (API 模型推理) │ └────────────────────┘ └────────────────────┘ ↑ ↑ │ │ │ │ ▼ ▼ ┌────────────────────┐ ┌────────────────────┐ │ AI 推理 (YOLOv
│◄───►│ 大模型 (DeepSeek) │ │ (定位病害区域) │ │ (生成防治建议) │ └────────────────────┘ └────────────────────┘ ↑ ↑ │ │ │ │ ▼ ▼ ┌────────────────────┐ ┌────────────────────┐ │ 数据库 (MySQL) │ │ 文件存储 (MinIO) │ └────────────────────┘ └────────────────────┘✅
核心功能模块功能说明多模式检测支持图片、批量文件夹、视频、摄像头四种输入方式AI 自动诊断识别后自动调用 DeepSeek 或 Qwen 生成个性化防治方案数据管理所有检测记录可查、可导出为 PDF、支持用户权限控制️可视化大屏统计分析图表折线图、雷达图、用户行为分析智能问答助手可问“如何预防赤叶枯病”、“茶盲蝽怎么治”️批量处理支持上传整个文件夹一键完成所有图像检测PDF 导出将检测报告导出为 PDF便于打印和存档用户权限管理管理员 vs 普通用户普通用户只能查看自己的记录主题定制支持颜色、布局、组件大小自定义UI 美观✅
数据集详情已整理好数据集名称Tea Disease Dataset总数量5,200 张高清图像划分比例训练集4,160 张验证集624 张测试集416 张 类别分布共 6 类类别样本数说明algal_spot900藻斑病叶片出现绿色或黑色斑点brown_rot850褐枯病叶片边缘干枯发褐gray_rot780灰枯病灰白色霉层覆盖healthy1,200健康茶叶tea_bug650茶盲蝽小虫在叶背活动red_leaf_spot720赤叶枯病红褐色斑块✅标注格式YOLO.txt每张图对应一个标签文件✅分辨率640×640统一缩放✅拍摄场景茶园实景、不同光照、多角度拍摄✅提供训练好的权重文件best.pt直接可用✅
前端代码Vue3 TypeScript Element Plus
src/router/index.tsimport{createRouter,createWebHistory}fromvue-routerimportLoginfrom/views/Login.vueimportDashboardfrom/views/Dashboard.vueimportImageDetectfrom/views/ImageDetect.vueimportBatchDetectfrom/views/BatchDetect.vueimportVideoDetectfrom/views/VideoDetect.vueimportCameraDetectfrom/views/CameraDetect.vueimportHistoryfrom/views/History.vueimportAIAssistantfrom/views/AIAssistant.vueimportUserManagefrom/views/UserManage.vueconstroutes[{path:/login,component:Login},{path:/,component:Dashboard},{path:/image-detect,component:ImageDetect},{path:/batch-detect,component:BatchDetect},{path:/video-detect,component:VideoDetect},{path:/camera-detect,component:CameraDetect},{path:/history,component:History},{path:/ai-assistant,component:AIAssistant},{path:/user-manage,component:UserManage}]constroutercreateRouter({history:createWebHistory(),routes})exportdefaultrouter
src/views/BatchDetect.vue—— 批量检测页面template div classbatch-detect h2批量检测/h2 el-form :modelform label-width100px el-form-item label模型选择 el-select v-modelform.model placeholder请选择模型 el-option labelbest.onnx valuebest.onnx/el-option /el-select /el-form-item el-form-item label上传文件夹 el-upload action :auto-uploadfalse :on-changehandleFileChange :multipletrue accept.jpg,.jpeg,.png el-button typeprimary上传图片文件夹/el-button /el-upload /el-form-item el-form-item el-slider v-modelminConfidence :min
1 :max
0 step
01 / span设置最小置信度阈值/span /el-form-item el-form-item el-button typeprimary clickstartDetection开始预测/el-button /el-form-item /el-form el-table :dataresults stylewidth: 100% el-table-column propindex label序号/el-table-column el-table-column propresult label识别结果/el-table-column el-table-column propconfidence label预测概率/el-table-column el-table-column proptime label总耗时/el-table-column el-table-column proptimestamp label预测时间/el-table-column el-table-column label预测图片 template #default{ row } img :srcrow.image width100 / /template /el-table-column el-table-column label操作 template #default{ row } el-button sizesmall clickselectImage(row)选择/el-button /template /el-table-column /el-table div classpreview img v-ifselectedImage :srcselectedImage alt预览 / div v-ifselectedImage pstrong识别结果/strong/p pstrong预测概率/strong/p pstrong总耗时/strong/p /div /div /div /template script setup langts import { ref } from vue import axios from axios interface Result { index: number result: string confidence: string time: string timestamp: string image: string } const form ref({ model: best.onnx }) const minConfidence ref(
0.