水面垃圾类型检测数据集 基于YOLOv11河道漂浮垃圾检测系统 高清图像水面垃圾类型检测数据集3432张yolovoccoco三种标注方式图像尺寸:2553*2986尺寸不等类别数量:5类训练集图像数量:2403; 验证集图像数量:684 测试集图像数量:345类别名称: 每一类图像数 每一类标注数cork_sheet-软木片1673,2196polythene_bag-聚乙烯塑料袋1856,2523aluminum_can-铝罐531,549plastic_bottle-塑料瓶1988,3107chip_packet-薯片包装袋1892,4516image num: 3432模型代码采用 YOLOv11n 网络训练训练轮次80 个 epoch提供全部训练 测试源代码训练精度 mAP 效果如图所示PyQt5 界面功能界面使用 PyQt5 开发基于YOLOv11河道漂浮垃圾检测系统完整代码包含数据集yaml配置、模型训练代码、Qt可视化推理界面就是截图里的系统、图片/视频/摄像头检测推理代码类别plastic_bottle塑料瓶、polythene_bag塑料袋、aluminum_can铝罐、chip_packet零食包装袋、cork_sheet泡沫板1、数据集配置文件river_trash.yaml# 河道漂浮垃圾数据集path:./datasets/river_trashtrain:images/trainval:images/valtest:images/testnames:0:plastic_bottle1:polythene_bag2:aluminum_can3:chip_packet4:cork_sheet2、模型训练代码train.pyfromultralyticsimportYOLOif__name____main__:# 加载yolov11预训练权重modelYOLO(yolo11n.pt)# 开始训练resultsmodel.train(datariver_trash.yaml,epochs100,imgsz640,batch8,device0,patience10,pretrainedTrue,saveTrue,projectruns/train,nameriver_trash_yolo11)3、推理预测代码predict.pyfromultralyticsimportYOLO modelYOLO(./runs/train/river_trash_yolo11/weights/best.pt)defdetect_img(img_path):resmodel.predict(sourceimg_path,conf0.5,saveTrue)forrinres:boxesr.boxesforboxinboxes:cls_idint(box.cls[0])conffloat(box.conf[0])xyxybox.xyxy[0].tolist()print(f类别:{r.names[cls_id]},置信度:{conf:.2f},坐标:{xyxy})# 图片检测detect_img(test.jpg)# 视频检测# model.predict(sourcetest.mp4, conf0.5, saveTrue)# 摄像头实时检测# model.predict(source0, conf0.5)4、Qt可视化界面完整代码main.pyimportsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QFileDialog,QTableWidgetItem)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.uicimportloadUifromultralyticsimportYOLOclassMainWindow(QMainWindow):def__init__(self):super().__init__()loadUi(ui.ui,self)self.modelYOLO(./runs/train/river_trash_yolo11/weights/best.pt)self.imgNoneself.timerNoneself.btn_img.clicked.connect(self.load_img)self.btn_video.clicked.connect(self.load_video)self.btn_cam.clicked.connect(self.open_cam)self.btn_save.clicked.connect(self.save_result)defload_img(self):file,_QFileDialog.getOpenFileName()iffile:self.imgcv2.imread(file)self.infer(self.img)definfer(self,img):resself.model(img,conf0.5)self.table.clearContents()self.table.setRowCount(0)forrinres:imr.plot()h,w,cim.shape bytes_per_linec*w qimgQImage(im.data,w,h,bytes_per_line,QImage.Format_BGR888)self.label_img.setPixmap(QPixmap.fromImage(qimg))forboxinr.boxes:rowself.table.rowCount()self.table.insertRow(row)cls_namer.names[int(box.cls)]conff{float(box.conf):.2f}xyxy[f{int(x)}forxinbox.xyxy[0]]self.table.setItem(row,0,QTableWidgetItem(str(row1)))self.table.setItem(row,1,QTableWidgetItem(cls_name))self.table.setItem(row,2,QTableWidgetItem(conf))self.table.setItem(row,3,QTableWidgetItem(str(xyxy)))defsave_result(self):# 保存检测图片cv2.imwrite(detect_result.jpg,self.img)defopen_cam(self):capcv2.VideoCapture(0)whilecap.isOpened():ret,framecap.read()ifret:self.infer(frame)cv2.waitKey(1)if__name____main__:appQApplication(sys.argv)winMainWindow()win.show()sys.exit(app.exec_())环境安装命令pipinstallultralytics opencv-python pyqt5 torch torchvisionUI文件简易说明ui.uiQt Designer界面组件图片显示label文件导入按钮图片、视频、摄像头检测结果表格序号、类别、置信度、坐标保存、退出按钮置信度阈值下拉框