智慧交通day02-车流量检测实现09:SORT/deepSORT

简介: SORT核心是卡尔曼滤波和匈牙利匹配两个算法。流程图如下所示,可以看到整体可以拆分为两个部分,分别是匹配过程和卡尔曼预测加更新过程,都用灰色框标出来了。

SORT和DeepSORT是多目标跟踪中两个知名度比较高的算法。DeepSORT是原团队对SORT的改进版本。现在来解析一下SORT和DeepSORT的基本思路。


1.SORT


SORT核心是卡尔曼滤波匈牙利匹配两个算法。流程图如下所示,可以看到整体可以拆分为两个部分,分别是匹配过程卡尔曼预测加更新过程,都用灰色框标出来了。


9db80e326edc472dadbda607c05f8a0c.png


关键步骤:轨迹卡尔曼滤波预测→ 使用匈牙利算法将预测后的tracks和当前帧中的detecions进行匹配(IOU匹配) → 卡尔曼滤波更新


卡尔曼滤波分为两个过程:预测更新。SORT引入了线性速度模型与卡尔曼滤波来进行位置预测,先进行位置预测然后再进行匹配。运动模型的结果可以用来预测物体的位置。


匈牙利算法解决的是一个分配问题,用IOU距离作为权重(也叫cost矩阵),并且当IOU小于一定数值时,不认为是同一个目标,理论基础是视频中两帧之间物体移动不会过多。在代码中选取的阈值是0.3。scipy库的linear_sum_assignment都实现了这一算法,只需要输入cost_matrix即代价矩阵就能得到最优匹配。


2.DeepSort


DeepSORT是SORT的续作,整体框架没有大改,还是延续了卡尔曼滤波加匈牙利算法的思路,在这个基础上增加了鉴别网络Deep Association Metric。


下图是deepSORT流程图,和SORT基本一样,就多了级联匹配(Matching Cascade)和新轨迹的确认(confirmed)。


81436946543b4965bb5065518f7e74b3.png


关键步骤:轨迹卡尔曼滤波预测→ 使用匈牙利算法将预测后的tracks和当前帧中的detecions进行匹配(级联匹配和IOU匹配) → 卡尔曼滤波更新


级联匹配流程图如下所示:


1f232b5753a84946b3b43c2d698d63b5.png


其中上半部分就是相似度估计,也就是算这个分配问题的代价函数。下半部分依旧使用匈牙利算法进行检测框和跟踪框的匹配。


总结:


1.SORT算法


SORT是利用强大的CNN检测器的检测结果来进行多目标跟踪使用基于卡尔曼滤波(Kalman filter)与匈牙利算法(Hungarian algorithm)的方法来进行跟踪。


2.deepSORT算法


DeepSORT是在SORT基础上进行的修改,增加了级联匹配和目标的确认,还是使用卡尔曼滤波加匈牙利算法进行目标跟踪。


1572bf5f9e434d23990bb7c1f3622372.png


1.SORT核心是卡尔曼滤波和匈牙利算法。
  流程图如下所示,可以看到整体可以拆分为两个部分,分别是匈牙利匹配过程和卡尔曼预测加更新过程,都用灰色框标出来了。
  关键步骤:
  --> 卡尔曼滤波预测出预测框
  --> 使用匈牙利算法将卡尔曼滤波的预测框和yolo的检测框进行IOU匹配来计算相似度 
  --> 卡尔曼滤波使用yolo的检测框更新卡尔曼滤波的预测框
2.卡尔曼滤波分为两个过程:预测过程和更新过程。
  SORT引入了线性速度模型与卡尔曼滤波来进行位置预测,先进行位置预测然后再进行匹配。运动模型的结果可以用来预测物体的位置。
  匈牙利算法解决的是一个分配问题,用IOU距离作为权重(也即cost代价矩阵),并且当IOU小于一定数值(IOU阈值)时,
  不认为是同一个目标,理论基础是视频中两帧之间物体移动不会过多。
  在代码中选取的IOU阈值是0.3。scipy库的linear_sum_assignment实现了匈牙利算法,只需要输入cost_matrix代价矩阵(全部预测框和全部检测框两两IOU计算结果)
  到linear_sum_assignment中就能得到预测框和检测框两两最优匹配的组合。


6e8da39624b24e2880695305610b2eb0.png


1.跟踪器链(列表):
  实际就是多个的卡尔曼滤波KalmanBoxTracker自定义类的实例对象组成的列表。
          每个目标框都有对应的一个卡尔曼滤波器(KalmanBoxTracker实例对象),
          KalmanBoxTracker类中的实例属性专门负责记录其对应的一个目标框中各种统计参数,并且使用类属性负责记录卡尔曼滤波器的创建个数,增加一个目标框就增加一个卡尔曼滤波器(KalmanBoxTracker实例对象)。
  把每个卡尔曼滤波器(KalmanBoxTracker实例对象)都存储到跟踪器链(列表)中。
