十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深度学习基于YOLOV11工程车检测系统- 高清无人机航拍建筑工地工程机械检测数据集 挖掘机自卸车搅拌车推土车等

深度学习基于YOLOV11工程车检测系统- 高清无人机航拍建筑工地工程机械检测数据集 挖掘机自卸车搅拌车推土车等 深度学习基于YOLOV11工程车检测系统- 高清无人机航拍建筑工地工程机械检测数据集928张提供yolovoccoco三种标注方式图像尺寸:3648*4864尺寸不等类别数量:7类训练集图像数量:649; 验证集图像数量:185 测试集图像数量:94类别名称: 每一类图像数 每一类标注数dump-truck 自卸车 | 386,564excavator 挖掘机 | 558,962tower-crane 塔式起重机 | 240,290lifting-equipment 起重设备 | 49,52concrete-mixer 混凝土搅拌车 | 133,205piling-machine 打桩机 | 56,78bulldozer 推土机 | 62,95image num: 928模型代码采用 YOLOv11n 网络训练训练轮次80 个 epoch提供全部训练 测试源代码训练精度 mAP 效果如图所示PyQt5 界面功能界面使用 PyQt5 开发提供全部源码.ui、.qrc、.py 及图标文件支持图片检测、视频检测、摄像头实时检测界面实时显示目标位置、目标总数、置信度等信息支持检测结果保存导出操作简单直观无需命令行4、零基础需远程配置运行环境Python3.8、opencv-python、PyQt5、torch支持 Windows、Linux 系统importcv2importnumpyasnpdefremove_watermark_keep_box(img_path,save_path):imgcv2.imread(img_path)h,wimg.shape[:2]# 黄色水印掩码尽量不影响检测框和图表线条hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)lower_yellownp.array([18,80,80])upper_yellownp.array([42,255,255])maskcv2.inRange(hsv,lower_yellow,upper_yellow)# 仅修复水印区域保留检测框、文字、曲线和坐标轴resultcv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)cv2.imwrite(save_path,result)# remove_watermark_keep_box(input.jpg, output_no_wm.jpg)train:./train/imagesval:./val/imagestest:./test/imagesnc:7names:0:dump-truck1:excavator2:tower-crane3:lifting-equipment4:concrete-mixer5:piling-machine6:bulldozerfromultralyticsimportYOLOif__name____main__:modelYOLO(yolo11n.pt)resultsmodel.train(dataconstruction_machine.yaml,epochs80,imgsz640,batch8,device0,workers2)model.val()model.predict(sourcetest.jpg,saveTrue)fromultralyticsimportYOLO modelYOLO(best.pt)defmachine_detect(img_path):resmodel.predict(img_path,conf0.25)forrinres:forboxinr.boxes:cls_namemodel.names[int(box.cls)]conffloat(box.conf)x1,y1,x2,y2map(int,box.xyxy[0])print(f类别:{cls_name}置信度:{conf:.2f}坐标:[{x1},{y1},{x2},{y2}])res[0].save(construction_machine_result.jpg)if__name____main__:machine_detect(test.jpg)importsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QPushButton,QLineEdit,QTableWidget,QTableWidgetItem,QFileDialog,QLabel,QComboBox)fromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLOclassDetectThread(QThread):sig_resultpyqtSignal(list)sig_imgpyqtSignal(QImage)def__init__(self,model,source):super().__init__()self.modelmodel self.sourcesource self.runningTruedefrun(self):forresinself.model.predict(self.source,conf0.25,streamTrue):ifnotself.running:breakbox_list[]forboxinres.boxes:clsself.model.names[int(box.cls)]conffloat(box.conf)xyxylist(map(int,box.xyxy[0]))box_list.append([cls,conf,xyxy])img_cvres.plot()h,w,cimg_cv.shape qimgQImage(img_cv.data,w,h,c*w,QImage.Format_BGR888)self.sig_img.emit(qimg)self.sig_result.emit(box_list)defstop(self):self.runningFalseclassConstructionMachineWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的无人机建筑工地工程机械检测系统)self.resize(1300,850)self.modelYOLO(best.pt)self.detect_threadNoneself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)main_layoutQHBoxLayout(central)left_widgetQWidget()left_layoutQVBoxLayout(left_widget)self.label_showQLabel(图像显示区域)self.label_show.setMinimumSize(700,550)left_layout.addWidget(self.label_show)self.tableQTableWidget()self.table.setColumnCount(5)self.table.setHorizontalHeaderLabels([序号,类别,置信度,xmin,ymin,xmax,ymax])left_layout.addWidget(self.table)right_widgetQWidget()right_layoutQVBoxLayout(right_widget)right_layout.addWidget(QLabel(文件导入))self.line_imgQLineEdit()self.btn_imgQPushButton(选择图片)self.btn_img.clicked.connect(self.open_image)h1QHBoxLayout()h1.addWidget(self.line_img)h1.addWidget(self.btn_img)right_layout.addLayout(h1)self.line_videoQLineEdit()self.btn_videoQPushButton(选择视频)self.btn_video.clicked.connect(self.open_video)h2QHBoxLayout()h2.addWidget(self.line_video)h2.addWidget(self.btn_video)right_layout.addLayout(h2)self.btn_camQPushButton(开启摄像头)self.btn_cam.clicked.connect(self.open_camera)right_layout.addWidget(self.btn_cam)right_layout.addWidget(QLabel(检测结果))self.label_timeQLabel(用时0 s | 目标数目0)self.label_confQLabel(置信度--)self.label_posQLabel(xmin:-- ymin:-- xmax:-- ymax:--)self.combo_selectQComboBox()self.combo_select.addItems([全部])right_layout.addWidget(self.label_time)right_layout.addWidget(self.label_conf)right_layout.addWidget(self.label_pos)right_layout.addWidget(self.combo_select)h_btnQHBoxLayout()self.btn_saveQPushButton(保存结果)self.btn_exitQPushButton(退出)self.btn_exit.clicked.connect(self.close)h_btn.addWidget(self.btn_save)h_btn.addWidget(self.btn_exit)right_layout.addLayout(h_btn)main_layout.addWidget(left_widget,stretch3)main_layout.addWidget(right_widget,stretch2)defopen_image(self):f,_QFileDialog.getOpenFileName(filter图片(*.jpg *.png *.jpeg))iff:self.line_img.setText(f)self.run_detect(f)defopen_video(self):f,_QFileDialog.getOpenFileName(filter视频(*.mp4 *.avi))iff:self.line_video.setText(f)self.run_detect(f)defopen_camera(self):self.run_detect(0)defrun_detect(self,source):ifself.detect_threadisnotNone:self.detect_thread.stop()self.detect_thread.wait()self.table.setRowCount(0)self.detect_threadDetectThread(self.model,source)self.detect_thread.sig_img.connect(self.show_image)self.detect_thread.sig_result.connect(self.fill_table)self.detect_thread.start()defshow_image(self,qimg):self.label_show.setPixmap(QPixmap.fromImage(qimg).scaled(self.label_show.size(),Qt.KeepAspectRatio))deffill_table(self,box_list):self.table.setRowCount(0)self.label_time.setText(f用时0.123 s | 目标数目{len(box_list)})foridx,iteminenumerate(box_list):cls,conf,xyxyitem rowself.table.rowCount()self.table.insertRow(row)self.table.setItem(row,0,QTableWidgetItem(str(idx1)))self.table.setItem(row,1,QTableWidgetItem(cls))self.table.setItem(row,2,QTableWidgetItem(f{conf*100:.2f}%))self.table.setItem(row,3,QTableWidgetItem(f{xyxy[0]},{xyxy[1]}))self.table.setItem(row,4,QTableWidgetItem(f{xyxy[2]},{xyxy[3]}))iflen(box_list)0:c,cf,posbox_list[0]self.label_conf.setText(f置信度{cf*100:.2f}%)self.label_pos.setText(fxmin:{pos[0]}ymin:{pos[1]}xmax:{pos[2]}ymax:{pos[3]})defcloseEvent(self,event):ifself.detect_thread:self.detect_thread.stop()self.detect_thread.wait()event.accept()if__name____main__:appQApplication(sys.argv)winConstructionMachineWindow()win.show()sys.exit(app.exec_())pip install ultralytics torch opencv-python pyqt5把训练得到的best.pt放到代码同级目录运行python construction_machine_gui.py
返回列表