5.3-特定场景下行人闯红灯监测系统的实现《AI智慧交通检测应用开发》_第1页
5.3-特定场景下行人闯红灯监测系统的实现《AI智慧交通检测应用开发》_第2页
5.3-特定场景下行人闯红灯监测系统的实现《AI智慧交通检测应用开发》_第3页
5.3-特定场景下行人闯红灯监测系统的实现《AI智慧交通检测应用开发》_第4页
5.3-特定场景下行人闯红灯监测系统的实现《AI智慧交通检测应用开发》_第5页
已阅读5页,还剩77页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目三行人闯红灯检测系统AI智慧交通应用特定场景下行人闯红灯监测系统的实现任务三职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三

特定场景下行人闯红灯监测系统的实现掌握单目标跟踪掌握多目标跟踪理解目标跟踪评价指标学习并掌握行人闯红灯监测系统的设计原理学习并掌握通过yolov5+deepsort的组合实现闯红灯监测系统职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三

特定场景下行人闯红灯监测系统的实现

此任务的主要内容是对特定场景下行人闯红灯监测系统的实现的解析。通过理解单目标跟踪,多目标跟踪,目标跟踪评价指标,学习并掌握行人闯红灯监测系统的设计原理以及通过yolov5+deepsort的组合实现闯红灯监测系统。任务描述任务要求掌握单目标跟踪掌握多目标跟踪掌握目标跟踪评价指标任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三

特定场景下行人闯红灯监测系统的实现任务分析什么是单目标跟踪和多目标跟踪?如何进行行人闯红灯脚本解析?任务分析与计划03任务计划表通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03项目名称行人闯红灯检测系统任务名称特定场景下行人闯红灯监测系统的实现计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

4

5

6

职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三

