BestWishYsh commited on
Commit
542066c
·
1 Parent(s): b6d690f

make style .

Browse files
app.py CHANGED
@@ -1,13 +1,34 @@
1
- __all__ = ['block', 'make_clickable_model', 'make_clickable_user', 'get_submissions']
2
-
3
  import gradio as gr
4
  import pandas as pd
5
  import json
6
  import io
7
 
8
- from constants import *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- global filter_component, data_component_opendomain, data_component_humandomain, data_component_singledomain
11
 
12
  def upload_file(files):
13
  file_paths = [file.name for file in files]
@@ -15,31 +36,40 @@ def upload_file(files):
15
 
16
 
17
  def compute_scores(input_data):
18
- return [None, [
19
- input_data["total_score"],
20
- input_data["aes_score"],
21
- input_data["motion_score"],
22
- input_data["facesim_cur"],
23
- input_data["gme_score"],
24
- input_data["nexus_score"],
25
- input_data["natural_score"]
26
- ]]
 
 
 
 
27
 
28
  def compute_scores_human_domain(input_data):
29
- return [None, [
30
- input_data["total_score"],
31
- input_data["aes_score"],
32
- input_data["motion_score"],
33
- input_data["facesim_cur"],
34
- input_data["gme_score"],
35
- input_data["natural_score"]
36
- ]]
 
 
 
 
37
 
38
  def add_opendomain_eval(
39
  input_file,
40
  model_name_textbox: str,
41
  revision_name_textbox: str,
42
  venue_type_dropdown: str,
 
43
  model_link: str,
44
  ):
45
  if input_file is None:
@@ -53,30 +83,41 @@ def add_opendomain_eval(
53
 
54
  csv_data = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
55
 
56
- if revision_name_textbox == '':
57
  col = csv_data.shape[0]
58
  model_name = model_name_textbox
59
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in csv_data['Model']]
 
 
 
60
  assert model_name not in name_list
61
  else:
62
  model_name = revision_name_textbox
63
- model_name_list = csv_data['Model']
64
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in model_name_list]
 
 
 
65
  if revision_name_textbox not in name_list:
66
  col = csv_data.shape[0]
67
  else:
68
  col = name_list.index(revision_name_textbox)
69
 
70
- if model_link == '':
71
  model_name = model_name # no url
72
  else:
73
- model_name = '[' + model_name + '](' + model_link + ')'
74
 
75
  venue = venue_type_dropdown
 
 
 
 
76
 
77
  new_data = [
78
  model_name,
79
  venue,
 
80
  f"{input_data[0] * 100:.2f}%",
81
  f"{input_data[1] * 100:.2f}%",
82
  f"{input_data[2] * 100:.2f}%",
@@ -85,7 +126,7 @@ def add_opendomain_eval(
85
  f"{input_data[5] * 100:.2f}%",
86
  f"{input_data[6] * 100:.2f}%",
87
  ]
88
- csv_data.loc[col] = new_data
89
  csv_data.to_csv(CSV_DIR_OPEN_DOMAIN_RESULTS, index=False)
90
  return "Evaluation successfully submitted!"
91
 
@@ -95,6 +136,7 @@ def add_humandomain_eval(
95
  model_name_textbox: str,
96
  revision_name_textbox: str,
97
  venue_type_dropdown: str,
 
98
  model_link: str,
99
  ):
100
  if input_file is None:
@@ -108,30 +150,41 @@ def add_humandomain_eval(
108
 
109
  csv_data = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
110
 
111
- if revision_name_textbox == '':
112
  col = csv_data.shape[0]
113
  model_name = model_name_textbox
114
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in csv_data['Model']]
 
 
 
115
  assert model_name not in name_list
116
  else:
117
  model_name = revision_name_textbox
118
- model_name_list = csv_data['Model']
119
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in model_name_list]
 
 
 
120
  if revision_name_textbox not in name_list:
121
  col = csv_data.shape[0]
122
  else:
123
  col = name_list.index(revision_name_textbox)
124
 
125
- if model_link == '':
126
  model_name = model_name # no url
127
  else:
128
- model_name = '[' + model_name + '](' + model_link + ')'
129
 
130
  venue = venue_type_dropdown
 
 
 
 
131
 
132
  new_data = [
133
  model_name,
134
  venue,
 
135
  f"{input_data[0] * 100:.2f}%",
136
  f"{input_data[1] * 100:.2f}%",
137
  f"{input_data[2] * 100:.2f}%",
@@ -139,7 +192,7 @@ def add_humandomain_eval(
139
  f"{input_data[4] * 100:.2f}%",
140
  f"{input_data[5] * 100:.2f}%",
141
  ]
142
- csv_data.loc[col] = new_data
143
  csv_data.to_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS, index=False)
144
  return "Evaluation successfully submitted!"
145
 
@@ -149,6 +202,7 @@ def add_singledomain_eval(
149
  model_name_textbox: str,
150
  revision_name_textbox: str,
151
  venue_type_dropdown: str,
 
152
  model_link: str,
153
  ):
154
  if input_file is None:
@@ -162,30 +216,41 @@ def add_singledomain_eval(
162
 
163
  csv_data = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS)
164
 
165
- if revision_name_textbox == '':
166
  col = csv_data.shape[0]
167
  model_name = model_name_textbox
168
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in csv_data['Model']]
 
 
 
169
  assert model_name not in name_list
170
  else:
171
  model_name = revision_name_textbox
172
- model_name_list = csv_data['Model']
173
- name_list = [name.split(']')[0][1:] if name.endswith(')') else name for name in model_name_list]
 
 
 
174
  if revision_name_textbox not in name_list:
175
  col = csv_data.shape[0]
176
  else:
177
  col = name_list.index(revision_name_textbox)
178
 
179
- if model_link == '':
180
  model_name = model_name # no url
181
  else:
182
- model_name = '[' + model_name + '](' + model_link + ')'
183
 
184
  venue = venue_type_dropdown
 
 
 
 
185
 
