极市导读
本文为ECV2023睡岗识别冠军方案解读,该赛题需要识别出趴着或者躺着睡觉的值班人员并产生告警。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
前言
AI技术的迭代发展,将加速行业升级,从单场景AI创新向全场景智能数字化迈进。第六届ECV2023极市计算机视觉开发者榜单大赛邀请全球算法达人共同挑战数字时代前沿命题, AI赋能世界,贡献全新算法力量。
ECV2023极市计算机视觉开发者榜单大赛再次吹响号角,邀约全球算法精英,在算法领域的舞台上同台竞技。今年赛题全面升级,三大赛题兼具实战性与创新性,要求参赛者集算法力、创新力,解决业务场景中的实际问题,让AI技术真正落地应用,最终实现探索AI算法领域新技术,助力相关业务发展的目标。
赛题分析
赛题描述
背景描述:为防止因值班人员睡岗行为引发安全隐患的情况发生,识别出值班人员睡岗情况并给予处理。
算法目标:识别出趴着或者躺着睡觉的值班人员并产生告警。
数据集分析
-
根据人的姿态设定了如下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使用简单,部署迅速,下面是应用示例:
\#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;\
}
测试结果
总结
1、 数据分析对于训练模型至关重要。
2、 针对算法精度和性能两者取舍来说,可先实验网络大小和输入图片大小对模型结果的影响,不同任务和不同数据情况,两者相差较大。所以不能一味为了提高速度,单纯压缩网络大小;
3、 针对性能要求时,可采用TensorRT等方式部署模型,也可采用模型压缩等方式,这样可在保证速度的前提下,使用较大网络,提升模型精度。

公众号后台回复“极市直播”获取100+期极市技术直播回放+PPT
极市干货

点击阅读原文进入CV社区
收获更多技术干货

