行人跟踪算法
‘壹’ 无人驾驶(三)行人跟踪算法
姓名:王梦妮
学号:20021210873
学院:电子工程学院
【嵌牛导读】本文主要介绍了无人驾驶中所需的行人跟踪算法
【嵌牛鼻子】无人驾驶 环境感知 计算机视觉 卡尔曼滤波 粒子滤波 均值漂移
【嵌牛提问】无人驾驶中所用到的行人跟踪算法有哪些
【嵌牛正文】
行人跟踪一直是视觉领域的一个难点,实际应用环境复杂、遮挡以及行人姿态变化等外界因素都影响着行人跟踪算法的研究。行人跟踪算法模型主要分为生成模型和判别模型。
(一)生成式模型
生成式模型是一种通过在线学习行人目标特征,建立行人跟踪模型,然后使用模型来搜索误差最小的目标区域,从而完成对行人的跟踪。这种算法在构建模型只考虑了行人本身的特征,忽略了背景信息,没有做到有效利用图像中的全部信息。其中比较经典的算法主要有卡尔曼滤波,粒子滤波,mean-shift等。
(1)卡尔曼滤波算法
卡尔曼滤波算法是一种通过对行人构建状态方程和观测方程为基础,计算最小均方误差来实现跟踪的最优线性递归滤波算法,通过递归行人的运动状态来预测行人轨迹的变化。
首先设定初始参数,读取视频序列。然后进行背景估计,产生初始化背景图像。然后依次读取视频序列,利用Kahnan滤波算法,根据上一帧估计的背景和当前帧数据得到当前帧的前景目标。然后对前景目标进行连通计算,检测出运动目标的轨迹。经典的卡尔曼滤波算法.只能对线性运动的行人实现跟踪,之后学者改进了卡尔曼滤波算法,能够实现对非线性运动的行人进行跟踪,计算量小,能实现实时跟踪,但是跟踪效果不理想。
(2)粒子滤波
粒子滤波的核心就是贝叶斯推理和重要性采样。粒子滤波可用于非线性非高斯模型,这是由于贝叶斯推理采用蒙特卡洛法,以某个时间点事件出现的频率表示其概率。通过一组粒子对整个模型的后验概率分布进行近似的表示,通过这个表示来估计整个非线性非高斯系统的状态。重要性采用就是通过粒子的置信度来赋予不同的权重,置信度高的粒子,赋予较大的权重,通过权重的分布形式表示相似程度。
(3)均值漂移(mean-shift)
Mean-shift算法属于核密度估计法。不必知道先验概率,密度函数值由采样点的特征空间计算。通过计算当前帧目标区域的像素特征值概率来描述目标模型,并对候选区域进行统一描述,使用相似的函数表示目标模型与候选模板之间的相似度,然后选择在具有相似函数值最大的候选模型中,您将获得关于目标模型的均值漂移向量,该向量表示目标从当前位置移动到下一个位置的向量。通过连续迭代地计算均值偏移矢量,行人跟踪算法将最终收敛到行人的实际位置,从而实现行人跟踪。
(二) 判别式模型
判别模型与生成模型不同,行人跟踪被视为二分类问题。提取图像中的行人和背景信息,并用于训练分类器。通过分类将行人从图像背景中分离出来,以获取行人的当前位置。以行人区域为正样本,背景区域为负样本,通过机器学习算法对正样本和负样本进行训练,训练后的分类器用于在下一帧中找到相似度最高的区域,以完成行人轨迹更新。判别式模型不像生成式模型仅仅利用了行人的信息,还利用了背景信息,因此判别式模型的跟踪效果普遍优于生成式模型。
(1)基于相关滤波的跟踪算法
核相关滤波(KCF)算法是基于相关滤波的经典跟踪算法,具有优良的跟踪效果和跟踪速度。这是由于其采用了循环移位的方式来进行样本生产,用生成的样本来训练分类器,通过高斯核函数来计算当前帧行人与下一帧中所有候选目标之间的相似概率图,找到相似概率图最大的那个候选目标,就得到了行人的新位置。KCF算法为了提高跟踪精度,使用HOG特征对行人进行描述,同时结合了离散傅里叶变换来降低计算量。
(2)基于深度学习的跟踪算法
近年来,深度学习在图像和语音方面取得了较大的成果,因此有许多科研人员将深度学习与行人跟踪相结合,取得了比传统跟踪算法更好的性能。DLT就是一个基于深度学习的行人跟踪算法,利用深度模型自动编码器通过离线训练的方式,在大规模行人数据集上得到一个行人模型,然后在线对行人进行跟踪来微调模型。首先通过粒子滤波获取候选行人目标,然后利用自动编码器进行预测,最终得到行人的预测位置即最大输出值的候选行人目标位置。2015年提出的MDNet算法采用了分域训练的方式。对于每个类别,一个单独的全连接层用于分类,并且全连接层前面的所有层都是共享,用于特征提取。2017年提出的HCFT算法使用深度学习对大量标定数据进行训练,得到强有力的特征表达模型,结合基于相关滤波的跟踪算法,用于解决在线进行跟踪过程中行人样本少、网络训练不充分的问题。此外,通过深度学习提取特征,利用数据关联的方法来实现跟踪的算法,其中最为着名的就JPDAF与MHT这两种方法。
‘贰’ 步态识别的软件算法
根据医学和心理学等学科的研究表明:人可以感知步态,并可以通过步态进行人的身份认证。尤其自“911事件”以来,使得远距离的身份识别研究备受关注。而与其他生物特征识别相比,步态识别的突出特点主要是能远距离识别。因此,步态识别的研究,己越来越引起国内外学者的关注。目前,己研究出的步态识别的软件算法有如下几种:
对于每个步态序列而言,一种改进的背景减除技术被使用来提取人的空间轮廓。这些轮廓的边缘,被逆时针方向展开为一系列相对于质心的距离模板。这些模板特征通过使用主元统计分析方法来训练,从而得出步态形状的变化模式在特征空间中的轨迹表达。识别时,采用了时空相关匹配方法和基于归一化欧氏距离的最近邻规则,并引入了相应于个人的体形等生理特征的融合,以用于必要的步态分类校验。
该算法来源于“从行走运动的时空模式中可学习人体的外观模型”的观点。对于每个序列而言,背景减除过程用来提取行人的运动轮廓,这些轮廓随时间的姿态变化在二维空间中被对应描述为一个序列的复数配置(Complex Configuration)。利用Procrustes形状分析方法,从该序列配置中获取主轮廓模型作为人体的静态外观特征。实验结果表明,该算法获得了令人鼓舞的识别性能。
该算法来源于“人体行走运动很大程度上依赖于轮廓随着时间的形状变化”的直观想法。对于每个序列而言,背景减除与轮廓相关方法用于检测和跟踪行人的运动轮廓,这些时变的二维轮廓形状被转换为对应的一维距离信号,同时通过特征空间变换来提取低维步态特征。基于时空相关或归一化欧氏距离度量,以及标准的模式分类技术用于最终的识别。实验结果表明,该算法不仅获得了令人满意的识别性能,而且拥有相对较低的计算代价。
该算法来源于“行走运动的关节角度变化包含着丰富的个体识别信息”的思想。首先,结合人体模型、运动模型和运动约束等先验知识,利用Condensation算法进行行人的跟踪。然后,从跟踪结果中获取人体主要关节的角度变化轨迹。这些轨迹经过结构和时间归一化后,作为动态特征而用于身份识别。
这是一种基于新的特征提取方法的自动步态识别算法,该算法仅从腿部的运动进行身份识别。对于每个序列,用一种基于图像色度偏差的背景减除算法来检测运动对象。在经过后处理的二值图像序列中,利用边界跟踪算法获取对象边界,在对象边界图像上,局部应用Hough变换检测大腿和小腿的直线,从而得到大腿和小腿的倾斜角。用最小二乘法将一个周期内的倾斜角序列,拟合成5阶多项式,把Fourier级数展开后得到的相位与振幅的乘积,定义为低维步态特征向量。在小样本的数据库上用Fisher线性分类器验证所研究算法的性能,正确分类率为79.17%,在步态数据库不很理想的情况下也获得了较好的识别率。
基于广义多尺度分析理论,针对不同的应用图像或信号库,得到最优小波分解, 并在人体步态识别中与二维小波矩结合进行应用。在三维物体的表示方面, 作为三维物体的一种无冗余的描述和识别方法,提出了三维小波矩理论。与现存的方法相比,它不但具有平移、缩放和旋转不变性,在径向上还增加了多尺度分析的特性。可以根据不同的需要,提供多层次的特征描述子,同时引进球面调和函数加速算法和小波的Mallat算法后,使小波矩的计算得到了双重加速。有人计划搭建实用的三维物体检索平台,将进一步完善该算法。
此外,有人在基于人体生物特征不仅包含静态外观信息,也包含行走运动的动态信息的思想,提出了一种判决级上融合人体静态和动态特征的身份识别方法。利用此方法在不同融合规则下的实验结果表明,融合后的识别性能均优于使用任何单一模态下的识别性能。
‘叁’ ts涓鏂囨槸浠涔堟剰镐濓纻
DUTS鍏ㄧО涓箧eepU-Tracker with Similarity learning锛堟繁搴︾浉浼煎害瀛︿範鐩镙囱窡韪鍣锛夛纴鏄鐩鍓嶈缉涓哄厛杩涚殑鐗╀綋璺熻釜绠楁硶涔嬩竴銆傚畠閲囩敤娣卞害瀛︿範鍜岀浉浼煎害瀛︿範鐩哥粨钖堢殑鏂规硶锛岃兘澶熷湪澶嶆潅鑳屾櫙涓嫔嗳纭鍦拌窡韪鐗╀綋镄勪綅缃鍜屽舰鐘讹纴鍏锋湁杈冮珮镄勭簿搴﹀拰椴佹掓с
璇ョ畻娉曞湪瀹为檯搴旂敤涓寰楀埌浜嗗箍娉涚殑搴旂敤銆备緥濡傦纴鍦ㄧ洃鎺х郴缁熶腑锛屼娇鐢―UTS鍙浠ヨ嚜锷ㄨ瘑鍒鍜岃窡韪琛屼汉銆佹苯杞︾瓑鐗╀綋锛屾湁鏁堟彁楂树简鐩戞带绯荤粺镄勫畨鍏ㄦу拰鍙闱犳э绂鍦ㄨ嚜锷ㄩ┚椹堕嗗烟锛娈UTS涔熷彲浠ョ敤浜庤溅杈嗙殑鐗╀綋璺熻釜鍜屼綅缃璇嗗埆锛屽府锷╄溅杈嗗疄鐜拌嚜涓诲艰埅鍜屾櫤鑳介┚椹躲
镐讳箣锛娈UTS鏄涓绉嶉珮鏁埚嗳纭镄勭墿浣撹窡韪绠楁硶锛屽叿链夊箍娉涚殑搴旂敤鍓嶆櫙鍜屽彂灞旷┖闂达纴鏄璁$畻链鸿呜夐嗗烟镄勯吨瑕佺爷绌舵柟钖戜箣涓銆
‘肆’ 行人检测
参考资料:
行人检测算法
行人检测是使用计算机视觉技术来判断图像或视频中是否存在行人。可以通过跟行人跟踪,行人重识别技术,来应用于人工智能系统,车辆辅助驾驶系统、智能交通等领域
① 处理数据
② 训练模型
③ 输出目标位置
① 外观差异大。包括视觉、姿态、服饰和附着物、光照、成像距离等。行人不同的运动姿态、角度,都会显示出不同的外观,而且成像距离远近不一,也会造成外观大小不同
② 遮挡问题,在行人密集的地方,会发生行人被遮挡的问题,或者是被周围的建筑物遮挡住
③ 背景复杂,有些物体的外观、造型、颜色、纹理等都比较接近人体,例如雕塑或人像广告牌、假人等。之前就有个新闻说红绿灯行人越线检测时,把公共汽车上的代言人广告中的代言人也检测了出来
④ 检测速度,行人检测一般使用了比较复杂的模型,运算量相当大,要达到实时非常困难,一般需要大量的优化
Faster R-CNN
文献[16]分析了Faster R-CNN在行人检测问题上的表现,结果表明,直接使用这种算法进行行人检测效果并不满意。作者发现,Faster R-CNN中的RPN网络对提取行人候选区域是相当有效的,而下游的检测网络表现的不好。作者指出了其中的两个原因:对于小目标,卷积层给出的特征图像太小了,无法有效的描述目标;另外,也缺乏难分的负样本挖掘机制。作者在这里采用了一种混合的策略,用RPN提取出候选区域,然后用随机森林对候选区域进行分类。这一结构如下图所示:
DeepParts
文献[21]提出了一种基于部件的检测方案,称为DeepParts,致力于解决遮挡问题。这种方案将人体划分成多个部位,分别进行检测,然后将结果组合起来。部位划分方案如下图所示:
整个系统的结构如下图所示:
RepLoss
RepLoss[14]由face++提出,主要目标是解决遮挡问题。行人检测中,密集人群的人体检测一直是一个难题。物体遮挡问题可以分为类内遮挡和类间遮挡两类。类内遮挡指同类物体间相互遮挡,在行人检测中,这种遮挡在所占比例更大,严重影响着行人检测器的性能。
针对这个问题,作者设计也一种称为RepLoss的损失函数,这是一种具有排斥力的损失函数,下图为RepLoss示意图:
RepLoss 的组成包括 3 部分,表示为:
其中L_Attr 是吸引项,需要预测框靠近其指定目标;L_RepGT 和 L_RepBox 是排斥项,分别需要当前预测框远离周围其它的真实物体和该目标其它的预测框。系数充当权重以平衡辅助损失。
HyperLearner
文献[25]提出了一种称为HyperLearner的行人检测算法,改进自Faster R-CNN。在文中,作者分析了行人检测的困难之处:行人与背景的区分度低,在拥挤的场景中,准确的定义一个行人非常困难。
作者使用了一些额外的特征来解决这些问题。这些特征包括:
apparent-to-semantic channels
temporal channels
depth channels
为了将这些额外的特征也送入卷积网络进行处理,作者在VGG网络的基础上增加了一个分支网络,与主体网络的特征一起送入RPN进行处理:
其他的基本上遵循了Faster R-CNN框架的处理流程,只是将anchor参数做了改动。在实验中,这种算法相比Faster R-CNN有了精度上的提升。
从上面的回顾也可以看出,与人脸检测相比,行人检测难度要大很多,目前还远称不上已经解决,遮挡、复杂背景下的检测问题还没有解决,要因此还需要学术界和工业界的持续努力。