YOLO+DeepSeek+AI大模型智慧农业 苹果叶片病虫害检测系统 YOLO+DeepSeek+Pytorch+SpringBoot+Flask+Vue
YOLODeepSeekAI大模型苹果叶片病虫害检测系统YOLODeepSeekPytorchSpringBootFlaskVue技术栈提供1.整理好的yolo格式的数据集2.详细的系统部署教程3.实时视频摄像头图片检测4.代码简洁有注释5.提供训练好的yolo权重1*“基于YOLODeepSeek的苹果病虫害检测系统”**该系统不仅实现了基础的视觉识别黑星病、锈病、健康等还结合了大语言模型DeepSeek生成专业的农业防治建议。以下是构建该系统的核心简易代码方案涵盖前后端及AI集成。️ 1. 系统架构概览前端: Vue 3 Element Plus (界面) ECharts (数据大屏)后端业务: Java SpringBoot (用户管理、记录存储、调用DeepSeek)后端算法: Python Flask (YOLO模型推理)AI模型: YOLOv8/v11 (视觉检测) DeepSeek (文本建议) 2. 核心代码实现A. 算法服务层 (Python Flask YOLO)负责加载训练好的苹果病害模型提供图片检测和实时视频流接口。app.pyfromflaskimportFlask,request,jsonify,Responsefromflask_corsimportCORSfromultralyticsimportYOLOimportcv2importnumpyasnpimportbase64importtime appFlask(__name__)CORS(app)# 加载训练好的苹果病害模型# 假设标签: 0:Apple_scab(黑星病), 1:Apple_rust(锈病), 2:Healthy(健康)modelYOLO(weights/apple_disease_best.pt)app.route(/api/detect/image,methods[POST])defdetect_image():iffilenotinrequest.files:returnjsonify({error:No file}),400filerequest.files[file]img_bytesnp.frombuffer(file.read(),np.uint8)imgcv2.imdecode(img_bytes,cv2.IMREAD_COLOR)starttime.time()# YOLO推理resultsmodel.predict(sourceimg,conf0.5,verboseFalse)endtime.time()detections[]annotated_imgimg.copy()forrinresults:forboxinr.boxes:cls_idint(box.cls[0])conffloat(box.conf[0])xyxybox.xyxy[0].cpu().numpy()labelmodel.names[cls_id]# 绘制框x1,y1,x2,y2map(int,xyxy)color(0,255,0)iflabelHealthyelse(0,0,255)cv2.rectangle(annotated_img,(x1,y1),(x2,y2),color,2)cv2.putText(annotated_img,f{label}{conf:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,color,2)detections.append({class:label,confidence:round(conf,4),box:[int(x)forxinxyxy]})# 转Base64返回给前端_,buffercv2.imencode(.jpg,annotated_img)img_base64base64.b64encode(buffer).decode(utf-8)returnjsonify({code:200,data:{image:fdata:image/jpeg;base64,{img_base64},detections:detections,time_cost:round(end-start,4)}})app.route(/api/video_stream)defvideo_stream():摄像头/视频流推流接口capcv2.VideoCapture(0)# 0为摄像头defgenerate():whileTrue:success,framecap.read()ifnotsuccess:breakresultsmodel.predict(sourceframe,conf0.5,verboseFalse)forrinresults:forboxinr.boxes:x1,y1,x2,y2map(int,box.xyxy[0])clsmodel.names[int(box.cls[0])]cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame,cls,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)ret,buffercv2.imencode(.jpg,frame)frame_bytesbuffer.tobytes()yield(b--frame\r\nContent-Type: image/jpeg\r\n\r\nframe_bytesb\r\n)returnResponse(generate(),mimetypemultipart/x-mixed-replace; boundaryframe)if__name____main__:app.run(host0.0.0.0,port5000)B. 业务后端 (Java SpringBoot)负责接收前端请求调用Python服务并集成DeepSeek生成防治建议。DetectionController.javaRestControllerRequestMapping(/api/detection)CrossOrigin(origins*)publicclassDetectionController{AutowiredprivateDetectionServicedetectionService;// 调用Python服务AutowiredprivateDeepSeekServicedeepSeekService;// 调用DeepSeek APIPostMapping(/upload)publicResult?uploadAndDetect(RequestParam(file)MultipartFilefile){try{// 1. 调用Python服务进行YOLO检测MapString,ObjectyoloResultdetectionService.callPythonAI(file);// 2. 提取检测结果 (例如: 检测到2个黑星病1个健康)StringsummarybuildSummary((ListMap)yoloResult.get(detections));// 3. 调用DeepSeek生成农业建议Stringprompt苹果叶片检测结果显示summary。请作为农业专家针对检测到的病害如黑星病给出详细的病因分析、种植管理建议和治疗措施。;StringaiAdvicedeepSeekService.chat(prompt);// 4. 组装返回yoloResult.put(ai_advice,aiAdvice);// 5. 保存记录到MySQL (省略)returnResult.success(yoloResult);}catch(Exceptione){returnResult.error(检测失败);}}// 辅助方法简单统计privateStringbuildSummary(ListMapdetections){if(detections.isEmpty())return未检测到明显病害;// 这里可以写逻辑统计各类别数量例如 检测到3个黑星病return检测到病害样本;}}C. 前端实现 (Vue 3)ImageDetect.vue(检测与AI建议展示)templatedivclassdetect-page!-- 上传区域 --el-uploadaction#:http-requesthandleUpload:show-file-listfalseel-buttontypeprimarysizelarge 上传苹果叶片图片/el-button/el-uploaddivv-ifresultImageclassresult-container!-- 左侧检测结果图 --divclassimage-boximg:srcresultImageclassdetected-img//div!-- 右侧AI分析报告 --divclassai-panelh3 AI 农业专家建议 (DeepSeek)/h3divclassadvice-textv-htmlformattedAdvice/divel-buttontypesuccessclickexportPDF 导出诊断报告/el-button/div/div/div/templatescriptsetupimport{ref,computed}fromvue;importaxiosfromaxios;constresultImageref();constaiAdviceref();consthandleUploadasync(options){constformDatanewFormData();formData.append(file,options.file);constresawaitaxios.post(http://localhost:8080/api/detection/upload,formData);if(res.data.code200){resultImage.valueres.data.data.image;// 后端返回的Base64图aiAdvice.valueres.data.data.ai_advice;}};// 将换行符转换为HTML br 以便显示格式constformattedAdvicecomputed((){if(!aiAdvice.value)return;returnaiAdvice.value.replace(/\n/g,br);});constexportPDF(){alert(正在生成PDF诊断报告...);// 调用后端 /api/export/pdf 接口};/scriptstylescoped.result-container{display:flex;gap:20px;margin-top:20px;}.image-box{flex:1;text-align:center;}.detected-img{max-width:100%;border:1px solid #ddd;border-radius:8px;}.ai-panel{flex:1;background:#f0f9eb;padding:20px;border-radius:8px;border:1px solid #e1f3d8;}.advice-text{line-height:1.8;color:#333;font-size:14px;white-space:pre-wrap;}/styleDashboard.vue(首页可视化 - ECharts)templatedivclassdashboardel-row:gutter20!-- 不同种类检测个数 (柱状图) --el-col:span12el-cardh3不同病害检测统计/h3divrefchartBarstyleheight:300px;/div/el-card/el-col!-- 不同用户预测个数 (饼图) --el-col:span12el-cardh3用户检测分布/h3divrefchartPiestyleheight:300px;/div/el-card/el-col/el-row/div/templatescriptsetupimport{onMounted,ref}fromvue;import*asechartsfromecharts;constchartBarref(null);constchartPieref(null);onMounted((){// 初始化柱状图constbarChartecharts.init(chartBar.value);barChart.setOption({xAxis:{type:category,data:[黑星病,锈病,健康]},yAxis:{type:value},series:[{data:[120,80,300],type:bar,itemStyle:{color:#67C23A}}]});// 初始化饼图constpieChartecharts.init(chartPie.value);pieChart.setOption({series:[{type:pie,radius:50%,data:[{value:1024,name:admin},{value:300,name:user1}]}]});});/script 3. 如何运行与定制准备模型:收集苹果叶片数据集包含黑星病、锈病、健康。使用yolo train modelyolov8n.pt dataapple.yaml epochs100训练。将生成的best.pt放入 Python 项目的weights/目录。启动服务:Python:python app.py(端口 5000)Java: 运行 SpringBoot 主类 (端口 8080)Vue:npm run dev(端口 5173)定制其他作物:只需更换数据集和模型权重文件。修改代码中的class_names映射例如将Apple_scab改为Rice_blast稻瘟病。系统架构无需改动即可支持水稻、玉米、小麦等各种作物病虫害检测。