jhj0517
commited on
Commit
·
219ecf9
1
Parent(s):
d35e462
Fix meaningless `retargeting()`
Browse files
modules/live_portrait/live_portrait_inferencer.py
CHANGED
|
@@ -4,6 +4,7 @@ import cv2
|
|
| 4 |
import time
|
| 5 |
import copy
|
| 6 |
import dill
|
|
|
|
| 7 |
from ultralytics import YOLO
|
| 8 |
import safetensors.torch
|
| 9 |
import gradio as gr
|
|
@@ -218,9 +219,9 @@ class LivePortraitInferencer:
|
|
| 218 |
rotate_yaw += self.d_info['yaw'] * sample_ratio
|
| 219 |
rotate_roll += self.d_info['roll'] * sample_ratio
|
| 220 |
elif sample_parts == SamplePart.ONLY_MOUTH.value:
|
| 221 |
-
self.retargeting(es.e, self.d_info['exp'], sample_ratio, (14, 17, 19, 20))
|
| 222 |
elif sample_parts == SamplePart.ONLY_EYES.value:
|
| 223 |
-
self.retargeting(es.e, self.d_info['exp'], sample_ratio, (1, 2, 11, 13, 15, 16))
|
| 224 |
|
| 225 |
es.r = self.calc_fe(es.e, blink, eyebrow, wink, pupil_x, pupil_y, aaa, eee, woo, smile,
|
| 226 |
rotate_pitch, rotate_yaw, rotate_roll)
|
|
@@ -312,8 +313,8 @@ class LivePortraitInferencer:
|
|
| 312 |
if d_0_es is None:
|
| 313 |
d_0_es = ExpressionSet(erst = (d_i_info['exp'], d_i_r, d_i_info['scale'], d_i_info['t']))
|
| 314 |
|
| 315 |
-
self.retargeting(s_es.e, d_0_es.e, retargeting_eyes, (11, 13, 15, 16))
|
| 316 |
-
self.retargeting(s_es.e, d_0_es.e, retargeting_mouth, (14, 17, 19, 20))
|
| 317 |
|
| 318 |
new_es.e += d_i_info['exp'] - d_0_es.e
|
| 319 |
new_es.r += d_i_r - d_0_es.r
|
|
@@ -508,9 +509,10 @@ class LivePortraitInferencer:
|
|
| 508 |
|
| 509 |
@staticmethod
|
| 510 |
def retargeting(delta_out, driving_exp, factor, idxes):
|
|
|
|
| 511 |
for idx in idxes:
|
| 512 |
-
# delta_out[0, idx] -= src_exp[0, idx] * factor
|
| 513 |
delta_out[0, idx] += driving_exp[0, idx] * factor
|
|
|
|
| 514 |
|
| 515 |
@staticmethod
|
| 516 |
def calc_face_region(square, dsize):
|
|
|
|
| 4 |
import time
|
| 5 |
import copy
|
| 6 |
import dill
|
| 7 |
+
import torch
|
| 8 |
from ultralytics import YOLO
|
| 9 |
import safetensors.torch
|
| 10 |
import gradio as gr
|
|
|
|
| 219 |
rotate_yaw += self.d_info['yaw'] * sample_ratio
|
| 220 |
rotate_roll += self.d_info['roll'] * sample_ratio
|
| 221 |
elif sample_parts == SamplePart.ONLY_MOUTH.value:
|
| 222 |
+
es.e = self.retargeting(es.e, self.d_info['exp'], sample_ratio, (14, 17, 19, 20))
|
| 223 |
elif sample_parts == SamplePart.ONLY_EYES.value:
|
| 224 |
+
es.e = self.retargeting(es.e, self.d_info['exp'], sample_ratio, (1, 2, 11, 13, 15, 16))
|
| 225 |
|
| 226 |
es.r = self.calc_fe(es.e, blink, eyebrow, wink, pupil_x, pupil_y, aaa, eee, woo, smile,
|
| 227 |
rotate_pitch, rotate_yaw, rotate_roll)
|
|
|
|
| 313 |
if d_0_es is None:
|
| 314 |
d_0_es = ExpressionSet(erst = (d_i_info['exp'], d_i_r, d_i_info['scale'], d_i_info['t']))
|
| 315 |
|
| 316 |
+
s_es.e = self.retargeting(s_es.e, d_0_es.e, retargeting_eyes, (11, 13, 15, 16))
|
| 317 |
+
s_es.e = self.retargeting(s_es.e, d_0_es.e, retargeting_mouth, (14, 17, 19, 20))
|
| 318 |
|
| 319 |
new_es.e += d_i_info['exp'] - d_0_es.e
|
| 320 |
new_es.r += d_i_r - d_0_es.r
|
|
|
|
| 509 |
|
| 510 |
@staticmethod
|
| 511 |
def retargeting(delta_out, driving_exp, factor, idxes):
|
| 512 |
+
delta_out = delta_out.clone()
|
| 513 |
for idx in idxes:
|
|
|
|
| 514 |
delta_out[0, idx] += driving_exp[0, idx] * factor
|
| 515 |
+
return delta_out
|
| 516 |
|
| 517 |
@staticmethod
|
| 518 |
def calc_face_region(square, dsize):
|