2.unmatched_detections(列表):
  检测框中出现新目标,但此时预测框(跟踪框)中仍不不存在该目标,
  那么就需要在创建新目标对应的预测框/跟踪框(KalmanBoxTracker类的实例对象),
  然后把新目标对应的KalmanBoxTracker类的实例对象放到跟踪器链(列表)中。
3.unmatched_trackers(列表):
  当跟踪目标失败或目标离开了画面时,也即目标从检测框中消失了,就应把目标对应的跟踪框(预测框)从跟踪器链中删除。
  unmatched_trackers列表中保存的正是跟踪失败即离开画面的目标,但该目标对应的预测框/跟踪框(KalmanBoxTracker类的实例对象)
  此时仍然存在于跟踪器链(列表)中,因此就需要把该目标对应的预测框/跟踪框(KalmanBoxTracker类的实例对象)从跟踪器链(列表)中删除出去。


DeepSORT是SORT的续作,整体框架没有大改,还是延续了卡尔曼滤波
        加匈牙利算法的思路,并且在这个基础上增加了鉴别网络Deep Association Metric。
下图是deepSORT流程图,和SORT基本一样,就多了级联匹配(Matching Cascade)
                        和新轨迹的确认(confirmed)。


472c1d8552004adc96eca0b30a9d6cb1.png


关键步骤:
  --> 卡尔曼滤波预测出预测框
  --> 使用匈牙利算法将卡尔曼滤波的预测框和yolo的检测框进行级联匹配加IOU匹配
                                                            两者分别来计算相似度 
  --> 卡尔曼滤波使用yolo的检测框更新卡尔曼滤波的预测框
级联匹配计算相似度的流程图如下所示:
  上半部分为相似度估计,也就是计算这个分配问题的代价矩阵。
  下半部分依旧是使用匈牙利算法进行检测框和预测框的匹配。


4bd3f2157d4348f09c3433ed3aa0d19e.png

目录
相关文章
使用光流法跟踪汽车
使用光流估计在视频序列中检测和跟踪汽车。
72 0
|
编解码 计算机视觉 智慧交通
智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN++(2019)
严格的平移不变性只存在于无填充网络中,如AlexNet。以前基于孪生的网络设计为浅层网络,以满足这一限制。然而,如果所使用的网络被ResNet或MobileNet等现代网络所取代,填充将不可避免地使网络变得更深,从而破坏了严格的平移不变性限制,不能保证物体最后的heatmap集中于中心。
145 0
智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN++(2019)
|
机器学习/深度学习 算法 智慧交通
智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习
Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示。共享权值意味着两边的网络权重矩阵一模一样,甚至可以是同一个网络。
129 0
智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习
|
算法 决策智能 计算机视觉
智慧交通day02-车流量检测实现07:匈牙利算法
有一种很特别的图,就做二分图,那什么是二分图呢?就是能分成两组,U,V。其中,U上的点不能相互连通,只能连去V中的点,同理,V中的点不能相互连通,只能连去U中的点。这样,就叫做二分图。
134 0
|
算法 数据格式
DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(毕业设计)
DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(毕业设计)
161 0
|
算法 计算机视觉 智慧交通
智慧交通day02-车流量检测实现10:多目标追踪实现
该方法实现了SORT算法,输入是当前帧中所有物体的检测框的集合,包括目标的score,输出是当前帧标的跟踪框集合,包括目标的跟踪的id要求是即使检测框为空,也必须对每一帧调用此方法,返回一个类似的输出数组,最后一列是目标对像的id。
110 0
|
智慧交通
智慧交通day02-车流量检测实现06:目标估计模型-卡尔曼滤波(汇总)
智慧交通day02-车流量检测实现06:目标估计模型-卡尔曼滤波(汇总)
77 0
|
智慧交通
智慧交通day02-车流量检测实现06:目标估计模型-卡尔曼滤波
在这里我们主要完成卡尔曼滤波器进行跟踪的相关内容的实现。
87 0
|
计算机视觉 智慧交通
智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)
与普通的视频跟踪网络不同的是,SiamMask可以同时完成视频跟踪和实例级分割的任务。如下图所示,与传统的对象跟踪器一样,依赖于一个简单的边界框初始化(蓝色)并在线操作。与ECO(红色)等最先进的跟踪器不同,SiamMask(绿色)能够生成二进制分割,从而更准确地描述目标对象。
155 0
|
机器学习/深度学习 计算机视觉 智慧交通
智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-汇总
Siamese网络衡量两个输入的相似程度,输出是一个[0,1]的浮点数,表示二者的相似程度。孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示。通过Loss的计算,评价两个输入的相似度。
102 0