Spaces:
Running
Running
Commit ·
30ce35a
1
Parent(s): b925621
prompt-samples (#6)
Browse files- video edit prompt samples (cc9cf93e1d03e5ece0cded717c4f2572536dc614)
- app.py +44 -9
- data/video_editing_combined/generations.jsonl +3 -0
- data/video_editing_combined/prompts.jsonl +78 -0
- model_display.py +9 -0
- ui.py +94 -22
app.py
CHANGED
|
@@ -1783,6 +1783,9 @@ button.theme-toggle[data-mode="light"] .theme-icon-moon { display: block !import
|
|
| 1783 |
max-width: 100% !important;
|
| 1784 |
}
|
| 1785 |
.compare-cell { min-width: 0; }
|
|
|
|
|
|
|
|
|
|
| 1786 |
.compare-model-label {
|
| 1787 |
margin-bottom: 6px;
|
| 1788 |
color: var(--pruna-lavender);
|
|
@@ -1790,15 +1793,23 @@ button.theme-toggle[data-mode="light"] .theme-icon-moon { display: block !import
|
|
| 1790 |
font-weight: 700;
|
| 1791 |
word-break: break-word;
|
| 1792 |
}
|
| 1793 |
-
.compare-cell img
|
|
|
|
| 1794 |
display: block;
|
| 1795 |
width: 100%;
|
| 1796 |
-
aspect-ratio: 1 / 1;
|
| 1797 |
-
object-fit: cover;
|
| 1798 |
border-radius: 12px;
|
| 1799 |
border: 1px solid var(--pruna-border);
|
| 1800 |
background: var(--pruna-bg-elevated);
|
| 1801 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1802 |
.compare-empty,
|
| 1803 |
.pareto-note-copy {
|
| 1804 |
margin: 0;
|
|
@@ -2157,14 +2168,20 @@ def load_sample_comparison_data(folder):
|
|
| 2157 |
return None
|
| 2158 |
|
| 2159 |
prompts = {}
|
|
|
|
| 2160 |
with prompts_path.open() as handle:
|
| 2161 |
for line in handle:
|
| 2162 |
if not line.strip():
|
| 2163 |
continue
|
| 2164 |
row = json.loads(line)
|
| 2165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2166 |
|
| 2167 |
images = defaultdict(dict)
|
|
|
|
| 2168 |
with generations_path.open() as handle:
|
| 2169 |
for line in handle:
|
| 2170 |
if not line.strip():
|
|
@@ -2172,20 +2189,33 @@ def load_sample_comparison_data(folder):
|
|
| 2172 |
row = json.loads(line)
|
| 2173 |
model_id = row["model_id"]
|
| 2174 |
prompt_id = row["prompt_id"]
|
| 2175 |
-
|
| 2176 |
-
if
|
| 2177 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2178 |
|
| 2179 |
models = sorted(images)
|
| 2180 |
if not models or not prompts:
|
| 2181 |
return None
|
| 2182 |
|
| 2183 |
-
|
| 2184 |
"prompts": prompts,
|
| 2185 |
"images": {model: dict(prompt_map) for model, prompt_map in images.items()},
|
| 2186 |
"models": models,
|
| 2187 |
"prompt_ids": sorted(prompts),
|
|
|
|
| 2188 |
}
|
|
|
|
|
|
|
|
|
|
| 2189 |
|
| 2190 |
|
| 2191 |
def _as_numeric(df, columns):
|
|
@@ -2416,6 +2446,10 @@ qwen_combined_dir = _resolve_data_path(
|
|
| 2416 |
data_dir / "qwen_image_bench_combined",
|
| 2417 |
space_root.parent / "qwen_image_bench_combined",
|
| 2418 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2419 |
qwen_path = _resolve_data_path(
|
| 2420 |
data_dir / "qwen_image_bench_model_price_and_median_generation_time_10_august.csv",
|
| 2421 |
space_root.parent / "qwen_image_bench_model_price_and_median_generation_time_10_august.csv",
|
|
@@ -2483,6 +2517,7 @@ video_display_columns = [
|
|
| 2483 |
|
| 2484 |
oneig_samples = load_sample_comparison_data(oneig_combined_dir)
|
| 2485 |
qwen_samples = load_sample_comparison_data(qwen_combined_dir)
|
|
|
|
| 2486 |
|
| 2487 |
metrics = [
|
| 2488 |
{"id": "datapoint_elo", "column": "Datapoint Elo"},
|
|
@@ -2556,7 +2591,7 @@ datasets = [
|
|
| 2556 |
"per second of output video. Generation time per second of video "
|
| 2557 |
"is end-to-end wall time to produce one second of output."
|
| 2558 |
),
|
| 2559 |
-
"samples":
|
| 2560 |
},
|
| 2561 |
{
|
| 2562 |
"id": "qwen",
|
|
|
|
| 1783 |
max-width: 100% !important;
|
| 1784 |
}
|
| 1785 |
.compare-cell { min-width: 0; }
|
| 1786 |
+
.compare-cell.compare-source .compare-model-label {
|
| 1787 |
+
color: var(--pruna-text-muted);
|
| 1788 |
+
}
|
| 1789 |
.compare-model-label {
|
| 1790 |
margin-bottom: 6px;
|
| 1791 |
color: var(--pruna-lavender);
|
|
|
|
| 1793 |
font-weight: 700;
|
| 1794 |
word-break: break-word;
|
| 1795 |
}
|
| 1796 |
+
.compare-cell img,
|
| 1797 |
+
.compare-cell video {
|
| 1798 |
display: block;
|
| 1799 |
width: 100%;
|
|
|
|
|
|
|
| 1800 |
border-radius: 12px;
|
| 1801 |
border: 1px solid var(--pruna-border);
|
| 1802 |
background: var(--pruna-bg-elevated);
|
| 1803 |
}
|
| 1804 |
+
.compare-cell img {
|
| 1805 |
+
aspect-ratio: 1 / 1;
|
| 1806 |
+
object-fit: cover;
|
| 1807 |
+
}
|
| 1808 |
+
.compare-cell video {
|
| 1809 |
+
aspect-ratio: 16 / 9;
|
| 1810 |
+
max-height: 360px;
|
| 1811 |
+
object-fit: contain;
|
| 1812 |
+
}
|
| 1813 |
.compare-empty,
|
| 1814 |
.pareto-note-copy {
|
| 1815 |
margin: 0;
|
|
|
|
| 2168 |
return None
|
| 2169 |
|
| 2170 |
prompts = {}
|
| 2171 |
+
source_videos = {}
|
| 2172 |
with prompts_path.open() as handle:
|
| 2173 |
for line in handle:
|
| 2174 |
if not line.strip():
|
| 2175 |
continue
|
| 2176 |
row = json.loads(line)
|
| 2177 |
+
prompt_id = row["prompt_id"]
|
| 2178 |
+
prompts[prompt_id] = row.get("text", "")
|
| 2179 |
+
source_video = row.get("source_video")
|
| 2180 |
+
if source_video:
|
| 2181 |
+
source_videos[prompt_id] = source_video
|
| 2182 |
|
| 2183 |
images = defaultdict(dict)
|
| 2184 |
+
kinds = set()
|
| 2185 |
with generations_path.open() as handle:
|
| 2186 |
for line in handle:
|
| 2187 |
if not line.strip():
|
|
|
|
| 2189 |
row = json.loads(line)
|
| 2190 |
model_id = row["model_id"]
|
| 2191 |
prompt_id = row["prompt_id"]
|
| 2192 |
+
media_url = row.get("image") or row.get("video")
|
| 2193 |
+
if row.get("video"):
|
| 2194 |
+
kinds.add("video")
|
| 2195 |
+
elif row.get("image"):
|
| 2196 |
+
kinds.add("image")
|
| 2197 |
+
if model_id and prompt_id and media_url:
|
| 2198 |
+
images[model_id][prompt_id] = media_url
|
| 2199 |
+
if prompt_id and prompt_id not in source_videos:
|
| 2200 |
+
params = row.get("params") or {}
|
| 2201 |
+
input_video = params.get("input_video") or row.get("input_video")
|
| 2202 |
+
if input_video:
|
| 2203 |
+
source_videos[prompt_id] = input_video
|
| 2204 |
|
| 2205 |
models = sorted(images)
|
| 2206 |
if not models or not prompts:
|
| 2207 |
return None
|
| 2208 |
|
| 2209 |
+
loaded = {
|
| 2210 |
"prompts": prompts,
|
| 2211 |
"images": {model: dict(prompt_map) for model, prompt_map in images.items()},
|
| 2212 |
"models": models,
|
| 2213 |
"prompt_ids": sorted(prompts),
|
| 2214 |
+
"kind": "video" if "video" in kinds else "image",
|
| 2215 |
}
|
| 2216 |
+
if source_videos:
|
| 2217 |
+
loaded["source_videos"] = source_videos
|
| 2218 |
+
return loaded
|
| 2219 |
|
| 2220 |
|
| 2221 |
def _as_numeric(df, columns):
|
|
|
|
| 2446 |
data_dir / "qwen_image_bench_combined",
|
| 2447 |
space_root.parent / "qwen_image_bench_combined",
|
| 2448 |
)
|
| 2449 |
+
video_combined_dir = _resolve_data_path(
|
| 2450 |
+
data_dir / "video_editing_combined",
|
| 2451 |
+
space_root.parent / "video_editing_combined",
|
| 2452 |
+
)
|
| 2453 |
qwen_path = _resolve_data_path(
|
| 2454 |
data_dir / "qwen_image_bench_model_price_and_median_generation_time_10_august.csv",
|
| 2455 |
space_root.parent / "qwen_image_bench_model_price_and_median_generation_time_10_august.csv",
|
|
|
|
| 2517 |
|
| 2518 |
oneig_samples = load_sample_comparison_data(oneig_combined_dir)
|
| 2519 |
qwen_samples = load_sample_comparison_data(qwen_combined_dir)
|
| 2520 |
+
video_samples = load_sample_comparison_data(video_combined_dir)
|
| 2521 |
|
| 2522 |
metrics = [
|
| 2523 |
{"id": "datapoint_elo", "column": "Datapoint Elo"},
|
|
|
|
| 2591 |
"per second of output video. Generation time per second of video "
|
| 2592 |
"is end-to-end wall time to produce one second of output."
|
| 2593 |
),
|
| 2594 |
+
"samples": video_samples,
|
| 2595 |
},
|
| 2596 |
{
|
| 2597 |
"id": "qwen",
|
data/video_editing_combined/generations.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3ec4ea0a431484e65f30990c8cc4292b00c665be96db587775426da1c84a4ab8
|
| 3 |
+
size 762227
|
data/video_editing_combined/prompts.jsonl
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"prompt_id": "video_edit_internal__advertising__p0000", "text": "Replace the white bottle with an orange sunscreen bottle.", "dataset": "video_edit_internal", "category": "advertising", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/advertising/4620329ad65820ce.mp4"}
|
| 2 |
+
{"prompt_id": "video_edit_internal__advertising__p0001", "text": "Replace the woman with an asian woman riding on a donkey through a chinese small town.", "dataset": "video_edit_internal", "category": "advertising", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/advertising/44db5689846be901.mp4"}
|
| 3 |
+
{"prompt_id": "video_edit_internal__advertising__p0002", "text": "Place the couple on a snowy mountain next to a mountain hut.", "dataset": "video_edit_internal", "category": "advertising", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/advertising/481db4a047688bbe.mp4"}
|
| 4 |
+
{"prompt_id": "video_edit_internal__advertising__p0003", "text": "Turn this into a scene in the summer with birds flying in the sky and butterflies in the foreground.", "dataset": "video_edit_internal", "category": "advertising", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/advertising/32b9f56763c56482.mp4"}
|
| 5 |
+
{"prompt_id": "video_edit_internal__advertising__p0004", "text": "Replace the robot arm with a dancing hamster on a small table.", "dataset": "video_edit_internal", "category": "advertising", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/advertising/22d02ae2df7f9045.mp4"}
|
| 6 |
+
{"prompt_id": "video_edit_internal__anonymization__p0000", "text": "Anonymize the womans face", "dataset": "video_edit_internal", "category": "anonymization", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/anonymization/7c410085f2fd939d.mp4"}
|
| 7 |
+
{"prompt_id": "video_edit_internal__anonymization__p0001", "text": "Anonymize the mans face", "dataset": "video_edit_internal", "category": "anonymization", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/anonymization/7b495805c0c270ea.mp4"}
|
| 8 |
+
{"prompt_id": "video_edit_internal__anonymization__p0002", "text": "Anonymize the mans face", "dataset": "video_edit_internal", "category": "anonymization", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/anonymization/736b6fb504bd32be.mp4"}
|
| 9 |
+
{"prompt_id": "video_edit_internal__anonymization__p0003", "text": "Anonymize the girls face", "dataset": "video_edit_internal", "category": "anonymization", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/anonymization/2c82413d39579cd5.mp4"}
|
| 10 |
+
{"prompt_id": "video_edit_internal__artificial_analysis__p0000", "text": "Change the rainforest setting to a neon-lit urban alley at night with steam from vents and wet reflective asphalt, and move into an ariel shot of the character after the initial camera movement to focus on the character", "dataset": "video_edit_internal", "category": "artificial_analysis", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/artificial_analysis/e2f6121269a206d3.mp4"}
|
| 11 |
+
{"prompt_id": "video_edit_internal__artificial_analysis__p0001", "text": "Replace the magenta hover-car with a chrome-blue car, keeping the drift and neon light trails.", "dataset": "video_edit_internal", "category": "artificial_analysis", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/artificial_analysis/55d1baa7f3f71b26.mp4"}
|
| 12 |
+
{"prompt_id": "video_edit_internal__artificial_analysis__p0002", "text": "Make the footage look like it was shot on a 1970s film camera, with grainy film texture, faded warm colors, slight softness, and slightly darker corners around the edges.", "dataset": "video_edit_internal", "category": "artificial_analysis", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/artificial_analysis/fd1ab436de020152.mp4"}
|
| 13 |
+
{"prompt_id": "video_edit_internal__artificial_analysis__p0003", "text": "A person appears at the top of the waterfall, leaps into the lake below, and disappears into the misty water beneath the falls.", "dataset": "video_edit_internal", "category": "artificial_analysis", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/artificial_analysis/7ee1623303a8da68.mp4"}
|
| 14 |
+
{"prompt_id": "video_edit_internal__artificial_analysis__p0004", "text": "A fluffy orange cat leaps gracefully from the floor onto the couch, paws sinking into the soft cushions. It circles once in place, tail swaying gently, before curling up tightly on one of the cushions and settling in comfortably.", "dataset": "video_edit_internal", "category": "artificial_analysis", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/artificial_analysis/9a73c608b343bbbe.mp4"}
|
| 15 |
+
{"prompt_id": "video_edit_internal__camera_editing__p0000", "text": "Zoom in on the man's face to show his focused expression", "dataset": "video_edit_internal", "category": "camera_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/camera_editing/0336e64b0594bd7a.mp4"}
|
| 16 |
+
{"prompt_id": "video_edit_internal__camera_editing__p0001", "text": "Perform an arc shot around the tram as it arrives at the station", "dataset": "video_edit_internal", "category": "camera_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/camera_editing/204aa93703da117b.mp4"}
|
| 17 |
+
{"prompt_id": "video_edit_internal__camera_editing__p0002", "text": "Change the view to a high angle.", "dataset": "video_edit_internal", "category": "camera_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/camera_editing/c2ccb5351be5c718.mp4"}
|
| 18 |
+
{"prompt_id": "video_edit_internal__camera_editing__p0003", "text": "Change the view to a high angle.", "dataset": "video_edit_internal", "category": "camera_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/camera_editing/b725aaded02d65e9.mp4"}
|
| 19 |
+
{"prompt_id": "video_edit_internal__camera_editing__p0004", "text": "Gradually move the camera away from the doctor", "dataset": "video_edit_internal", "category": "camera_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/camera_editing/33f24f4d083df743.mp4"}
|
| 20 |
+
{"prompt_id": "video_edit_internal__design_arena__p0000", "text": "Create a transition of the video of the product whihc is the jeans on the lady model with an atitiude that goes into a zoom out camera that she is in a party .Focus on the vibes", "dataset": "video_edit_internal", "category": "design_arena", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/design_arena/b0b4642272a481b1.mp4"}
|
| 21 |
+
{"prompt_id": "video_edit_internal__design_arena__p0001", "text": "add ethnic urban women dancing at the bottem and at the bar wearing DMI Tshirts", "dataset": "video_edit_internal", "category": "design_arena", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/design_arena/0f730f98f3c51356.mp4"}
|
| 22 |
+
{"prompt_id": "video_edit_internal__design_arena__p0002", "text": "Generate a commercial of this dog drinking beer at an electronic music party in a world where dogs and humans are mixed together.", "dataset": "video_edit_internal", "category": "design_arena", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/design_arena/575fc4b9b6d7b3ab.mp4"}
|
| 23 |
+
{"prompt_id": "video_edit_internal__design_arena__p0003", "text": "everything is the same excpet the winter season, snowing", "dataset": "video_edit_internal", "category": "design_arena", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/design_arena/8674fd022867a736.mp4"}
|
| 24 |
+
{"prompt_id": "video_edit_internal__design_arena__p0004", "text": "A cinematic character introduction of Jason, framed in a medium close-up with subtle camera movement, confident body language, and expressive facial detail. Moody, high-contrast lighting with a cool-toned color palette, shallow depth of field, and a slow dramatic reveal that builds intrigue over a few seconds. I want a video in a 9:16 aspect ratio for tiktok. remove all text and have him in a mid day campus setting", "dataset": "video_edit_internal", "category": "design_arena", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/design_arena/91873bbafe4173da.mp4"}
|
| 25 |
+
{"prompt_id": "video_edit_internal__e_commerce__p0000", "text": "Remove the black blazer.", "dataset": "video_edit_internal", "category": "e_commerce", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/e_commerce/b89faaa5080c31db.mp4"}
|
| 26 |
+
{"prompt_id": "video_edit_internal__e_commerce__p0001", "text": "Replace her skirt with a jeans skirt.", "dataset": "video_edit_internal", "category": "e_commerce", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/e_commerce/c34a33d07e843804.mp4"}
|
| 27 |
+
{"prompt_id": "video_edit_internal__e_commerce__p0002", "text": "Replace the black leggings and the black shirt with a white dress.", "dataset": "video_edit_internal", "category": "e_commerce", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/e_commerce/489d2439cbaeed79.mp4"}
|
| 28 |
+
{"prompt_id": "video_edit_internal__e_commerce__p0003", "text": "Replace the white woman with a lebanese-looking woman.", "dataset": "video_edit_internal", "category": "e_commerce", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/e_commerce/0ad8fb773f303a11.mp4"}
|
| 29 |
+
{"prompt_id": "video_edit_internal__e_commerce__p0004", "text": "Remove all items on the table and place an eyeshadow pallete on the table next to the woman.", "dataset": "video_edit_internal", "category": "e_commerce", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/e_commerce/f28f3aa12b1ec220.mp4"}
|
| 30 |
+
{"prompt_id": "video_edit_internal__lighting__p0000", "text": "After the sun sets behind the mountains, the scene transitions into nighttime.", "dataset": "video_edit_internal", "category": "lighting", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/lighting/229c165e0ac97daf.mp4"}
|
| 31 |
+
{"prompt_id": "video_edit_internal__lighting__p0001", "text": "Change the weather to a dazzling starry night.", "dataset": "video_edit_internal", "category": "lighting", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/lighting/f42c41ab2f3adc26.mp4"}
|
| 32 |
+
{"prompt_id": "video_edit_internal__lighting__p0002", "text": "Change the weather to a thunderstorm with heavy rain.", "dataset": "video_edit_internal", "category": "lighting", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/lighting/daa36567634ca6be.mp4"}
|
| 33 |
+
{"prompt_id": "video_edit_internal__lighting__p0003", "text": "Change the weather to a torrential downpour.", "dataset": "video_edit_internal", "category": "lighting", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/lighting/6817a4142b69d602.mp4"}
|
| 34 |
+
{"prompt_id": "video_edit_internal__lighting__p0004", "text": "Change the weather to a torrential downpour.", "dataset": "video_edit_internal", "category": "lighting", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/lighting/ac01488a685a1096.mp4"}
|
| 35 |
+
{"prompt_id": "video_edit_internal__long__p0000", "text": "Change the weather to a dazzling starry night.", "dataset": "video_edit_internal", "category": "long", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/long/e9af2a7039e43f16.mp4"}
|
| 36 |
+
{"prompt_id": "video_edit_internal__long__p0001", "text": "Adjust the color of book to blue", "dataset": "video_edit_internal", "category": "long", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/long/eab696d1555be316.mp4"}
|
| 37 |
+
{"prompt_id": "video_edit_internal__long__p0002", "text": "Make the young woman turn into sand and blow away.", "dataset": "video_edit_internal", "category": "long", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/long/d18378f1d7e4ca0e.mp4"}
|
| 38 |
+
{"prompt_id": "video_edit_internal__long__p0003", "text": "Make the bird flap its wings", "dataset": "video_edit_internal", "category": "long", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/long/3835b37b43f5e5bf.mp4"}
|
| 39 |
+
{"prompt_id": "video_edit_internal__long__p0004", "text": "Transform the video into a ukiyo-e style", "dataset": "video_edit_internal", "category": "long", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/long/09fe5bb4b5304b66.mp4"}
|
| 40 |
+
{"prompt_id": "video_edit_internal__movie_concept_art__p0000", "text": "Add more blood and wounds to the mans face.", "dataset": "video_edit_internal", "category": "movie_concept_art", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/movie_concept_art/1d1a99167475720b.mp4"}
|
| 41 |
+
{"prompt_id": "video_edit_internal__movie_concept_art__p0001", "text": "Make the scene less dark.", "dataset": "video_edit_internal", "category": "movie_concept_art", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/movie_concept_art/10cb44d8c0bf4116.mp4"}
|
| 42 |
+
{"prompt_id": "video_edit_internal__movie_concept_art__p0002", "text": "Replace the female warrior with a male warrior with ginger hair.", "dataset": "video_edit_internal", "category": "movie_concept_art", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/movie_concept_art/9e45454390c20b8a.mp4"}
|
| 43 |
+
{"prompt_id": "video_edit_internal__movie_concept_art__p0003", "text": "Turn the man's hand into a robotic hand.", "dataset": "video_edit_internal", "category": "movie_concept_art", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/movie_concept_art/99977e7a91a950b4.mp4"}
|
| 44 |
+
{"prompt_id": "video_edit_internal__real_estate__p0000", "text": "Replace the interior with a gold-black interior heavy luxury style.", "dataset": "video_edit_internal", "category": "real_estate", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/real_estate/869064ab06bb5daa.mp4"}
|
| 45 |
+
{"prompt_id": "video_edit_internal__real_estate__p0001", "text": "Replace the grey wallpaper with a beige painted wall and turn the grey curtains a dark brown.", "dataset": "video_edit_internal", "category": "real_estate", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/real_estate/1c2f358bfe9b8299.mp4"}
|
| 46 |
+
{"prompt_id": "video_edit_internal__real_estate__p0002", "text": "Remove all decoration from the walls and keep only the furniture.", "dataset": "video_edit_internal", "category": "real_estate", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/real_estate/2058bcf38389f8fe.mp4"}
|
| 47 |
+
{"prompt_id": "video_edit_internal__real_estate__p0003", "text": "Exchange the wooden floor for a marble floor.", "dataset": "video_edit_internal", "category": "real_estate", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/real_estate/6a4c09a23dda57d9.mp4"}
|
| 48 |
+
{"prompt_id": "video_edit_internal__real_estate__p0004", "text": "Replace the bedframe with a modern wooden bed.", "dataset": "video_edit_internal", "category": "real_estate", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/real_estate/3e0f6dc5df891001.mp4"}
|
| 49 |
+
{"prompt_id": "video_edit_internal__style_transfer__p0000", "text": "Transform the video into a cyberpunk style", "dataset": "video_edit_internal", "category": "style_transfer", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/style_transfer/2253f6ed3674f006.mp4"}
|
| 50 |
+
{"prompt_id": "video_edit_internal__style_transfer__p0001", "text": "Convert to different shades of orange", "dataset": "video_edit_internal", "category": "style_transfer", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/style_transfer/edb6a105be03bae0.mp4"}
|
| 51 |
+
{"prompt_id": "video_edit_internal__style_transfer__p0002", "text": "Convert to black and white", "dataset": "video_edit_internal", "category": "style_transfer", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/style_transfer/c3dc058b3be26cbd.mp4"}
|
| 52 |
+
{"prompt_id": "video_edit_internal__style_transfer__p0003", "text": "Apply Ghibli-style editing to the video", "dataset": "video_edit_internal", "category": "style_transfer", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/style_transfer/83a638223a20911c.mp4"}
|
| 53 |
+
{"prompt_id": "video_edit_internal__style_transfer__p0004", "text": "Relight the scene as if it were shot during golden hour, with warm low-angle sunlight, soft shadows, and natural highlights on faces and surfaces.", "dataset": "video_edit_internal", "category": "style_transfer", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/style_transfer/daa36567634ca6be.mp4"}
|
| 54 |
+
{"prompt_id": "video_edit_internal__subject_editing__p0000", "text": "Replace the rainbow colors of the logo with different shades of purple", "dataset": "video_edit_internal", "category": "subject_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_editing/6358f26b46baadf5.mp4"}
|
| 55 |
+
{"prompt_id": "video_edit_internal__subject_editing__p0001", "text": "Add a small dog running beside the scooter", "dataset": "video_edit_internal", "category": "subject_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_editing/052c0bfd7b68fea7.mp4"}
|
| 56 |
+
{"prompt_id": "video_edit_internal__subject_editing__p0002", "text": "Replace the splashing waves with a calm water surface", "dataset": "video_edit_internal", "category": "subject_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_editing/c3f79578a39f415d.mp4"}
|
| 57 |
+
{"prompt_id": "video_edit_internal__subject_editing__p0003", "text": "Add a violinist in the background", "dataset": "video_edit_internal", "category": "subject_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_editing/a0eebf32a076e2fc.mp4"}
|
| 58 |
+
{"prompt_id": "video_edit_internal__subject_editing__p0004", "text": "Add a group of people walking on the pathway", "dataset": "video_edit_internal", "category": "subject_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_editing/3c2b7e3a5b284e1d.mp4"}
|
| 59 |
+
{"prompt_id": "video_edit_internal__subject_motion_editing__p0000", "text": "Make the bird hop around instead of walking and foraging", "dataset": "video_edit_internal", "category": "subject_motion_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_motion_editing/ac38b2a97d1a5c3a.mp4"}
|
| 60 |
+
{"prompt_id": "video_edit_internal__subject_motion_editing__p0001", "text": "The male colleague is walking around to observe.", "dataset": "video_edit_internal", "category": "subject_motion_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_motion_editing/8aaab7d304c5ad99.mp4"}
|
| 61 |
+
{"prompt_id": "video_edit_internal__subject_motion_editing__p0002", "text": "Make the static spider-man in the mural dynamic and make him swing faster", "dataset": "video_edit_internal", "category": "subject_motion_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_motion_editing/3412b39686fd5879.mp4"}
|
| 62 |
+
{"prompt_id": "video_edit_internal__subject_motion_editing__p0003", "text": "Change the woman's jogging to taking off.", "dataset": "video_edit_internal", "category": "subject_motion_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_motion_editing/17c4dc0514772321.mp4"}
|
| 63 |
+
{"prompt_id": "video_edit_internal__subject_motion_editing__p0004", "text": "Make the knight lunging forward and the creature swiping at the knight", "dataset": "video_edit_internal", "category": "subject_motion_editing", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/subject_motion_editing/980354550011911b.mp4"}
|
| 64 |
+
{"prompt_id": "video_edit_internal__synthetic_data__p0000", "text": "Turn the scene into nighttime.", "dataset": "video_edit_internal", "category": "synthetic_data", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/synthetic_data/e3b1e603bfaa1aec.mp4"}
|
| 65 |
+
{"prompt_id": "video_edit_internal__synthetic_data__p0001", "text": "Remove the crosswalk.", "dataset": "video_edit_internal", "category": "synthetic_data", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/synthetic_data/30df5fd5fe28af65.mp4"}
|
| 66 |
+
{"prompt_id": "video_edit_internal__synthetic_data__p0002", "text": "Add a bicycle riding in front of the car.", "dataset": "video_edit_internal", "category": "synthetic_data", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/synthetic_data/d093491e25682b3a.mp4"}
|
| 67 |
+
{"prompt_id": "video_edit_internal__synthetic_data__p0003", "text": "Turn the scene into a snowstorm scene.", "dataset": "video_edit_internal", "category": "synthetic_data", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/synthetic_data/1da5913f13362f8d.mp4"}
|
| 68 |
+
{"prompt_id": "video_edit_internal__synthetic_data__p0004", "text": "Make it rain in the scene.", "dataset": "video_edit_internal", "category": "synthetic_data", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/synthetic_data/936bdb89558f5a7f.mp4"}
|
| 69 |
+
{"prompt_id": "video_edit_internal__text__p0000", "text": "Add the text \"True Love\" in the foreground in pink romantic font.", "dataset": "video_edit_internal", "category": "text", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/text/c763407793ca9b0e.mp4"}
|
| 70 |
+
{"prompt_id": "video_edit_internal__text__p0001", "text": "Replace any mention of \"Fanta\" with the branding \"Cola\".", "dataset": "video_edit_internal", "category": "text", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/text/7b878ea6d99834b2.mp4"}
|
| 71 |
+
{"prompt_id": "video_edit_internal__text__p0002", "text": "Remove all text from the video.", "dataset": "video_edit_internal", "category": "text", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/text/76763c31b2609109.mp4"}
|
| 72 |
+
{"prompt_id": "video_edit_internal__text__p0003", "text": "Replace the branding \"Royalty\" with the phrasing \"Princess\".", "dataset": "video_edit_internal", "category": "text", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/text/d221d299c9e49064.mp4"}
|
| 73 |
+
{"prompt_id": "video_edit_internal__text__p0004", "text": "Remove all text from the video.", "dataset": "video_edit_internal", "category": "text", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/text/5c169901af8e4ed6.mp4"}
|
| 74 |
+
{"prompt_id": "video_edit_internal__transitions__p0000", "text": "After a black screen transition, the road transforms into lush grass.", "dataset": "video_edit_internal", "category": "transitions", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/transitions/964c35b19ee1fc1f.mp4"}
|
| 75 |
+
{"prompt_id": "video_edit_internal__transitions__p0001", "text": "After a wave-foam transition, the small fishing boat is eaten by a giant whale.", "dataset": "video_edit_internal", "category": "transitions", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/transitions/b8b88f43316363f3.mp4"}
|
| 76 |
+
{"prompt_id": "video_edit_internal__transitions__p0002", "text": "Add a cut transition, then show a bowl of ramen topped with parsley.", "dataset": "video_edit_internal", "category": "transitions", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/transitions/c823d6c77bdc87f4.mp4"}
|
| 77 |
+
{"prompt_id": "video_edit_internal__transitions__p0003", "text": "Add a smoke transition, then show the circuit board burning.", "dataset": "video_edit_internal", "category": "transitions", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/transitions/edb9927ff06c1175.mp4"}
|
| 78 |
+
{"prompt_id": "video_edit_internal__transitions__p0004", "text": "After a smoke transition, the Basilica of the Sacred Heart of Paris catches fire.", "dataset": "video_edit_internal", "category": "transitions", "source_video": "https://d2j1a65dna040x.cloudfront.net/benchmark_inputs/video_edit_internal/transitions/77bb900383d4f370.mp4"}
|
model_display.py
CHANGED
|
@@ -95,6 +95,15 @@ MODEL_DISPLAY_NAMES = {
|
|
| 95 |
"P-Video Edit Final (draft)": "P-Video-Edit Draft",
|
| 96 |
"p_video_edit_preview__replicate_final": "P-Video-Edit",
|
| 97 |
"p_video_edit_preview__replicate_final__draft": "P-Video-Edit Draft",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
# Others overlapping P-Bench
|
| 99 |
"z_image": "Z-Image",
|
| 100 |
"glm_image": "GLM-Image",
|
|
|
|
| 95 |
"P-Video Edit Final (draft)": "P-Video-Edit Draft",
|
| 96 |
"p_video_edit_preview__replicate_final": "P-Video-Edit",
|
| 97 |
"p_video_edit_preview__replicate_final__draft": "P-Video-Edit Draft",
|
| 98 |
+
# Video-to-video leaderboard
|
| 99 |
+
"gemini_omni_flash_edit__fal": "Gemini Omni Flash Edit",
|
| 100 |
+
"grok_imagine_video__replicate": "Grok Imagine Video",
|
| 101 |
+
"happyhorse_1_0__wavespeed": "HappyHorse 1.0",
|
| 102 |
+
"ltx_2_3_quality_reference_video_to_video__fal": "LTX 2.3 Video Edit",
|
| 103 |
+
"lucy_edit_pro__fal": "Lucy Edit Pro",
|
| 104 |
+
"minimax_h3_reference_to_video__fal": "MiniMax H3 Reference-to-Video",
|
| 105 |
+
"seedance_2_5_video_edit_turbo__wavespeed": "Seedance 2.5 Video Edit Turbo",
|
| 106 |
+
"wan_2_7_video_edit__wavespeed": "Wan 2.7 Video Edit",
|
| 107 |
# Others overlapping P-Bench
|
| 108 |
"z_image": "Z-Image",
|
| 109 |
"glm_image": "GLM-Image",
|
ui.py
CHANGED
|
@@ -86,7 +86,9 @@ There is no single score across P-Bench.
|
|
| 86 |
and lower price (or time). Only datasets with price or generation time
|
| 87 |
can open this tab (not Arena AI).
|
| 88 |
4. **Samples**: the same prompts, side by side. Only for datasets we
|
| 89 |
-
generated (Qwen Image Dataset
|
|
|
|
|
|
|
| 90 |
|
| 91 |
## How a score is made
|
| 92 |
|
|
@@ -113,8 +115,8 @@ e-commerce, real estate, concept art, and similar work. The suite also
|
|
| 113 |
covers camera-angle and movement changes, lighting, and text in video
|
| 114 |
(altering, adding, or removing it). Quality is Datapoint Elo from
|
| 115 |
pairwise preference. Price is USD per second of output video;
|
| 116 |
-
generation time is wall time per second of output video. Samples
|
| 117 |
-
|
| 118 |
|
| 119 |
### Qwen Image Dataset
|
| 120 |
100 prompts from the 1,000-prompt Qwen Image Bench set, sampled for coverage
|
|
@@ -179,14 +181,18 @@ models *within* a Dataset | Metric view.
|
|
| 179 |
- **Prompt counts:** OneIG Alignment uses 100 anime, 100 human, and 99 object
|
| 180 |
prompts (299 total). Qwen Image Dataset uses 100 prompts sampled from the
|
| 181 |
1,000-prompt pool for roughly even coverage of its fine-grained (L3)
|
| 182 |
-
categories.
|
| 183 |
-
|
|
|
|
|
|
|
| 184 |
- **Generation (Qwen and OneIG):** one image per prompt per endpoint when
|
| 185 |
the run exists. Default resolution is 1024×1024. Exceptions: FLUX 1.1 Pro
|
| 186 |
Ultra at 2K, FLUX 2 Flex at 1008×1008, and any endpoint labeled 2K. The
|
| 187 |
seed is derived from the prompt, so every model gets the same seed for the
|
| 188 |
same prompt. Steps, CFG, prompt rewrite, and safety filters follow each
|
| 189 |
endpoint's default. This does not describe Artificial Analysis or Arena AI.
|
|
|
|
|
|
|
| 190 |
- **Datapoint (Qwen and OneIG):** every model pair is compared on every
|
| 191 |
prompt, with 10 votes per battle.
|
| 192 |
- **Rapidata (Qwen and OneIG):** prompts longer than 400 characters are
|
|
@@ -324,7 +330,37 @@ def _sample_model_ids(datasets, dataset_id):
|
|
| 324 |
samples = dataset.get("samples") if dataset else None
|
| 325 |
if not samples:
|
| 326 |
return set()
|
| 327 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 328 |
|
| 329 |
|
| 330 |
def _pareto_price_column(data):
|
|
@@ -1205,15 +1241,48 @@ def _samples_html(samples, selected_models, num_prompts, seed=0):
|
|
| 1205 |
return _pareto_unavailable_html(
|
| 1206 |
"Samples aren't available for this dataset."
|
| 1207 |
)
|
| 1208 |
-
|
| 1209 |
-
|
|
|
|
|
|
|
|
|
|
| 1210 |
if not models:
|
| 1211 |
-
models = (samples
|
| 1212 |
return _build_compare_samples_html(samples, models, num_prompts, seed)
|
| 1213 |
|
| 1214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1215 |
def _build_compare_samples_html(samples, selected_models, num_prompts, seed=0):
|
| 1216 |
selected_models = list(selected_models or [])[:MAX_COMPARE_MODELS]
|
|
|
|
|
|
|
|
|
|
| 1217 |
|
| 1218 |
if not selected_models:
|
| 1219 |
return (
|
|
@@ -1224,7 +1293,7 @@ def _build_compare_samples_html(samples, selected_models, num_prompts, seed=0):
|
|
| 1224 |
|
| 1225 |
shared_prompt_ids = None
|
| 1226 |
for model in selected_models:
|
| 1227 |
-
model_prompt_ids = set(
|
| 1228 |
shared_prompt_ids = (
|
| 1229 |
model_prompt_ids
|
| 1230 |
if shared_prompt_ids is None
|
|
@@ -1244,29 +1313,31 @@ def _build_compare_samples_html(samples, selected_models, num_prompts, seed=0):
|
|
| 1244 |
rng.shuffle(prompt_pool)
|
| 1245 |
chosen = prompt_pool[: max(1, min(int(num_prompts), len(prompt_pool)))]
|
| 1246 |
|
| 1247 |
-
columns = len(selected_models)
|
| 1248 |
blocks = []
|
| 1249 |
for index, prompt_id in enumerate(chosen, start=1):
|
| 1250 |
prompt_text = escape(samples["prompts"].get(prompt_id, ""))
|
| 1251 |
cells = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1252 |
for model in selected_models:
|
| 1253 |
-
image_url = escape(samples["images"][model][prompt_id], quote=True)
|
| 1254 |
cells.append(
|
| 1255 |
-
|
| 1256 |
-
|
| 1257 |
-
|
| 1258 |
-
|
| 1259 |
-
|
| 1260 |
-
</a>
|
| 1261 |
-
</div>
|
| 1262 |
-
"""
|
| 1263 |
)
|
|
|
|
| 1264 |
blocks.append(
|
| 1265 |
f"""
|
| 1266 |
<div class="compare-prompt-block">
|
| 1267 |
<div class="compare-prompt-meta">
|
| 1268 |
<span>Prompt {index}</span>
|
| 1269 |
-
<span>{escape(prompt_id)}</span>
|
| 1270 |
</div>
|
| 1271 |
<p class="compare-prompt-text">{prompt_text}</p>
|
| 1272 |
<div class="compare-row" style="grid-template-columns: repeat({columns}, minmax(0, 1fr));">
|
|
@@ -1524,7 +1595,8 @@ def render_image_workspace(datasets, metrics, default_dataset_id, default_metric
|
|
| 1524 |
with gr.Column(visible=bool(initial_samples)) as samples_panel:
|
| 1525 |
gr.Markdown(
|
| 1526 |
f"<p class='view-help'>"
|
| 1527 |
-
f"The same prompts, side by side.
|
|
|
|
| 1528 |
f"<strong>{MAX_COMPARE_MODELS}</strong> models above, or leave "
|
| 1529 |
f"Models empty for two defaults."
|
| 1530 |
f"</p>",
|
|
|
|
| 86 |
and lower price (or time). Only datasets with price or generation time
|
| 87 |
can open this tab (not Arena AI).
|
| 88 |
4. **Samples**: the same prompts, side by side. Only for datasets we
|
| 89 |
+
generated (Qwen Image Dataset, OneIG Alignment Dataset, and the
|
| 90 |
+
Pruna Internal Video-Edit Benchmark). Video samples show the source
|
| 91 |
+
clip first, then each model's edit.
|
| 92 |
|
| 93 |
## How a score is made
|
| 94 |
|
|
|
|
| 115 |
covers camera-angle and movement changes, lighting, and text in video
|
| 116 |
(altering, adding, or removing it). Quality is Datapoint Elo from
|
| 117 |
pairwise preference. Price is USD per second of output video;
|
| 118 |
+
generation time is wall time per second of output video. Samples show
|
| 119 |
+
the source clip beside each model's edit.
|
| 120 |
|
| 121 |
### Qwen Image Dataset
|
| 122 |
100 prompts from the 1,000-prompt Qwen Image Bench set, sampled for coverage
|
|
|
|
| 181 |
- **Prompt counts:** OneIG Alignment uses 100 anime, 100 human, and 99 object
|
| 182 |
prompts (299 total). Qwen Image Dataset uses 100 prompts sampled from the
|
| 183 |
1,000-prompt pool for roughly even coverage of its fine-grained (L3)
|
| 184 |
+
categories. The Pruna Internal Video-Edit Benchmark uses 78 prompts
|
| 185 |
+
across advertising, e-commerce, real estate, camera, lighting, text, and
|
| 186 |
+
related categories. Artificial Analysis and Arena AI use their own
|
| 187 |
+
private prompt sets.
|
| 188 |
- **Generation (Qwen and OneIG):** one image per prompt per endpoint when
|
| 189 |
the run exists. Default resolution is 1024×1024. Exceptions: FLUX 1.1 Pro
|
| 190 |
Ultra at 2K, FLUX 2 Flex at 1008×1008, and any endpoint labeled 2K. The
|
| 191 |
seed is derived from the prompt, so every model gets the same seed for the
|
| 192 |
same prompt. Steps, CFG, prompt rewrite, and safety filters follow each
|
| 193 |
endpoint's default. This does not describe Artificial Analysis or Arena AI.
|
| 194 |
+
- **Generation (Video-Edit):** one edited clip per prompt per endpoint when
|
| 195 |
+
the run exists. Every model sees the same source video for a prompt.
|
| 196 |
- **Datapoint (Qwen and OneIG):** every model pair is compared on every
|
| 197 |
prompt, with 10 votes per battle.
|
| 198 |
- **Rapidata (Qwen and OneIG):** prompts longer than 400 characters are
|
|
|
|
| 330 |
samples = dataset.get("samples") if dataset else None
|
| 331 |
if not samples:
|
| 332 |
return set()
|
| 333 |
+
models = set(samples.get("models") or [])
|
| 334 |
+
return models | {display_model_name(model) for model in models}
|
| 335 |
+
|
| 336 |
+
|
| 337 |
+
def _sample_media_map(samples):
|
| 338 |
+
return (samples or {}).get("images") or {}
|
| 339 |
+
|
| 340 |
+
|
| 341 |
+
def _resolve_sample_model(samples, model):
|
| 342 |
+
media = _sample_media_map(samples)
|
| 343 |
+
if model in media:
|
| 344 |
+
return model
|
| 345 |
+
wanted = {str(model or "").strip(), display_model_name(model)}
|
| 346 |
+
wanted.discard("")
|
| 347 |
+
for key in media:
|
| 348 |
+
if key in wanted or display_model_name(key) in wanted:
|
| 349 |
+
return key
|
| 350 |
+
return None
|
| 351 |
+
|
| 352 |
+
|
| 353 |
+
def _default_sample_models(samples):
|
| 354 |
+
models = list((samples or {}).get("models") or [])
|
| 355 |
+
preferred = [model for model in models if _is_pruna_model(model)]
|
| 356 |
+
preferred.sort(
|
| 357 |
+
key=lambda model: (
|
| 358 |
+
"draft" in str(model).casefold()
|
| 359 |
+
or "draft" in display_model_name(model).casefold(),
|
| 360 |
+
display_model_name(model).casefold(),
|
| 361 |
+
)
|
| 362 |
+
)
|
| 363 |
+
return (preferred or models)[:2]
|
| 364 |
|
| 365 |
|
| 366 |
def _pareto_price_column(data):
|
|
|
|
| 1241 |
return _pareto_unavailable_html(
|
| 1242 |
"Samples aren't available for this dataset."
|
| 1243 |
)
|
| 1244 |
+
models = [
|
| 1245 |
+
resolved
|
| 1246 |
+
for model in (selected_models or [])
|
| 1247 |
+
if (resolved := _resolve_sample_model(samples, model))
|
| 1248 |
+
]
|
| 1249 |
if not models:
|
| 1250 |
+
models = _default_sample_models(samples)
|
| 1251 |
return _build_compare_samples_html(samples, models, num_prompts, seed)
|
| 1252 |
|
| 1253 |
|
| 1254 |
+
def _compare_media_html(url, label, *, kind):
|
| 1255 |
+
safe_url = escape(url, quote=True)
|
| 1256 |
+
safe_label = escape(label)
|
| 1257 |
+
if kind == "video":
|
| 1258 |
+
return (
|
| 1259 |
+
f'<video src="{safe_url}" controls preload="metadata" '
|
| 1260 |
+
f'playsinline></video>'
|
| 1261 |
+
)
|
| 1262 |
+
return (
|
| 1263 |
+
f'<a href="{safe_url}" target="_blank" rel="noopener noreferrer">'
|
| 1264 |
+
f'<img src="{safe_url}" alt="{safe_label} sample" loading="lazy" />'
|
| 1265 |
+
f"</a>"
|
| 1266 |
+
)
|
| 1267 |
+
|
| 1268 |
+
|
| 1269 |
+
def _compare_cell_html(label, url, *, kind, extra_class=""):
|
| 1270 |
+
classes = "compare-cell"
|
| 1271 |
+
if extra_class:
|
| 1272 |
+
classes = f"{classes} {extra_class}"
|
| 1273 |
+
return f"""
|
| 1274 |
+
<div class="{classes}">
|
| 1275 |
+
<div class="compare-model-label">{escape(label)}</div>
|
| 1276 |
+
{_compare_media_html(url, label, kind=kind)}
|
| 1277 |
+
</div>
|
| 1278 |
+
"""
|
| 1279 |
+
|
| 1280 |
+
|
| 1281 |
def _build_compare_samples_html(samples, selected_models, num_prompts, seed=0):
|
| 1282 |
selected_models = list(selected_models or [])[:MAX_COMPARE_MODELS]
|
| 1283 |
+
media = _sample_media_map(samples)
|
| 1284 |
+
kind = (samples or {}).get("kind") or "image"
|
| 1285 |
+
source_videos = (samples or {}).get("source_videos") or {}
|
| 1286 |
|
| 1287 |
if not selected_models:
|
| 1288 |
return (
|
|
|
|
| 1293 |
|
| 1294 |
shared_prompt_ids = None
|
| 1295 |
for model in selected_models:
|
| 1296 |
+
model_prompt_ids = set(media.get(model) or [])
|
| 1297 |
shared_prompt_ids = (
|
| 1298 |
model_prompt_ids
|
| 1299 |
if shared_prompt_ids is None
|
|
|
|
| 1313 |
rng.shuffle(prompt_pool)
|
| 1314 |
chosen = prompt_pool[: max(1, min(int(num_prompts), len(prompt_pool)))]
|
| 1315 |
|
|
|
|
| 1316 |
blocks = []
|
| 1317 |
for index, prompt_id in enumerate(chosen, start=1):
|
| 1318 |
prompt_text = escape(samples["prompts"].get(prompt_id, ""))
|
| 1319 |
cells = []
|
| 1320 |
+
source_url = source_videos.get(prompt_id)
|
| 1321 |
+
if source_url:
|
| 1322 |
+
cells.append(
|
| 1323 |
+
_compare_cell_html(
|
| 1324 |
+
"Source", source_url, kind="video", extra_class="compare-source"
|
| 1325 |
+
)
|
| 1326 |
+
)
|
| 1327 |
for model in selected_models:
|
|
|
|
| 1328 |
cells.append(
|
| 1329 |
+
_compare_cell_html(
|
| 1330 |
+
display_model_name(model),
|
| 1331 |
+
media[model][prompt_id],
|
| 1332 |
+
kind=kind,
|
| 1333 |
+
)
|
|
|
|
|
|
|
|
|
|
| 1334 |
)
|
| 1335 |
+
columns = len(cells)
|
| 1336 |
blocks.append(
|
| 1337 |
f"""
|
| 1338 |
<div class="compare-prompt-block">
|
| 1339 |
<div class="compare-prompt-meta">
|
| 1340 |
<span>Prompt {index}</span>
|
|
|
|
| 1341 |
</div>
|
| 1342 |
<p class="compare-prompt-text">{prompt_text}</p>
|
| 1343 |
<div class="compare-row" style="grid-template-columns: repeat({columns}, minmax(0, 1fr));">
|
|
|
|
| 1595 |
with gr.Column(visible=bool(initial_samples)) as samples_panel:
|
| 1596 |
gr.Markdown(
|
| 1597 |
f"<p class='view-help'>"
|
| 1598 |
+
f"The same prompts, side by side. Video edits show the "
|
| 1599 |
+
f"source clip first. Select up to "
|
| 1600 |
f"<strong>{MAX_COMPARE_MODELS}</strong> models above, or leave "
|
| 1601 |
f"Models empty for two defaults."
|
| 1602 |
f"</p>",
|