拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AlphaPose 集成 JDE 多目标跟踪器:--detector tracker 模式使用与实现解析

AlphaPose 集成 JDE 多目标跟踪器:--detector tracker 模式使用与实现解析 人工智能计算机视觉深度学习【免费下载链接】AlphaPoseReal-Time and Accurate Full-Body Multi-Person Pose EstimationTracking System项目地址https://gitcode.com/gh_mirrors/al/AlphaPose点击查看免费下载导读本文围绕 detector/tracker/README.md 展开讲解 AlphaPose 如何将 MOT多目标跟踪能力接入人体姿态估计流程通过--detector tracker参数将检测器切换为 JDE 跟踪器在检测的同时输出每个人体的稳定跟踪 ID从而为视频姿态跟踪、行人重识别等场景提供逐帧身份一致性。阅读本文后你将掌握 JDE 预训练模型的获取与放置、命令行启用方式以及跟踪器内部的两阶段数据关联、卡尔曼滤波、轨迹生命周期管理等核心实现原理。一、为什么需要 MOT 跟踪器从单帧检测到跨帧身份AlphaPose 的常规检测器YOLO / YOLOX 等只负责在每一帧独立地给出人体边界框帧与帧之间没有身份关联。在视频场景下这会导致同一个人的检测框在相邻帧间无法建立对应关系姿态估计结果难以按人聚合、难以统计轨迹。--detector tracker模式将检测器替换为一个基于JDEJoint Detection and Embedding思路的多目标跟踪器它在一个前向推理内同时输出人体检测框和 ReID 外观嵌入特征再通过两阶段数据关联外观嵌入匹配 IoU 位置匹配与卡尔曼滤波预测为每个行人分配并维护稳定的track_id。AlphaPose 的跟踪实现改编自 Towards-Realtime-MOT 项目详见 detector/tracker/README.md。二、快速上手获取模型并启用跟踪原文档给出了完整的启用步骤此处补充路径细节与参数说明确保可直接照做1. 下载 JDE 预训练模型从 Towards-Realtime-MOT 项目发布的预训练模型中选择JDE-1088x608检测输入分辨率 1088×608下载得到权重文件后放置到以下目录AlphaPose/detector/tracker/data/跟踪器在代码中默认读取的权重路径为detector/tracker/data/jde.1088x608.uncertainty.pt见 detector/tracker/tracker_cfg.py 第 5 行与 detector/tracker_api.py 第 35 行。请确保下载的权重文件名与之匹配否则加载模型时会因找不到文件而失败。2. 启用跟踪在运行推理脚本时将检测器指定为 tracker--detector tracker例如结合 AlphaPose 的 scripts/demo_inference.py 运行视频推理时在命令行中传入该参数即可。检测器工厂函数 detector/apis.py 的get_detector()中opt.detector tracker分支会加载 detector/tracker_api.py 中的Tracker类并返回其实例可见 tracker 与其他检测器yolo、yolox、efficientdet_d并列作为一类可切换的检测后端。3. 跟踪器默认配置一览JDE 跟踪器配置 定义了以下默认参数其中多数可在tracker_cfg.py中直接调整配置项默认值作用CONFIGdetector/tracker/cfg/yolov3.cfgJDE 网络结构Darknet 版 YOLOv3 骨架WEIGHTSdetector/tracker/data/jde.1088x608.uncertainty.ptJDE 预训练权重路径IMG_SIZE(1088, 608)网络输入宽高宽 1088 × 高 608NMS_THRES0.6检测后处理的 NMS 阈值CONFIDENCE0.4tracker_cfg.py/0.05Tracker.__init__兜底值检测置信度阈值低于该值的框不会开启新轨迹BUFFER_SIZE30轨迹丢失缓冲区帧数即max_time_lost注意tracker_cfg.py中CONFIDENCE为0.4而 tracker_api.py 第 38 行的cfg.get(CONFIDENCE, 0.05)为默认兜底值实际生效值以配置文件为准。三、架构剖析Tracker 与检测器的统一接口1. 继承 BaseDetector无缝接入 AlphaPose 流程detector/tracker_api.py 中的Tracker类继承自 detector/apis.py 的BaseDetector因此它与其他检测器一样实现了三个抽象方法image_preprocess、images_detection、detect_one_img。这意味着 AlphaPose 上层scripts/demo_inference.py等无需感知底层是纯检测还是跟踪即可复用同一套数据流。load_model()构建Darknet网络nID14455即 ReID 嵌入分类的 ID 数量加载权重strictFalse支持多 GPU 的DataParallel部署。image_preprocess()支持输入图片路径字符串或原始帧数据torch.Tensor/np.ndarray内部调用 detector/tracker/preprocess.py 的prep_image/prep_frame完成预处理。images_detection()核心推理入口返回形状为(N, 7)的张量每一行包含(batch_idx, x1, y1, x2, y2, score, track_id)其中最后一列track_id正是跟踪器区别于普通检测器的关键输出。2. 输入预处理letterbox 保持宽高比detector/tracker/preprocess.py 提供了两个关键函数letterbox_image(img, img_size(1088, 608))按目标尺寸等比缩放原始图像短边不足部分用灰色127.5填充避免直接拉伸导致形变。prep_image/prep_frame将图像由 BGR 转 RGB、通道置前、归一化到[0,1]并扩为(1, 3, H, W)的批维度。四、核心算法两阶段数据关联与轨迹管理跟踪逻辑的完整实现位于 detector/tracker/tracker/multitracker.pyJDETracker.update()和 detector/tracker_api.pyTracker.images_detection()两者流程一致核心是两阶段关联 轨迹状态机1. 阶段一基于外观嵌入的匹配网络输出的每个检测框同时携带 ReID 特征向量。对当前所有轨迹trackedlost先用卡尔曼滤波预测新位置然后计算轨迹平滑特征与检测特征之间的余弦距离矩阵embedding_distance()matching.py计算余弦距离并归一化到[0,1]gate_cost_matrix()用马氏距离门控剔除不合理的匹配距离大于卡方分布 0.95 分位阈值4 维时取chi2inv95[4]9.4877见 kalman_filter.py的配对被置为无穷大linear_assignment()匈牙利算法求解最优匹配阈值0.7。被匹配的轨迹调用update()或re_activate()延续身份未匹配的检测进入阶段二。2. 阶段二基于 IoU 的位置匹配对阶段一未匹配的轨迹与检测改用IoU 距离矩阵1 - IoU再次做匈牙利匹配阈值0.5用于处理外观特征区分度不足但空间位置重合度高的情形。仍未匹配的已确认轨迹被标记为Lost未确认轨迹只有首帧的候选轨迹若仍无匹配则直接mark_removed()。3. 阶段三初始化新轨迹与状态清理剩余未匹配检测若置信度高于CONFIDENCE阈值则调用activate()开启新轨迹并分配全局自增的track_idBaseTrack.next_id()见 basetrack.py。最后执行清除超过max_time_lost默认 30 帧未恢复的 lost 轨迹用joint_stracks/sub_stracks/remove_duplicate_stracks合并、去重轨迹列表IoU 小于0.15视为重复保留存活时间更长的轨迹。4. 轨迹生命周期状态机detector/tracker/tracker/basetrack.py 定义了四种状态状态含义New新检测的初始状态尚未确认Tracked已被稳定跟踪持续参与关联Lost短暂丢失保留在缓冲池中等待重新关联Removed超时或重复被移出跟踪集合五、卡尔曼滤波轨迹预测与运动模型detector/tracker/utils/kalman_filter.py 实现了一个 8 维状态空间的卡尔曼滤波器状态向量为(x, y, a, h, vx, vy, va, vh)其中(x, y)是框中心坐标a是宽高比h是高度后四项为对应速度。运动模型为恒定速度_motion_mat中位置到速度的耦合项为时间步dt1观测模型直接以(x,y,a,h)作为线性观测。关键操作initiate()从未关联检测初始化轨迹速度置 0predict()前向预测下一帧位置并累积运动不确定性update()用新观测修正状态Cholesky 分解求卡尔曼增益gating_distance()计算观测与预测状态间的马氏距离供数据关联门控使用。轨迹位置属性tlwh/tlbr均由卡尔曼滤波状态换算而来见STrack的tlwh_to_xyah等坐标转换方法因此跟踪器的输出框是滤波后的平滑位置对遮挡、抖动有更强的鲁棒性。六、输出格式与下游衔接Tracker.images_detection()最终为每个被激活轨迹输出一行torch.Tensor([image_i, tlbr[0], tlbr[1], tlbr[2], tlbr[3], ts, tid])即image_i批次内图像索引tlbr边界框左上角与右下角坐标ts跟踪分数tid全局唯一跟踪 ID。该输出与 AlphaPose 上层姿态估计模块的检测框接口兼容人体姿态网络直接消费这些带tid的框即可在逐帧之间保持身份一致性进而支撑 PoseFlow见 trackers/PoseFlow等视频姿态跟踪后处理方案。七、注意事项与适用场景预训练权重依赖使用--detector tracker前必须下载 JDE-1088x608 权重并放置到detector/tracker/data/该文件未被仓库直接托管分辨率与速度JDE 输入为 1088×608检测与 ReID 特征提取共享同一网络主干相比检测 独立 ReID方案更节省算力适合实时视频流场景适用场景视频多目标姿态跟踪、行人轨迹分析、遮挡频繁的密集人群场景若只是单张图片检测建议仍使用--detector yolo或--detector yolox配置调整CONFIDENCE、BUFFER_SIZE、NMS_THRES均可按场景在 detector/tracker_cfg.py 中调优例如人群密集时提高 NMS 阈值、遮挡频繁时增大缓冲区。综上AlphaPose 通过--detector tracker将 JDE 多目标跟踪器无缝接入原有姿态估计管线以检测 嵌入 关联的联合框架实现了跨帧身份追踪为视频级人体姿态分析提供了完整的工程化方案。赞分享人工智能计算机视觉深度学习【免费下载链接】AlphaPoseReal-Time and Accurate Full-Body Multi-Person Pose EstimationTracking System项目地址https://gitcode.com/gh_mirrors/al/AlphaPose点击查看免费下载相关推荐PaddleDetection JDE 实时多目标跟踪实战Joint Detection and Embedding 的配置、训练、评估与部署全解析PaddleDetection JDE 实时多目标跟踪实战Joint Detection and Embedding 的配置、训练、评估与部署全解析 导读 J人工智能深度学习计算机视觉PaddleDetection JDEJoint Detection and Embedding实时多目标跟踪原理、配置与全流程实战PaddleDetection JDEJoint Detection and Embedding实时多目标跟踪原理、配置与全流程实战 JDEJoint人工智能深度学习计算机视觉PaddleDetection 多目标跟踪MOT全面指南SDE 与 JDE 算法体系、模型选型与实战部署PaddleDetection 多目标跟踪MOT全面指南SDE 与 JDE 算法体系、模型选型与实战部署 多目标跟踪Multi Object Track人工智能深度学习计算机视觉上一篇高效解放双手番茄小说下载工具全方位使用指南下一篇如何永久备份微信聊天记录WeChatMsg让你的数字记忆永不丢失创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表