github官网:
博客:
基于pyskl的poseC3D训练自己的数据集-CSDN博客
发现少了compress=args.compress
回到github官网:
发现博客确实改了参数
def pose_inference(model, frames, det_results):
assert len(frames) == len(det_results)
total_frames = len(frames)
num_person = max([len(x) for x in det_results])
kp = np.zeros((num_person, total_frames, 17, 3), dtype=np.float32)
for i, (f, d) in enumerate(zip(frames, det_results)):
# Align input format
d = [dict(bbox=x) for x in list(d)]
pose = inference_top_down_pose_model(model, f, d, format='xyxy')[0]
for j, item in enumerate(pose):
kp[j, i] = item['keypoints']
return kp
这段代码定义了一个pose_inference
函数,用于进行姿态推断。
函数接受以下参数:
model
:姿态估计模型。frames
:帧列表,包含要进行姿态推断的图像帧。det_results
:检测结果列表,包含每个帧的目标检测结果。
函数的主要逻辑如下:
-
首先,通过断言(
assert
)验证frames
和det_results
的长度相等,确保每个帧都有对应的检测结果。 -
初始化一个
kp
数组,用于存储姿态关键点信息。数组的维度为(num_person, total_frames, 17, 3)
,其中:num_person
表示检测结果中最大的目标数,用于确定数组中存储姿态信息的维度。total_frames
表示帧的总数,用于确定数组中存储姿态信息的维度。17
表示姿态关键点的数量(例如,人体姿态中的关节点数)。3
表示每个关键点的坐标值(x、y和可见性)。
-
使用
enumerate
函数遍历frames
和det_results
,同时获取索引i
和对应的帧f
和检测结果d
。 -
将检测结果
d
转换为适合输入格式的字典列表,其中每个字典包含一个目标框的边界框信息。 -
调用
inference_top_down_pose_model
函数进行姿态推断。该函数使用姿态估计模型model
、帧f
和检测结果d
,并指定输入格式为xyxy
(即边界框的格式)。函数返回一个姿态预测结果的列表。 -
遍历姿态预测结果列表
pose
,同时获取索引j
和每个姿态预测结果item
。 -
将每个姿态预测结果中的关键点信息赋值给
kp
数组的相应位置,即kp[j, i] = item['keypoints']
。 -
返回最终的姿态关键点数组
kp
。
函数的作用是通过姿态估计模型对每个帧的目标检测结果进行姿态推断,得到每个关键点的坐标信息。最终返回一个包含姿态关键点信息的数组。
下面这个是改动的地方