186
  new_data = [
187
  model_name,
188
  venue,
 
189
  f"{input_data[0] * 100:.2f}%",
190
  f"{input_data[1] * 100:.2f}%",
191
  f"{input_data[2] * 100:.2f}%",
@@ -194,17 +259,17 @@ def add_singledomain_eval(
194
  f"{input_data[5] * 100:.2f}%",
195
  f"{input_data[6] * 100:.2f}%",
196
  ]
197
- csv_data.loc[col] = new_data
198
  csv_data.to_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS, index=False)
199
  return "Evaluation successfully submitted!"
200
 
201
 
202
-
203
  def get_all_df_opendomain():
204
  df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
205
  df = df.sort_values(by="TotalScore↑", ascending=False)
206
  return df
207
 
 
208
  def get_baseline_df_opendomain():
209
  df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
210
  df = df.sort_values(by="TotalScore↑", ascending=False)
@@ -212,11 +277,13 @@ def get_baseline_df_opendomain():
212
  df = df[present_columns]
213
  return df
214
 
 
215
  def get_all_df_humandomain():
216
  df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
217
  df = df.sort_values(by="TotalScore↑", ascending=False)
218
  return df
219
 
 
220
  def get_baseline_df_humandomain():
221
  df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
222
  df = df.sort_values(by="TotalScore↑", ascending=False)
@@ -230,6 +297,7 @@ def get_all_df_singledomain():
230
  df = df.sort_values(by="TotalScore↑", ascending=False)
231
  return df
232
 
 
233
  def get_baseline_df_singledomain():
234
  df = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS)
235
  df = df.sort_values(by="TotalScore↑", ascending=False)
@@ -237,6 +305,7 @@ def get_baseline_df_singledomain():
237
  df = df[present_columns]
238
  return df
239
 
 
240
  block = gr.Blocks()
241
 
242
 
@@ -246,9 +315,7 @@ with block:
246
  <img src="https://www.pnglog.com/6xm07l.png" style='width: 400px; height: auto; margin-right: 10px;' />
247
  </div>
