news 2026/3/19 19:20:44

基于深度学习框架YOLOV8打架暴力行为检测系统 YOLO模型如何训练打架及暴力行为数据集 基于深度学习的暴力行为检测系统 使用 PyQt5 + YOLOv8 + OpenCV

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于深度学习框架YOLOV8打架暴力行为检测系统 YOLO模型如何训练打架及暴力行为数据集 基于深度学习的暴力行为检测系统 使用 PyQt5 + YOLOv8 + OpenCV

1基于深度学习的暴力行为检测系统 使用 PyQt5 + YOLOv8
1

1

以下是您提供的基于深度学习的暴力行为检测系统的完整代码实现,该系统使用PyQt5 + YOLOv8 + OpenCV构建,支持:

  • ✅ 图片/视频/摄像头实时检测
  • ✅ 暴力行为(打架、推搡)与非暴力行为分类
  • ✅ 界面可视化(置信度、框坐标、类别)
  • ✅ 支持自定义阈值和模型切换

✅ 一、项目结构

TomatoDetection/ ├── data/ │ ├── train/ │ ├── val/ │ └── test/ ├── models/ │ └── best.pt # 训练好的 YOLOv8 模型 ├── ui/ │ └── MainProgram.py # 主程序 UI ├── utils/ │ └── detect.py # 推理逻辑 ├── data.yaml # 数据集配置 ├── README.txt └── main.py # 启动文件

