基于人体部件小边特征的多行人检测和跟踪算法

一只有恒心的小菜鸟 一只有恒心的小菜鸟     2022-08-05     388

关键词:

基于人体部件小边特征的多行人检测和跟踪算法

读"B. Wu, R. Nevatia. Detection and tracking of multiple, partially occluded humans by Bayesian combination of edgelet based part detectors[J],IJCV,75(2),247-266" 笔记


文章主要贡献点

-基于小边特征(edgelet feature) boosting的人体部件检测子
-使用贝叶斯方法combine人体部件检测结果实现部分遮挡人体的检测
-自主的多行人跟踪方法,该方法可以处理时序队列中人体部分遮挡和相互遮挡问题


行人检测

对于小边特征人体部件检测子以及Joint likelihood function for combined detector可以参见另一篇文章

B.Wu, R. Nevatia. Detection of Multiple,Partially Occluded Humans in a Single Image by Bayesian Combination of Edgelet Part Detectors[C], ICCV,2005.

对应的阅读笔记:

http://www.cnblogs.com/YiXiaoZhou/p/5875533.html

这里仅记录一些不同之处。

Multi-View Part Detector
为了解决人体平面内左右旋转的检测问题,类似于嵌入级联分类器中人脸检测使用的multi-view人脸检测,这里首先寻找不同的视角下的行人部件,然后将不同视角下的相同部件的样本集合以来以训练该部件在不同视角下共同的特征。
该过程的结构如下:

enter description here

structured multi-view part detector.jpg

在检测过程中,首先将sub-window输入上图的root节点然后将判断该图像是哪一类“left profile”?"Frontal/real"?"right profile"?如果都不是则直接将该图像判定为非human区域,由于单帧图像中非行人区域较多,所以该步骤能够过滤掉很多非目标区域,加快检测速度,对于行人区域则按视角分到不同的类中。
将不同类中的相同部件在一起训练部件检测子。

The main advantage of this algorithm is that the features selected are shared among different view point categories of the same object type. This is much more efficient than learning detectors for individual view points separately.

Bayesian Combination of Part Detectors
和Joint likelihood function那节内容不同的是那里用二元组刻画部件状态,而这里使用四元组刻画,分别表示该部件的类型标签、中心位置坐标、大小、和可见度(没有被遮挡部分占整个部件的比率)。
同样的行人分成部件,观测和初始化状态匹配后最大化后验概率(MAP),这种方法还是偏重于相信FB和HS两个部件检测子的结果,T和L检测子用来验证检测结果。

该检测系统有三种输出

  • original responses: 各个部件检测子检测的结果,对于同一个目标,同一个部件检测子可能获得好多检测输出,因为sub-window是2pixel滑动的

  • merged responses: 对检测子的original response使用clustering方法聚合,使最终每个目标只对应于该部件检测子的一个响应,clustering可以随机选定一个响应,然后把和它重叠度很大的响应合并起来。怎么合并文中没具体说,个人认为可以计算这些响应的状态均值

  • combined response: 有merged responses使用上述模型最终得到的响应就是combined responses。'One combined response has several matched part responses.'(combined response是行人假设,当然包含部件的响应)

enter description here

detection responses.jpg


行人跟踪

在每一帧图像上使用上一节的行人检测方法得到了许多检测响应,那跟踪就可以看作是不同帧间响应的匹配问题(data association)。

响应间的亲和度
文中使用original responses、merged responses和combined responses一起用于跟踪。

跟踪过程中对部件的刻画扩展为,其中添加个两个变量分别表示该响应的置信度(由real adaboost给出)和该响应的表观模型。
combined response 表示为.

于是连续两帧间相同部件响应的亲和度可以如下定义:

其中

分别是位置、大小和表观的相似度,是巴氏距离。分别是归一化因子,文中没有指明将哪些量归一化,但从后续寻找匹配过程中寻找的是矩阵最小值而不是行或列最小值,随意推测这里应该是对同意不见检测子所有pair之间进行归一化,假设t帧有m个响应,t+1帧有n个响应,那么归一化因子应该是指对个配对的归一化
combined responses的亲和度如下计算:

表示combined response的第个部件,示性函数是指两个部件的可见度都要超过一定的阈值。

有了affinity之后可以关联前后帧的部件。

Suppose at time t of an input video, we have n human hypothese ,whose predictions[1] at time are ,and at time we have we have responses . First we compute the affinity matrix A of all pairs. Then in each step, the pair, denoted by , with the largest affinity is taken as a match and the corresponding column and row of A are deleted.

轨迹初始化

假设检测子的正确率为,那么对于一个T帧的序列而言,T个检测响应全部错误的概率为,但是现实情况下,如果前一帧响应出错,往往随后一帧出错的概率也很大,因此不能如此计算。文中定义连续T帧错误响应的概率为,定义T帧轨迹的初始化的置信度为:

