基于yolov5和opencv的视频遗留物品检测

基于YOLOv5和opencv的视频遗留物品检测


github仓库:https://github.com/gamblerInCoding/LegacyItems/

业务逻辑

    需要我们定义定义人和物品的关系,和时间线上的一个关系,比如某个物品是某个同学拿着的,之后放到桌子上,在物品在人周围就不是遗留物,当人和物品分开一定时间后判断为遗留物品。这个业务逻辑需要我们同时满足时间阈值和距离阈值两个不同的条件。满足两个条件的物品才能算遗留物品。

推理脚本编写核心思路

    对于该课题,我们之前已经理清了业务逻辑需求。需要我们定义定义人和物品的关系,和时间线上的一个关系,比如某个物品是某个同学拿着的,之后放到桌子上,在物品在人周围就不是遗留物,当人和物品分开一定时间后判断为遗留物品。这个业务逻辑需要我们同时满足时间阈值和距离阈值两个不同的条件。满足两个条件的物品才能算遗留物品。
    我们可以发现该业务逻辑中透露出了两个关键的信息,距离阈值判断我们只需要处理同一帧内部的图像,而时间阈值判断需要我们处理不同帧之间的图像,不同帧之间需要我们判断处理对应的逻辑关系。所以本算法模型的总体设计是先通过opencv将输入的图像数据分帧读取,然后通过加载的物品模型,和人模型进行对应的算法模型识别,不同帧之间还有;逻辑关系需要保持。然后把处理好的每一帧图像通过opencv再合帧合在一起输出到结果视频文件里面。其算法的核心流程图如下图所示。
在这里插入图片描述

距离阈值

    我们实际上在真实场景中检测遗留物应用更多的是视频监控,而视频流的基础是一张张图片,因此我们需要先设计对图片中的遗留物进行检测的检测算法,这个时候我们因为是对一张静态图片做检测,而不是对一个视频流数据做检测,我们手头上只有一张一张静态的图片,我们必须得对一张一张图片做静态的目标检测。在目标检测领域中最常用而且效果最好的就是YOLOv5算法,YOLOv5算法在之前已经介绍过了,就不再重复介绍了。对于静态的图片我们划分判别遗留物和非遗留物的标准是在图片上判断识别出来的人和物品对应的box距离是否保持在一个阈值之内,如果box间的距离没有保持在一个阈值之内就把它认定为非遗留物品,如果box间的距离保持在一个阈值内就把它认定为遗留物品,其模型的判别流程如下所示。如上图所示,当c>a+b时,即可以认为人和书包是分离的,可以认定是遗留物品。这就是距离阈值的判断条件。
在这里插入图片描述

时间阈值

    何谓遗留物品,比如某个物品是某个同学拿着的,之后放到桌子上,在物品在人周围就不是遗留物,当人和物品分开一定时间后判断为遗留物品。我们知道物品在人周围指的是距离阈值条件,而除了单单距离阈值条件之外,我们还应该要实现分开一段时间这个时间阈值条件。我们如何实现判断这个时间阈值条件呢,我们可以把整张图像抽象成二维化的数组,通过借助哈希算法和前缀和算法的思想,当某一个点识别出来了,数组对应的二维变量增一,代表记录着该时刻,我们在这个位置识别出来有对应的遗留物品了,如果联系的在一段时间内都保持着增一的趋势,说明该点识别出来对应的物品满足遗留物品的条件。其流程如下图所示。
在这里插入图片描述

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
基于Yolov5OpenCV的课堂学习状态识别检测源码可以通过以下步骤实现: 1. 安装Yolov5OpenCV库:首先,需要在计算机上安装Yolov5OpenCV库。可以通过pip命令来安装这些库,如'pip install yolov5'和'pip install opencv-python'。 2. 下载Yolov5模型权重:从Yolov5的GitHub页面上可以下载预训练的Yolov5模型权重文件,如'yolov5s.pt'。 3. 设置输入源:可以使用OpenCV来设置输入源,如摄像头、视频文件或图像。例如,可以使用以下代码来设置使用摄像头作为输入源: ```python import cv2 cap = cv2.VideoCapture(0) ``` 4. 加载Yolov5模型:使用Yolov5的load_model()方法来加载预训练的Yolov5模型权重文件。 ```python from models.experimental import attempt_load model = attempt_load('yolov5s.pt') ``` 5. 进行目标检测:使用Yolov5模型对输入源中的图像进行目标检测。可以使用以下代码来实现: ```python ret, frame = cap.read() results = model(frame) ``` 6. 进行状态识别:根据目标检测的结果,使用OpenCV的图像处理和分析方法来进行状态识别。例如,可以检测人脸表情、姿势、动作等。 7. 输出结果:根据状态识别的结果,使用OpenCV的图像绘制函数来标注人脸或其他识别到的物体,并显示在屏幕上。 以上就是基于Yolov5OpenCV的课堂学习状态识别检测源码的基本步骤。可以根据实际需求进行相应的代码实现和优化。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值