特定场景下行人闯红灯监测系统的实现多目标跟踪204知识储备单目标跟踪1目标跟踪评价指标304什么是单目标跟踪?单目标跟踪简介04单目标跟踪简介在第一帧中框定需要追踪的目标(不局限于类别)作为人为先验信息(如图中博尔特),来确定追踪的目的,最终在视频后续的所有帧中都能跟踪出在第一帧中框定的目标,达到长时间跟踪的目的,可能在第一帧场景变化小,但是如果切换到视频的一百帧甚至三百帧,场景变化大,此时能够根据在第一帧的认为先验性息来跟踪所有帧中乃至于不同视频中的目标是一个非常具有挑战性的任务。什么是单目标跟踪?04单目标追踪模型发展MorePreciseBBoxAnnotation010203Anchor-based(AnchorBox)Anchor-free引入Anchor-based思想的SOT模型——SiamRPN、SiamCAR基于SiamRPN添加Mask分支的图片分割模型——SiamMask04Anchor-based(AnchorBox)对于一个经过深度网络提取的特征图假设尺寸为17X17,对于每一个特征点都会赋予一些边界框,这些边界框具有先验,假设边界框的scale是8,接下来确定长宽比例,如果height-weidthratio是1:2那么边界框的大小就是(8,16),其他同理,每一个点都会得到9个预先设置的边界框,如果目标出现在一个特征点周围,这9个boundingbox(边界框)会拟合出现在周围的目标的长宽比例。单目标追踪模型发展04Anchor-free对于一个经过深度网络提取的特征图假设尺寸为17X17,对于每一个特征点都会赋予一些边界框,这些边界框具Anchor-based思想有许多局限性,比如需要比较多的运算资源其次人为先验是否可靠等问题:直升机预设的边界框可能是16X16但是真实的比例可能是1:2,如果人为设置大小为1:1的会对边界框的拟合带来很多不确定性,后来为了简化运算量以及达到更加灵活的变化提出了Anchor-free的思想。区别在于,Anchor-based是对于一个特征点预先设置边界框和人为的经验,但是Anchor-free则是以特征点为中心,让模型自己去学习特征点到目标上下左右的距离如(b)。单目标追踪模型发展04Anchor-free对于Anchor-based来说,对于不同大小的目标分配不同大小预设的边界框就可以解决,但对于Anchor-free只有一个特征点,只能拟合一个物体,所以Anchor-free是用多层的特征图来拟合来解决多目标问题。用高维特征来(感受野大)负责大目标的回归,低位特征(感受野小)来负责小目标的回归。单目标追踪模型发展04引入Anchor-based思想的SOT模型——SiamRPN单目标追踪模型发展04引入Anchor-based思想的SOT模型——SiamCAR单目标追踪模型发展04基于SiamRPN添加Mask分支的图片分割模型——SiamMask单目标追踪模型发展04单目标追踪模型发展StrongerFeatureExtractor(更好的特征表征)对于单目标追踪来说,使用更深的网络比如ResNet,性能不增反降。04单目标追踪模型发展MoreFine-grainedMatching(更细粒度的模板匹配)细粒度提升方式一——分组卷积细粒度提升方式二——transformer04细粒度提升方式一——分组卷积单目标追踪模型发展最开始的模板匹配是用提取出Template作为卷积核,再对搜索区域提取的图片作卷积操作得到channel=1的二位分布图,如图a。逐渐发展为将搜索区域复制多份,但是同时使用template(模板)的部分Channel,由粗到细,保证一系列的Channel降维减少,如图b。04细粒度提升方式二——transformer单目标追踪模型发展利用Transformer来匹配模板信息。ECA即self-attention,每个特征点代表全局的一个特征,通过ECA达到对自身特征的一种重化,提取出更加重要的特征,把背景的杂物过滤掉。图中CFA即cross-attention,它引入了模板区域(Template)的特征,可以将它作为模板去搜索相关联的特征。相当于扩大了感受野,因为输入了更多的特征,另一方面,由于引入了参考的模板,就可以学习到更加相关的特征,赋予整个模型认知的的特性。多目标跟踪204知识储备单目标跟踪1目标跟踪评价指标304什么是多目标跟踪?多目标跟踪的定义可定义多目标跟踪为在有噪声的传感器测量时间序列中确定多个目标的如下特性:动态目标的个数每个动态目标的状态(和单目标跟踪相同)对比SOT与MOT后发现,其处理问题多了一个确定动态目标个数。04多目标跟踪的任务通常情况下,多目标跟踪基于传感器的检测。一般自动驾驶车上会配备一些传感器,比如camera、radar和Lidar。这些传感器在车辆行驶过程中,会采集大量原始数据送入检测(detector)模块,在检测模块,camera可获得boundingbox,radar可获得极坐标下的方位以及多普勒测量,Lidar可获得点云,而后将这些信号将送入多目标跟踪模块。多目标跟踪模块则根据这些连续的单帧的信号以获得目标state的后验分布。04多目标跟踪的类型02扩展目标跟踪(extendedobjecttracking)04其他(多径,mergedmeasurement)01点目标跟踪(pointobjecttracking)03目标群跟踪(groupobjecttracking)04多目标跟踪的类型①点目标跟踪(pointobjecttracking)这是最传统的多目标跟踪类型,基于“smallobject”的假设,即:每个目标都是独立的。每个目标均被建模为点,而没有任何扩展。在一个时间周期内,每个目标至多产生一个对应的测量。点目标跟踪的例子:camera的检测;航天用于监视的雷达04多目标跟踪的类型②扩展目标跟踪(extendedobjecttracking)此跟踪类型目标一般有不止一个测量,其目标的shape一般是未知的,可动态发生变化。通过递归滤波更新可以确定目标的shape。此种目标使得跟踪系统变得复杂,非线性程度上升。注意其与CV领域的轮廓跟踪是不同的。扩展目标跟踪的例子:Lidar;汽车radar04多目标跟踪的类型③目标群跟踪(groupobjecttracking)几个目标被看做一个group,当然单一目标也可以看做一个group。04多目标跟踪的类型④其他(多径,mergedmeasurement)多径问题多发生于雷达,在自动驾驶领域就是雷达被路面反射,打到了车辆的地盘造成检测的目标点不是车辆的最近点。04多目标跟踪的类型④其他(多径,mergedmeasurement)mergedmeasurement问题就是如果两个车辆在自车前方并行,二者有相同速度的话,radar检测的点被合并,目标出现在二者中间。04FOV范围内多少个目标不知道;每个目标的state不知道。目标在FOV内到处移动。存在旧目标离开FOV或新目标进入FOV,涉及到目标的出现与消失,术语叫trackbirth与trackdeath,需要进行航迹管理。遮挡问题:某一帧一个目标把另外目标遮挡,传感器检测不到。第一部分的挑战如下,图中扇形部分为车载传感器可观测范围:多目标跟踪的挑战04传感器的漏捡:在车辆行驶过程中,若前方某行人过马路,传感器漏捡,则可能出现自动驾驶的功能性fail,此时需要后面模块进行兜底,也就是MOT。漏捡产生可能原因如下:环境问题:比如poorlight。目标本身特性。比如行人不是很容易被radar检测到。遮挡原因下一部分的挑战就是由于传感器的缺陷导致的:多目标跟踪的挑战04传感器的虚警:在车辆行驶过程中,若前方空空如也,但传感器上报存在目标,这就可能造成车辆自动减速刹车,此时也需要后面模块进行兜底,也就是MOT。虚警产生可能原因:其他地方反射了radar。被误认为目标。环境问题。下一部分的挑战就是由于传感器的缺陷导致的:多目标跟踪的挑战04数据关联是多目标跟踪中最重要的问题之一。说的通俗点就是,在k-1时刻感知若干个目标,在k时刻感知若干个目标,MOT模块需要把这些目标对应起来,确认哪些属于同一个目标,这其中不能关联错误,否则会引入错误信息,拉飞目标。最后一部分挑战就是数据关联:多目标跟踪的挑战04数据关联是挑战的原因:多目标跟踪的挑战321首先就是因为没有先验信息,不知道哪些检测是之前有的目标,哪些是新生成的目标亦或是虚警。再有就是目标彼此之间很近,也容易关联错误。试想在交通拥堵场景,车与车之间距离很近,如若传感器噪声较大,测量不准,就很容易关联错误。其次就是传感器噪声影响,可能导致目标状态估计不准确,脱离算法限制,导致关联上错误目标。多目标跟踪204知识储备单目标跟踪1目标跟踪评价指标304单目标跟踪的评价指标01Precisionplot追踪算法估计的目标位置(boundingbox)的中心点与人工标注(ground-truth)的目标的中心点,这两者的欧式距离小于给定阈值的视频帧的百分比。不同的阈值,得到的百分比不一样,因此可以获得一条曲线。一般阈值设定为20个像素点。缺点:没有考虑到目标的大小,导致小目标即使预测框与GroundTruth框相距较远,但它们的欧式距离仍在20像素内。04单目标跟踪的评价指标KCF追踪算法论文中给出的曲线如下:04单目标跟踪的评价指标02SuccessPlot首先定义重合率得分(overlapscore,OS),追踪算法得到的boundingbox(记为a),与ground-truth给的box(记为b),重合率定义:04单目标跟踪的评价指标|·|表示区域的像素数目。当某一帧的OS大于设定的阈值时,则该帧被视为成功的(Success),总的成功的帧占所有帧的百分比即为成功率(Successrate)。OS的取值范围为0~1,因此可以绘制出一条曲线。一般阈值设定为0.5。MDNet追踪算法中precisionplots和Successplots如下:04单目标跟踪的评价指标以上两种常见的评估方式一般都是用ground-truth中目标的位置初始化第一帧,然后运行跟踪算法得到平均精度和成功率。这种方法被称为one-passevaluation(OPE)。这种方法有2个缺点:一个跟踪算法可能对第一帧给定的初始位置比较敏感,在不同位置或者帧初始会造成比较大的影响。大多数算法遇到跟踪失败后没有重新初始化的机制。04多目标跟踪的评价指标01MOTA(Multi-ObjectTrackingAccuracy)fragmentation是在第t帧当中发生的ID分配错误(IDswitch)。也就是说,如果在groundtruth第j个轨迹的第t帧之前,跟踪器(tracker)把该轨迹的ID都预测正确了,但是第t+1帧预测错误了,那么IDswitch的个数+1,值得注意的是,即使第t+1帧之后跟踪器仍然把该轨迹的ID预测错误了,但是错误的ID为同一个,那么IDswitch个数不会增加。04多目标跟踪的评价指标举个直观一点的例子,假设周杰伦在第1帧的时候走入镜头,在第100帧的时候走出镜头,跟踪器的boungdingbox一直能够跟上,但是在第50帧的时候把周杰伦识别成了彭于晏,那么这100帧内IDswitch的个数为1。假设第t帧中IDswitch的个数为Φt,那么所有帧的个数为Φ=∑tΦt。其中T指的是groundtruth中boundingbox的数量。可以看出,MOTA其实是对FN、FP、Φ进行了惩罚,然后又利用T进行正则。04多目标跟踪的评价指标falsepositive指的是在第t帧中,跟踪器检测到了的boundingbox但是在groundtruth中却不存在boundingbox的个数。falsenegative指的是在第t帧中,跟踪器漏检了的boundingbox但是在groundtruth中存在boundingbox的个数。truepositive指的是在第t帧中,跟踪器和groundtruth同时都有的boundingbox。大写的TP,FP,FN就是truepositive,falsepositive,falsenegative在所有帧中的总和(注意,只考虑boundingbox,没有考虑boundingbox的ID,也就是说,只要框住了就算TP,ID错了也算TP)。04多目标跟踪的评价指标02IDF1IDP其实就是ID+Precision,这里的IDP其实就是把每个ID当作单独的一类去计算Precision,同理,IDR则对应ID+Recall,IDF1则对应ID+F1score,对IDP和IDR的一个调和平均。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三