248
  """)
249
- gr.Markdown(
250
- LEADERBORAD_INTRODUCTION
251
- )
252
  with gr.Tabs(elem_classes="tab-buttons") as tabs:
253
  # table Opendomain
254
  with gr.TabItem("🏅 Open-Domain", elem_id="OpenS2V-Nexus-tab-table", id=0):
@@ -258,12 +325,10 @@ with block:
258
  value=CITATION_BUTTON_TEXT,
259
  label=CITATION_BUTTON_LABEL,
260
  elem_id="citation-button",
261
- show_copy_button=True
262
  )
263
-
264
- gr.Markdown(
265
- TABLE_INTRODUCTION
266
- )
267
 
268
  checkbox_group_opendomain = gr.CheckboxGroup(
269
  choices=ALL_RESULTS,
@@ -273,35 +338,44 @@ with block:
273
  )
274
 
275
  data_component_opendomain = gr.components.Dataframe(
276
- value=get_baseline_df_opendomain,
277
  headers=COLUMN_NAMES,
278
- type="pandas",
279
  datatype=NEW_DATA_TITLE_TYPE,
280
  interactive=False,
281
  visible=True,
282
- )
283
-
284
  def on_checkbox_group_change_opendomain(selected_columns):
285
- selected_columns = [item for item in ALL_RESULTS if item in selected_columns]
 
 
286
  present_columns = MODEL_INFO + selected_columns
287
  updated_data = get_baseline_df_opendomain()[present_columns]
288
- updated_data = updated_data.sort_values(by=present_columns[1], ascending=False)
 
 
289
  updated_headers = present_columns
290
- update_datatype = [NEW_DATA_TITLE_TYPE[COLUMN_NAMES.index(x)] for x in updated_headers]
 
 
291
 
292
  filter_component = gr.components.Dataframe(
293
- value=updated_data,
294
  headers=updated_headers,
295
- type="pandas",
296
  datatype=update_datatype,
297
  interactive=False,
298
  visible=True,
299
- )
300
-
301
- return filter_component
302
 
303
- checkbox_group_opendomain.change(fn=on_checkbox_group_change_opendomain, inputs=checkbox_group_opendomain, outputs=data_component_opendomain)
304
 
 
 
 
 
 
305
 
306
  # table HumanDomain
307
  with gr.TabItem("🏅 Human-Domain", elem_id="OpenS2V-Nexus-tab-table", id=1):
@@ -311,12 +385,10 @@ with block:
311
  value=CITATION_BUTTON_TEXT,
312
  label=CITATION_BUTTON_LABEL,
313
  elem_id="citation-button",
314
- show_copy_button=True
315
  )
316
-
317
- gr.Markdown(
318
- TABLE_INTRODUCTION_HUMAN
319
- )
320
 
321
  checkbox_group_humandomain = gr.CheckboxGroup(
322
  choices=HUMAN_DOMAIN_RESULTS,
@@ -326,34 +398,45 @@ with block:
326
  )
327
 
328
  data_component_humandomain = gr.components.Dataframe(
329
- value=get_baseline_df_humandomain,
330
  headers=COLUMN_NAMES_HUMAN,
331
- type="pandas",
332
  datatype=NEW_DATA_TITLE_TYPE,
333
  interactive=False,
334
  visible=True,
335
- )
336
-
337
  def on_checkbox_group_change_humandomain(selected_columns):
338
- selected_columns = [item for item in ALL_RESULTS if item in selected_columns]
 
 
339
  present_columns = MODEL_INFO + selected_columns
340
  updated_data = get_baseline_df_humandomain()[present_columns]
341
- updated_data = updated_data.sort_values(by=present_columns[1], ascending=False)
 
 
342
  updated_headers = present_columns
343
- update_datatype = [NEW_DATA_TITLE_TYPE[COLUMN_NAMES_HUMAN.index(x)] for x in updated_headers]
 
 
 
344
 
345
  filter_component = gr.components.Dataframe(
346
- value=updated_data,
347
  headers=updated_headers,
348
- type="pandas",
349
  datatype=update_datatype,
350
  interactive=False,
351
  visible=True,
352
- )
353
-
354
  return filter_component
355
 
356
- checkbox_group_humandomain.change(fn=on_checkbox_group_change_humandomain, inputs=checkbox_group_humandomain, outputs=data_component_humandomain)
 
 
 
 
357
 
358
  # table SingleDomain
359
  with gr.TabItem("🏅 Single-Domain", elem_id="OpenS2V-Nexus-tab-table", id=2):
@@ -363,12 +446,10 @@ with block:
363
  value=CITATION_BUTTON_TEXT,
364
  label=CITATION_BUTTON_LABEL,
365
  elem_id="citation-button",
366
- show_copy_button=True
367
  )
368
-
369
- gr.Markdown(
370
- TABLE_INTRODUCTION
371
- )
372
 
373
  checkbox_group_singledomain = gr.CheckboxGroup(
374
  choices=ALL_RESULTS,
@@ -378,35 +459,44 @@ with block:
378
  )
379
 
380
  data_component_singledomain = gr.components.Dataframe(
381
- value=get_baseline_df_singledomain,
382
  headers=COLUMN_NAMES,
383
- type="pandas",
384
  datatype=NEW_DATA_TITLE_TYPE,
385
  interactive=False,
386
  visible=True,
387
- )
388
-
389
  def on_checkbox_group_change_singledomain(selected_columns):
390
- selected_columns = [item for item in ALL_RESULTS if item in selected_columns]
 
 
391
  present_columns = MODEL_INFO + selected_columns
392
  updated_data = get_baseline_df_singledomain()[present_columns]
393
- updated_data = updated_data.sort_values(by=present_columns[1], ascending=False)
 
 
394
  updated_headers = present_columns
395
- update_datatype = [NEW_DATA_TITLE_TYPE[COLUMN_NAMES.index(x)] for x in updated_headers]
 
 
396
 
397
  filter_component = gr.components.Dataframe(
398
- value=updated_data,
399
  headers=updated_headers,
400
- type="pandas",
401
  datatype=update_datatype,
402
  interactive=False,
403
  visible=True,
404
- )
405
-
406
- return filter_component
407
 
408
- checkbox_group_singledomain.change(fn=on_checkbox_group_change_singledomain, inputs=checkbox_group_singledomain, outputs=data_component_singledomain)
409
 
 
 
 
 
 
410
 
411
  # table Submission
412
  with gr.TabItem("🚀 Submit here! ", elem_id="seed-benchmark-tab-table", id=4):
@@ -414,27 +504,33 @@ with block:
414
  gr.Markdown(SUBMIT_INTRODUCTION, elem_classes="markdown-text")
415
 
416
  with gr.Row():
417
- gr.Markdown("# ✉️✨ Submit your result here!", elem_classes="markdown-text")
 
 
418
 
419
  with gr.Row():
420
  with gr.Column():
421
  model_name_textbox = gr.Textbox(
422
  label="Model name", placeholder="ConsisID"
423
- )
424
  revision_name_textbox = gr.Textbox(
425
- label="Revision Model Name", placeholder="ConsisID"
426
  )
427
  venue_type_dropdown = gr.Dropdown(
428
  label="Venue Type",
429
  choices=["Open-Source", "Close-Source"],
430
- value="Open-Source"
 
 
 
431
  )
432
  model_link = gr.Textbox(
433
- label="Model Link", placeholder="https://github.com/PKU-YuanGroup/ConsisID"
 
434
  )
435
 
436
  with gr.Column():
437
- input_file = gr.File(label="Click to Upload a json File", type='binary')
438
 
439
  submit_button_opendomain = gr.Button("Submit Result (Open-Domain)")
440
  submit_button_humandomain = gr.Button("Submit Result (Human-Domain)")
@@ -449,9 +545,10 @@ with block:
449
  model_name_textbox,
450
  revision_name_textbox,
451
  venue_type_dropdown,
 
452
  model_link,
453
  ],
454
- outputs = submission_result,
455
  )
456
 
457
  submit_button_humandomain.click(
@@ -461,9 +558,10 @@ with block:
461
  model_name_textbox,
462
  revision_name_textbox,
463
  venue_type_dropdown,
 
464
  model_link,
465
  ],
466
- outputs = submission_result,
467
  )
468
 
469
  submit_button_singledomain.click(
@@ -473,21 +571,18 @@ with block:
473
  model_name_textbox,
474
  revision_name_textbox,
475
  venue_type_dropdown,
 
476
  model_link,
477
  ],
478
- outputs = submission_result,
479
  )
480
 
481
  with gr.Row():
482
  data_run = gr.Button("Refresh")
483
- data_run.click(
484
- get_baseline_df_opendomain, outputs=data_component_opendomain
485
- )
486
- data_run.click(
487
- get_baseline_df_humandomain, outputs=data_component_humandomain
488
- )
489
  data_run.click(
490
  get_baseline_df_singledomain, outputs=data_component_singledomain
491
  )
492
-
493
- block.launch()
 
 
 
1
  import gradio as gr
2
  import pandas as pd
3
  import json
4
  import io
5
 
6
+ from constants import (
7
+ SUBMIT_INTRODUCTION,
8
+ COLUMN_NAMES,
9
+ MODEL_INFO,
10
+ ALL_RESULTS,
11
+ NEW_DATA_TITLE_TYPE,
12
+ SINGLE_DOMAIN_RESULTS,
13
+ TABLE_INTRODUCTION,
14
+ CITATION_BUTTON_LABEL,
15
+ CITATION_BUTTON_TEXT,
16
+ COLUMN_NAMES_HUMAN,
17
+ CSV_DIR_HUMAN_DOMAIN_RESULTS,
18
+ CSV_DIR_OPEN_DOMAIN_RESULTS,
19
+ HUMAN_DOMAIN_RESULTS,
20
+ CSV_DIR_SINGLE_DOMAIN_RESULTS,
21
+ TABLE_INTRODUCTION_HUMAN,
22
+ LEADERBORAD_INTRODUCTION,
23
+ OPEN_DOMAIN_RESULTS,
24
+ )
25
+
26
+ global \
27
+ filter_component, \
28
+ data_component_opendomain, \
29
+ data_component_humandomain, \
30
+ data_component_singledomain
31
 
 
32
 
33
  def upload_file(files):
34
  file_paths = [file.name for file in files]
 
36
 
37
 
38
  def compute_scores(input_data):
39
+ return [
40
+ None,
41
+ [
42
+ input_data["total_score"],
43
+ input_data["aes_score"],
44
+ input_data["motion_score"],
45
+ input_data["facesim_cur"],
46
+ input_data["gme_score"],
47
+ input_data["nexus_score"],
48
+ input_data["natural_score"],
49
+ ],
50
+ ]
51
+
52
 
53
  def compute_scores_human_domain(input_data):
54
+ return [
55
+ None,
56
+ [
57
+ input_data["total_score"],
58
+ input_data["aes_score"],
59
+ input_data["motion_score"],
60
+ input_data["facesim_cur"],
61
+ input_data["gme_score"],
62
+ input_data["natural_score"],
63
+ ],
64
+ ]
65
+
66
 
67
  def add_opendomain_eval(
68
  input_file,
69
  model_name_textbox: str,
70
  revision_name_textbox: str,
71
  venue_type_dropdown: str,
72
+ team_name_textbox: str,
73
  model_link: str,
74
  ):
75
  if input_file is None:
 
83
 
84
  csv_data = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
85
 
86
+ if revision_name_textbox == "":
87
  col = csv_data.shape[0]
88
  model_name = model_name_textbox
89
+ name_list = [
90
+ name.split("]")[0][1:] if name.endswith(")") else name
91
+ for name in csv_data["Model"]
92
+ ]
93
  assert model_name not in name_list
94
  else:
95
  model_name = revision_name_textbox
96
+ model_name_list = csv_data["Model"]
97
+ name_list = [
98
+ name.split("]")[0][1:] if name.endswith(")") else name
99
+ for name in model_name_list
100
+ ]
101
  if revision_name_textbox not in name_list:
102
  col = csv_data.shape[0]
103
  else:
104
  col = name_list.index(revision_name_textbox)
105
 
106
+ if model_link == "":
107
  model_name = model_name # no url
108
  else:
109
+ model_name = "[" + model_name + "](" + model_link + ")"
110
 
111
  venue = venue_type_dropdown
112
+ if team_name_textbox == "":
113
+ team = "User Upload"
114
+ else:
115
+ team = team_name_textbox
116
 
117
  new_data = [
118
  model_name,
119
  venue,
120
+ team,
121
  f"{input_data[0] * 100:.2f}%",
122
  f"{input_data[1] * 100:.2f}%",
123
  f"{input_data[2] * 100:.2f}%",
 
126
  f"{input_data[5] * 100:.2f}%",
127
  f"{input_data[6] * 100:.2f}%",
128
  ]
129
+ csv_data.loc[col] = new_data
130
  csv_data.to_csv(CSV_DIR_OPEN_DOMAIN_RESULTS, index=False)
131
  return "Evaluation successfully submitted!"
132
 
 
136
  model_name_textbox: str,
137
  revision_name_textbox: str,
138
  venue_type_dropdown: str,
139
+ team_name_textbox: str,
140
  model_link: str,
141
  ):
142
  if input_file is None:
 
150
 
151
  csv_data = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
152
 
153
+ if revision_name_textbox == "":
154
  col = csv_data.shape[0]
155
  model_name = model_name_textbox
156
+ name_list = [
157
+ name.split("]")[0][1:] if name.endswith(")") else name
158
+ for name in csv_data["Model"]
159
+ ]
160
  assert model_name not in name_list
161
  else:
162
  model_name = revision_name_textbox
163
+ model_name_list = csv_data["Model"]
164
+ name_list = [
165
+ name.split("]")[0][1:] if name.endswith(")") else name
166
+ for name in model_name_list
167
+ ]
168
  if revision_name_textbox not in name_list:
169
  col = csv_data.shape[0]
170
  else:
171
  col = name_list.index(revision_name_textbox)
172
 
173
+ if model_link == "":
174
  model_name = model_name # no url
175
  else:
176
+ model_name = "[" + model_name + "](" + model_link + ")"
177
 
178
  venue = venue_type_dropdown
179
+ if team_name_textbox == "":
180
+ team = "User Upload"
181
+ else:
182
+ team = team_name_textbox
183
 
184
  new_data = [
185
  model_name,
186
  venue,
187
+ team,
188
  f"{input_data[0] * 100:.2f}%",
189
  f"{input_data[1] * 100:.2f}%",
190
  f"{input_data[2] * 100:.2f}%",
 
192
  f"{input_data[4] * 100:.2f}%",
193
  f"{input_data[5] * 100:.2f}%",
194
  ]
195
+ csv_data.loc[col] = new_data
196
  csv_data.to_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS, index=False)
197
  return "Evaluation successfully submitted!"
198
 
 
202
  model_name_textbox: str,
203
  revision_name_textbox: str,
204
  venue_type_dropdown: str,
205
+ team_name_textbox: str,
206
  model_link: str,
207
  ):
208
  if input_file is None:
 
216
 
217
  csv_data = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS)
218
 
219
+ if revision_name_textbox == "":
220
  col = csv_data.shape[0]
221
  model_name = model_name_textbox
222
+ name_list = [
223
+ name.split("]")[0][1:] if name.endswith(")") else name
224
+ for name in csv_data["Model"]
225
+ ]
226
  assert model_name not in name_list
227
  else:
228
  model_name = revision_name_textbox
229
+ model_name_list = csv_data["Model"]
230
+ name_list = [
231
+ name.split("]")[0][1:] if name.endswith(")") else name
232
+ for name in model_name_list
233
+ ]
234
  if revision_name_textbox not in name_list:
235
  col = csv_data.shape[0]
236
  else:
237
  col = name_list.index(revision_name_textbox)
238
 
239
+ if model_link == "":
240
  model_name = model_name # no url
241
  else:
242
+ model_name = "[" + model_name + "](" + model_link + ")"
243
 
244
  venue = venue_type_dropdown
245
+ if team_name_textbox == "":
246
+ team = "User Upload"
247
+ else:
248
+ team = team_name_textbox
249
 
250
  new_data = [
251
  model_name,
252
  venue,
253
+ team,
254
  f"{input_data[0] * 100:.2f}%",
255
  f"{input_data[1] * 100:.2f}%",
256
  f"{input_data[2] * 100:.2f}%",
 
259
  f"{input_data[5] * 100:.2f}%",
260
  f"{input_data[6] * 100:.2f}%",
261
  ]
262
+ csv_data.loc[col] = new_data
263
  csv_data.to_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS, index=False)
264
  return "Evaluation successfully submitted!"
265
 
266
 
 
267
  def get_all_df_opendomain():
268
  df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
269
  df = df.sort_values(by="TotalScore↑", ascending=False)
270
  return df
271
 
272
+
273
  def get_baseline_df_opendomain():
274
  df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS)
275
  df = df.sort_values(by="TotalScore↑", ascending=False)
 
277
  df = df[present_columns]
278
  return df
279
 
280
+
281
  def get_all_df_humandomain():
282
  df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
283
  df = df.sort_values(by="TotalScore↑", ascending=False)
284
  return df
285
 
286
+
287
  def get_baseline_df_humandomain():
288
  df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS)
289
  df = df.sort_values(by="TotalScore↑", ascending=False)
 
297
  df = df.sort_values(by="TotalScore↑", ascending=False)
298
  return df
299
 
300
+
301
  def get_baseline_df_singledomain():
302
  df = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS)
303
  df = df.sort_values(by="TotalScore↑", ascending=False)
 
305
  df = df[present_columns]
306
  return df
307
 
308
+
309
  block = gr.Blocks()
310
 
311
 
 
315
  <img src="https://www.pnglog.com/6xm07l.png" style='width: 400px; height: auto; margin-right: 10px;' />
316
  </div>
317
  """)
