基于YOLOv11的柑橘成熟度实例分割系统 柑橘成熟度分割数据集,

基于YOLOv11的柑橘成熟度实例分割系统 柑橘成熟度分割数据集, 柑橘成熟度分割数据集基于YOLOv11的柑橘成熟度实例分割系统 柑橘成熟度分割数据集7417张yolovoccoco三种标注方式数据集统计信息图像尺寸:640*640有添加噪声处理类别数量: 3 类训练集图像:6492; 验证集图像:614; 测试集图像:311总图像数: 7417类别分布:类别名称 | 包含该类别的图像数 | 总标注数Full Ripe 全熟2616 | 3322Red Scale 部分成熟2593 | 2819Unripe 未熟2571 | 3244模型代码模型训练使用yolov11n-seg训练80个epoch训练结果map如描述图所示。qt界面运行界面采用pyqt编写本项目已经训练好模型配置好环境后可直接使用运行效果见描述图像下图1水印已清除下面附上YOLOv11‑seg 柑橘实例分割完整可运行源码1、数据集配置文件 citrus.yamlpath:./datasets/citrustrain:images/trainval:images/valtest:images/testnames:0:Full_Ripe1:Red_Scale2:Unripe2、分割训练代码 train_seg.pyfromultralyticsimportYOLO#加载分割权重modelYOLO(yolo11n-seg.pt)resultsmodel.train(datacitrus.yaml,epochs80,imgsz640,batch16,device0,workers0)3、图像分割推理 predict_seg.pyfromultralyticsimportYOLO modelYOLO(./runs/segment/train/weights/best.pt)resmodel.predict(sourcetest.jpg,conf0.5,saveTrue)4、PyQt5可视化分割GUI界面代码 main.pyimportsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QFileDialog,QLabel,QTableWidget,QTableWidgetItem,QHeaderView)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQtfromultralyticsimportYOLOclassCitrusSegWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的柑橘成熟度实例分割系统)self.resize(1600,900)self.modelYOLO(./runs/segment/train/weights/best.pt)self.init_ui()definit_ui(self):#原图显示self.label_originQLabel(原始图像,self)self.label_origin.setGeometry(20,60,750,700)#分割结果图self.label_resultQLabel(分割结果,self)self.label_result.setGeometry(800,60,750,700)#按钮self.btn_imgQPushButton(选择图片,self)self.btn_img.setGeometry(20,10,140,40)self.btn_img.clicked.connect(self.detect_image)self.btn_videoQPushButton(选择视频,self)self.btn_video.setGeometry(180,10,140,40)self.btn_camQPushButton(摄像头,self)self.btn_cam.setGeometry(340,10,140,40)#结果表格self.tableQTableWidget(self)self.table.setGeometry(20,780,1530,100)self.table.setColumnCount(4)self.table.setHorizontalHeaderLabels([序号,类别,置信度,坐标])self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)defdetect_image(self):path,_QFileDialog.getOpenFileName(self,打开图片,,*.jpg;*.png)ifnotpath:returnresself.model.predict(sourcepath,conf0.5,saveFalse)[0]img_origincv2.imread(path)img_resultres.plot()self.show_img(img_origin,self.label_origin)self.show_img(img_result,self.label_result)#填充表格self.table.setRowCount(0)foridx,boxinenumerate(res.boxes):rowself.table.rowCount()self.table.insertRow(row)cls_nameself.model.names[int(box.cls[0])]conffloat(box.conf[0])xyxy[round(float(x),1)forxinbox.xyxy[0]]self.table.setItem(row,0,QTableWidgetItem(str(idx1)))self.table.setItem(row,1,QTableWidgetItem(cls_name))self.table.setItem(row,2,QTableWidgetItem(f{conf:.2f}))self.table.setItem(row,3,QTableWidgetItem(str(xyxy)))defshow_img(self,img,label):imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,cimg.shape qimgQImage(img.data,w,h,c*w,QImage.Format_RGB888)label.setPixmap(QPixmap.fromImage(qimg).scaled(label.size(),Qt.KeepAspectRatio))if__name____main__:appQApplication(sys.argv)winCitrusSegWindow()win.show()sys.exit(app.exec_())环境安装命令pipinstallultralytics pyqt5 opencv-python