فهرست منبع

Use Baidu cutout immediately after alpha failure

bang 2 هفته پیش
والد
کامیت
0a5ae551a8
1فایلهای تغییر یافته به همراه10 افزوده شده و 21 حذف شده
  1. 10 21
      pipeline.py

+ 10 - 21
pipeline.py

@@ -68,29 +68,18 @@ def run(manifest, out_root, creds=None, log=print):
             log(f"⚠️ [{label}] 模型返回 PNG 但没有透明 Alpha:alpha={mn}-{mx},请重新生成或换支持透明输出的图像模型")
 
     def generate_checked(label, prompt, size, require_alpha):
-        retry_suffixes = [
-            "",
-            "这不是真透明背景。请重新生成:\n背景必须是 Alpha 透明通道,不是白色、灰色或棋盘格。\n去掉所有背景、阴影、光晕和底板,只保留主体,输出 PNG。",
-            "这不是真透明背景。请重新生成:\n背景必须是 Alpha 透明通道,不是白色、灰色或棋盘格。\n去掉所有背景、阴影、光晕和底板,只保留主体,输出 PNG。",
-        ]
-        last = None
-        for attempt, suffix in enumerate(retry_suffixes, start=1):
-            attempt_prompt = ", ".join(x for x in [prompt, suffix] if x)
-            if attempt > 1:
-                log(f"🔁 [{label}] Alpha 不合格,重新生成透明 PNG(第 {attempt}/{len(retry_suffixes)} 次)…")
-            img = providers.generate(creds["provider"], attempt_prompt, creds["api_key"],
-                                     creds.get("base_url", "https://api.openai.com/v1"),
-                                     creds.get("model", "gpt-image-2"),
-                                     size)
-            last = img
-            log_alpha(label, img, require_alpha)
-            if not require_alpha or has_alpha(img):
-                return img
-        log(f"🧠 [{label}] 模型连续 {len(retry_suffixes)} 次没有真实 Alpha,改用百度智能抠图兜底…")
+        img = providers.generate(creds["provider"], prompt, creds["api_key"],
+                                 creds.get("base_url", "https://api.openai.com/v1"),
+                                 creds.get("model", "gpt-image-2"),
+                                 size)
+        log_alpha(label, img, require_alpha)
+        if not require_alpha or has_alpha(img):
+            return img
+        log(f"🧠 [{label}] 模型没有真实 Alpha,直接改用百度智能抠图兜底…")
         try:
-            fixed = baidu_segment.remove_background(last, label=label, log=log)
+            fixed = baidu_segment.remove_background(img, label=label, log=log)
         except Exception as e:
-            raise RuntimeError(f"模型连续 {len(retry_suffixes)} 次没有返回真实 Alpha,百度智能抠图也失败:{e}")
+            raise RuntimeError(f"模型没有返回真实 Alpha,百度智能抠图也失败:{e}")
         log_alpha(label, fixed, True)
         if has_alpha(fixed):
             return fixed