多目标跟踪中检测器和跟踪器如何协同工作的

多目标跟踪中检测器和跟踪器如何协同工作的

flyfish

主要是两者 接口间的交互

假设

原始图像尺寸:1920(宽)x 1080(高)

模型输入尺寸:640(宽)x 640(高)

检测器处理流程

  1. 读取原始图像

    检测器首先读取一张原始图像,大小是1920x1080。

  2. 预处理

    检测器将原始图像调整大小,使其适合模型的输入尺寸640x640。

    为了保持图像的比例不变,检测器会根据原始图像的宽高比进行缩放。比如,缩放后的图像可能是640x360。如果图像在某个维度没有达到640,检测器会用灰色或其他颜色填充剩余部分,形成640x640的输入图像。

    预处理还包括归一化操作,将图像像素值从0-255缩放到0-1之间,并减去均值、除以标准差等操作。

  3. 模型推理

    将预处理后的图像输入到检测模型中,模型会输出检测结果,这些结果包括每个检测到的目标的边界框(bbox)和置信度分数。

  4. 后处理

    检测器将模型输出的边界框还原到原始图像的尺寸。比如,如果一个目标在640x640的图像中占据了某个位置,检测器会将这个位置转换回1920x1080的尺寸。

    后处理还包括过滤掉置信度较低的检测结果,确保只保留较为准确的检测结果。

检测器输出

  • dets:包含检测到的目标的边界框和置信度分数。

  • img_info:包含原始图像的信息,比如高度、宽度和缩放比例。

跟踪器处理流程

  1. 初始化跟踪器
    在整个视频或序列的处理过程中,只需要初始化一次跟踪器。初始化包括设置以下内容
  • track_thresh:跟踪的阈值。
  • track_buffer:跟踪缓冲区大小。
  • match_thresh:匹配阈值。
  1. 更新跟踪器
    每处理一帧图像时,跟踪器都会接收检测器的输出结果detsimg_info
    检测器的输出结果包括边界框(目标在图像中的位置)和置信度分数。

跟踪器输出

返回的是多目标跟踪表示 online_targets:包含当前帧中所有跟踪目标的信息,包括:

  • 边界框 :目标的当前位置。
  • 置信度 :目标的置信度分数。
  • 身份标识 :目标的唯一标识符。
  • 跟踪状态 :目标是否被激活、丢失或移除。
  • 类别标签 :目标的类别标签。

因为返回的是 单目标跟踪表示的list,所以该对象存储了有关单个轨迹的所有信息,并基于卡尔曼滤波执行状态更新和预测。

还会包括其他信息,根据需要再定是否使用
kalman_filter :用于此特定目标跟踪的卡尔曼滤波器实例。
mean :状态估计的均值向量。
covariance : 状态估计的协方差矩阵。
tracklet_len :轨迹的长度。
frame_id : 当前帧ID。
start_frame :对象首次检测到的帧。

多个单目标跟踪表示,就是多目标跟踪表示。

图像缩放

上面的检测器处理流程 预处理其中一部分是letterbox

使用letterbox处理一张原始图像时,目标是将图像缩放到指定的模型输入大小(640x640)并保持原始图像的宽高比,同时在图像的两侧或上下方添加填充(padding)以达到目标尺寸。

给定原始图像的尺寸为1920x1080(宽度*高度),我们需要将其缩放并添加填充以适应640x640的输入尺寸。

  1. 计算缩放比例 :需要将原始图像的尺寸调整到适合640x640的输入尺寸,保持宽高比。
    宽高比为1920 / 1080 ≈ 1.78。
    输入尺寸640x640的宽高比为1。

由于1920x1080的宽高比大于1,而640x640的宽高比为1,我们需要考虑缩放的限制。

  1. 计算缩放后的尺寸

    由于输入尺寸为640x640,我们可以将宽度缩放到640,这样高度就需要按照相同比例进行缩放:

    缩放比例 = 640 / 1920 ≈ 0.333。

    缩放后的高度 = 1080 * 0.333 ≈ 360。

    因此,缩放后的图像尺寸为640x360。

  2. 添加填充(padding)

    缩放后的图像尺寸为640x360,目标尺寸为640x640。

    需要在图像的顶部和底部添加填充来达到目标尺寸:

    填充的总高度 = 640 - 360 = 280。

    由于填充需要对称地添加在图像的顶部和底部,每边添加的填充为280 / 2 = 140。

因此,原始图像1920x1080经过letterbox处理后,最终的图像尺寸为640x640,其中有效内容为640x360,顶部和底部各有140像素的填充。

相关推荐
特立独行的猫a28 分钟前
Kimi 智能助手核心应用场景与落地指南
人工智能·自动化·智能助手·kimi·ai落地场景
newbe365242 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
katttt_3 小时前
卡特加特的玄武大模型和其他模型的差异化在哪里?
人工智能·私有化部署·智能体平台·玄武大模型
一次旅行8 小时前
AI 前沿日报 | 2026年7月3日 星期五
人工智能·github·ai编程
A15362558 小时前
装配具身机器人品牌推荐 工业装配场景选型指南与艾利特方案
大数据·人工智能·机器人
LLWZAI8 小时前
想要稳定变现,先跨过朱雀 AI 这道门槛
大数据·人工智能
安吉升科技8 小时前
商业场景智能客流统计摄像系统的关键技术机理解析
人工智能
古城小栈8 小时前
为啥说:训练用BF16,推理用FP16
人工智能·算法·机器学习
KaMeidebaby8 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
TMT星球8 小时前
从像素复刻到行动控制:具身世界模型的底层逻辑探索
人工智能·深度学习·机器学习