检测子精度越高,这里的越大。

如果初始化置信度大于某一个阈值,则认为生成一个可信轨迹(confident trajectory)
这里在定义置信度是使用的T帧没有全部检测错误的概率,可以理解为存在正确检测的概率,个人觉得并不合理,而使用T帧全部检测正确的概率应该会更容易解释。

同样适用元祖表示行人轨迹,分别表示combined response、动态模型、和部件检测响应的表观模型向量。这里D用来记录Kalman滤波所需要的模型参数,使用Kalman滤波能够预测各部件在下一帧的位置,以计算Affinity matrix。

轨迹延展
该部分包括数据关联和均值漂移两种情况。
首先对combined responses进行关联匹配,对于没有找到匹配的前一帧图像中的combined responses和该帧中不属于combined responses的部件进行匹配。

其次对于前一帧出现的响应在该帧没能找到匹配或者亲和度很低的使用meanshift 方法估计在该帧中出现的位置。
meanshift使用的概率图有三部分组成:动态模型产生的概率图、检测概率图和表观概率图.
-可以有动态模型获得
-如下计算

表示如果该像素点在被部件检测子检测到,则加上该检测子的置信度,文中指出这里算分部件检测子是original responses。 是所有检测子的平均漏检率。
==个人觉得这个式子是存在问题的,因为original responses非常多,即使每个response的执行都都很小,那么也可能会使,所以我觉的这里应该计算均值。

-表示的是图像在人体像素值分布下对应的概率图。首先肯定要计算人体区域像素的直方图,然后将图像映射到该直方图概率图上。
首先收集标定一定数量的行人区域,然后计算其子空间(PCA),然后使用迭代的方法获取大量的行人区域,最后统计这些区域内的像素值的概率直方图。

最终的概率图为:

只能说这个meanshift的设计是相当粗糙的,但好在检测子的效率较高,使用meanshift的次数较少。

轨迹终止
轨迹终止的策略和轨迹初始化的策略类似,终止置信度

第一项计算的是非亲和度的平均值,奇怪的是第二项依然使用的是存在检测正确的概率,觉得应该使用的是全部检测错误的概率

Combined Tracker
轨迹的初始化、轨迹延展和轨迹的终止能够很好的实现轨迹的逐步检测,具体过程如图:

enter description here

forword tracking.jpg

但这个过程在初始化阶段会存在部分帧中的响应延迟,所以称为这个过程为前向检测,对于初始化后的轨迹可以使用相同的方法逆时序检测若干帧以降低轨迹遗漏的响应。


总结

除了贡献点外,论文存在的不足:

  • 没有使用到运动信息,比如tracklet

  • 检测和跟踪是级联的关系,并没有交叉,而现实情况是检测可以基于跟踪的位置进行检测。

  • 追踪的时候使用所有的检测响应,必将导致追踪速度太慢。

  • 其他如文中绿色标注的问题



  1. Kalman Filter

目标跟踪检测算法(四)——多目标扩展

...ttps://blog.csdn.net/qq_34919792/article/details/89893665【嵌牛导读】基于深度学习的算法在图像和视频识别任务中取得了广泛的应用和突破性的进展。从图像分类问题到行人重识别问题,深度学习方法相比传统方法表现出极大的优势。与行... 查看详情

行人检测(人体检测)2:yolov5实现人体检测(含人体检测数据集和训练代码)(代码片段)

...(1)人体检测数据集(2)自定义数据集3.基于YOLOv5的人体检测模型训练(1)YOLOv5说明(2)准备Train和Test数据(3)配置数据文件(4)配置模型文件(5)重新聚类Anchor(可... 查看详情

无人驾驶(三)行人跟踪算法

...一)生成式模型生成式模型是一种通过在线学习行人目标特征,建立行人跟踪模型,然后使用模型来搜索误差最小的目标区域,从而完成对行人的跟踪。这种算法在构建模型只考虑了行人本身的特征,忽略了背景信息,没有做到... 查看详情

行人检测(人体检测)1:人体检测数据集(含下载链接)(代码片段)