特定场景下行人闯红灯监测系统的实现05任务实施demo.py行人闯红灯脚本解析4环境搭建1AIDetector_pytorch.py目标检测脚本解析2tracker.py目标追踪器脚本解析3车辆闯红灯监测5环境搭建05更新pip版本,安装项目依赖环境依赖环境包括:•torch==1.9.0•torchvision==0.10.0•opencv-python==4.6.0.66•numpy==1.21.6•matplotlib==3.5.2•PyYAML==5.4.1•thop==0.1.105任务实施4环境搭建1AIDetector_pytorch.py目标检测脚本解析tracker.py目标追踪器脚本解析3车辆闯红灯监测512demo.py行人闯红灯脚本解析05•torch:PyTorch深度学习模块。•numpy:Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。•models.experimental:这个模块是yolov5的实验模块。•utils.general:该文件提供了模型多个过程中用到的通用方法,每个功能以函数的方式进行定义。导入依赖模块AIDetector_pytorch.py目标检测脚本解析05•utils.torch_utils:该文件为基于pytorch的一些实用工具的编写。•utils.BaseDetector:该文件提供了检测所需要的基础参数设置。•cv2:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。导入依赖模块AIDetector_pytorch.py目标检测脚本解析05draw函数能够将检测到的不需要追踪的目标,绘制在图像上。该功能能够丰富画面元素。•传入参数:图像,左上角坐标,右下角坐标,类标签,字体大小•功能:定义绘制目标框的线条粗细、标签类别的字体大小;根据传入的坐标参数绘制目标框与类别名称到图像上,并返回处理后的图像。draw函数AIDetector_pytorch.py目标检测脚本解析05行人检测的课程内容,将行人检测的方法封装成Detector检测器类。•class类:继承BaseDetector类•init函数:调用函数初始化模型、构建定义配置。•init_model函数:模型初始化,这里使用yolov5s.pt小模型是为了提升任务3运行速度,实际项目中使用yolov5x.pt模型,检测效果会优于yolov5s.pt模型。Detector类AIDetector_pytorch.py目标检测脚本解析05•preprocess函数:图像预处理,将图像按照模型输入的要求进行处理。•detect函数:对处理后的图像进行目标检测,并过滤车辆与交通灯等标签进行图像检测显示,将识别到的行人坐标、标签、置信度进行保存,用于后续目标追踪。Detector类AIDetector_pytorch.py目标检测脚本解析05任务实施4tracker.py目标追踪器脚本解析3AIDetector_pytorch.py目标检测脚本解析2环境搭建1车辆闯红灯监测5demo.py行人闯红灯脚本解析42初始化配置1导入依赖模块3plot_bboxes函数update_tracker函数任务实施05tracker.py目标追踪器脚本解析05依赖模块涵盖了该脚本中所需要的依赖模块。•deep_sort.utils.parser:这是基于EasyDict的yaml解析器。•deep_sort.deep_sort:跟踪算法核心,其中封装了所有的跟踪步骤。•torch:PyTorch深度学习模块。•cv2:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。导入依赖模块tracker.py目标追踪器脚本解析05•time:进行时间和日期的操作。•PIL:提供了诸多用来处理图片的模块,可以对图片做类似于PS(Photoshop)的编辑。比如:改变图像大小、旋转图像、图像格式转换,转换颜色通道,图像增强,直方图处理,插值和滤波等等。•numpy:Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。导入依赖模块tracker.py目标追踪器脚本解析05tracker.py脚本在导入时,进行的初始化配置。•id_list:存放闯红灯的行人ID。•number:统计闯红灯的人数。•初始化deepsort算法:读取deepsort参数配置,实例化DeepSort类。初始化配置tracker.py目标追踪器脚本解析05•传入参数:需要绘制的图像,预测的结果,字体大小•功能:1.is_red变量定义的作用:是基于可扩展系统的设计原则。为未来需要动态识别红灯信号状态提供接口。2.将追踪到的行人通过循环分别对多个行人进行目标框绘制,并对目标框的右下角Y轴的值(y2,即矩形框的底部)进行判断,若位于图像高的0.63-0.65处且ID还未存入闯红灯id_list数组中,则将当前ID添加到id_list数组中,并且人数加1。3.将闯红灯的行人ID与数量显示到图像中。plot_bboxes函数tracker.py目标追踪器脚本解析05update_tracker函数的作用是对目标进行轨迹追踪功能。•传入参数:检测器,需要检测的图像•功能:1.new_faces,face_bboxes变量定义的作用:是基于可扩展系统的设计原则。为未来需要人脸信息提供接口。2.将待检测的图像传入detect方法中,返回图像与预测框信息。3.对返回的目标框数据进行处理,最后调用上述步骤3的plot_bboxes函数进行图像绘制。update_tracker函数tracker.py目标追踪器脚本解析05任务实施2tracker.py目标追踪器脚本解析3车辆闯红灯监测5demo.py行人闯红灯脚本解析4环境搭建1AIDetector_pytorch.py目标检测脚本解析05依赖模块涵盖了此次任务所需要的依赖模块。•AIDetector_pytorch:这是步骤2.1封装的行人检测模块。•imutils:imutils整合了opencv、numpy和matplotlib的相关操作,主要是用来进行图形图像的处理,如图像的平移、旋转、缩放、骨架提取、显示等等,后期又加入了针对视频的处理,如摄像头、本地文件等。•cv2:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。导入依赖模块demo.py行人闯红灯脚本解析05进行的初始化配置,包括视频图像的读取。•func_status:定义人脸变量,用于满足det.feedCap()函数的传入参数。•name:显示窗口的命名。•fps:获取视频帧率。•t:表示毫秒/帧。•videoWriter:判断是否使用视频保存,若为None,则使用默认格式进行保存。初始化配置demo.py行人闯红灯脚本解析05该步骤实现将读取的视频图像进行逐帧检测,将检测结果显示至网页中并同步将检测结果以视频流的形式进行保存。•功能:对待检测的视频逐帧传入det.feedCap()方法中进行检测;判断是否有定义视频保存的方式videoWriter,若没有,则使用默认的方式进行视频保存;将检测结果显示到新的以name命名的窗口上;视频检测demo.py行人闯红灯脚本解析05任务实施4AIDetector_pytorch.py目标检测脚本解析2tracker.py目标追踪器脚本解析3车辆闯红灯检测5环境搭建15demo.py行人闯红灯脚本解析导入依赖模块52执行监测流程1车辆监测代码转换4视频检测任务实施05车辆闯红灯检测初始化配置305修改封装Detector类目标目标检测器AIDetector_pytorch.py脚本,实现对车辆进行目标识别。根据步骤2.3:行人检测的课程内容,将车辆检测的方法仿照行人检测的方法封装成Detector检测器类;在Detector类中,将行人修改为车辆闯红灯的判断方式,并且将闯红灯的车辆ID打印在图像上。•Detector类▪detect函数:对处理后的图像进行目标检测,并过滤车辆与交通灯等标签进行图像检测显示,将识别到的行人坐标、标签、置信度进行保存,用于后续目标追踪。车辆监测代码转换车辆闯红灯监测05封装程序主要流程。根据项目要求:完成对视频数据进行抽帧检测,实时显示检测结果,并将检测结果以视频流的方式进行保存。具体功能包含:•视频检测•检测结果保存•检测结果显示执行监测流程车辆闯红灯监测05依赖模块涵盖了此次任务所需要的依赖模块。•AIDetector_pytorch:这是步骤2.1封装的行人检测模块。•imutils:imutils整合了opencv、numpy和matplotlib的相关操作,主要是用来进行图形图像的处理,如图像的平移、旋转、缩放、骨架提取、显示等等,后期又加入了针对视频的处理,如摄像头、本地文件等。•cv2:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。导入依赖模块车辆闯红灯监测05进行的初始化配置。•func_status:定义人脸变量,用于满足det.feedCap()函数的传入参数。•name:显示窗口的命名。•fps:获取视频帧率。•t:表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论