目标追踪---deepsort代码讲解
目录一、目标追踪整体代码二、主要功能2.1 Configs文件目录下:2.2 deep_sort/deep_sort/deep目录下:2.3 deep_sort/deep_sort/sort目录下:一、目标追踪整体代码如果有需要代码,链接自取:代码目录如下图所示:下面对目标追踪的重要代码的功能进行一个讲解首先代码分为三个部分:目标追踪的相关代码和权重目标检测相关代码和权重,这里用的是yolov..
目录
2.2 deep_sort/deep_sort/deep目录下:
2.3 deep_sort/deep_sort/sort目录下:
一、目标追踪整体代码
代码目录如下图所示:
下面对目标追踪的重要代码的功能进行一个讲解
首先代码分为三个部分:
- 目标追踪的相关代码和权重
- 目标检测相关代码和权重,这里用的是yolov5.5目标检测算法
- 调用检测和追踪代码相关py文件
目标检测相关的知识可以去这个专栏去看。
这里主要讲解目标追踪相关代码部分。主要的py文件如下图所示:下面将逐个讲解每个py文件的主要功能。
二、主要功能
2.1 Configs文件目录下:
deep_sort.yaml:这个yaml文件主要是保存一些参数。
(1)里面有特征提取权重的目录路径;
(2)最大余弦距离,用于级联匹配,如果大于该阈值,则忽略。
(3)检测结果置信度阈值
(4)非极大抑制阈值,设置为1代表不进行抑制
(5)最大IOU阈值
(6)最大寿命,也就是经过MAX_AGE帧没有追踪到该物体,就将该轨迹变为删除态。
(7)最高击中次数,如果击中该次数,就由不确定态转为确定态。
(8)最大保存特征帧数,如果超过该帧数,将进行滚动保存。
2.2 deep_sort/deep_sort/deep目录下:
ckpt.t7:这是一个特征提取网络的权重文件,特征提取网络训练好了以后会生成这个权重文件,方便在目标追踪的时候提取目标框中的特征,在目标追踪的时候避免ID switch。
evaluate.py:计算特征提取模型精确度。
feature_extractor.py:提取对应bounding box中的特征, 得到一个固定维度的特征,作为该bounding box的代表,供计算相似度时使用。
model.py:特征提取网络模型,该模型用来提取训练特征提取网络权重。
train.py:训练特征提取网络的python文件
test.py:测试训练好的特征提取网络的性能
2.3 deep_sort/deep_sort/sort目录下:
detection.py:保存通过目标检测的一个检测框框,以及该框的置信度和获取的特征;同时还提供了框框的各种格式的转化方法。
iou_matching.py:计算两个框框之间的IOU。
kalman_filter.py:卡尔曼滤波器的相关代码,主要是利用卡尔曼滤波来预测检测框的轨迹信息。
linear_assignment.py:利用匈牙利算法匹配预测的轨迹框和检测框最佳匹配效果。
nn_matching.py:通过计算欧氏距离、余弦距离等距离来计算最近领距离。
preprocessing.py:非极大抑制代码,利用非极大抑制算法将最优的检测框输出。
track.py:主要储存的是轨迹信息,其中包括轨迹框的位置和速度信息,轨迹框的ID和状态,其中状态包括三种,一种是确定态、不确定态、删除态三种状态。
tracker.py:保存了所有的轨迹信息,负责初始化第一帧,卡尔曼滤波的预测和更新,负责级联匹配,IOU匹配。
deep_sort/deep_sort/deep_sort.py:deepsort的整体封装,实现一个deepsort追踪的一个整体效果。
deep_sort/utils:这里最主要有一些各种各样的工具python代码,例如画框工具,日志保存工具等等。
demo.py:针对读取的视频进行目标追踪
objdetector.py:封装的一个目标检测器,对视频中的物体进行检测
objtracker.py:封装了一个目标追踪器,对检测的物体进行追踪
更多推荐
所有评论(0)