save code
This commit is contained in:
@@ -286,6 +286,9 @@ class RenderPeopleKpsMask:
|
|||||||
"max": 1.0, # 最大值
|
"max": 1.0, # 最大值
|
||||||
"step": 0.01 # 步进值
|
"step": 0.01 # 步进值
|
||||||
}),
|
}),
|
||||||
|
"cloth_short": ("BOOLEAN", {
|
||||||
|
"default": True
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,7 +296,7 @@ class RenderPeopleKpsMask:
|
|||||||
FUNCTION = "render"
|
FUNCTION = "render"
|
||||||
CATEGORY = "ControlNet Preprocessors/Pose Keypoint Postprocess"
|
CATEGORY = "ControlNet Preprocessors/Pose Keypoint Postprocess"
|
||||||
|
|
||||||
def render(self, kps, cloth_len, line_len) -> tuple[torch.Tensor]:
|
def render(self, kps, cloth_len, line_len, cloth_short) -> tuple[torch.Tensor]:
|
||||||
if isinstance(kps, list):
|
if isinstance(kps, list):
|
||||||
kps = kps[0]
|
kps = kps[0]
|
||||||
|
|
||||||
@@ -304,6 +307,7 @@ class RenderPeopleKpsMask:
|
|||||||
width,
|
width,
|
||||||
cloth_len,
|
cloth_len,
|
||||||
line_len,
|
line_len,
|
||||||
|
cloth_short,
|
||||||
)
|
)
|
||||||
return (mask,)
|
return (mask,)
|
||||||
|
|
||||||
|
|||||||
@@ -240,74 +240,90 @@ def distance(p1, p2):
|
|||||||
return math.sqrt((p1.x - p2.x)**2 + (p1.y - p2.y)**2)
|
return math.sqrt((p1.x - p2.x)**2 + (p1.y - p2.y)**2)
|
||||||
|
|
||||||
|
|
||||||
def draw_pose_mask(mask: torch.Tensor, keypoints, H, W, cloth_len, line_len):
|
def addBase(points, keypoints, H, W, unit_len, closh_short):
|
||||||
|
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
||||||
|
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
||||||
|
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
||||||
|
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
||||||
|
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
||||||
|
if not closh_short:
|
||||||
|
add_point(points, keypoints, 4, H, W, 0, 0)
|
||||||
|
add_point(points, keypoints, 7, H, W, 0, 0)
|
||||||
|
|
||||||
|
def draw_pose_mask(mask: torch.Tensor, keypoints, H, W, cloth_len, line_len, closh_short=True):
|
||||||
points = []
|
points = []
|
||||||
unit_len = distance(keypoints[0], keypoints[1])
|
unit_len = distance(keypoints[0], keypoints[1])
|
||||||
print(f'unit_len {unit_len}')
|
print(f'unit_len:{unit_len} cloth_len:{cloth_len}')
|
||||||
if cloth_len == "腰":
|
if cloth_len == "腰":
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*0.3)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*0.3)
|
||||||
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*0.3)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*0.3)
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '跨':
|
elif cloth_len == '跨':
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 11, H, W, unit_len*0.2, 0)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 8, H, W, -unit_len*0.2, 0)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '大腿':
|
elif cloth_len == '大腿':
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 11, H, W, unit_len*0.2, unit_len)
|
|
||||||
add_point(points, keypoints, 8, H, W, -unit_len*0.2, unit_len)
|
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '膝盖':
|
elif cloth_len == '膝盖':
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
if keypoints[9] == None or keypoints[12] == None:
|
||||||
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, unit_len*2.2)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, unit_len*2.2)
|
||||||
|
else:
|
||||||
add_point(points, keypoints, 12, H, W, unit_len*0.2, 0)
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 9, H, W, -unit_len*0.2, 0)
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '小腿':
|
elif cloth_len == '小腿':
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*1.5)
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
if keypoints[9] == None or keypoints[12] == None:
|
||||||
add_point(points, keypoints, 12, H, W, unit_len*0.2, unit_len)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, unit_len*3)
|
||||||
add_point(points, keypoints, 9, H, W, -unit_len*0.2, unit_len)
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, unit_len*3)
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '脚踝':
|
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 13, H, W, unit_len*0.2, 0)
|
|
||||||
add_point(points, keypoints, 10, H, W, -unit_len*0.2, 0)
|
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
elif cloth_len == '拖地':
|
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
|
||||||
add_point(points, keypoints, 13, H, W, unit_len*0.2, unit_len*0.5)
|
|
||||||
add_point(points, keypoints, 10, H, W, -unit_len*0.2, unit_len*0.5)
|
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
|
||||||
else:
|
else:
|
||||||
add_point(points, keypoints, 2, H, W, -unit_len*0.4, 0)
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 1, H, W, 0, -unit_len*0.2)
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, 0)
|
||||||
add_point(points, keypoints, 5, H, W, unit_len*0.4, 0)
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, unit_len*1.2)
|
||||||
add_point(points, keypoints, 6, H, W, unit_len*0.2)
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, unit_len*1.2)
|
||||||
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*0.3)
|
elif cloth_len == '脚踝':
|
||||||
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*0.3)
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
add_point(points, keypoints, 3, H, W, -unit_len*0.2)
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*1.5)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*1.5)
|
||||||
|
if keypoints[9] == None or keypoints[12] == None:
|
||||||
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, unit_len*6)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, unit_len*6)
|
||||||
|
else:
|
||||||
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, 0)
|
||||||
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, 0)
|
||||||
|
if keypoints[10] == None or keypoints[13] == None:
|
||||||
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, unit_len*2.2)
|
||||||
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, unit_len*2.2)
|
||||||
|
else:
|
||||||
|
add_point(points, keypoints, 13, H, W, unit_len*0.2, unit_len*1.2)
|
||||||
|
add_point(points, keypoints, 10, H, W, -unit_len*0.2, unit_len*1.2)
|
||||||
|
elif cloth_len == '拖地':
|
||||||
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, -unit_len*1.5)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, -unit_len*1.5)
|
||||||
|
if keypoints[9] == None or keypoints[12] == None:
|
||||||
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, unit_len*7)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, unit_len*7)
|
||||||
|
else:
|
||||||
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, 0)
|
||||||
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, 0)
|
||||||
|
if keypoints[10] == None or keypoints[13] == None:
|
||||||
|
add_point(points, keypoints, 12, H, W, unit_len*0.2, unit_len*3.2)
|
||||||
|
add_point(points, keypoints, 9, H, W, -unit_len*0.2, unit_len*3.2)
|
||||||
|
else:
|
||||||
|
add_point(points, keypoints, 13, H, W, unit_len*0.2, unit_len*1)
|
||||||
|
add_point(points, keypoints, 10, H, W, -unit_len*0.2, unit_len*1)
|
||||||
|
else:
|
||||||
|
addBase(points, keypoints, H, W, unit_len, closh_short)
|
||||||
|
add_point(points, keypoints, 11, H, W, unit_len*0.2, 0)
|
||||||
|
add_point(points, keypoints, 8, H, W, -unit_len*0.2, 0)
|
||||||
|
|
||||||
points = convex_hull(points)
|
points = convex_hull(points)
|
||||||
|
|
||||||
@@ -324,12 +340,12 @@ def draw_pose_mask(mask: torch.Tensor, keypoints, H, W, cloth_len, line_len):
|
|||||||
|
|
||||||
return mask
|
return mask
|
||||||
|
|
||||||
def draw_poses_mask(poses: List[PoseResult], H, W, cloth_len, line_len):
|
def draw_poses_mask(poses: List[PoseResult], H, W, cloth_len, line_len, cloth_short):
|
||||||
|
|
||||||
mask = torch.zeros((H, W), dtype=torch.float32)
|
mask = torch.zeros((H, W), dtype=torch.float32)
|
||||||
|
|
||||||
for pose in poses:
|
for pose in poses:
|
||||||
mask = draw_pose_mask(mask, pose.body.keypoints, H, W, cloth_len, line_len)
|
mask = draw_pose_mask(mask, pose.body.keypoints, H, W, cloth_len, line_len, cloth_short)
|
||||||
|
|
||||||
return mask
|
return mask
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user