318
+ gr.Markdown(LEADERBORAD_INTRODUCTION)
 
 
319
  with gr.Tabs(elem_classes="tab-buttons") as tabs:
320
  # table Opendomain
321
  with gr.TabItem("🏅 Open-Domain", elem_id="OpenS2V-Nexus-tab-table", id=0):
 
325
  value=CITATION_BUTTON_TEXT,
326
  label=CITATION_BUTTON_LABEL,
327
  elem_id="citation-button",
328
+ show_copy_button=True,
329
  )
330
+
331
+ gr.Markdown(TABLE_INTRODUCTION)
 
 
332
 
333
  checkbox_group_opendomain = gr.CheckboxGroup(
334
  choices=ALL_RESULTS,
 
338
  )
339
 
340
  data_component_opendomain = gr.components.Dataframe(
341
+ value=get_baseline_df_opendomain,
342
  headers=COLUMN_NAMES,
343
+ type="pandas",
344
  datatype=NEW_DATA_TITLE_TYPE,
345
  interactive=False,
346
  visible=True,
347
+ )
348
+
349
  def on_checkbox_group_change_opendomain(selected_columns):
350
+ selected_columns = [
351
+ item for item in ALL_RESULTS if item in selected_columns
352
+ ]
353
  present_columns = MODEL_INFO + selected_columns
