Add ROI comparison pages and previews

This commit is contained in:
tian 2026-03-17 22:20:31 +08:00
parent b2b09c1e5f
commit 3ce6a96b14
86 changed files with 774 additions and 0 deletions

View File

@ -0,0 +1,113 @@
#!/usr/bin/env python3
from __future__ import annotations
import argparse
from pathlib import Path
from PIL import Image, ImageDraw, ImageFont
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Build side-by-side ROI prediction comparisons")
parser.add_argument("--left-dir", required=True, help="Directory containing left prediction images")
parser.add_argument("--right-dir", required=True, help="Directory containing right prediction images")
parser.add_argument("--output-dir", required=True, help="Directory to write comparison images")
parser.add_argument("--left-title", default="Left", help="Title shown above left image")
parser.add_argument("--right-title", default="Right", help="Title shown above right image")
return parser.parse_args()
def load_font() -> ImageFont.ImageFont:
for candidate in ("arial.ttf", "C:/Windows/Fonts/arial.ttf", "C:/Windows/Fonts/msyh.ttc"):
try:
return ImageFont.truetype(candidate, 22)
except OSError:
continue
return ImageFont.load_default()
def fit_height(image: Image.Image, target_height: int) -> Image.Image:
if image.height == target_height:
return image
scale = target_height / image.height
target_width = max(1, int(round(image.width * scale)))
return image.resize((target_width, target_height), Image.Resampling.LANCZOS)
def build_pair(left_path: Path, right_path: Path, output_path: Path, left_title: str, right_title: str, font: ImageFont.ImageFont) -> None:
with Image.open(left_path) as left_image, Image.open(right_path) as right_image:
left_rgb = left_image.convert("RGB")
right_rgb = right_image.convert("RGB")
target_height = max(left_rgb.height, right_rgb.height)
left_rgb = fit_height(left_rgb, target_height)
right_rgb = fit_height(right_rgb, target_height)
gap = 20
padding = 16
title_band = 48
canvas_width = left_rgb.width + right_rgb.width + gap + (padding * 2)
canvas_height = target_height + title_band + (padding * 2)
canvas = Image.new("RGB", (canvas_width, canvas_height), color=(245, 243, 238))
draw = ImageDraw.Draw(canvas)
left_x = padding
right_x = padding + left_rgb.width + gap
image_y = padding + title_band
draw.text((left_x, padding), left_title, fill=(32, 32, 32), font=font)
draw.text((right_x, padding), right_title, fill=(32, 32, 32), font=font)
canvas.paste(left_rgb, (left_x, image_y))
canvas.paste(right_rgb, (right_x, image_y))
draw.rectangle(
(left_x - 2, image_y - 2, left_x + left_rgb.width + 1, image_y + left_rgb.height + 1),
outline=(160, 160, 160),
width=2,
)
draw.rectangle(
(right_x - 2, image_y - 2, right_x + right_rgb.width + 1, image_y + right_rgb.height + 1),
outline=(160, 160, 160),
width=2,
)
output_path.parent.mkdir(parents=True, exist_ok=True)
canvas.save(output_path, quality=95)
def main() -> None:
args = parse_args()
left_dir = Path(args.left_dir)
right_dir = Path(args.right_dir)
output_dir = Path(args.output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
font = load_font()
left_images = {path.name: path for path in left_dir.glob("*.jpg")}
right_images = {path.name: path for path in right_dir.glob("*.jpg")}
shared_names = sorted(set(left_images) & set(right_images))
for name in shared_names:
build_pair(
left_images[name],
right_images[name],
output_dir / name,
args.left_title,
args.right_title,
font,
)
summary_lines = [
f"left_dir={left_dir}",
f"right_dir={right_dir}",
f"pairs={len(shared_names)}",
"",
]
summary_lines.extend(shared_names)
(output_dir / "summary.txt").write_text("\n".join(summary_lines) + "\n", encoding="utf-8")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,195 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ROI 4-Model Compare</title>
<style>
:root {
--bg: #efe8dc;
--panel: #fffdf8;
--ink: #1f1f1f;
--muted: #6f675c;
--line: #d8d0c4;
--accent: #a86d2d;
}
* { box-sizing: border-box; }
body {
margin: 0;
color: var(--ink);
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
background:
radial-gradient(circle at top left, rgba(255,255,255,0.7), transparent 30%),
linear-gradient(180deg, #f5f1ea 0%, var(--bg) 100%);
}
.wrap {
max-width: 1800px;
margin: 0 auto;
padding: 24px;
}
h1 {
margin: 0;
font-size: 30px;
}
.lead {
margin: 10px 0 24px;
color: var(--muted);
line-height: 1.6;
}
.legend {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 14px;
margin-bottom: 20px;
}
.legend-item {
padding: 12px 14px;
border: 1px solid var(--line);
background: rgba(255,255,255,0.72);
border-radius: 12px;
font-size: 14px;
}
.legend-item b {
display: block;
margin-bottom: 4px;
color: var(--accent);
}
.sample {
margin-bottom: 24px;
border: 1px solid var(--line);
border-radius: 18px;
background: rgba(255,255,255,0.72);
overflow: hidden;
box-shadow: 0 12px 36px rgba(85, 58, 25, 0.08);
}
.sample-title {
padding: 14px 18px;
font-size: 15px;
color: var(--muted);
border-bottom: 1px solid var(--line);
background: rgba(255,250,244,0.9);
word-break: break-all;
}
.row {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
padding: 14px;
}
.card {
border: 1px solid var(--line);
border-radius: 14px;
overflow: hidden;
background: var(--panel);
}
.card-head {
padding: 10px 12px;
font-size: 13px;
color: var(--muted);
border-bottom: 1px solid var(--line);
background: #faf7f1;
}
.card-head b {
color: var(--ink);
}
img {
display: block;
width: 100%;
height: auto;
background: #e8dfd1;
}
@media (max-width: 1200px) {
.legend, .row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
.legend, .row { grid-template-columns: 1fr; }
.wrap { padding: 14px; }
}
</style>
</head>
<body>
<div class="wrap">
<h1>ROI 四模型对照</h1>
<p class="lead">每一行是一张 ROI 图四列分别是当前主力、20k filtered 80 轮、100k filtered 35 轮、100k filtered 60 轮。建议重点看框的位置、是否盖住真实鞋区域,以及对大面积复杂纹理鞋子的适应性。</p>
<div class="legend">
<div class="legend-item"><b>Current</b>当前主力 ROI 模型</div>
<div class="legend-item"><b>20k-80</b>20k filtered + 80 epochs</div>
<div class="legend-item"><b>100k-35</b>100k filtered + 35 epochs</div>
<div class="legend-item"><b>100k-60</b>100k filtered + 60 epochs</div>
</div>
<div id="samples"></div>
</div>
<script>
const files = [
"屏幕截图 2026-03-15 104013.jpg",
"屏幕截图 2026-03-15 104056.jpg",
"屏幕截图 2026-03-15 104132.jpg",
"屏幕截图 2026-03-15 104233.jpg",
"屏幕截图 2026-03-15 104318.jpg",
"屏幕截图 2026-03-15 104349.jpg",
"屏幕截图 2026-03-15 104428.jpg",
"屏幕截图 2026-03-15 104443.jpg",
"屏幕截图 2026-03-15 104503.jpg",
"屏幕截图 2026-03-15 104530.jpg",
"屏幕截图 2026-03-15 104547.jpg",
"屏幕截图 2026-03-15 104614.jpg",
"屏幕截图 2026-03-15 104636.jpg",
"屏幕截图 2026-03-15 104647.jpg",
"屏幕截图 2026-03-15 104827.jpg",
"屏幕截图 2026-03-15 104839.jpg",
"屏幕截图 2026-03-15 104852.jpg",
"屏幕截图 2026-03-15 104901.jpg",
"屏幕截图 2026-03-15 104915.jpg",
"屏幕截图 2026-03-15 104942.jpg",
"屏幕截图 2026-03-15 105007.jpg",
"屏幕截图 2026-03-15 105043.jpg",
"屏幕截图 2026-03-15 105101.jpg",
"屏幕截图 2026-03-15 105116.jpg",
"屏幕截图 2026-03-15 105156.jpg",
"屏幕截图 2026-03-15 105219.jpg"
];
const models = [
{ title: "Current", subtitle: "当前主力", dir: "../../runs/roi_eval/roi_shoes_v1/" },
{ title: "20k-80", subtitle: "20k filtered + 80 epochs", dir: "../../runs/roi_eval/roi_shoes_20k_filtered_80/" },
{ title: "100k-35", subtitle: "100k filtered + 35 epochs", dir: "../../runs/roi_eval/roi_shoes_100k_filtered_35/" },
{ title: "100k-60", subtitle: "100k filtered + 60 epochs", dir: "../../runs/roi_eval/roi_shoes_100k_filtered_60/" }
];
const host = document.getElementById("samples");
files.forEach((file) => {
const section = document.createElement("section");
section.className = "sample";
const title = document.createElement("div");
title.className = "sample-title";
title.textContent = file;
section.appendChild(title);
const row = document.createElement("div");
row.className = "row";
models.forEach((model) => {
const card = document.createElement("div");
card.className = "card";
const head = document.createElement("div");
head.className = "card-head";
head.innerHTML = `<b>${model.title}</b>${model.subtitle}`;
card.appendChild(head);
const img = document.createElement("img");
img.src = model.dir + encodeURIComponent(file);
img.alt = `${model.title} ${file}`;
card.appendChild(img);
row.appendChild(card);
});
section.appendChild(row);
host.appendChild(section);
});
</script>
</body>
</html>

View File

@ -0,0 +1,197 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ROI 5-Model Compare</title>
<style>
:root {
--bg: #efe8dc;
--panel: #fffdf8;
--ink: #1f1f1f;
--muted: #6f675c;
--line: #d8d0c4;
--accent: #a86d2d;
}
* { box-sizing: border-box; }
body {
margin: 0;
color: var(--ink);
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
background:
radial-gradient(circle at top left, rgba(255,255,255,0.7), transparent 30%),
linear-gradient(180deg, #f5f1ea 0%, var(--bg) 100%);
}
.wrap {
max-width: 2200px;
margin: 0 auto;
padding: 24px;
}
h1 {
margin: 0;
font-size: 30px;
}
.lead {
margin: 10px 0 24px;
color: var(--muted);
line-height: 1.6;
}
.legend {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 14px;
margin-bottom: 20px;
}
.legend-item {
padding: 12px 14px;
border: 1px solid var(--line);
background: rgba(255,255,255,0.72);
border-radius: 12px;
font-size: 14px;
}
.legend-item b {
display: block;
margin-bottom: 4px;
color: var(--accent);
}
.sample {
margin-bottom: 24px;
border: 1px solid var(--line);
border-radius: 18px;
background: rgba(255,255,255,0.72);
overflow: hidden;
box-shadow: 0 12px 36px rgba(85, 58, 25, 0.08);
}
.sample-title {
padding: 14px 18px;
font-size: 15px;
color: var(--muted);
border-bottom: 1px solid var(--line);
background: rgba(255,250,244,0.9);
word-break: break-all;
}
.row {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
padding: 14px;
}
.card {
border: 1px solid var(--line);
border-radius: 14px;
overflow: hidden;
background: var(--panel);
}
.card-head {
padding: 10px 12px;
font-size: 13px;
color: var(--muted);
border-bottom: 1px solid var(--line);
background: #faf7f1;
}
.card-head b {
color: var(--ink);
}
img {
display: block;
width: 100%;
height: auto;
background: #e8dfd1;
}
@media (max-width: 1500px) {
.legend, .row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
.legend, .row { grid-template-columns: 1fr; }
.wrap { padding: 14px; }
}
</style>
</head>
<body>
<div class="wrap">
<h1>ROI 五模型对照</h1>
<p class="lead">每一行是一张 ROI 图五列分别是当前主力、20k filtered 80 轮、100k filtered 35 轮、100k filtered 60 轮、100k filtered 100 轮。建议重点看小而模糊目标、大面积复杂纹理鞋面,以及框是否真正落在鞋区域。</p>
<div class="legend">
<div class="legend-item"><b>Current</b>当前主力 ROI 模型</div>
<div class="legend-item"><b>20k-80</b>20k filtered + 80 epochs</div>
<div class="legend-item"><b>100k-35</b>100k filtered + 35 epochs</div>
<div class="legend-item"><b>100k-60</b>100k filtered + 60 epochs</div>
<div class="legend-item"><b>100k-100</b>100k filtered + 100 epochs</div>
</div>
<div id="samples"></div>
</div>
<script>
const files = [
"屏幕截图 2026-03-15 104013.jpg",
"屏幕截图 2026-03-15 104056.jpg",
"屏幕截图 2026-03-15 104132.jpg",
"屏幕截图 2026-03-15 104233.jpg",
"屏幕截图 2026-03-15 104318.jpg",
"屏幕截图 2026-03-15 104349.jpg",
"屏幕截图 2026-03-15 104428.jpg",
"屏幕截图 2026-03-15 104443.jpg",
"屏幕截图 2026-03-15 104503.jpg",
"屏幕截图 2026-03-15 104530.jpg",
"屏幕截图 2026-03-15 104547.jpg",
"屏幕截图 2026-03-15 104614.jpg",
"屏幕截图 2026-03-15 104636.jpg",
"屏幕截图 2026-03-15 104647.jpg",
"屏幕截图 2026-03-15 104827.jpg",
"屏幕截图 2026-03-15 104839.jpg",
"屏幕截图 2026-03-15 104852.jpg",
"屏幕截图 2026-03-15 104901.jpg",
"屏幕截图 2026-03-15 104915.jpg",
"屏幕截图 2026-03-15 104942.jpg",
"屏幕截图 2026-03-15 105007.jpg",
"屏幕截图 2026-03-15 105043.jpg",
"屏幕截图 2026-03-15 105101.jpg",
"屏幕截图 2026-03-15 105116.jpg",
"屏幕截图 2026-03-15 105156.jpg",
"屏幕截图 2026-03-15 105219.jpg"
];
const models = [
{ title: "Current", subtitle: "当前主力", dir: "../../runs/roi_eval/roi_shoes_v1/" },
{ title: "20k-80", subtitle: "20k filtered + 80 epochs", dir: "../../runs/roi_eval/roi_shoes_20k_filtered_80/" },
{ title: "100k-35", subtitle: "100k filtered + 35 epochs", dir: "../../runs/roi_eval/roi_shoes_100k_filtered_35/" },
{ title: "100k-60", subtitle: "100k filtered + 60 epochs", dir: "../../runs/roi_eval/roi_shoes_100k_filtered_60/" },
{ title: "100k-100", subtitle: "100k filtered + 100 epochs", dir: "../../runs/roi_eval/roi_shoes_100k_filtered_100/" }
];
const host = document.getElementById("samples");
files.forEach((file) => {
const section = document.createElement("section");
section.className = "sample";
const title = document.createElement("div");
title.className = "sample-title";
title.textContent = file;
section.appendChild(title);
const row = document.createElement("div");
row.className = "row";
models.forEach((model) => {
const card = document.createElement("div");
card.className = "card";
const head = document.createElement("div");
head.className = "card-head";
head.innerHTML = `<b>${model.title}</b>${model.subtitle}`;
card.appendChild(head);
const img = document.createElement("img");
img.src = model.dir + encodeURIComponent(file);
img.alt = `${model.title} ${file}`;
card.appendChild(img);
row.appendChild(card);
});
section.appendChild(row);
host.appendChild(section);
});
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,97 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ROI Compare</title>
<style>
:root {
--bg: #f3efe7;
--card: #fffdf8;
--ink: #1f1f1f;
--muted: #6b645b;
--line: #d9d1c5;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
background: linear-gradient(180deg, #f6f2ea 0%, #efe8dc 100%);
color: var(--ink);
}
.wrap {
max-width: 1280px;
margin: 0 auto;
padding: 24px;
}
h1 {
margin: 0 0 8px;
font-size: 28px;
}
.meta {
margin: 0 0 24px;
color: var(--muted);
font-size: 14px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 18px;
}
.card {
background: var(--card);
border: 1px solid var(--line);
border-radius: 14px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(80, 60, 20, 0.08);
}
.title {
padding: 12px 14px;
border-bottom: 1px solid var(--line);
font-size: 13px;
color: var(--muted);
word-break: break-all;
}
img {
display: block;
width: 100%;
height: auto;
background: #e8e1d5;
}
</style>
</head>
<body>
<div class="wrap">
<h1>ROI 对照图</h1>
<p class="meta">左侧是当前主力模型,右侧是 100k filtered + 35 epochs。直接打开本页即可逐张翻看。</p>
<div class="grid">
<div class="card"><div class="title">屏幕截图 2026-03-15 104013.jpg</div><img src="屏幕截图 2026-03-15 104013.jpg" alt="104013"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104056.jpg</div><img src="屏幕截图 2026-03-15 104056.jpg" alt="104056"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104132.jpg</div><img src="屏幕截图 2026-03-15 104132.jpg" alt="104132"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104233.jpg</div><img src="屏幕截图 2026-03-15 104233.jpg" alt="104233"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104318.jpg</div><img src="屏幕截图 2026-03-15 104318.jpg" alt="104318"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104349.jpg</div><img src="屏幕截图 2026-03-15 104349.jpg" alt="104349"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104428.jpg</div><img src="屏幕截图 2026-03-15 104428.jpg" alt="104428"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104443.jpg</div><img src="屏幕截图 2026-03-15 104443.jpg" alt="104443"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104503.jpg</div><img src="屏幕截图 2026-03-15 104503.jpg" alt="104503"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104530.jpg</div><img src="屏幕截图 2026-03-15 104530.jpg" alt="104530"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104547.jpg</div><img src="屏幕截图 2026-03-15 104547.jpg" alt="104547"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104614.jpg</div><img src="屏幕截图 2026-03-15 104614.jpg" alt="104614"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104636.jpg</div><img src="屏幕截图 2026-03-15 104636.jpg" alt="104636"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104647.jpg</div><img src="屏幕截图 2026-03-15 104647.jpg" alt="104647"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104827.jpg</div><img src="屏幕截图 2026-03-15 104827.jpg" alt="104827"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104839.jpg</div><img src="屏幕截图 2026-03-15 104839.jpg" alt="104839"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104852.jpg</div><img src="屏幕截图 2026-03-15 104852.jpg" alt="104852"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104901.jpg</div><img src="屏幕截图 2026-03-15 104901.jpg" alt="104901"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104915.jpg</div><img src="屏幕截图 2026-03-15 104915.jpg" alt="104915"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104942.jpg</div><img src="屏幕截图 2026-03-15 104942.jpg" alt="104942"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105007.jpg</div><img src="屏幕截图 2026-03-15 105007.jpg" alt="105007"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105043.jpg</div><img src="屏幕截图 2026-03-15 105043.jpg" alt="105043"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105101.jpg</div><img src="屏幕截图 2026-03-15 105101.jpg" alt="105101"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105116.jpg</div><img src="屏幕截图 2026-03-15 105116.jpg" alt="105116"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105156.jpg</div><img src="屏幕截图 2026-03-15 105156.jpg" alt="105156"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105219.jpg</div><img src="屏幕截图 2026-03-15 105219.jpg" alt="105219"></div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,30 @@
left_dir=C:\Users\Tellme\apps\DetectionModelTraining\runs\roi_eval\roi_shoes_v1
right_dir=C:\Users\Tellme\apps\DetectionModelTraining\runs\roi_eval\roi_shoes_100k_filtered_35
pairs=26
屏幕截图 2026-03-15 104013.jpg
屏幕截图 2026-03-15 104056.jpg
屏幕截图 2026-03-15 104132.jpg
屏幕截图 2026-03-15 104233.jpg
屏幕截图 2026-03-15 104318.jpg
屏幕截图 2026-03-15 104349.jpg
屏幕截图 2026-03-15 104428.jpg
屏幕截图 2026-03-15 104443.jpg
屏幕截图 2026-03-15 104503.jpg
屏幕截图 2026-03-15 104530.jpg
屏幕截图 2026-03-15 104547.jpg
屏幕截图 2026-03-15 104614.jpg
屏幕截图 2026-03-15 104636.jpg
屏幕截图 2026-03-15 104647.jpg
屏幕截图 2026-03-15 104827.jpg
屏幕截图 2026-03-15 104839.jpg
屏幕截图 2026-03-15 104852.jpg
屏幕截图 2026-03-15 104901.jpg
屏幕截图 2026-03-15 104915.jpg
屏幕截图 2026-03-15 104942.jpg
屏幕截图 2026-03-15 105007.jpg
屏幕截图 2026-03-15 105043.jpg
屏幕截图 2026-03-15 105101.jpg
屏幕截图 2026-03-15 105116.jpg
屏幕截图 2026-03-15 105156.jpg
屏幕截图 2026-03-15 105219.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,97 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ROI Compare 60</title>
<style>
:root {
--bg: #f3efe7;
--card: #fffdf8;
--ink: #1f1f1f;
--muted: #6b645b;
--line: #d9d1c5;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
background: linear-gradient(180deg, #f6f2ea 0%, #efe8dc 100%);
color: var(--ink);
}
.wrap {
max-width: 1280px;
margin: 0 auto;
padding: 24px;
}
h1 {
margin: 0 0 8px;
font-size: 28px;
}
.meta {
margin: 0 0 24px;
color: var(--muted);
font-size: 14px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 18px;
}
.card {
background: var(--card);
border: 1px solid var(--line);
border-radius: 14px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(80, 60, 20, 0.08);
}
.title {
padding: 12px 14px;
border-bottom: 1px solid var(--line);
font-size: 13px;
color: var(--muted);
word-break: break-all;
}
img {
display: block;
width: 100%;
height: auto;
background: #e8e1d5;
}
</style>
</head>
<body>
<div class="wrap">
<h1>ROI 对照图</h1>
<p class="meta">左侧是当前主力模型,右侧是 100k filtered + 60 epochs。直接打开本页即可逐张翻看。</p>
<div class="grid">
<div class="card"><div class="title">屏幕截图 2026-03-15 104013.jpg</div><img src="屏幕截图 2026-03-15 104013.jpg" alt="104013"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104056.jpg</div><img src="屏幕截图 2026-03-15 104056.jpg" alt="104056"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104132.jpg</div><img src="屏幕截图 2026-03-15 104132.jpg" alt="104132"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104233.jpg</div><img src="屏幕截图 2026-03-15 104233.jpg" alt="104233"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104318.jpg</div><img src="屏幕截图 2026-03-15 104318.jpg" alt="104318"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104349.jpg</div><img src="屏幕截图 2026-03-15 104349.jpg" alt="104349"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104428.jpg</div><img src="屏幕截图 2026-03-15 104428.jpg" alt="104428"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104443.jpg</div><img src="屏幕截图 2026-03-15 104443.jpg" alt="104443"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104503.jpg</div><img src="屏幕截图 2026-03-15 104503.jpg" alt="104503"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104530.jpg</div><img src="屏幕截图 2026-03-15 104530.jpg" alt="104530"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104547.jpg</div><img src="屏幕截图 2026-03-15 104547.jpg" alt="104547"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104614.jpg</div><img src="屏幕截图 2026-03-15 104614.jpg" alt="104614"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104636.jpg</div><img src="屏幕截图 2026-03-15 104636.jpg" alt="104636"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104647.jpg</div><img src="屏幕截图 2026-03-15 104647.jpg" alt="104647"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104827.jpg</div><img src="屏幕截图 2026-03-15 104827.jpg" alt="104827"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104839.jpg</div><img src="屏幕截图 2026-03-15 104839.jpg" alt="104839"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104852.jpg</div><img src="屏幕截图 2026-03-15 104852.jpg" alt="104852"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104901.jpg</div><img src="屏幕截图 2026-03-15 104901.jpg" alt="104901"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104915.jpg</div><img src="屏幕截图 2026-03-15 104915.jpg" alt="104915"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 104942.jpg</div><img src="屏幕截图 2026-03-15 104942.jpg" alt="104942"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105007.jpg</div><img src="屏幕截图 2026-03-15 105007.jpg" alt="105007"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105043.jpg</div><img src="屏幕截图 2026-03-15 105043.jpg" alt="105043"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105101.jpg</div><img src="屏幕截图 2026-03-15 105101.jpg" alt="105101"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105116.jpg</div><img src="屏幕截图 2026-03-15 105116.jpg" alt="105116"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105156.jpg</div><img src="屏幕截图 2026-03-15 105156.jpg" alt="105156"></div>
<div class="card"><div class="title">屏幕截图 2026-03-15 105219.jpg</div><img src="屏幕截图 2026-03-15 105219.jpg" alt="105219"></div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,30 @@
left_dir=C:\Users\Tellme\apps\DetectionModelTraining\runs\roi_eval\roi_shoes_v1
right_dir=C:\Users\Tellme\apps\DetectionModelTraining\runs\roi_eval\roi_shoes_100k_filtered_60
pairs=26
屏幕截图 2026-03-15 104013.jpg
屏幕截图 2026-03-15 104056.jpg
屏幕截图 2026-03-15 104132.jpg
屏幕截图 2026-03-15 104233.jpg
屏幕截图 2026-03-15 104318.jpg
屏幕截图 2026-03-15 104349.jpg
屏幕截图 2026-03-15 104428.jpg
屏幕截图 2026-03-15 104443.jpg
屏幕截图 2026-03-15 104503.jpg
屏幕截图 2026-03-15 104530.jpg
屏幕截图 2026-03-15 104547.jpg
屏幕截图 2026-03-15 104614.jpg
屏幕截图 2026-03-15 104636.jpg
屏幕截图 2026-03-15 104647.jpg
屏幕截图 2026-03-15 104827.jpg
屏幕截图 2026-03-15 104839.jpg
屏幕截图 2026-03-15 104852.jpg
屏幕截图 2026-03-15 104901.jpg
屏幕截图 2026-03-15 104915.jpg
屏幕截图 2026-03-15 104942.jpg
屏幕截图 2026-03-15 105007.jpg
屏幕截图 2026-03-15 105043.jpg
屏幕截图 2026-03-15 105101.jpg
屏幕截图 2026-03-15 105116.jpg
屏幕截图 2026-03-15 105156.jpg
屏幕截图 2026-03-15 105219.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,15 @@

Sample Roi Mode Boxes AreaRatio Crop
------ --- ---- ----- --------- ----
openimages_mixed roi0 single 1 0.772 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\openima...
openimages_mixed roi1 single 1 0.145 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\openima...
openimages_mixed roi2 single 1 0.113 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\openima...
openimages_pair roi0 single 1 0.178 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\openima...
openimages_pair roi1 single 1 0.108 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\openima...
ppe_pair_a roi0 single 1 0.113 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\ppe_pai...
ppe_pair_a roi1 single 1 0.179 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\ppe_pai...
ppe_pair_b roi0 single 1 0.178 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\ppe_pai...
ppe_pair_b roi1 single 1 0.175 C:\Users\Tellme\apps\DetectionModelTraining\samples\roi_preview\ppe_pai...