feat(接口2): 支持动态切换Flux模型+分辨率 + 模型对比测试脚本

代码改动:
- comfyui.py: run() 新增 unet_name 参数,提交前自动改写模型节点
  (.gguf→UnetLoaderGGUF, .safetensors→UNETLoader),并按模型自动同步
  文本编码器(4b→qwen_3_4b, 9b→qwen_3_8b),避免切换时维度不匹配
- redraw.py: run_redraw() 透传 unet_name
- service.py: generate_grow_results_swap/generate_grow_results 支持
  redraw_max_side(分辨率参数化) 和 unet_name 透传
- app.py: 接口2 新增 flux_model/redraw_max_side 两个 Form 参数(男女路径都加)
- test_interface2.html: 新增 Flux模型/压图长边 下拉选择器
- add_hair.json/0716add-hair-api.json: 工作流默认模型改为 9b

测试脚本:
- benchmark_matrix.py: 4模型×3分辨率×3图×3次 矩阵测试
- benchmark_hairstyle.py: 3图×5发型×10组合 发型对比测试
- benchmark_report.py/benchmark_hairstyle_report.py: HTML报告生成

清理:
- .gitignore: 排除 benchmark_out/、报告HTML、gateway.log、*.bak.*
- 移除 gateway.log 的 git 跟踪
This commit is contained in:
xsl
2026-07-25 16:16:13 +08:00
parent f509fe99b4
commit 94cdfd6de5
13 changed files with 657 additions and 362 deletions
+26
View File
@@ -109,6 +109,28 @@
<label style="font-size:13px;font-weight:600;color:#374151;white-space:nowrap">💬 提示词</label>
<input type="text" id="promptInput" value="填充遮罩区域的头发,皮肤加一点磨皮,再加一点美颜" style="flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;max-width:500px">
</div>
<div style="margin-top:10px;display:flex;align-items:center;gap:16px;flex-wrap:wrap">
<div class="form-group">
<label>🤖 Flux模型</label>
<select id="fluxModel">
<option value="" selected>默认(9b-fp8)</option>
<option value="flux-2-klein-9b-Q5_K_M.gguf">9B Q5_K_M (7GB·推荐)</option>
<option value="flux-2-klein-9b-Q4_K_M.gguf">9B Q4_K_M (5.9GB·省显存)</option>
<option value="flux2.0/flux-2-klein-9b-fp8.safetensors">9B fp8 (8.8GB·原版)</option>
</select>
</div>
<div class="form-group">
<label>📐 压图长边</label>
<select id="redrawMaxSide">
<option value="" selected>默认(896)</option>
<option value="1024">1024 (高画质·慢)</option>
<option value="896">896 (默认)</option>
<option value="768">768 (均衡)</option>
<option value="640">640 (省显存·快)</option>
<option value="0">不缩图(原图)</option>
</select>
</div>
</div>
<div id="statusBar" class="status hidden"></div>
</div>
</div>
@@ -155,6 +177,10 @@ async function submitTest() {
fd.append('hair_style', checked.join(','));
fd.append('use_mask', $('useMask').value);
fd.append('prompt', $('promptInput').value);
const _model = $('fluxModel').value;
const _side = $('redrawMaxSide').value;
if (_model) fd.append('flux_model', _model);
if (_side !== '') fd.append('redraw_max_side', _side);
const _reqStart = performance.now();
try {
const r = await fetch(API_BASE + '/api/v1/hair/grow', { method:'POST', headers:{ 'X-Internal-Token': 'dev-shared-secret-2026' }, body:fd });