From f8e566d62a2e46d5dc2ba0ddff4e33fce2ca47ad Mon Sep 17 00:00:00 2001 From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com> Date: Sat, 10 Feb 2024 04:10:56 +0530 Subject: [PATCH] cleanup: unused util functions --- invokeai/backend/image_util/dwpose/utils.py | 152 -------------------- 1 file changed, 152 deletions(-) diff --git a/invokeai/backend/image_util/dwpose/utils.py b/invokeai/backend/image_util/dwpose/utils.py index 7aba874ee9..428672ab31 100644 --- a/invokeai/backend/image_util/dwpose/utils.py +++ b/invokeai/backend/image_util/dwpose/utils.py @@ -153,155 +153,3 @@ def draw_facepose(canvas, all_lmks): if x > eps and y > eps: cv2.circle(canvas, (x, y), 3, (255, 255, 255), thickness=-1) return canvas - - -# detect hand according to body pose keypoints -# please refer to -# https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/src/openpose/hand/handDetector.cpp -def handDetect(candidate, subset, oriImg): - # right hand: wrist 4, elbow 3, shoulder 2 - # left hand: wrist 7, elbow 6, shoulder 5 - ratioWristElbow = 0.33 - detect_result = [] - image_height, image_width = oriImg.shape[0:2] - for person in subset.astype(int): - # if any of three not detected - has_left = np.sum(person[[5, 6, 7]] == -1) == 0 - has_right = np.sum(person[[2, 3, 4]] == -1) == 0 - if not (has_left or has_right): - continue - hands = [] - # left hand - if has_left: - left_shoulder_index, left_elbow_index, left_wrist_index = person[[5, 6, 7]] - x1, y1 = candidate[left_shoulder_index][:2] - x2, y2 = candidate[left_elbow_index][:2] - x3, y3 = candidate[left_wrist_index][:2] - hands.append([x1, y1, x2, y2, x3, y3, True]) - # right hand - if has_right: - right_shoulder_index, right_elbow_index, right_wrist_index = person[[2, 3, 4]] - x1, y1 = candidate[right_shoulder_index][:2] - x2, y2 = candidate[right_elbow_index][:2] - x3, y3 = candidate[right_wrist_index][:2] - hands.append([x1, y1, x2, y2, x3, y3, False]) - - for x1, y1, x2, y2, x3, y3, is_left in hands: - # pos_hand = pos_wrist + ratio * (pos_wrist - pos_elbox) = (1 + ratio) * pos_wrist - ratio * pos_elbox - # handRectangle.x = posePtr[wrist*3] + ratioWristElbow * (posePtr[wrist*3] - posePtr[elbow*3]); - # handRectangle.y = posePtr[wrist*3+1] + ratioWristElbow * (posePtr[wrist*3+1] - posePtr[elbow*3+1]); - # const auto distanceWristElbow = getDistance(poseKeypoints, person, wrist, elbow); - # const auto distanceElbowShoulder = getDistance(poseKeypoints, person, elbow, shoulder); - # handRectangle.width = 1.5f * fastMax(distanceWristElbow, 0.9f * distanceElbowShoulder); - x = x3 + ratioWristElbow * (x3 - x2) - y = y3 + ratioWristElbow * (y3 - y2) - distanceWristElbow = math.sqrt((x3 - x2) ** 2 + (y3 - y2) ** 2) - distanceElbowShoulder = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) - width = 1.5 * max(distanceWristElbow, 0.9 * distanceElbowShoulder) - # x-y refers to the center --> offset to topLeft point - # handRectangle.x -= handRectangle.width / 2.f; - # handRectangle.y -= handRectangle.height / 2.f; - x -= width / 2 - y -= width / 2 # width = height - # overflow the image - if x < 0: - x = 0 - if y < 0: - y = 0 - width1 = width - width2 = width - if x + width > image_width: - width1 = image_width - x - if y + width > image_height: - width2 = image_height - y - width = min(width1, width2) - # the max hand box value is 20 pixels - if width >= 20: - detect_result.append([int(x), int(y), int(width), is_left]) - - """ - return value: [[x, y, w, True if left hand else False]]. - width=height since the network require squared input. - x, y is the coordinate of top left - """ - return detect_result - - -# Written by Lvmin -def faceDetect(candidate, subset, oriImg): - # left right eye ear 14 15 16 17 - detect_result = [] - image_height, image_width = oriImg.shape[0:2] - for person in subset.astype(int): - has_head = person[0] > -1 - if not has_head: - continue - - has_left_eye = person[14] > -1 - has_right_eye = person[15] > -1 - has_left_ear = person[16] > -1 - has_right_ear = person[17] > -1 - - if not (has_left_eye or has_right_eye or has_left_ear or has_right_ear): - continue - - head, left_eye, right_eye, left_ear, right_ear = person[[0, 14, 15, 16, 17]] - - width = 0.0 - x0, y0 = candidate[head][:2] - - if has_left_eye: - x1, y1 = candidate[left_eye][:2] - d = max(abs(x0 - x1), abs(y0 - y1)) - width = max(width, d * 3.0) - - if has_right_eye: - x1, y1 = candidate[right_eye][:2] - d = max(abs(x0 - x1), abs(y0 - y1)) - width = max(width, d * 3.0) - - if has_left_ear: - x1, y1 = candidate[left_ear][:2] - d = max(abs(x0 - x1), abs(y0 - y1)) - width = max(width, d * 1.5) - - if has_right_ear: - x1, y1 = candidate[right_ear][:2] - d = max(abs(x0 - x1), abs(y0 - y1)) - width = max(width, d * 1.5) - - x, y = x0, y0 - - x -= width - y -= width - - if x < 0: - x = 0 - - if y < 0: - y = 0 - - width1 = width * 2 - width2 = width * 2 - - if x + width > image_width: - width1 = image_width - x - - if y + width > image_height: - width2 = image_height - y - - width = min(width1, width2) - - if width >= 20: - detect_result.append([int(x), int(y), int(width)]) - - return detect_result - - -# get max index of 2d array -def npmax(array): - arrayindex = array.argmax(1) - arrayvalue = array.max(1) - i = arrayvalue.argmax() - j = arrayindex[i] - return i, j