修正tracking_inputs = [[pose[‘keypoints‘] for pose in poses] for poses in pose_results]的含义

来分析一下 tracking_inputs 的计算过程:

pose_results 是一个列表,其中每个元素都是另一个列表,表示一帧视频中检测到的多个人体姿态。

我们可以将 pose_results 写成如下形式:

pose_results = [
    [pose1, pose2, ..., poseN],  # 第 1 帧
    [pose1, pose2, ..., poseM],  # 第 2 帧
    ...,
    [pose1, pose2, ..., poseK]   # 第 X 帧
]

其中 poseX 是一个字典,包含了某个人体姿态的关键点信息,比如 {'keypoints': [0.12, 0.23, 0.34, 0.45, 0.56, 0.67, 0.78, 0.89, 1.0, 1.11]} 这样的数据结构。

接下来,tracking_inputs 的计算过程是:

遍历 pose_results 列表中的每一帧:

for poses in pose_results:

对于每一帧中检测到的所有人体姿态,提取它们的 keypoints 信息:

[pose['keypoints'] for pose in poses]

将这些 keypoints 信息组成一个列表,作为 tracking_inputs 的一个元素:

tracking_inputs = [[pose['keypoints'] for pose in poses] for poses in pose_results]

最终,tracking_inputs 会是一个 2D 列表,其中每个元素都是一个 1D 列表,表示某一帧中检测到的所有人体姿态的关键点信息。

例如,如果 pose_results 包含 3 帧,每帧检测到 2 个人体姿态,那么 tracking_inputs 的结构会是:

tracking_inputs = [
    [[0.12, 0.23, 0.34, 0.45, 0.56, 0.67, 0.78, 0.89, 1.0, 1.11],
     [0.21, 0.32, 0.43, 0.54, 0.65, 0.76, 0.87, 0.98, 1.09, 1.20]],  # 第 1 帧
    [[0.15, 0.26, 0.37, 0.48, 0.59, 0.70, 0.81, 0.92, 1.03, 1.14],
     [0.24, 0.35, 0.46, 0.57, 0.68, 0.79, 0.90, 1.01, 1.12, 1.23]],  # 第 2 帧
    [[0.18, 0.29, 0.40, 0.51, 0.62, 0.73, 0.84, 0.95, 1.06, 1.17],
     [0.27, 0.38, 0.49, 0.60, 0.71, 0.82, 0.93, 1.04, 1.15, 1.26]]   # 第 3 帧
]

这样的数据结构可以为后续的骨骼跟踪或其他计算提供所需的输入。

于是这样的话

继续执行下面

 keypoint, keypoint_score = pose_tracking(tracking_inputs, max_tracks=GCN_nperson)

然后到红框这一步就理顺了

 for i in range(n):
            for j in range(m):
                scores[i][j] = dist_ske(track_proposals[i]['data'][-1][1], poses[j])

https://github.com/kennymckormick/pyskl/blob/main/demo/demo_skeleton.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值