354
  updated_data = get_baseline_df_opendomain()[present_columns]
355
+ updated_data = updated_data.sort_values(
356
+ by=present_columns[1], ascending=False
357
+ )
358
  updated_headers = present_columns
359
+ update_datatype = [
360
+ NEW_DATA_TITLE_TYPE[COLUMN_NAMES.index(x)] for x in updated_headers
361
+ ]
362
 
363
  filter_component = gr.components.Dataframe(
364
+ value=updated_data,
365
  headers=updated_headers,
366
+ type="pandas",
367
  datatype=update_datatype,
368
  interactive=False,
369
  visible=True,
370
+ )
 
 
371
 
372
+ return filter_component
373
 
374
+ checkbox_group_opendomain.change(
375
+ fn=on_checkbox_group_change_opendomain,
376
+ inputs=checkbox_group_opendomain,
377
+ outputs=data_component_opendomain,
378
+ )
379
 
380
  # table HumanDomain
381
  with gr.TabItem("🏅 Human-Domain", elem_id="OpenS2V-Nexus-tab-table", id=1):
 
385
  value=CITATION_BUTTON_TEXT,
386
  label=CITATION_BUTTON_LABEL,
387
  elem_id="citation-button",
388
+ show_copy_button=True,
389
  )
390
+
391
+ gr.Markdown(TABLE_INTRODUCTION_HUMAN)
 
 
392
 
393
  checkbox_group_humandomain = gr.CheckboxGroup(
394
  choices=HUMAN_DOMAIN_RESULTS,
 
398
  )
399
 
400
  data_component_humandomain = gr.components.Dataframe(
401
+ value=get_baseline_df_humandomain,
402
  headers=COLUMN_NAMES_HUMAN,
403
+ type="pandas",
404
  datatype=NEW_DATA_TITLE_TYPE,
405
  interactive=False,
406
  visible=True,
407
+ )
408
+
409
  def on_checkbox_group_change_humandomain(selected_columns):
410
+ selected_columns = [
411
+ item for item in ALL_RESULTS if item in selected_columns
412
+ ]
413
  present_columns = MODEL_INFO + selected_columns
414
  updated_data = get_baseline_df_humandomain()[present_columns]
415
+ updated_data = updated_data.sort_values(
416
+ by=present_columns[1], ascending=False
417
+ )
418
  updated_headers = present_columns
419
+ update_datatype = [
420
+ NEW_DATA_TITLE_TYPE[COLUMN_NAMES_HUMAN.index(x)]
421
+ for x in updated_headers
422
+ ]
423
 
424
  filter_component = gr.components.Dataframe(
425
+ value=updated_data,
426
  headers=updated_headers,
427
+ type="pandas",
428
  datatype=update_datatype,
429
  interactive=False,
430
  visible=True,
431
+ )
432
+
433
  return filter_component
434
 
435
+ checkbox_group_humandomain.change(
436
+ fn=on_checkbox_group_change_humandomain,
437
+ inputs=checkbox_group_humandomain,
438
+ outputs=data_component_humandomain,
439
+ )
440
 
