基于深度学习 土豆病害检测 YOLOv11 (数据集 + 训练 + PyQt5 界面 土豆损害检测数据集 土豆病害检测数据集
2026/9/8 16:11:00 网站建设 项目流程

智慧农业-土豆损害检测数据集,8003张(有数据增强处理),yolo和voc两种标注方式

5类,标注数量:
Diseased-fungal potato: 疾病菌害土豆 - 7130
Potato: 土豆 - 9317
Damaged potato: 受损土豆 - 4689
Defected potato: 有缺陷土豆 - 3784
Sprouted potato: 发芽土豆 - 4290
image num: - 8003

2.模型代码:模型训练使用yolov11n训练,30个epoch训练结果,map如描述图所示。

3.qt界面:运行界面采用qt编写,本项目已经训练好模型,配置好环境后可直接使用,运行效果见描述图像

土豆病害检测 YOLOv11完整工程代码(数据集+训练+PyQt5界面)

1、yaml配置文件 potato.yaml

path:./datasets/potatotrain:images/trainval:images/valtest:images/testnames:0:Potato1:Sprouted potato2:Damaged potato3:Defected potato4:Diseased‑fungal potato

2、训练脚本 train.py

fromultralyticsimportYOLO model=YOLO("yolo11n.pt")results=model.train(data="potato.yaml",epochs=80,imgsz=640,batch=8,device=0,patience=15)

3、推理脚本 predict.py

fromultralyticsimportYOLO model=YOLO("./runs/detect/train/weights/best.pt")res=model.predict(source="test.jpg",save=True,conf=0.5)forboxinres[0].boxes:cls=int(box.cls)conf=float(box.conf)xyxy=box.xyxy.tolist()[0]print(f"类别:{model.names[cls]},置信度:{conf:.2f},坐标:{xyxy}")

4、PyQt5可视化GUI完整代码 ui_main.py

importsysimportcv2importtimefromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QLabel,QFileDialog,QTableWidget,QTableWidgetItem,QComboBox)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQtfromultralyticsimportYOLOclassPotatoDetect(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("基于YOLOv11的土豆病害检测系统")self.resize(1280,800)self.model=YOLO("./runs/detect/train/weights/best.pt")#按钮self.btn_img=QPushButton("图片检测",self)self.btn_img.setGeometry(750,100,200,40)self.btn_img.clicked.connect(self.detect_img)self.btn_video=QPushButton("视频检测",self)self.btn_video.setGeometry(750,160,200,40)self.btn_cam=QPushButton("摄像头检测",self)self.btn_cam.setGeometry(750,220,200,40)#图像显示区self.img_label=QLabel(self)self.img_label.setGeometry(20,80,700,520)self.img_label.setStyleSheet("border:1px solid #888;")#下拉置信度self.cmb_conf=QComboBox(self)self.cmb_conf.setGeometry(750,280,200,30)self.cmb_conf.addItems(["0.3","0.4","0.5","0.6","0.7"])#结果表格self.table=QTableWidget(self)self.table.setGeometry(20,620,1220,150)self.table.setColumnCount(5)self.table.setHorizontalHeaderLabels(["序号","类别","置信度","xmin,ymin,xmax,ymax"])defdetect_img(self):file_path,_=QFileDialog.getOpenFileName()ifnotfile_path:returnt_start=time.time()conf=float(self.cmb_conf.currentText())res=self.model.predict(source=file_path,save=False,conf=conf)t_cost=time.time()-t_start img=res[0].plot()img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,c=img.shape q_img=QImage(img.data,w,h,c*w,QImage.Format_RGB888)self.img_label.setPixmap(QPixmap.fromImage(q_img).scaled(700,520,Qt.KeepAspectRatio))#填充表格self.table.setRowCount(0)foridx,boxinenumerate(res[0].boxes):row=self.table.rowCount()self.table.insertRow(row)cls_name=self.model.names[int(box.cls)]conf_val=f"{float(box.conf):.2f}"xyxy=[round(float(x))forxinbox.xyxy[0]]self.table.setItem(row,0,QTableWidgetItem(str(idx+1)))self.table.setItem(row,1,QTableWidgetItem(cls_name))self.table.setItem(row,2,QTableWidgetItem(conf_val))self.table.setItem(row,3,QTableWidgetItem(str(xyxy)))if__name__=="__main__":app=QApplication(sys.argv)win=PotatoDetect()win.show()sys.exit(app.exec_())

环境安装命令

pipinstallultralytics opencv-python pyqt5

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询