深度学习和目标检测系列教程21-300:deepsorts测试小车经过的时间和速度(代码片段)

刘润森! 刘润森!     2023-03-09     421

关键词:

@Author:Runsen

deepDeepSort

DeepSort是一种用于跟踪目标的模型,为每个目标分配 ID,为每一个不同的类别分配label。

在DeepSort 中,过程如下。

  • 使用YOLO 计算边界框(检测)
  • 使用Sort(卡尔曼滤波器)和ReID(识别模型)链接边界框和轨迹
  • 如果无法建立活动链接,则会分配一个新 ID 并将其新添加到track。

deepDeepSort所谓的“检测”是每一帧中的目标列表,“轨迹”是当前被跟踪的列表。

deepsorts项目地址:https://github.com/mikelbrostrom/Yolov5_DeepSort_Pytorch

deepsorts测试小车经过的时间和速度

本次项目代码
参考项目:https://github.com/dyh/unbox_yolov5_deepsort_counting。

该项目封装了deepsorts和yolov5文件,非常易于其他需求的开发,个人在
该项目上进行二次开发。

项目实现目标要求:通过deepsorts测试图中的小车到拐弯是否存在超速的行为。

个人通过Image_Pixel小软件对图片进行标点和标线。一共划分了六条线和六个区域块。

项目的主要结构

由于yolov5模型存在一定的检测异常,因此需要在设置线时,最好设置成小矩形。最后的矩形判断的速度设置为4,也大约是15km/h。

下面是部分具体的测试结果,保存image 和 是否超速的结果写到rabbitmq中。

Fusing layers... 
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (148, 245) | : time: 9.04
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (148, 246) | : time: 9.08
进入第一块矩形类别: car | id: 3 | : 碰撞点的坐标 (148, 247) | : time: 9.12
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (149, 246) | : time: 9.16
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (149, 246) | : time: 9.2
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (150, 247) | : time: 9.24
进入第一块矩形类别: truck | id: 3 | : 碰撞点的坐标 (151, 247) | : time: 9.28
进入第二块矩形类别: truck | id: 3 | : 碰撞点的坐标 (161, 258) | : time: 9.96
第一块花费的时间: 0.6800000000000015
进入第二块矩形类别: truck | id: 3 | : 碰撞点的坐标 (162, 258) | : time: 10.0
第一块花费的时间: 0.7200000000000006
进入第二块矩形类别: car | id: 3 | : 碰撞点的坐标 (163, 259) | : time: 10.04
第一块花费的时间: 0.7599999999999998
进入第二块矩形类别: truck | id: 3 | : 碰撞点的坐标 (163, 259) | : time: 10.08
第一块花费的时间: 0.8000000000000007
进入第二块矩形类别: car | id: 3 | : 碰撞点的坐标 (163, 260) | : time: 10.12
第一块花费的时间: 0.8399999999999999
进入第三块矩形类别: truck | id: 3 | : 碰撞点的坐标 (179, 273) | : time: 10.96
第二块花费的时间: 0.8400000000000016
进入第三块矩形类别: truck | id: 3 | : 碰撞点的坐标 (180, 273) | : time: 11.0
第二块花费的时间: 0.8800000000000008
进入第三块矩形类别: truck | id: 3 | : 碰撞点的坐标 (180, 273) | : time: 11.04
第二块花费的时间: 0.9199999999999999
进入第三块矩形类别: truck | id: 3 | : 碰撞点的坐标 (181, 275) | : time: 11.08
第二块花费的时间: 0.9600000000000009
进入第三块矩形类别: truck | id: 3 | : 碰撞点的坐标 (182, 275) | : time: 11.12
第二块花费的时间: 1.0
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (208, 299) | : time: 12.36
第四块花费的时间: 1.0
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (235, 325) | : time: 13.48
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (235, 326) | : time: 13.52
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (237, 327) | : time: 13.56
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (238, 328) | : time: 13.6
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (238, 329) | : time: 13.64
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (240, 329) | : time: 13.72
第五块花费的时间: 1.2400000000000002
进入第五块矩形类别: truck | id: 3 | : 碰撞点的坐标 (241, 329) | : time: 13.76
第五块花费的时间: 1.2400000000000002
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (275, 364) | : time: 16.12
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 4.237288135593218
True
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (276, 364) | : time: 16.16
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 4.166666666666666
True
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (277, 364) | : time: 16.2
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 4.0983606557377055
True
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (277, 365) | : time: 16.24
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 4.032258064516132
True
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (277, 365) | : time: 16.28
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 3.968253968253966
False
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (277, 365) | : time: 16.4
11.904761904761907 10.0 8.064516129032256 7.1428571428571415 3.7878787878787894
False
离开的时间:: truck | id: 3 | : 碰撞点的坐标 (278, 365) | : time: 16.44
速度:11.904761904761907 10.0 8.064516129032256 7.1428571428571415 3.7313432835820874
False

附上GIthub:https://github.com/MaoliRUNsen/deepsort-yolov5-car

深度学习和目标检测系列教程19-300:关于目标检测apiou和map简介(代码片段)

@Author:RunsenR-CNN和YOLO等对象检测模型,使用了平均精度(mAP)。mAP将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测就越准确。PrecisionandRecall现在有两个类,Positive和Negative,这里是10个... 查看详情

深度学习和目标检测系列教程19-300:关于目标检测apiou和map简介(代码片段)

@Author:RunsenR-CNN和YOLO等对象检测模型,使用了平均精度(mAP)。mAP将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测就越准确。PrecisionandRecall现在有两个类,Positive和Negative,这里是10个... 查看详情

深度学习和目标检测系列教程13-300:yolo物体检测算法(代码片段)

