基于PicoDet和卡尔曼滤波的多目标跟踪
本项目遵循SORT算法思路,用PaddleX的PicoDet作行人检测器,设计基于卡尔曼滤波的边框估计模型,以边框交并比为度量,通过Jonker-Volgenant算法匹配,实现简单行人多目标跟踪。还分析了SORT不足,为后续按DeepSORT思路优化提供方向。

0 项目引言
当前基于深度学习的多目标跟踪思路主要有两种,分别是JDE(Jointly learns the Detector and Embedding model)和SDE(Separate Detection and Embedding model),其中代表性的有SORT1 和DeepSORT2,遵循Tracking-by-Detection思路,卡尔曼滤波算法3(Kalman Filter)是这些方法的基础,所以本项目的主要目的也是通过对卡尔曼滤波的通俗讲解,以探寻前人优秀工作轨迹和自我启发。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
本项目的检测器部分使用PaddlePaddle—PaddleX4全流程开发套件接口,跟踪器部分主要描述卡尔曼滤波的算法思想和步骤,并且设计简易的卡尔曼模型,实现基于检测器预测的多目标跟踪。
与本项目类似的还有《基于PP-YOLO Tiny和DSST算法的多目标跟踪》,该方案将生成式模型修改为了相关式模型。
1 目标检测器
以行人跟踪为例,准备好的行人视频位置为 work/origin.mp4,它用来测试后面的跟踪任务。
1.1 模型导出
说明:本章的代码不一定要运行,权重已经保存在 models/。
飞桨最近发布了新模型 PP-PicoDet5 ,便采用该模型作为检测器。但为了编写方便不采用yaml形式配置项目,恰好PaddleX存在该模型的接口,所以可以直接调用该模型无需重新编写。
本节主要是将PaddleX模型装载预训练的权重,这里选择下载这个PicoDet-L预训练。
获取 COCO 数据集预训练权重。
In [ ]!mkdir work/pretrained/!wget https://paddledet.bj.bcebos.com/models/picodet_l_640_coco.pdparams -P work/pretrained/登录后复制
安装最新版 PaddleX,它支持 PicoDet 模型。
In [ ]!pip install paddlex==2.1.0!pip install scikit-image登录后复制 In [ ]
import paddleimport paddlex as pdxfrom paddlex import transforms as Timport shutilimport globimport osimport numpy as npimport pandas as pdimport cv2from PIL import Imageimport skimageimport matplotlib.pyplot as plt%matplotlib inline登录后复制
考虑到笔者不想重新训练行人跟踪模型,所以将要手动灌入权重等信息,导出为部署模型,但是 PaddleX 不提供接口支持,所以就自己实现。
首先是模型框架搭建,注意 “backbone” 要和预训练 “ESNet_l” 相对应,然后将参数灌入。
In [ ]def set_model_params(model, params_path): param_state_dict = paddle.load(params_path) model_state_dict = model.net.state_dict() for k in param_state_dict.keys(): if 'backbone.res5' in k: new_k = k.replace('backbone', 'bbox_head.head') if new_k in model_state_dict: value = param_state_dict.pop(k) param_state_dict[new_k] = value num_params_loaded = 0 for k in model_state_dict: if k not in param_state_dict: print("{} is not in pretrained model".format(k)) elif list(param_state_dict[k].shape) != list(model_state_dict[k].shape): print("[SKIP] Shape of pretrained params {} doesn't match.(Pretrained: {}, Actual: {})" .format(k, param_state_dict[k].shape, model_state_dict[k].shape)) else: model_state_dict[k] = param_state_dict[k] num_params_loaded += 1 model.net.set_state_dict(model_state_dict) print("There are {}/{} variables loaded into PicoDet.".format(num_params_loaded, len(model_state_dict))) return model登录后复制 In [ ]model = pdx.det.PicoDet(backbone='ESNet_l')model = set_model_params(model, params_path='work/pretrained/picodet_l_640_coco.pdparams')登录后复制
There are 660/660 variables loaded into PicoDet.登录后复制
因为没有训练集,所以也就没有标签和评估变换,这也是需要手动赋予的。
In [ ]model.labels = [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']from paddlex import transforms as Tmodel.test_transforms = T.Compose([ T.Resize(target_size=640, interp='CUBIC'), T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])登录后复制
相关攻略
FDUSD脱锚惊魂夜:币安生态稳定币的信任危机与系统性风险 2025年4月2日夜间,加密货币市场经历了一场突如其来的“压力测试”。由香港First Digital Trust Limited发行的美元稳定币FDUSD,在市场上演了惊心动魄的脱锚跳水,其兑USDT价格一度暴跌至0 8726美元。这场震
最近又折腾了下 Obsidian 的 Git 插件,虽然也有点麻烦,但它是适合我的。下面介绍下怎么配置和使用。 第一次使用 Obsidian 是在 2024 年,这是翻阅之前的文章 《Obsidia
这项由华为技术有限公司、南洋理工大学、香港大学和香港中文大学联合完成的突破性研究发表于2026年1月,论文编号为arXiv:2601 01426v1。研究团队通过一种名为SWE-Lego的创新训练方
12 月 27 日消息,科技媒体 NeoWin 今天(12 月 27 日)发布博文,报道称 AI 代码编辑器 Windsurf 本周发布 Wave 13 版,通过大幅升级多智能体工作流、性能可访问
NEO(小蚁区块链)旨在构建智能经济网络。NEO通过资产数字化和智能合约实现自动化管理,用户需在支持NEO交易的平台注册账户并获取数字货币,选择合适的交易对后,即可下单交易并确认。交易完成后,可在账户中查看NEO资产,或转移至个人数字储存中安全保管NEO。
热门专题
热门推荐
速览攻略:世界圣羽翼王核心打法与全面解析 本攻略将为你完整呈现《洛克王国》世界圣羽翼王的通关秘籍,深度剖析两种高效实战打法:追求极致速度的“燃薪虫四回合速通”与稳定输出的“酷拉无限连击流”。文章将进一步解析这位翼系精灵王的技能机制、属性克制关系及其在PVE与PVP中的实战定位,帮助你彻底掌握应对其隐
速览:工程系统核心机制解析 在《异种航员2》中,工程系统是整个抵抗力量赖以运转的“战略后勤中枢”。无论是研发新武器、生产重型装甲还是制造先进飞行器,所有实体装备的产出都依赖于此。简言之,该系统的核心运作围绕着两大关键:工程师人力的高效配置与全球稀缺资源的精细化调度。工程师的数量直接决定了每个项目的建
核心速览 在《洛克王国世界》中,治愈兔是一位兼具功能性任务角色与实战辅助能力的精灵。它的价值不仅在剧情推进中体现,更在于对战里出色的治疗与防护表现。本文将为你全面解析治愈兔的精准获取位置、种族属性特点以及实战技能搭配,助你顺利捕捉并最大化其在队伍中的作用。所有关键信息将通过清晰的图文内容详细展示,确
速览 在《红色沙漠》中,挑战传说之狼这一强大的任务BOSS,需要玩家进行充分的准备并遵循完整的任务流程。整个过程环环相扣,你必须首先参与塞莱斯特家族的势力任务,通过完成任务将家族声望提升至指定等级,才能解锁【传说之狼】的专属讨伐任务,最终直面这个传说中的强大生物。 红色沙漠传说之狼怎么打 归根结底,
【宝可梦Pokopia】舒适度全解析:快速提升环境等级的核心秘诀 你是否正在探索《宝可梦Pokopia》世界,并希望有效提升宝可梦栖息地的舒适度?舒适度不仅是衡量宝可梦快乐程度的晴雨表,更是解锁游戏核心内容、加速发展的关键驱动指标。本攻略将系统性地为你揭示提升舒适度的核心途径,涵盖从装饰栖息地、建造





