写点什么

AI 算法 | 睡岗识别冠军方案解读(姿态估计)

作者:极小新
  • 2025-04-25
    广东
  • 本文字数:1158 字

    阅读完需:约 4 分钟

赛题分析

赛题描述

本赛题来自极市平台算法赛道睡岗识别赛题。

背景描述:为防止因值班人员睡岗行为引发安全隐患的情况发生,识别出值班人员睡岗情况并给予处理。

算法目标:识别出趴着或者躺着睡觉的值班人员并产生告警。



数据集分析

  • 根据人的姿态设定了如下 6 个类别:

(1) 站着的人 stand

(2) 坐着的人 sit

(3) 蹲着的人 crouch

(4) 趴着睡的人(趴在桌子、台子上) prostrate_sleep

(5) 坐着睡的人 sit_sleep

(6) 躺着睡的人(身体横着的) lie_sleep

  • 人体骨胳点标签

一共 17 个关键点,如下图所示:



  • 数据集的尺寸和类别统计信息




评测标准


算法方案

算法选型

从赛题分析来看,该任务属于目标检测+姿态估计。这两个任务之间没有特别强的关联性,可以采用两个模型同时对图像进行分析,但是缺点是对资源占用较高。当然也可以通过单个模型算法实现,例如 YOLOv8-pose,这样能够减小算法对资源的占用。出于对资源和性能的考虑,笔者选取了 YOLOv8-pose 作为方案的 baseline。

YOLOv8 是 ultralytics 公司在 2023 年 1 月 10 号开源的 ,目前支持图像分类、物体检测、实例分割和姿态估计任务,是一个 SOTA 模型。



训练策略

  • 采用 YOLOv8m-pose 模型

  • 调整训练类别

    去掉 crouch 的类别,合并到 sit 类别

  • 灵活的训练策略

    第一阶段,随机数种子 1,采用 YOLOv8m-pose 预训练模型,训练集 :验证集 = 4 :1,使用强数据增强

    第二阶段,随机数种子 2,采用第一阶段的模型作为预训练模型,训练集 :验证集 = 4 :1, 采用弱数据增强,低学习率

    第三阶段,随机数种子 3,采用第二阶段的模型作为预训练模型,训练集 :验证集 = 1 : 3,关闭数据增强,低学习率

部署方案

算法部署采用的是 uYOLODeploy,该部署工具是笔者团队自研,具有如下特点:



uYOLODeploy 使用简单,部署迅速,下面是应用示例:



arduino 代码解读复制代码#include <iostream>\#include "uyolo_deploy.h"\\// Detector\auto mDetector = std::make_shared<Detector>();\\// Init\mDetector->Init("model file path");\mDetector->UpdateLabelsNames("coco.names");\mDetector->UpdateThresh(confThresh, nmsThresh);\\// Process\for (;;)\{\...\mDetector->ProcessImage(inMat);\// handle results ...\mDetector->detectResults;\}
复制代码

测试结果



领取60+CV竞赛冠军方案


总结

1、 数据分析对于训练模型至关重要。

2、 针对算法精度和性能两者取舍来说,可先实验网络大小和输入图片大小对模型结果的影响,不同任务和不同数据情况,两者相差较大。所以不能一味为了提高速度,单纯压缩网络大小;

3、 针对性能要求时,可采用 TensorRT 等方式部署模型,也可采用模型压缩等方式,这样可在保证速度的前提下,使用较大网络,提升模型精度。

1500+视觉算法/算法开发-训练-推理平台/大模型及Agent开发合作/赛会合作等。


精选简历模板、面试技巧和人工智能领域岗位介绍,为求职规划做好准备。


用户头像

极小新

关注

还未添加个人签名 2025-01-02 加入

还未添加个人简介

评论

发布
暂无评论
AI算法 | 睡岗识别冠军方案解读(姿态估计)_人工智能_极小新_InfoQ写作社区