
深度学习基于YOLOV11厂区安全防护检测系统 -厂区人员安全防护检测数据集6233张添加噪声增强处理提供yolovoccoco三种标注方式图像尺寸:640*640类别数量:9类训练集图像数量:5781; 验证集图像数量:333 测试集图像数量:119类别名称: 每一类图像数 每一类标注数Helmet 安全帽 | 5549,19062Vest 反光安全背心 | 5221,14981Shoes 劳保鞋 | 5163,20876Jump-suit 连体工作服 | 1042,2111Without-shoes 未穿鞋 | 938,1878Apron 围裙 | 2039,2845Without-vest 未穿安全背心 | 4355,4432Without-helmet 未戴安全帽 | 4331,5488Goggles 护目镜 | 131,132image num: 6233模型代码采用 YOLOv11n 网络训练训练轮次80 个 epoch提供全部训练 测试源代码训练精度 mAP 效果如图所示PyQt5 界面功能界面使用 PyQt5 开发提供全部源码.ui、.qrc、.py 及图标文件支持图片检测、视频检测、摄像头实时检测界面实时显示目标位置、目标总数、置信度等信息支持检测结果保存导出操作简单直观无需命令行4、零基础需远程配置运行环境Python3.8、opencv-python、PyQt5、torch支持 Windows、Linux 系统厂区人员安全防护检测数据集数据集总览表项目参数数据集名称厂区人员安全防护检测数据集图像总量6233张含噪声数据增强图像尺寸640×640标注格式YOLO、VOC、COCO类别数量9类训练集5781张验证集333张测试集119张类别明细序号英文标签中文标签含该类图像数标注实例数0Helmet安全帽5549190621Vest反光安全背心5221149812Shoes劳保鞋5163208763Jump‑suit连体工作服104221114Without‑shoes未穿鞋93818785Apron围裙203928456Without‑vest未穿安全背心435544327Without‑helmet未戴安全帽433154888Goggles护目镜131132yolo配置文件 factory_safety.yamltrain:./train/imagesval:./val/imagestest:./test/imagesnc:9names:0:Helmet1:Vest2:Shoes3:Jump‑suit4:Without‑shoes5:Apron6:Without‑vest7:Without‑helmet8:Goggles关键词厂区人员防护检测、安全帽反光衣检测、工地人员合规识别、工厂安全AI监管、劳保穿戴检测、YOLOv11目标检测、车间视频智能分析标签#厂区安全防护数据集#劳保穿戴检测#工业人员检测#YOLOv11应用场景工厂车间智能视频监控摄像头实时识别工人安全帽、反光背心、劳保鞋、护目镜穿戴情况对未佩戴防护用品人员自动告警降低安全生产事故。化工、冶炼、制造厂区出入口检测抓拍进出作业人员识别缺失防护装备的违规人员留存检测记录。智慧工地、工业园区安防平台对接监控视频流批量统计劳保违规事件辅助安全管理人员巡检。边缘摄像头本地部署算法部署到工业AI摄像头本地完成检测不需要上传视频保护厂区数据隐私。算法科研实验用于小目标、多类别工业目标检测模型训练、消融对比实验。YOLOv11n训练代码 train_factory.pyfromultralyticsimportYOLOif__name____main__:modelYOLO(yolo11n.pt)resultsmodel.train(datafactory_safety.yaml,epochs80,imgsz640,batch8,device0,workers2)model.val()model.predict(sourcetest.jpg,saveTrue)推理代码 infer_factory.pyfromultralyticsimportYOLO modelYOLO(best.pt)defsafety_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(factory_result.jpg)if__name____main__:safety_detect(test.jpg)PyQt5完整系统代码 factory_gui.py图片/视频/摄像头检测结果导出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.runningFalseclassFactorySafetyWindow(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)winFactorySafetyWindow()win.show()sys.exit(app.exec_())环境依赖pip install ultralytics torch opencv‑python pyqt5运行环境Python3.8Windows/Linux均可将训练得到best.pt放到代码同级目录直接运行factory_gui.py支持图片、视频、摄像头实时检测导出检测结果。配套提供ui、qrc资源文件零基础可远程配置CPU版本运行环境。