面包屑图标 当前位置: 首页
AI资讯
热点详情

基于PicoDet和卡尔曼滤波的多目标跟踪

AI热点日报
AI热点日报时间:2025-07-23
热点解读

本项目遵循SORT算法思路,用PaddleX的PicoDet作行人检测器,设计基于卡尔曼滤波的边框估计模型,以边框交并比为度量,通过Jonker-Volgenant算法匹配,实现简

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

基于picodet和卡尔曼滤波的多目标跟踪 - 游乐网

0 项目引言

当前基于深度学习的多目标跟踪思路主要有两种,分别是JDE(Jointly learns the Detector and Embedding model)和SDE(Separate Detection and Embedding model),其中代表性的有SORT11 和DeepSORT22,遵循Tracking-by-Detection思路,卡尔曼滤波算法33(Kalman Filter)是这些方法的基础,所以本项目的主要目的也是通过对卡尔曼滤波的通俗讲解,以探寻前人优秀工作轨迹和自我启发。

本项目的检测器部分使用PaddlePaddle—PaddleX44全流程开发套件接口,跟踪器部分主要描述卡尔曼滤波的算法思想和步骤,并且设计简易的卡尔曼模型,实现基于检测器预测的多目标跟踪。

与本项目类似的还有《基于PP-YOLO Tiny和DSST算法的多目标跟踪》,该方案将生成式模型修改为了相关式模型。

1 目标检测器

以行人跟踪为例,准备好的行人视频位置为 work/origin.mp4,它用来测试后面的跟踪任务。

基于PicoDet和卡尔曼滤波的多目标跟踪 - 游乐网        

1.1 模型导出

说明:本章的代码不一定要运行,权重已经保存在 models/。

飞桨最近发布了新模型 PP-PicoDet55 ,便采用该模型作为检测器。但为了编写方便不采用yaml形式配置项目,恰好PaddleX存在该模型的接口,所以可以直接调用该模型无需重新编写。

本节主要是将PaddleX模型装载预训练的权重,这里选择下载这个PicoDet-L预训练。

基于PicoDet和卡尔曼滤波的多目标跟踪 - 游乐网        

获取 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])])
登录后复制    
热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:基于PicoDet和卡尔曼滤波的多目标跟踪要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.php.cn/faq/1421731.html
git qq ai yy red asicembedding

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-08 20:13
Craftman AI聊天机器人构建工具

最近留意到一款AI聊天机器人构建工具——Craftman,它的核心思路很有意思:让企业或个人能用自己已有的数据来训练ChatGPT,然后直接嵌入到网站上做智能客服或问答助手。简单来说,就是把通用大模型变成你的专属知识库响应系统。什么是Craftman?Craftman是一个AI聊天机器人构建平台,允

AI热点2026-07-08 20:13
Vidu长视频AI大模型一键生成16秒1080P高清视频

如果告诉你,现在借助AI技术就能一键生成时长16秒、分辨率达1080P的高清视频,并且画面流畅自然、物理规律真实可信,你是不是觉得有些不可思议?事实上,这就是Vidu——由中国生数科技与清华大学联合打造的全球首个长时长、高一致性、高动态性视频大模型。它采用独创的Diffusion与Transform

AI热点2026-07-08 20:13
Hansei通过AI聊天帮助用户高效便捷简化知识库访问流程

想象一下,你拥有一个庞大而复杂的知识库,里面堆满了各类文档、PDF文件以及YouTube视频教程。过去想要查找某份资料,往往需要翻遍目录、反复尝试关键词搜索,效率低下令人困扰。如今,借助Hansei这款知识库管理工具,一切变得轻松高效——你只需像与朋友聊天一样,用自然语言提出需求,AI助手就能从你的

AI热点2026-07-08 20:13
Blinkn ChatGPT智能购物助手

Blinkn是基于ChatGPT的智能电商购物助手,具备语义理解、精准产品推荐与比较、多语言支持等功能,可与主流平台无缝集成并个性化定制,提供7×24小时实时客服,高效解决购物疑问,显著减少决策摩擦,提升转化率与用户体验。

延伸阅读