@Author:RunsenYOLO,是目前速度更快的物体检测算法之一。虽然它不再是最准确的物体检测算法,但当您需要实时检测时,它是一个非常好的选择,而不会损失太多的准确性。YOLO框架在本篇博客中,我将... 查看详情

深度学习和目标检测系列教程23-300:fasterrcnn和yolov5训练飞机目标识别的小项目(代码片段)

@Author:RunsenFasterRCNN和yolov5训练飞机目标识别的项目目标检测算法主要包括:两类two-stage和one-stage一类是two-stage,two-stage检测算法将检测问题划分为两个阶段,首先产生候选区域(regionproposals),然... 查看详情

深度学习和目标检测系列教程18-300:关于yolovoc格式标签转化问题(代码片段)

@Author:RunsenPASCALVOC(ThePASCALVisualObjectClasses)是一个世界级的计算机视觉挑战赛,第一届比赛在2005年举办,随后一年举办一次,直到2012年最后一次。PASCAL的全称是PatternAnalysis,StatisticalmodellingandComputAtionalLe 查看详情

深度学习和目标检测系列教程14-300:训练第一个yolov3检测器(代码片段)

@Author:Runsen本次博客参考GIthub项目:https://github.com/qqwweee/keras-yolo3.git在开始之前,请在以下位置克隆!gitclonehttps://github.com/qqwweee/keras-yolo3.git到您的本地机器。确保设置虚拟环境并安装要求Keras2.1.5Tensorfl 查看详情

深度学习和目标检测系列教程22-300:关于人体姿态常见的估计方法(代码片段)

@Author:Runsen姿态估计是计算机视觉中的一项流行任务,比如真实的场景如何进行人体跌倒检测,如何对手语进行交流。作为人工智能(AI)的一个领域,计算机视觉使机器能够以模仿人类视觉为目的来... 查看详情

深度学习和目标检测系列教程12-300:常见的opencv的api和用法总结(上)(代码片段)

@Author:Runsen由于CV需要熟练使用opencv,因此总结了opencv常见的APi和用法。OpenCV(opensourcecomputervision)于1999年正式推出,它来自英特尔的一项倡议。OpenCV的核心是用C++编写的。在Python中,我们只使... 查看详情

深度学习和目标检测系列教程15-300:在python中使用opencv执行yolov3对象检测(代码片段)

@Author:Runsen上次讲了yolov3,这是使用yolov3的模型通过opencv的摄像头来执行YOLOv3对象检测。导入所需模块:importcv2importnumpyasnpimporttime让我们定义一些我们需要的变量和参数:CONFIDENCE=0.5SCORE_THRESHOLD=0.5IOU_ 查看详情

深度学习和目标检测系列教程15-300:在python中使用opencv执行yolov3对象检测(代码片段)

@Author:Runsen上次讲了yolov3,这是使用yolov3的模型通过opencv的摄像头来执行YOLOv3对象检测。导入所需模块:importcv2importnumpyasnpimporttime让我们定义一些我们需要的变量和参数:CONFIDENCE=0.5SCORE_THRESHOLD=0.5IOU_ 查看详情

深度学习和目标检测系列教程10-300:通过torch训练第一个faster-rcnn模型(代码片段)

@Author:Runsen上次介绍了Faster-RCNN模型,那么今天就开始训练第一个Faster-RCNN模型。本文将展示如何在水果图像数据集上使用Faster-RCNN模型。代码的灵感来自此处的Pytorch文档教程和Kagglehttps://pytorch.org/tutorials/intermediate/torc... 查看详情

深度学习和目标检测系列教程20-300:opencv与图像处理:霍夫变换技术实现直线检测(代码片段)

@Author:Runsen霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。这张图里面有一条看起来挺直的线ÿ... 查看详情

深度学习和目标检测系列教程20-300:opencv与图像处理:霍夫变换技术实现直线检测(代码片段)

@Author:Runsen霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。这张图里面有一条看起来挺直的线ÿ... 查看详情

深度学习和目标检测系列教程11-300:小麦数据集训练faster-rcnn模型(代码片段)

@Author:Runsen上次训练的Faster-RCNN的数据格式是xml和jpg图片提供,在很多Object-Detection中,数据有的是csv格式,数据集来源:https://www.kaggle.com/c/global-wheat-detectionwidth和heigth是图片的长和宽,b 查看详情

深度学习和目标检测系列教程16-300:通过全球小麦数据集训练第一个yolov5模型(代码片段)

@Author:Runsen之前的检测系统重新利用分类器或定位器来执行检测,将模型应用于多个位置和比例的图像。Yolo使用了一种完全不同的方法。它将单个神经网络应用于完整图像。该网络将图像划分为多个区域并预测每个... 查看详情

深度学习和目标检测系列教程17-300:3个类别面罩检测类别数据集训练yolov5s模型(代码片段)

@Author:RunsenYOLO是目前最火爆的的计算机视觉算法之一,今天使用的数据集来源:https://www.kaggle.com/andrewmvd/face-mask-detection这是数据集可以创建一个模型来检测戴口罩、不戴口罩或不正确戴口罩的人。该数据集包含... 查看详情

目标检测——深度学习下的小目标检测(检测难的原因和tricks)

小目标难检测原因主要原因(1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素大小,导致设计的... 查看详情

深度学习和目标检测系列教程18-300:关于yolovoc格式标签转化问题(代码片段)

@Author:RunsenPASCALVOC(ThePASCALVisualObjectClasses)是一个世界级的计算机视觉挑战赛,第一届比赛在2005年举办,随后一年举办一次,直到2012年最后一次。PASCAL的全称是PatternAnalysis,StatisticalmodellingandComputAtionalLearning࿰... 查看详情