fix: 适配 ubuntu 路径并增强换发色/训练流程稳定性

将配置与训练脚本从 /home/xsl 切到本机 /home/ubuntu;换发色在 webui 增强失败或缺色板时降级返回,训练结束后自动重启 hair 服务再回调。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
xsl
2026-07-19 00:49:16 +08:00
co-authored by Cursor
parent fc66534a74
commit 0926c61bd0
7 changed files with 44 additions and 28 deletions
@@ -72,6 +72,8 @@ class HairStyle_Model_Infer(object):
# haircolor_dir = '/home/data/hair/data/ref_color/3628746832766'
face_base, hair_matting, status = self.infer_haircolor_new(user_rgb_8uc3_orisize, haircolor_dir,target_hair_color,
return_matting=True)
if status != 0:
return user_rgb_8uc3_orisize, None, status
user_rgb_8uc3_orisize = face_base
# 构建一个色板
r, g, b = target_hair_color
@@ -1016,7 +1018,7 @@ class HairStyle_Model_Infer(object):
def infer_haircolor_new(self, user_rgb_8uc3_orisize, haircolor_dir, target_hair_color, return_matting=False):
landmarks_origin_img_1k= self.get_landmark.forward(user_rgb_8uc3_orisize)
if landmarks_origin_img_1k is None:
return None, 10001
return None, None, 10001
need_process = (target_hair_color[0] * 0.299 + target_hair_color[1] * 0.587 + target_hair_color[2] * 0.114) > 150
_, user_matting_8uc1_bald_orisize = self.process_data_infer.generator_matte.matte_inference(user_rgb_8uc3_orisize,
landmarks_origin_img_1k)
@@ -1036,10 +1038,13 @@ class HairStyle_Model_Infer(object):
need_process=True
if need_process:
haircolor_dir_tmp = os.path.join(config.get('default', "haircolorDir"), config.get('default', "baseColor_ID"))
face_base, status1 = self.infer_haircolor_tj(user_rgb_8uc3_orisize, haircolor_dir_tmp)
# cv2.imwrite('/home/student/Desktop/tmp_color/need/face_base.png', face_base)
if status1 == 0:
return face_base, user_matting_8uc1_bald_orisize, 0
if os.path.exists(haircolor_dir_tmp):
face_base, status1 = self.infer_haircolor_tj(user_rgb_8uc3_orisize, haircolor_dir_tmp)
# cv2.imwrite('/home/student/Desktop/tmp_color/need/face_base.png', face_base)
if status1 == 0:
return face_base, user_matting_8uc1_bald_orisize, 0
else:
need_process = False
else:
need_process = False
if not need_process: