前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于YOLOv8的摔倒行为检测系统(Python源码+Pyqt6界面+数据集)

基于YOLOv8的摔倒行为检测系统(Python源码+Pyqt6界面+数据集)

原创
作者头像
AI小怪兽
发布2024-01-23 16:02:21
83400
代码可运行
发布2024-01-23 16:02:21
举报
文章被收录于专栏:YOLO大作战YOLO大作战
运行总次数:0
代码可运行

💡💡💡本文主要内容:通过实战基于YOLOv8的摔倒行为检测算法,从数据集制作到模型训练,最后设计成为检测UI界面

人体行为分析AI算法,是一种利用人工智能技术对人体行为进行检测、跟踪和分析的方法。通过计算机视觉、深度学习和模式识别等技术,可以实现对人体姿态、动作和行为的自动化识别与分析。而人员摔倒检测算法技术原理是一项非常重要且具有广泛应用前景的技术。随着人工智能和计算机视觉的发展,人员摔倒检测算法已经成为一个热门的研究领域。这项技术的原理是基于计算机视觉和模式识别的基本原理,通过对图像和视频进行分析,识别出人员是否发生了摔倒的情况。

本文通过YOLOv8技术来进行人员摔倒行为检测

1.Yolov8介绍

Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

具体改进如下:

  1. Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;
  2. PAN-FPN:毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块;
  3. Decoupled-Head:是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;
  4. Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;
  5. 损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;
  6. 样本匹配:YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

框架图提供见链接:Brief summary of YOLOv8 model structure · Issue #189 · ultralytics/ultralytics · GitHub

2.摔倒行为检测

数据集大小1440张,按照train、val、test随机划分为7:2:1

confusion_matrix.png

labels.jpg

3.如何训练摔倒检测模型

3.1 修改pp_fall.yaml

代码语言:javascript
复制
path: ./data/pp_fall  # dataset root dir
train: train.txt  # train images (relative to 'path') 118287 images
val: val.txt  # val images (relative to 'path') 5000 images

# number of classes
nc: 1

# class names
names:
  0: fall

3.2 如何训练

代码语言:javascript
复制
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml')
    #model.load('yolov8n-obb.pt') # loading pretrain weights
    model.train(data='data/pp_fall/pp_fall.yaml',
                cache=False,
                imgsz=640,
                epochs=200,
                batch=16,
                close_mosaic=10,
                workers=0,
                device='0',
                optimizer='SGD', # using SGD
                project='runs/train',
                name='exp',
                )

3.3 开启训练

3.4 训练结果可视化

代码语言:python
代码运行次数:0
复制
YOLOv8 summary (fused): 168 layers, 3005843 parameters, 0 gradients, 8.1 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 13/13 [00:07<00:00,  1.83it/s]
                   all        388        407      0.714        0.7      0.736      0.357​

PR_curve.png

results.png

4. 摔倒行为检测系统设计

4.1 PySide6介绍

受益于人工智能的崛起,Python语言几乎以压倒性优势在众多编程语言中异军突起,成为AI时代的首选语言。在很多情况下,我们想要以图形化方式将我们的人工智能算法打包提供给用户使用,这时候选择以python为主的GUI框架就非常合适了。

PySide是Qt公司的产品,PyQt是第三方公司的产品,二者用法基本相同,不过在使用协议上却有很大差别。PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。

PySide目前常见的有两个版本:PySide2和PySide6。PySide2由C++版的Qt5开发而来.,而PySide6对应的则是C++版的Qt6。从PySide6开始,PySide的命名也会与Qt的大版本号保持一致,不会再出现类似PySide2对应Qt5这种容易混淆的情况。

4.2 安装PySide6

代码语言:javascript
复制
pip install --upgrade pip
pip install pyside6 -i https://mirror.baidu.com/pypi/simple

基于PySide6开发GUI程序包含下面三个基本步骤:

  • 设计GUI,图形化拖拽或手撸;
  • 响应UI的操作(如点击按钮、输入数据、服务器更新),使用信号与Slot连接界面和业务;
  • 打包发布;

4.3 摔倒行为检测系统设计

原文链接:https://blog.csdn.net/m0_63774211/article/details/135771510

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Yolov8介绍
  • 2.摔倒行为检测
  • 3.如何训练摔倒检测模型
    • 3.1 修改pp_fall.yaml
      • 3.2 如何训练
        • 3.3 开启训练
          • 3.4 训练结果可视化
          • 4. 摔倒行为检测系统设计
            • 4.1 PySide6介绍
              • 4.2 安装PySide6
                • 4.3 摔倒行为检测系统设计
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档