feat(接口2): 测试页暴露重绘分辨率选项 + 分辨率对比测试套件

- test_interface2.html: 新增「重绘分辨率」下拉(默认896/1024/768/640/不缩图0),
  仅 female 生效,append redraw_max_side 字段;male 时自动隐藏
- 新增分辨率对比测试工具 (image/compare_test, image/res_test):
  - batch_test.py: 串行批量测试脚本,支持断点续跑
  - gen_report.py: 生成自包含 HTML 对比报告(速度色阶+缩略图+点击放大)
- 两轮测试结果:
  - v1: 4图×5发型×2档=40次 (compare_test)
  - v2: 5图×3发型×5档=75次 (res_test)
  - 结论: 大图(长边>1600)原图直送比896档慢~3倍; 中小图各档差异小
- .gitignore: 忽略测试结果图/原图副本/运行日志(out/, *.log, progress.json)
This commit is contained in:
xsl
2026-07-26 22:06:27 +08:00
parent ff4019c570
commit 5101bb5f6b
12 changed files with 1583 additions and 0 deletions
+17
View File
@@ -101,6 +101,16 @@
<option value="false">⬜ 关闭 — 空遮罩,不烧模板线</option>
</select>
</div>
<div class="form-group" id="redrawSideGroup">
<label>重绘分辨率</label>
<select id="redrawMaxSide" title="仅 Female 生效:ComfyUI 重绘前把送图长边压到该像素。值越小越快越省显存,细节越少;0=原图直送">
<option value="" selected>默认 896</option>
<option value="1024">1024(高清,慢)</option>
<option value="768">768(快)</option>
<option value="640">640(最快,糊)</option>
<option value="0">0 — 不缩图(原图直送)</option>
</select>
</div>
<button class="btn btn-primary" id="submitBtn" onclick="submitTest()">🚀 提交</button>
<button class="btn btn-outline btn-sm" onclick="clearResults()">清除</button>
</div>
@@ -155,6 +165,11 @@ async function submitTest() {
fd.append('hair_style', checked.join(','));
fd.append('use_mask', $('useMask').value);
fd.append('prompt', $('promptInput').value);
// 重绘分辨率:仅 female 传给后端(male 路径不接受此参数)
if ($('gender').value === 'female') {
const side = $('redrawMaxSide').value;
if (side !== '') fd.append('redraw_max_side', side); // 空串=不传→后端默认896
}
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 });
@@ -258,6 +273,8 @@ function onGenderChange() {
lb.appendChild(document.createTextNode(' ' + s.label));
div.appendChild(lb);
});
// 重绘分辨率选项仅 female 生效:male 时隐藏
$('redrawSideGroup').style.display = (g === 'female') ? '' : 'none';
}
function selectAllHair(select) {