激光雷达的目标跟踪

小白学视觉

共 3177字,需浏览 7分钟

 · 2021-10-02


点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

文章导读

本文介绍激光点云的目标跟踪算法,跟踪算法主要分为生成式和判别式两类,传统的滤波跟踪大多属于生成式,而近几年深度学习做跟踪基本归为判别式跟踪方法。本文从传统的卡尔曼滤波原理说起,然后分析工程中点云目标跟踪可能遇到的问题。


有哪些目标跟踪算法?

目标跟踪就是在连续的数据序列中,建立所需要跟踪目标的位置关系,得到目标完整的运动轨迹。通常是给定上一帧的目标位置特征,在下一帧中对该目标的位置以及边界框的尺寸大小进行预测。


目标跟踪的常用算法很多,从传统的滤波算法到深度学习的网络预测,可以分为两大类:

  • 生成式模型:建立目标模型或者提取目标特征,利用外观表征在后续帧中进行相似性搜索,最小化跟踪目标和候选目标之间的误差进行定位。

  • 判别式模型:通过对比目标模型和背景信息的差异,将目标模型提取出来,从而得到当前帧中的目标位置。


传统的跟踪算法大多属于生成式模型,而深度学习的算法大多属于判别式模型,几种经典的算法如下:


基于均值漂移的跟踪:均值漂移是基于概率密度分布,使目标的搜索一直沿着概率梯度上升的方向,迭代收敛到概率分布的峰值上。


基于卡尔曼滤波的跟踪:通过检测或者其他方式得到目标的观测位置,并根据运动方程从上一时刻的位置信息预测当前时刻的位置信息,将观测结果和预测结果进行加权平均得到最终的目标位置信息。


基于粒子滤波的跟踪:对目标基于粒子分布进行建模,定义一种相似度度量来确定与目标之间的匹配程度。然后按照高斯分布撒粒子,统计其相似度来确定目标可能的位置信息。


基于核相关滤波的跟踪:通过设计一个滤波模板,利用该模板与目标候选区域做相关运算,最大输出响应的位置即为当前帧的位置信息。


基于深度学习的跟踪:利用卷积神经网络将目标从背景中提取出来,利用其对目标强大的特征抽象能力以及对目标运动过程的拟合能力实现跟踪任务。


均值漂移和卡尔曼滤波算法实现简单,但是参数调节麻烦,鲁棒性一般;相关滤波类算法跟踪速度较快,深度学习类方法精度较高,但是对硬件资源有一定要求。根据不同的需要选择最适合的滤波算法是工程中的关键。下面介绍几种常见的滤波算法:


卡尔曼滤波

卡尔曼滤波根据系统状态方程,通过系统输出作为观测方程来修正估计值,实现系统状态的最优估计。


其中涉及两个方程:状态方程和观测方程

状态方程是根据上一时刻的状态和控制变量以及过程噪声来估计当前时刻的状态,如下式:

qk是满足高斯分布的过程噪声,期望是0,方差是Qk。


观测方程是由当前时刻的估计值和测量噪声得到当前时刻的观测值。如下式:

rk是满足高斯分布的测量噪声,期望是0,方差是Rk。


卡尔曼滤波可以分为两个部分:

预测阶段根据上一时刻的后验估计值来估计当前时刻的状态,得到当前时刻的先验估计值;


校正阶段使用当前时刻的测量值来更新预测阶段估计值,得到当前时刻的后验估计值。


其中先验估计是根据系统过程原理或者经验得到的估计值,实际应用中可以通过传感器数据去预测下一时刻的数据。后验估计是结合之前的先验状态估计值,再加权测量值得到一个理论上最接近真实值的结果。


卡尔曼滤波仅适用于线性系统,并且系统的过程噪声和测量噪声均为高斯白噪声。然后现实场景中一般系统状态变量的差分方程都是非线性的。


扩展卡尔曼滤波


扩展卡尔曼滤波可以将非线性系统在其参考点上做泰勒级数展开,取其一阶线性部分作为该非线性模型的逼近,从而得到非线性系统在当前时刻的线性化描述。所以它的状态方程和观测方程如下:

状态方程:


观测方程:


当我们将非线性系统线性化后,扩展卡尔曼滤波后面的原理和推导流程就和卡尔曼滤波一样了。


扩展卡尔曼滤波利用线性化来近似非线性函数,但是如果在近似点非线性程度越高、概率分布本身越不确定,得到的近似结果就会越差,通俗点说就是泰勒展开式中被忽略的高阶项带来的误差有可能是滤波发散。


无迹卡尔曼滤波


无迹卡尔曼滤波通过无损变换来近似一个高斯分布,通过使用加权统计线性回归过程来实现随机线性化。


它通过含有均值和协方差的确定的Sigma点来近似概率分布,通过系统的非线性模型生成更多的Sigma 点,经过选择合适的权值估计均值和协方差,避免了求解雅克比矩阵。相比EKF,它没有丢弃高阶项所有具有更高的估计精度,满足了具有各种特殊要求的非线性滤波和控制方面的应用。


所以无迹卡尔曼滤波是对非线性系统的概率密度分布进行逼近,而不是对非线性系统函数进行逼近。但是无迹卡尔曼滤波采用抽样近似的方法,计算量较大;相比于扩展卡尔曼滤波,只有在方差很大的情况下效果才明显。


点云的滤波跟踪


由于运动的场景比较复杂并且障碍物形状经常发生变化,如何跟踪一个不断变化的目标是跟踪任务的一大挑战。


基于点云的目标跟踪存在的难点如下:

物体遮挡:不管是图像数据还是点云数据都会存在物体被遮挡的问题,如下图所示,右下方的车辆被遮挡后导致点云数据被截断,进而特征分布发生了变化。检测输出的外接框形状会出现变化导致跟踪拿不到稳定的观测值。


物体形变:由于激光点云近密远疏的采样特性,同一个物体在不同的位置反射回来的点云特征会出现很大的变化,而物体表征模型的变化会造成检测和跟踪难以适应,如下图所示:一辆车从后方开到前方时,外观表征的不同。


背景干扰:如果运动目标比较靠近场景中的静态障碍物,采用传统聚类算法得到的检测目标很可能外观表征会被放大,出现如下图所示的问题,红路灯处路边的骑车人和灌木点集靠的太近被聚类在一起,当骑车人运动时又被分开,造成跟踪目标的表征出现变化。


其实在实际应用中会出现很多特殊场景导致动态障碍物的点云分布产生变化,严重影响跟踪效果。追根溯源点云目标跟踪的好坏和两点有关:

  1. 目标检测的稳定性;

  2. 选择稳定的观测值做数据关联;


根据点云检测的结果有很多目标属性可以作为观测值,比如目标的中心点,重心点,长宽高,横纵向速度等等。选择不同位置的点对跟踪的稳定性是有影响的,车辆尾部中心坐标一般就优于3D框的中心点。而且对于低速小车,KF/EKF的效果已然能够满足功能需求。




好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报