fix(GPU): 修复GFPGAN增强后蓝色遮罩问题 #2011

Merged
xiaoxia merged 3 commits from fix/gfpgan-blue-face into develop 2026-09-22 13:34:14 +08:00
Owner

问题

GFPGAN增强后,人脸出现蓝色遮罩(整半张脸变蓝)。

根因

musetalk_server.py L935 附近:

  • gfpgan_enhancer(_face_t, return_rgb=False, weight=0.35) — return_rgb=False 返回 BGR 格式
  • 紧接着 cv2.cvtColor(_out.astype(np.uint8), cv2.COLOR_RGB2BGR) — 又做了一次 RGB→BGR 转换
  • 结果:BGR 数据被当作 RGB 处理,R/B 通道互换 → 脸变蓝

同时复杂的色彩校正(mean/std 对齐)在错误的色彩空间下工作,可能引入额外色偏。

修复

  1. return_rgb 改为 True:GFPGAN 直接输出 RGB 格式
  2. 保持后续 RGB→BGR 转换正确:cv2.cvtColor(_out_rgb, cv2.COLOR_RGB2BGR) 现在是正确的
  3. 简化逻辑:去掉复杂的色彩校正代码,避免引入额外色偏风险
  4. 添加清晰的色彩通道注释:标注 ori_frame/res_frame/_face_up 均为 BGR,GFPGAN 输出 RGB 再转 BGR,确保后续 face_parsing 融合一致

值域处理

  • GFPGAN 输出 tensor:[-1, 1] 范围
  • clamp(-1, 1) → 映射到 [0, 255] → astype(uint8)
  • 不会丢失 [0, 1] 范围内的信息

测试

  • 现有 musetalk_server 测试通过(23 passed,2 个已有失败与本次修改无关)
  • 需 GPU 机器验证实际视频输出无蓝色遮罩

备注

  • MUSE_USE_GFPGAN=0 环境变量仍可临时禁用 GFPGAN
  • 如需进一步调色,建议在确保通道正确后再加
## 问题 GFPGAN增强后,人脸出现蓝色遮罩(整半张脸变蓝)。 ## 根因 `musetalk_server.py` L935 附近: - `gfpgan_enhancer(_face_t, return_rgb=False, weight=0.35)` — `return_rgb=False` 返回 BGR 格式 - 紧接着 `cv2.cvtColor(_out.astype(np.uint8), cv2.COLOR_RGB2BGR)` — 又做了一次 RGB→BGR 转换 - 结果:BGR 数据被当作 RGB 处理,R/B 通道互换 → 脸变蓝 同时复杂的色彩校正(mean/std 对齐)在错误的色彩空间下工作,可能引入额外色偏。 ## 修复 1. **return_rgb 改为 True**:GFPGAN 直接输出 RGB 格式 2. **保持后续 RGB→BGR 转换正确**:`cv2.cvtColor(_out_rgb, cv2.COLOR_RGB2BGR)` 现在是正确的 3. **简化逻辑**:去掉复杂的色彩校正代码,避免引入额外色偏风险 4. **添加清晰的色彩通道注释**:标注 ori_frame/res_frame/_face_up 均为 BGR,GFPGAN 输出 RGB 再转 BGR,确保后续 face_parsing 融合一致 ## 值域处理 - GFPGAN 输出 tensor:[-1, 1] 范围 - clamp(-1, 1) → 映射到 [0, 255] → astype(uint8) - 不会丢失 [0, 1] 范围内的信息 ## 测试 - 现有 musetalk_server 测试通过(23 passed,2 个已有失败与本次修改无关) - 需 GPU 机器验证实际视频输出无蓝色遮罩 ## 备注 - MUSE_USE_GFPGAN=0 环境变量仍可临时禁用 GFPGAN - 如需进一步调色,建议在确保通道正确后再加
xiaoxia added 1 commit 2026-09-22 12:56:24 +08:00
fix(GPU): 修复GFPGAN增强后蓝色遮罩问题
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 9s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m4s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m55s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Failing after 3m16s
CI/CD Pipeline / Validate - Security (pull_request) Failing after 3m18s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m15s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 5m28s
AI Code Review / AI Code Review (pull_request) Successful in 8m8s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
130120c8a7
根因:return_rgb=False 返回 BGR 格式,但后续 cvtColor 误用 RGB2BGR
导致 R/B 通道互换,人脸变蓝。

修复:
- return_rgb 改为 True,输出为 RGB 格式
- 保持后续 RGB→BGR 转换正确
- 简化逻辑:去掉复杂的色彩校正(mean/std对齐),
  避免引入额外的色偏风险
- 添加清晰的色彩通道注释,防止后续维护出错
xiaoxia added 1 commit 2026-09-22 13:07:47 +08:00
chore(ci): retrigger CI - previous run had DNS resolution issues
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 1m30s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m3s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 3m0s
CI/CD Pipeline / Validate - Security (pull_request) Failing after 3m22s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 5m11s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 5m35s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 6m4s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 6m33s
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
e7ea90798b
xiaoxia added 1 commit 2026-09-22 13:19:27 +08:00
chore(ci): retrigger CI - 3rd attempt
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 1s
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Check push changed paths (push) Successful in 19s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Failing after 37s
AI Code Review / AI Code Review (pull_request) Successful in 1m22s
Preview Cleanup / Cleanup Preview Environment (pull_request) Failing after 1m55s
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / Validate - Security (push) Failing after 3m6s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Failing after 3m3s
CI/CD Pipeline / Unit Tests (push) Failing after 3m4s
CI/CD Pipeline / Integration Tests (push) Failing after 2m41s
CI/CD Pipeline / Validate - Style (push) Successful in 4m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Failing after 5m24s
CI/CD Pipeline / Validate - Style (pull_request) Failing after 16m12s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 9s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m18s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 5m9s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Validate - Security (pull_request) Failing after 3m16s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 5m27s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m59s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 5m30s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 9s
CI/CD Pipeline / Build Staging Worker Image (push) Failing after 18m53s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 24m35s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 27m12s
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 26m58s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 3m31s
CI/CD Pipeline / Staging E2E Tests (push) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (push) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
af7b2bb436
xiaoxia closed this pull request 2026-09-22 13:33:42 +08:00
xiaoxia reopened this pull request 2026-09-22 13:34:00 +08:00
xiaoxia merged commit af7b2bb436 into develop 2026-09-22 13:34:14 +08:00
Sign in to join this conversation.