441
  # table SingleDomain
442
  with gr.TabItem("🏅 Single-Domain", elem_id="OpenS2V-Nexus-tab-table", id=2):
 
446
  value=CITATION_BUTTON_TEXT,
447
  label=CITATION_BUTTON_LABEL,
448
  elem_id="citation-button",
449
+ show_copy_button=True,
450
  )
451
+
452
+ gr.Markdown(TABLE_INTRODUCTION)
 
 
453
 
454
  checkbox_group_singledomain = gr.CheckboxGroup(
455
  choices=ALL_RESULTS,
 
459
  )
460
 
461
  data_component_singledomain = gr.components.Dataframe(
462
+ value=get_baseline_df_singledomain,
463
  headers=COLUMN_NAMES,
464
+ type="pandas",
465
  datatype=NEW_DATA_TITLE_TYPE,
466
  interactive=False,
467
  visible=True,
468
+ )
469
+
470
  def on_checkbox_group_change_singledomain(selected_columns):
471
+ selected_columns = [
472
+ item for item in ALL_RESULTS if item in selected_columns
473
+ ]
474
  present_columns = MODEL_INFO + selected_columns
475
  updated_data = get_baseline_df_singledomain()[present_columns]
476
+ updated_data = updated_data.sort_values(
477
+ by=present_columns[1], ascending=False
478
+ )
479
  updated_headers = present_columns
480
+ update_datatype = [
481
+ NEW_DATA_TITLE_TYPE[COLUMN_NAMES.index(x)] for x in updated_headers
482
+ ]
483
 
484
  filter_component = gr.components.Dataframe(
485
+ value=updated_data,
486
  headers=updated_headers,
487
+ type="pandas",
488
  datatype=update_datatype,
489
  interactive=False,
490
  visible=True,
491
+ )
 
 
492
 
493
+ return filter_component
494
 
495
+ checkbox_group_singledomain.change(
496
+ fn=on_checkbox_group_change_singledomain,
497
+ inputs=checkbox_group_singledomain,
498
+ outputs=data_component_singledomain,
499
+ )
500
 
501
  # table Submission
502
  with gr.TabItem("🚀 Submit here! ", elem_id="seed-benchmark-tab-table", id=4):
 
504
  gr.Markdown(SUBMIT_INTRODUCTION, elem_classes="markdown-text")
505
 
506
  with gr.Row():
507
+ gr.Markdown(
508
+ "# ✉️✨ Submit your result here!", elem_classes="markdown-text"
509
+ )
510
 
511
  with gr.Row():
512
  with gr.Column():
513
  model_name_textbox = gr.Textbox(
514
  label="Model name", placeholder="ConsisID"
515
+ )
516
  revision_name_textbox = gr.Textbox(
517
+ label="Revision Model Name (Optinal)", placeholder="ConsisID"
518
  )
519
  venue_type_dropdown = gr.Dropdown(
520
  label="Venue Type",
521
  choices=["Open-Source", "Close-Source"],
522
+ value="Open-Source",
523
+ )
524
+ team_name_textbox = gr.Textbox(
525
+ label="Your Team Name (If left blank, it will be user upload))", placeholder="User Upload"
526
  )
527
  model_link = gr.Textbox(
528
+ label="Model Link",
529
+ placeholder="https://github.com/PKU-YuanGroup/ConsisID",
530
  )
531
 
532
  with gr.Column():
533
+ input_file = gr.File(label="Click to Upload a json File", type="binary")
534
 
535
  submit_button_opendomain = gr.Button("Submit Result (Open-Domain)")
536
  submit_button_humandomain = gr.Button("Submit Result (Human-Domain)")
 
545
  model_name_textbox,
546
  revision_name_textbox,
547
  venue_type_dropdown,
548
+ team_name_textbox,
549
  model_link,
550
  ],
551
+ outputs=submission_result,
552
  )
553
 
554
  submit_button_humandomain.click(
 
558
  model_name_textbox,
559
  revision_name_textbox,
560
  venue_type_dropdown,
561
+ team_name_textbox,
562
  model_link,
563
  ],
564
+ outputs=submission_result,
565
  )
566
 
567
  submit_button_singledomain.click(
 
571
  model_name_textbox,
572
  revision_name_textbox,
573
  venue_type_dropdown,
574
+ team_name_textbox,
575
  model_link,
576
  ],
577
+ outputs=submission_result,
578
  )
579
 
580
  with gr.Row():
581
  data_run = gr.Button("Refresh")
582
+ data_run.click(get_baseline_df_opendomain, outputs=data_component_opendomain)
583
+ data_run.click(get_baseline_df_humandomain, outputs=data_component_humandomain)
 
 
 
 
584
  data_run.click(
585
  get_baseline_df_singledomain, outputs=data_component_singledomain
586
  )
587
+
588
+ block.launch()
constants.py CHANGED
@@ -1,12 +1,53 @@
1
- MODEL_INFO = ["Model", "Venue"]
2
 
3
- ALL_RESULTS = ["TotalScore↑","Aesthetics↑", "Motion↑", "FaceSim↑", "GmeScore↑", "NexusScore↑", "NaturalScore↑"]
 
 
 
 
 
 
 
 
4
 