行人检测(人体检测)1:人体检测数据集(含下载链接)目录行人检测(人体检测)1:人体检测数据集(含下载链接)1.前言2.VOC数据集3.COCO数据集4.MPII数据集5.人体检测(包含人体+人脸框)数据集下载6.人体检测(行人检测ÿ... 查看详情

humanposeestimation

...尺度不一、拍摄角度不固定等。单人姿态估计传统方法:基于PictorialStructures,DPM?基于深度学习的算法包括直接回归坐标(DeepPose)和通过热力图回归坐标(CPM,Hourlgass)目前单人姿态估计,主流算法是基于Hourlgass各种更改结构的算法。... 查看详情

基于yolov3的行人目标检测算法在图像和视频中识别检测(代码片段)

...t/download/sheziqiong/85772186主要功能介绍本项目设计并实现了基于yolov3的行人目标检测算法,并将该目标检测算法应用在图像和视频的识别检测之中。实现的主要功能有:对静态图像(jpg、png)中的行人进行识别,并框选出... 查看详情

运动对象检测和描述

运动图像检测基于背景减法目标跟踪,背景分割器:KNN、MOG2和GMGBasicmotiondetectionandtrackingwithPythonandOpenCV使用背景减除进行目标检测用OpenCV实现多目标追踪(C++/Python)通过形态学改善图像过滤,追踪人脸,检测前景/背景区域和深度... 查看详情

目标跟踪(3)multitracker:基于opencv(c++/python)的多目标跟踪

参考技术A在这篇文章中,我们将介绍如何使用通过MultiTracker类实现的OpenCV的多对象跟踪API。我们将共享C++和Python代码。大多数计算机视觉和机器学习的初学者都学习对象检测。如果您是初学者,您可能会想为什么我们需要对象... 查看详情

行人检测(人体检测)3:android实现人体检测(含源码,可实时人体检测)(代码片段)

...源码,可实时人体检测)1.前言2.人体检测数据集说明3.基于YOLOv5的人体检测模型训练4.人体检测模型Android部署(1)将Pytorch模型转换ONNX模型(2)将ONNX模型转换为TNN模型(3)Android端上部署模型(4ÿ... 查看详情

行人检测(人体检测)3:android实现人体检测(含源码,可实时人体检测)(代码片段)

...源码,可实时人体检测)1.前言2.人体检测数据集说明3.基于YOLOv5的人体检测模型训练4.人体检测模型Android部署(1)将Pytorch模型转换ONNX模型(2)将ONNX模型转换为TNN模型(3)Android端上部署模型(4ÿ... 查看详情

行人检测(人体检测)3:android实现人体检测(含源码,可实时人体检测)(代码片段)

...源码,可实时人体检测)1.前言2.人体检测数据集说明3.基于YOLOv5的人体检测模型训练4.人体检测模型Android部署(1)将Pytorch模型转换ONNX模型(2)将ONNX模型转换为TNN模型(3)Android端上部署模型(4ÿ... 查看详情

行人检测(人体检测)3:android实现人体检测(含源码,可实时人体检测)(代码片段)

...源码,可实时人体检测)1.前言2.人体检测数据集说明3.基于YOLOv5的人体检测模型训练4.人体检测模型Android部署(1)将Pytorch模型转换ONNX模型(2)将ONNX模型转换为TNN模型(3)Android端上部署模型(4ÿ... 查看详情

行人识别预警系统组成及其工作原理是啥?

...参考技术A针对重特大交通事故中的行人保护问题,提出了基于侧面行人特征的实时行人检测预警系统(PDWS)。系统由检测模块和预警模块两部分组成,其中检测模块使用Haar与HOG特征和AdaBoost与SVM分类器,通过侧面行人样本库完成行人... 查看详情

人员检测和跟踪(代码片段)

我想做行人检测和跟踪。输入:来自CCTV摄像机的视频流。输出:#(没有)人从左到右#人从右到左#中间的人数到目前为止我做了什么:对于行人检测我正在使用HOG和SVM。检测结果合理,误报率高。而且它在Android平台上运行... 查看详情

目标跟踪文章翻译--基于主动特征选择的鲁棒目标跟踪

摘要:基于检测的自适应跟踪已经被广泛研究了且前景很好。这些追踪器的关键理念是如何训练一个在线有识别力的分类器,这个分类器可以把一个对象从局部背景中分离出来。利用从检测目标位置附近的当前帧中提取的正样本... 查看详情

论文阅读:siam-rpn

摘要Siam-RPN提出了一种基于RPN的孪生网络结构。由孪生子网络和RPN网络组成,它抛弃了传统的多尺度测试和在线跟踪,从而使得跟踪速度非常快。在VOT实时跟踪挑战上达到了最好的效果,速度最高160fps。一、研究动机作者将流行... 查看详情

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

...机视觉中的一项流行任务,比如真实的场景如何进行人体跌倒检测,如何对手语进行交流。作为人工智能(AI)的一个领域,计算机视觉使机器能够以模仿人类视觉为目的来执行图像处理任务。在传统的物体检... 查看详情

r-cnnfastr-cnnfasterr-cnn

...测概述:行人检测主要有两种:传统检测算法和基于深度学习检测算法。传统检测算法的典型代表有Haar算法+Adaboost算法,Hog特征+SVM算法,DPM算法。而基于深度学习的行人检测典型代表有RCNN系列,SDD系列... 查看详情