✅ 二、数据集说明(data.yaml

# data.yamlpath:./datatrain:images/trainval:images/valtest:images/testnc:2names:['Violence','NonViolence']

🔎 类别说明:

  • Violence:打斗、推搡、踢人等暴力行为
  • NonViolence:正常行走、站立、传球等非暴力行为

📌 数据集来源:公开体育赛事、校园监控视频剪辑(人工标注),共约 3000 张图像。


✅ 三、YOLOv8 模型训练代码(可选)

# train.pyfromultralyticsimportYOLO model=YOLO('yolov8s.pt')# 使用小模型适合推理results=model.train(data='data.yaml',epochs=100,imgsz=640,batch=16,name='violence_detection',cache=True,device=0,workers=8,patience=10)

💡 建议使用yolov8s.ptyolov8n.pt,轻量级且速度快。


✅ 四、主界面代码(MainProgram.py

# MainProgram.pyimportsysimporttimefromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QFileDialog,QVBoxLayout,QWidget,QHBoxLayout,QComboBox,QSpinBox,QTextEditfromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQt,QTimerimportcv2importnumpyasnpfromultralyticsimportYOLOclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("基于深度学习的暴力行为检测系统")self.setGeometry(100,100,1000,700)# 初始化模型self.model=YOLO('models/best.pt')self.cap=Noneself.timer=QTimer()self.timer.timeout.connect(self.update_frame)# 创建 UI 组件self.init_ui()definit_ui(self):# 中央窗口central_widget=QWidget()self.setCentralWidget(central_widget)layout=QVBoxLayout()# 图像显示区域self.image_label=QLabel("点击打开图片或摄像头")self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 1px solid gray; background-color: white;")layout.addWidget(self.image_label)# 控制按钮区btn_layout=QHBoxLayout()self.btn_open_image=QPushButton("打开图片")self.btn_open_video=QPushButton("打开视频")self.btn_camera=QPushButton("打开摄像头")self.btn_stop=QPushButton("停止")self.btn_stop.setEnabled(False)self.btn_open_image.clicked.connect(self.open_image)self.btn_open_video.clicked.connect(self.open_video)self.btn_camera.clicked.connect(self.open_camera)self.btn_stop.clicked.connect(self.stop_capture)btn_layout.addWidget(self.btn_open_image)btn_layout.addWidget(self.btn_open_video)btn_layout.addWidget(self.btn_camera)btn_layout.addWidget(self.btn_stop)layout.addLayout(btn_layout)# 参数设置区param_layout=QHBoxLayout()self.conf_threshold=QSpinBox()self.conf_threshold.setRange(0,100)self.conf_threshold.setValue(25)# 默认 0.25self.conf_threshold.setSuffix("%")self.iou_threshold=QSpinBox()self.iou_threshold.setRange(0,100)self.iou_threshold.setValue(45)# 默认 0.45self.iou_threshold.setSuffix("%")param_layout.addWidget(QLabel("置信度阈值:"))param_layout.addWidget(self.conf_threshold)param_layout.addWidget(QLabel("交并比阈值:"))param_layout.addWidget(self.iou_threshold)layout.addLayout(param_layout)# 结果显示区result_layout=QVBoxLayout()self.result_label=QLabel("检测结果:")self.result_text=QTextEdit()self.result_text.setReadOnly(True)result_layout.addWidget(self.result_label)result_layout.addWidget(self.result_text)layout.addLayout(result_layout)central_widget.setLayout(layout)defopen_image(self):file_path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.jpg *.jpeg *.png)")iffile_path:self.process_image(file_path)defopen_video(self):file_path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files (*.mp4 *.avi *.mov)")iffile_path:self.cap=cv2.VideoCapture(file_path)self.timer.start(30)self.btn_stop.setEnabled(True)defopen_camera(self):self.cap=cv2.VideoCapture(0)self.timer.start(30)self.btn_stop.setEnabled(True)defstop_capture(self):self.timer.stop()ifself.cap:self.cap.release()self.cap=Noneself.btn_stop.setEnabled(False)defprocess_image(self,image_path):img=cv2.imread(image_path)results=self.model(img,conf=self.conf_threshold.value()/100,iou=self.iou_threshold.value()/100)annotated_img=results[0].plot()self.display_image(annotated_img)self.show_results(results)defupdate_frame(self):ret,frame=self.cap.read()ifret:results=self.model(frame,conf=self.conf_threshold.value()/100,iou=self.iou_threshold.value()/100)annotated_frame=results[0].plot()self.display_image(annotated_frame)self.show_results(results)else:self.timer.stop()self.cap.release()self.cap=Nonedefdisplay_image(self,img):qimg=QImage(img.data,img.shape[1],img.shape[0],img.strides[0],QImage.Format_BGR888)pixmap=QPixmap.fromImage(qimg)self.image_label.setPixmap(pixmap.scaled(640,480,Qt.KeepAspectRatio))defshow_results(self,results):result_str=""forboxinresults[0].boxes:cls_id=int(box.cls.item())conf=float(box.conf.item())x1,y1,x2,y2=map(int,box.xyxy[0])label="暴力"ifcls_id==0else"非暴力"result_str+=f"类别:{label}, 置信度:{conf:.2f}, 位置: ({x1},{y1})~({x2},{y2})\n"self.result_text.setText(result_str)if__name__=='__main__':app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec_())

✅ 五、推理模块(detect.py

# detect.pyfromultralyticsimportYOLOimportcv2defdetect_violence(image_path,model_path='models/best.pt',conf=0.25,iou=0.45):model=YOLO(model_path)results=model(image_path,conf=conf,iou=iou)returnresults

✅ 六、启动脚本(main.py

# main.pyimportsysfromPyQt5.QtWidgetsimportQApplicationfromMainProgramimportMainWindowif__name__=='__main__':app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec_())

✅ 七、部署与运行

1. 安装依赖

pipinstallPyQt5 opencv-python ultralytics

2. 运行程序

python main.py

✅ 八、功能亮点

功能说明
🖼️ 图片检测打开本地图片进行暴力行为识别
📹 视频检测支持 MP4/AVI 视频文件逐帧分析
📸 摄像头实时检测调用电脑摄像头,实时预警
⚙️ 可调参数置信度、IoU 阈值可动态调整
🧠 AI 分类区分“暴力” vs “非暴力”行为
📊 结果可视化显示类别、置信度、坐标信息

✅ 九、应用场景

  • 🏫 校园安全监控:自动识别学生打架事件
  • 🏟️ 体育赛事:监测球员冲突行为
  • 🏢 商场/车站:异常行为预警
  • 🎥 视频内容审核:自动过滤暴力片段

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/19 14:30:58

口碑推荐!天玑AIGEO优化系统该选哪家?

行业痛点分析 在当前天玑AIGEO优化系统领域,企业面临着诸多技术挑战。数据表明,部分企业在营销过程中,由于传统广告投放缺乏精准定位,导致无效投放成本占比超30%。本地企业更是面临重重困难,线下门店引流半径有限&…

作者头像 李华
网站建设 2026/3/19 16:44:28

连锁门店管理系统选型指南:一体化架构如何提升运营效率

零售行业数字化转型掀起浪潮,连锁门店管理效率对企业生存发展意义重大,一套功能全、稳定可靠的门店管理系统,能助连锁品牌实现总部与分店高效协同,把库存、销售、会员及财务等核心环节予以优化,当下市场上主流的连锁门…

作者头像 李华
网站建设 2026/3/16 8:20:49

学术写作的“超能引擎”:书匠策AI如何重构期刊论文生产链

在学术江湖中,期刊论文是研究者攀登高峰的“通关文牒”,但选题撞车、逻辑混乱、查重焦虑、格式错漏等问题,常让学者们陷入“论文地狱”。如今,一款名为书匠策AI的智能工具横空出世,它像一台精密的“学术导航仪”&#…

作者头像 李华
网站建设 2026/3/17 12:06:15

【小程序毕设全套源码+文档】django基于协同过滤的校园音乐推荐系统小程序的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/19 1:55:50

学术写作的“未来引擎”:解锁书匠策AI的期刊论文六大黑科技

在学术江湖中,期刊论文是研究者攀登高峰的“通关文牒”,但选题撞车、逻辑混乱、查重焦虑、格式错漏等问题,常让学者们陷入“论文地狱”。如今,一款名为书匠策AI的智能工具正以“学术外挂军团”的姿态横空出世,用六大核…

作者头像 李华