5
- OPEN_DOMAIN_RESULTS = ["TotalScore↑","Aesthetics↑", "Motion↑", "FaceSim↑", "GmeScore↑", "NexusScore↑", "NaturalScore↑"]
6
- HUMAN_DOMAIN_RESULTS = ["TotalScore↑","Aesthetics↑", "Motion↑", "FaceSim↑", "GmeScore↑", "NaturalScore↑"]
7
- SINGLE_DOMAIN_RESULTS = ["TotalScore↑","Aesthetics↑", "Motion↑", "FaceSim↑", "GmeScore↑", "NexusScore↑", "NaturalScore↑"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
- NEW_DATA_TITLE_TYPE = ["markdown", 'markdown', "number", "number", "number", "number", "number", "number", "number"]
 
 
 
 
 
 
 
 
 
 
10
 
11
  CSV_DIR_OPEN_DOMAIN_RESULTS = "./file/results_Open-Domain.csv"
12
  CSV_DIR_HUMAN_DOMAIN_RESULTS = "./file/results_Human-Domain.csv"
 
1
+ MODEL_INFO = ["Model", "Venue", "Evaluated by"]
2
 
3
+ ALL_RESULTS = [
4
+ "TotalScore↑",
5
+ "Aesthetics↑",
6
+ "Motion↑",
7
+ "FaceSim↑",
8
+ "GmeScore↑",
9
+ "NexusScore↑",
10
+ "NaturalScore↑",
11
+ ]
12
 
13
+ OPEN_DOMAIN_RESULTS = [
14
+ "TotalScore↑",
15
+ "Aesthetics↑",
16
+ "Motion↑",
17
+ "FaceSim↑",
18
+ "GmeScore↑",
19
+ "NexusScore↑",
20
+ "NaturalScore↑",
21
+ ]
22
+ HUMAN_DOMAIN_RESULTS = [
23
+ "TotalScore↑",
24
+ "Aesthetics↑",
25
+ "Motion↑",
26
+ "FaceSim↑",
27
+ "GmeScore↑",
28
+ "NaturalScore↑",
29
+ ]
30
+ SINGLE_DOMAIN_RESULTS = [
31
+ "TotalScore↑",
32
+ "Aesthetics↑",
33
+ "Motion↑",
34
+ "FaceSim↑",
35
+ "GmeScore↑",
36
+ "NexusScore↑",
37
+ "NaturalScore↑",
38
+ ]
39
 
40
+ NEW_DATA_TITLE_TYPE = [
41
+ "markdown",
42
+ "markdown",
43
+ "number",
44
+ "number",
45
+ "number",
46
+ "number",
47
+ "number",
48
+ "number",
49
+ "number",
50
+ ]
51
 
52
  CSV_DIR_OPEN_DOMAIN_RESULTS = "./file/results_Open-Domain.csv"
53
  CSV_DIR_HUMAN_DOMAIN_RESULTS = "./file/results_Human-Domain.csv"
file/results_Human-Domain.csv CHANGED
@@ -1,17 +1,17 @@
1
- Model,Venue,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NaturalScore↑
2
- [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,51.11%,47.33%,14.80%,38.50%,70.42%,71.99%
3
- [Pika2.1(20250503)](https://pika.art/),Closed-Source,52.56%,52.39%,28.94%,29.41%,75.03%,72.53%
4
- [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,59.13%,50.94%,50.55%,41.02%,67.79%,78.28%
5
- [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,46.28%,51.45%,8.78%,19.98%,73.27%,70.89%
6
- [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,49.02%,53.18%,16.87%,22.29%,73.61%,73.00%
7
- [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,58.57%,52.78%,11.76%,64.65%,69.53%,74.33%
8
- [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,53.64%,50.80%,14.14%,46.30%,72.17%,71.67%
9
- [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,54.27%,39.88%,31.98%,55.02%,63.63%,67.33%
10
- [HunyuanCustom](https://github.com/Tencent-Hunyuan/HunyuanCustom),Open-Source,55.85%,49.67%,15.13%,62.25%,69.78%,67.00%
11
- [Hailuo](https://hailuoai.video/),Closed-Source,60.20%,52.75%,31.83%,57.79%,71.42%,74.52%
12
- [ConsisID](https://github.com/PKU-YuanGroup/ConsisID),Open-Source,52.97%,41.76%,38.12%,43.14%,72.03%,64.67%
13
- [Concat-ID](https://github.com/ML-GSAI/Concat-ID),Open-Source,53.32%,44.13%,31.76%,43.83%,73.67%,66.44%
14
- [FantasyID](https://github.com/Fantasy-AMAP/fantasy-id),Open-Source,49.80%,45.60%,23.48%,32.42%,72.68%,68.11%
15
- [EchoVideo](https://github.com/bytedance/EchoVideo),Open-Source,54.52%,39.93%,35.16%,48.57%,68.40%,69.22%
16
- [VideoMaker](https://github.com/WuTao-CS/VideoMaker),Open-Source,52.31%,31.76%,50.09%,76.45%,45.28%,47.08%
17
- [ID-Animator](https://github.com/ID-Animator/ID-Animator),Open-Source,43.37%,42.03%,33.54%,31.56%,52.91%,54.03%
 
1
+ Model,Venue,Evaluated by,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NaturalScore↑
2
+ [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,OpenS2V Team,51.11%,47.33%,14.80%,38.50%,70.42%,71.99%
3
+ [Pika2.1(20250503)](https://pika.art/),Closed-Source,OpenS2V Team,52.56%,52.39%,28.94%,29.41%,75.03%,72.53%
4
+ [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,OpenS2V Team,59.13%,50.94%,50.55%,41.02%,67.79%,78.28%
5
+ [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,46.28%,51.45%,8.78%,19.98%,73.27%,70.89%
6
+ [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,49.02%,53.18%,16.87%,22.29%,73.61%,73.00%
7
+ [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,58.57%,52.78%,11.76%,64.65%,69.53%,74.33%
8
+ [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,OpenS2V Team,53.64%,50.80%,14.14%,46.30%,72.17%,71.67%
9
+ [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,OpenS2V Team,54.27%,39.88%,31.98%,55.02%,63.63%,67.33%
10
+ [HunyuanCustom](https://github.com/Tencent-Hunyuan/HunyuanCustom),Open-Source,OpenS2V Team,55.85%,49.67%,15.13%,62.25%,69.78%,67.00%
11
+ [Hailuo](https://hailuoai.video/),Closed-Source,OpenS2V Team,60.20%,52.75%,31.83%,57.79%,71.42%,74.52%
12
+ [ConsisID](https://github.com/PKU-YuanGroup/ConsisID),Open-Source,OpenS2V Team,52.97%,41.76%,38.12%,43.14%,72.03%,64.67%
13
+ [Concat-ID](https://github.com/ML-GSAI/Concat-ID),Open-Source,OpenS2V Team,53.32%,44.13%,31.76%,43.83%,73.67%,66.44%
14
+ [FantasyID](https://github.com/Fantasy-AMAP/fantasy-id),Open-Source,OpenS2V Team,49.80%,45.60%,23.48%,32.42%,72.68%,68.11%
15
+ [EchoVideo](https://github.com/bytedance/EchoVideo),Open-Source,OpenS2V Team,54.52%,39.93%,35.16%,48.57%,68.40%,69.22%
16
+ [VideoMaker](https://github.com/WuTao-CS/VideoMaker),Open-Source,OpenS2V Team,52.31%,31.76%,50.09%,76.45%,45.28%,47.08%
17
+ [ID-Animator](https://github.com/ID-Animator/ID-Animator),Open-Source,OpenS2V Team,43.37%,42.03%,33.54%,31.56%,52.91%,54.03%
file/results_Open-Domain.csv CHANGED
@@ -1,9 +1,9 @@
1
- Model,Venue,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NexusScore↑,NaturalScore↑
2
- [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,47.59%,41.47%,13.52%,35.11%,67.57%,43.55%,71.44%
3
- [Pika2.1(20250503)](https://pika.art/),Closed-Source,48.88%,46.87%,24.70%,30.80%,69.21%,45.41%,69.79%
4
- [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,54.46%,44.60%,41.60%,40.10%,66.20%,45.92%,79.06%
5
- [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,43.95%,47.27%,12.03%,16.58%,71.38%,40.04%,70.56%
6
- [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,45.53%,48.24%,18.83%,20.58%,71.26%,37.95%,71.78%
7
- [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,52.87%,47.21%,15.02%,55.09%,67.27%,44.20%,72.78%
8
- [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,50.71%,46.67%,14.29%,48.55%,69.43%,42.44%,70.26%
9
- [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,49.61%,39.40%,25.60%,45.95%,64.54%,43.77%,67.22%
 
1
+ Model,Venue,Evaluated by,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NexusScore↑,NaturalScore↑
2
+ [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,OpenS2V Team,47.59%,41.47%,13.52%,35.11%,67.57%,43.55%,71.44%
3
+ [Pika2.1(20250503)](https://pika.art/),Closed-Source,OpenS2V Team,48.88%,46.87%,24.70%,30.80%,69.21%,45.41%,69.79%
4
+ [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,OpenS2V Team,54.46%,44.60%,41.60%,40.10%,66.20%,45.92%,79.06%
5
+ [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,43.95%,47.27%,12.03%,16.58%,71.38%,40.04%,70.56%
6
+ [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,45.53%,48.24%,18.83%,20.58%,71.26%,37.95%,71.78%
7
+ [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,52.87%,47.21%,15.02%,55.09%,67.27%,44.20%,72.78%
8
+ [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,OpenS2V Team,50.71%,46.67%,14.29%,48.55%,69.43%,42.44%,70.26%
9
+ [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,OpenS2V Team,49.61%,39.40%,25.60%,45.95%,64.54%,43.77%,67.22%
file/results_Single-Domain.csv CHANGED
@@ -1,10 +1,10 @@
1
- Model,Venue,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NexusScore↑,NaturalScore↑
2
- [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,48.67%,34.78%,24.40%,36.20%,65.56%,45.20%,72.60%
3
- [Pika2.1(20250503)](https://pika.art/),Closed-Source,48.93%,38.64%,31.90%,32.94%,62.19%,47.34%,70.60%
4
- [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,53.12%,35.63%,36.40%,39.26%,61.99%,48.24%,81.40%
5
- [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,44.28%,42.58%,18.00%,18.02%,65.93%,36.26%,76.00%
6
- [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,47.33%,41.81%,33.78%,22.38%,65.35%,38.52%,76.00%
7
- [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,58.00%,41.30%,35.54%,64.65%,58.55%,51.33%,77.33%
8
- [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,49.95%,42.98%,19.30%,44.03%,65.61%,37.78%,76.00%
9
- [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,51.64%,33.83%,21.60%,54.42%,61.93%,48.63%,70.60%
10
- [HunyuanCustom](https://github.com/Tencent-Hunyuan/HunyuanCustom),Open-Source,51.64%,34.08%,26.83%,55.93%,54.31%,50.75%,68.66%
 
1
+ Model,Venue,Evaluated by,TotalScore↑,Aesthetics↑,Motion↑,FaceSim↑,GmeScore↑,NexusScore↑,NaturalScore↑
2
+ [Vidu2.0(20250503)](https://www.vidu.cn/),Closed-Source,OpenS2V Team,48.67%,34.78%,24.40%,36.20%,65.56%,45.20%,72.60%
3
+ [Pika2.1(20250503)](https://pika.art/),Closed-Source,OpenS2V Team,48.93%,38.64%,31.90%,32.94%,62.19%,47.34%,70.60%
4
+ [Kling1.6(20250503)](https://app.klingai.com/cn/),Closed-Source,OpenS2V Team,53.12%,35.63%,36.40%,39.26%,61.99%,48.24%,81.40%
5
+ [VACE-P1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,44.28%,42.58%,18.00%,18.02%,65.93%,36.26%,76.00%
6
+ [VACE-1.3B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,47.33%,41.81%,33.78%,22.38%,65.35%,38.52%,76.00%
7
+ [VACE-14B](https://github.com/ali-vilab/VACE),Open-Source,OpenS2V Team,58.00%,41.30%,35.54%,64.65%,58.55%,51.33%,77.33%
8
+ [Phantom-1.3B](https://github.com/Phantom-video/Phantom),Open-Source,OpenS2V Team,49.95%,42.98%,19.30%,44.03%,65.61%,37.78%,76.00%
9
+ [SkyReels-A2-P14B](https://github.com/SkyworkAI/SkyReels-V2),Open-Source,OpenS2V Team,51.64%,33.83%,21.60%,54.42%,61.93%,48.63%,70.60%
10
+ [HunyuanCustom](https://github.com/Tencent-Hunyuan/HunyuanCustom),Open-Source,OpenS2V Team,51.64%,34.08%,26.83%,55.93%,54.31%,50.75%,68.66%