Upload 2 files
Browse files- app.py +190 -237
- constants.py +15 -8
app.py
CHANGED
@@ -23,296 +23,249 @@ def upload_file(files):
|
|
23 |
return file_paths
|
24 |
|
25 |
|
26 |
-
def
|
27 |
input_file,
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
):
|
43 |
-
COLNAME2KEY={
|
44 |
-
"Video-Text Camera Motion":"camera_motion",
|
45 |
-
"Video-Image Subject Consistency": "i2v_subject",
|
46 |
-
"Video-Image Background Consistency": "i2v_background",
|
47 |
-
"Subject Consistency": "subject_consistency",
|
48 |
-
"Background Consistency": "background_consistency",
|
49 |
-
"Motion Smoothness": "motion_smoothness",
|
50 |
-
"Dynamic Degree": "dynamic_degree",
|
51 |
-
"Aesthetic Quality": "aesthetic_quality",
|
52 |
-
"Imaging Quality": "imaging_quality",
|
53 |
-
"Temporal Flickering": "temporal_flickering"
|
54 |
-
}
|
55 |
if input_file is None:
|
56 |
return "Error! Empty file!"
|
57 |
if model_link == '' or model_name_textbox == '' or contact_email == '':
|
58 |
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)
|
59 |
|
60 |
-
upload_content = input_file
|
61 |
submission_repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN, repo_type="dataset")
|
62 |
submission_repo.git_pull()
|
63 |
-
filename = datetime.datetime.now().strftime(
|
64 |
|
65 |
now = datetime.datetime.now()
|
66 |
-
update_time = now.strftime("%Y
|
67 |
-
with open(f'{SUBMISSION_NAME}/{filename}.zip','wb') as f:
|
68 |
-
f.write(input_file)
|
69 |
-
# shutil.copyfile(CSV_DIR, os.path.join(SUBMISSION_NAME, f"{input_file}"))
|
70 |
|
71 |
-
csv_data = pd.read_csv(
|
72 |
|
73 |
if revision_name_textbox == '':
|
74 |
col = csv_data.shape[0]
|
75 |
model_name = model_name_textbox.replace(',',' ')
|
76 |
else:
|
77 |
model_name = revision_name_textbox.replace(',',' ')
|
78 |
-
model_name_list = csv_data['Model Name
|
79 |
name_list = [name.split(']')[0][1:] for name in model_name_list]
|
80 |
if revision_name_textbox not in name_list:
|
81 |
col = csv_data.shape[0]
|
82 |
else:
|
83 |
col = name_list.index(revision_name_textbox)
|
|
|
|
|
|
|
84 |
if model_link == '':
|
85 |
model_name = model_name # no url
|
86 |
else:
|
87 |
model_name = '[' + model_name + '](' + model_link + ')'
|
88 |
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
if
|
100 |
-
|
101 |
-
|
102 |
-
with open(os.path.join(cur_file, subfile)) as ff:
|
103 |
-
cur_json = json.load(ff)
|
104 |
-
print(file, type(cur_json))
|
105 |
-
if isinstance(cur_json, dict):
|
106 |
-
print(cur_json.keys())
|
107 |
-
for key in cur_json:
|
108 |
-
upload_data[key] = cur_json[key][0]
|
109 |
-
print(f"{key}:{cur_json[key][0]}")
|
110 |
-
elif cur_file.endswith('json'):
|
111 |
-
with open(cur_file) as ff:
|
112 |
-
cur_json = json.load(ff)
|
113 |
-
print(file, type(cur_json))
|
114 |
-
if isinstance(cur_json, dict):
|
115 |
-
print(cur_json.keys())
|
116 |
-
for key in cur_json:
|
117 |
-
upload_data[key] = cur_json[key][0]
|
118 |
-
print(f"{key}:{cur_json[key][0]}")
|
119 |
-
# add new data
|
120 |
-
new_data = [model_name]
|
121 |
-
print('upload_data:', upload_data)
|
122 |
-
I2V_HEAD= ["Video-Text Camera Motion",
|
123 |
-
"Video-Image Subject Consistency",
|
124 |
-
"Video-Image Background Consistency",
|
125 |
-
"Subject Consistency",
|
126 |
-
"Background Consistency",
|
127 |
-
"Temporal Flickering",
|
128 |
-
"Motion Smoothness",
|
129 |
-
"Dynamic Degree",
|
130 |
-
"Aesthetic Quality",
|
131 |
-
"Imaging Quality" ]
|
132 |
-
for key in I2V_HEAD :
|
133 |
-
sub_key = COLNAME2KEY[key]
|
134 |
-
if sub_key in upload_data:
|
135 |
-
new_data.append(upload_data[sub_key])
|
136 |
else:
|
137 |
-
new_data.append(
|
138 |
-
|
139 |
-
new_data.append(
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
|
|
|
|
|
|
|
|
|
|
156 |
def get_baseline_df():
|
157 |
submission_repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN, repo_type="dataset")
|
158 |
submission_repo.git_pull()
|
159 |
df = pd.read_csv(CSV_DIR)
|
160 |
-
df = df.sort_values(by=DEFAULT_INFO[0], ascending=False)
|
161 |
-
|
162 |
-
# Add this line to display the results of all model types by default
|
163 |
-
df = df[df['Model Type'].isin(model_type_filter.value)]
|
164 |
-
# Add this line to display the results of both abilities by default
|
165 |
-
df = df[df['Ability'].isin(ability_filter.value)]
|
166 |
-
return df
|
167 |
-
|
168 |
-
def get_all_df(dir=CSV_DIR):
|
169 |
-
submission_repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN, repo_type="dataset")
|
170 |
-
submission_repo.git_pull()
|
171 |
-
df = pd.read_csv(dir)
|
172 |
return df
|
173 |
|
174 |
|
175 |
-
block = gr.Blocks(
|
|
|
|
|
|
|
|
|
|
|
176 |
with block:
|
177 |
-
gr.
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
with gr.
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
headers=COLUMN_NAMES,
|
201 |
-
type="pandas",
|
202 |
-
datatype=DATA_TITILE_TYPE,
|
203 |
-
interactive=False,
|
204 |
-
visible=True,
|
205 |
-
)
|
206 |
-
|
207 |
-
def on_filter_change(model_types, abilities):
|
208 |
-
df = get_baseline_df()
|
209 |
-
# Filter by selected model types
|
210 |
-
df = df[df['Model Type'].isin(model_types)]
|
211 |
-
# Filter by selected abilities
|
212 |
-
df = df[df['Ability'].isin(abilities)]
|
213 |
-
return gr.Dataframe(
|
214 |
-
column_widths="auto", # Automatically adjusts column widths
|
215 |
-
value=df,
|
216 |
headers=COLUMN_NAMES,
|
217 |
-
type="pandas",
|
218 |
datatype=DATA_TITILE_TYPE,
|
219 |
interactive=False,
|
220 |
-
visible=True
|
221 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
|
237 |
-
|
238 |
-
|
239 |
|
240 |
-
|
241 |
-
|
242 |
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
|
|
249 |
)
|
250 |
-
revision_name_textbox_i2v = gr.Textbox(
|
251 |
-
label="Revision Model Name(Optional)", placeholder="If you need to update the previous results, please fill in this line"
|
252 |
-
)
|
253 |
-
access_type_i2v = gr.Dropdown(["Open Source", "Ready to Open Source", "API", "Close"], label="Please select the way user can access your model. You can update the content by revision_name, or contact the VBench Team.")
|
254 |
-
|
255 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
with gr.Column():
|
257 |
-
|
258 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
259 |
)
|
260 |
-
team_name_i2v = gr.Textbox(
|
261 |
-
label="Your Team Name(If left blank, it will be user upload)", placeholder="User Upload"
|
262 |
-
)
|
263 |
-
contact_email_i2v = gr.Textbox(
|
264 |
-
label="E-Mail(Will not be displayed)", placeholder="Required field"
|
265 |
-
)
|
266 |
-
with gr.Row():
|
267 |
-
gr.Markdown("The following is optional and will be synced to [GitHub] (https://github.com/Vchitect/VBench/tree/master/sampled_videos#what-are-the-details-of-the-video-generation-models)", elem_classes="markdown-text")
|
268 |
-
with gr.Row():
|
269 |
-
release_time_i2v = gr.Textbox(label="Time of Publish", placeholder="1970-01-01")
|
270 |
-
model_resolution_i2v = gr.Textbox(label="resolution", placeholder="Width x Height")
|
271 |
-
model_fps_i2v = gr.Textbox(label="model fps", placeholder="FPS(int)")
|
272 |
-
model_frame_i2v = gr.Textbox(label="model frame count", placeholder="INT")
|
273 |
-
model_video_length_i2v = gr.Textbox(label="model video length", placeholder="float(2.0)")
|
274 |
-
model_checkpoint_i2v = gr.Textbox(label="model checkpoint", placeholder="optional")
|
275 |
-
model_commit_id_i2v = gr.Textbox(label="github commit id", placeholder='main')
|
276 |
-
model_video_format_i2v = gr.Textbox(label="pipeline format", placeholder='mp4')
|
277 |
-
with gr.Column():
|
278 |
-
input_file_i2v = gr.components.File(label = "Click to Upload a ZIP File", file_count="single", type='binary')
|
279 |
-
submit_button_i2v = gr.Button("Submit Eval")
|
280 |
-
submit_succ_button_i2v = gr.Markdown("Submit Success! Please press refresh and retfurn to LeaderBoard!", visible=False)
|
281 |
-
fail_textbox_i2v = gr.Markdown('<span style="color:red;">Please ensure that the `Model Name`, `Project Page`, and `Email` are filled in correctly.</span>', elem_classes="markdown-text",visible=False)
|
282 |
-
|
283 |
-
|
284 |
-
submission_result_i2v = gr.Markdown()
|
285 |
-
# submit_button_i2v.click(
|
286 |
-
# add_new_eval_i2v,
|
287 |
-
# inputs = [
|
288 |
-
# input_file_i2v,
|
289 |
-
# model_name_textbox_i2v,
|
290 |
-
# revision_name_textbox_i2v,
|
291 |
-
# model_link_i2v,
|
292 |
-
# team_name_i2v,
|
293 |
-
# contact_email_i2v,
|
294 |
-
# release_time_i2v,
|
295 |
-
# access_type_i2v,
|
296 |
-
# model_resolution_i2v,
|
297 |
-
# model_fps_i2v,
|
298 |
-
# model_frame_i2v,
|
299 |
-
# model_video_length_i2v,
|
300 |
-
# model_checkpoint_i2v,
|
301 |
-
# model_commit_id_i2v,
|
302 |
-
# model_video_format_i2v
|
303 |
-
# ],
|
304 |
-
# outputs=[submit_button_i2v, submit_succ_button_i2v, fail_textbox_i2v]
|
305 |
-
# )
|
306 |
-
|
307 |
|
308 |
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
|
313 |
-
|
314 |
-
|
315 |
-
|
|
|
|
|
|
|
|
|
316 |
|
317 |
|
318 |
block.launch()
|
|
|
23 |
return file_paths
|
24 |
|
25 |
|
26 |
+
def add_new_eval(
|
27 |
input_file,
|
28 |
+
model_type,
|
29 |
+
model_name_textbox,
|
30 |
+
model_ability,
|
31 |
+
revision_name_textbox,
|
32 |
+
access_type,
|
33 |
+
model_link,
|
34 |
+
team_name,
|
35 |
+
contact_email,
|
36 |
+
release_time,
|
37 |
+
model_resolution,
|
38 |
+
model_length,
|
39 |
+
model_fps,
|
40 |
+
model_frame,
|
41 |
+
model_link_optional,
|
42 |
):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
if input_file is None:
|
44 |
return "Error! Empty file!"
|
45 |
if model_link == '' or model_name_textbox == '' or contact_email == '':
|
46 |
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)
|
47 |
|
|
|
48 |
submission_repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN, repo_type="dataset")
|
49 |
submission_repo.git_pull()
|
50 |
+
filename = f"{model_name_textbox}_{model_type}_{model_ability}_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}"
|
51 |
|
52 |
now = datetime.datetime.now()
|
53 |
+
update_time = now.strftime("%Y.%m.%d") # Capture update time
|
|
|
|
|
|
|
54 |
|
55 |
+
csv_data = pd.read_csv(CSV_DIR)
|
56 |
|
57 |
if revision_name_textbox == '':
|
58 |
col = csv_data.shape[0]
|
59 |
model_name = model_name_textbox.replace(',',' ')
|
60 |
else:
|
61 |
model_name = revision_name_textbox.replace(',',' ')
|
62 |
+
model_name_list = csv_data['Model Name']
|
63 |
name_list = [name.split(']')[0][1:] for name in model_name_list]
|
64 |
if revision_name_textbox not in name_list:
|
65 |
col = csv_data.shape[0]
|
66 |
else:
|
67 |
col = name_list.index(revision_name_textbox)
|
68 |
+
if csv_data[col]['Sampled by'] == "WorldScore" or csv_data[col]['Evaluated by'] == "WorldScore":
|
69 |
+
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)
|
70 |
+
|
71 |
if model_link == '':
|
72 |
model_name = model_name # no url
|
73 |
else:
|
74 |
model_name = '[' + model_name + '](' + model_link + ')'
|
75 |
|
76 |
+
if model_link_optional == '':
|
77 |
+
model_link_optional = model_link
|
78 |
+
|
79 |
+
try:
|
80 |
+
with open(input_file, 'r') as f:
|
81 |
+
upload_data = json.load(f)
|
82 |
+
|
83 |
+
# add new data
|
84 |
+
print('upload_data:', upload_data)
|
85 |
+
new_data = [model_type, model_name, model_ability]
|
86 |
+
if team_name == '':
|
87 |
+
new_data.append(model_name)
|
88 |
+
new_data.append(model_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
else:
|
90 |
+
new_data.append(team_name)
|
91 |
+
new_data.append(team_name)
|
92 |
+
new_data.append(access_type)
|
93 |
+
new_data.append(update_time)
|
94 |
+
|
95 |
+
for key in TASK_INFO:
|
96 |
+
value = COLNAME2KEY[key]
|
97 |
+
if value in upload_data:
|
98 |
+
new_data.append(upload_data[value])
|
99 |
+
else:
|
100 |
+
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)
|
101 |
+
|
102 |
+
|
103 |
+
csv_data.loc[col] = new_data
|
104 |
+
csv_data = csv_data.to_csv(CSV_DIR, index=False)
|
105 |
+
with open(INFO_DIR,'a') as f:
|
106 |
+
f.write(f"{model_type.replace(',', ' ')}\t{model_name.replace(',', ' ')}\t{model_ability.replace(',', ' ')}\t{model_resolution.replace(',', ' ')}\t{model_length.replace(',', ' ')}\t{model_fps.replace(',', ' ')}\t{model_frame.replace(',', ' ')}\t{model_link_optional.replace(',', ' ')}\t{contact_email.replace(',', ' ')}\n")
|
107 |
+
submission_repo.push_to_hub()
|
108 |
+
print("success update", model_name)
|
109 |
+
return gr.update(visible=False), gr.update(visible=True), gr.update(visible=False)
|
110 |
+
except:
|
111 |
+
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)
|
112 |
+
|
113 |
+
|
114 |
def get_baseline_df():
|
115 |
submission_repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN, repo_type="dataset")
|
116 |
submission_repo.git_pull()
|
117 |
df = pd.read_csv(CSV_DIR)
|
118 |
+
df = df.sort_values(by=DEFAULT_INFO[0], ascending=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
return df
|
120 |
|
121 |
|
122 |
+
block = gr.Blocks(css="""
|
123 |
+
.container {
|
124 |
+
max-width: 80%;
|
125 |
+
margin: auto;
|
126 |
+
}
|
127 |
+
""")
|
128 |
with block:
|
129 |
+
with gr.Column(elem_classes="container"):
|
130 |
+
gr.Markdown(
|
131 |
+
LEADERBORAD_INTRODUCTION
|
132 |
+
)
|
133 |
+
with gr.Tabs(elem_classes="tab-buttons") as tabs:
|
134 |
+
# Table 0
|
135 |
+
with gr.TabItem("π
WorldScore Benchmark", elem_id="worldscore-tab-table", id=0):
|
136 |
+
with gr.Column():
|
137 |
+
model_type_filter = gr.CheckboxGroup(
|
138 |
+
choices=MODEL_TYPE,
|
139 |
+
value=DEFAULT_MODEL_TYPE,
|
140 |
+
label="Model Type",
|
141 |
+
interactive=True
|
142 |
+
)
|
143 |
+
ability_filter = gr.CheckboxGroup(
|
144 |
+
choices=ABILITY,
|
145 |
+
value=DEFAULT_ABILITY,
|
146 |
+
label="Ability",
|
147 |
+
interactive=True
|
148 |
+
)
|
149 |
+
|
150 |
+
data_component = gr.components.Dataframe(
|
151 |
+
value=get_baseline_df(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
headers=COLUMN_NAMES,
|
153 |
+
type="pandas",
|
154 |
datatype=DATA_TITILE_TYPE,
|
155 |
interactive=False,
|
156 |
+
visible=True,
|
157 |
)
|
158 |
+
|
159 |
+
def on_filter_change(model_types, abilities):
|
160 |
+
df = get_baseline_df()
|
161 |
+
# Filter by selected model types
|
162 |
+
df = df[df['Model Type'].isin(model_types)]
|
163 |
+
# Filter by selected abilities
|
164 |
+
df = df[df['Ability'].isin(abilities)]
|
165 |
+
return gr.Dataframe(
|
166 |
+
value=df,
|
167 |
+
headers=COLUMN_NAMES,
|
168 |
+
type="pandas",
|
169 |
+
datatype=DATA_TITILE_TYPE,
|
170 |
+
interactive=False,
|
171 |
+
visible=True
|
172 |
+
)
|
173 |
|
174 |
+
model_type_filter.change(
|
175 |
+
fn=on_filter_change,
|
176 |
+
inputs=[model_type_filter, ability_filter],
|
177 |
+
outputs=data_component
|
178 |
+
)
|
179 |
|
180 |
+
ability_filter.change(
|
181 |
+
fn=on_filter_change,
|
182 |
+
inputs=[model_type_filter, ability_filter],
|
183 |
+
outputs=data_component
|
184 |
+
)
|
185 |
+
|
186 |
+
with gr.TabItem("π Submit here! ", elem_id="submit-tab-table", id=1):
|
187 |
|
188 |
+
with gr.Row():
|
189 |
+
gr.Markdown(SUBMIT_INTRODUCTION, elem_classes="markdown-text")
|
190 |
|
191 |
+
with gr.Row():
|
192 |
+
gr.Markdown("# Submit your evaluation json file here!", elem_classes="markdown-text")
|
193 |
|
194 |
+
with gr.Row():
|
195 |
+
gr.Markdown("Here is a required field", elem_classes="markdown-text")
|
196 |
+
with gr.Row():
|
197 |
+
with gr.Column():
|
198 |
+
model_type = gr.Dropdown(["Video", "3D", "4D"], label="Model Type")
|
199 |
+
model_name_textbox = gr.Textbox(
|
200 |
+
label="Model name", placeholder="Your model name"
|
201 |
+
)
|
202 |
+
model_ability = gr.Dropdown(["I2V", "T2V"], label="Model Ability")
|
203 |
+
revision_name_textbox = gr.Textbox(
|
204 |
+
label="Revision Model Name (Optional)", placeholder="If you need to update the previous submissions, please fill in this line"
|
205 |
)
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
+
with gr.Column():
|
208 |
+
access_type = gr.Dropdown(["Open Source", "Ready to Open Source", "API", "Close"], label="Access")
|
209 |
+
model_link = gr.Textbox(
|
210 |
+
label="Link (Website/Paper Link/Github/HuggingFace)", placeholder="If filling in the wrong information, your results may be removed."
|
211 |
+
)
|
212 |
+
team_name = gr.Textbox(
|
213 |
+
label="Your Team Name", placeholder="If left blank, it will be your model name"
|
214 |
+
)
|
215 |
+
contact_email = gr.Textbox(
|
216 |
+
label="E-Mail (Will not be displayed)", placeholder="Contact email"
|
217 |
+
)
|
218 |
+
with gr.Row():
|
219 |
+
gr.Markdown("The following is optional and will be synced to [GitHub] (https://github.com/Vchitect/VBench/tree/master/sampled_videos#what-are-the-details-of-the-video-generation-models)", elem_classes="markdown-text")
|
220 |
+
with gr.Row():
|
221 |
+
release_time = gr.Textbox(label="Version", placeholder="2025.03.29")
|
222 |
+
model_resolution = gr.Textbox(label="Resolution", placeholder="WidthxHeight")
|
223 |
+
model_length = gr.Textbox(label="Video Length (s)", placeholder="float")
|
224 |
+
model_fps = gr.Textbox(label="FPS", placeholder="int")
|
225 |
+
model_frame = gr.Textbox(label="Frame Number", placeholder="int")
|
226 |
+
model_link_optional = gr.Textbox(label="Link", placeholder='optional')
|
227 |
with gr.Column():
|
228 |
+
input_file = gr.components.File(label = "Click to Upload a ZIP File", file_count="single", type='binary')
|
229 |
+
submit_button = gr.Button("Submit Eval")
|
230 |
+
submit_succ_button = gr.Markdown("Submit Success! Please press refresh and return to WorldScore Benchmark!", visible=False)
|
231 |
+
fail_textbox = gr.Markdown('<span style="color:red;">Please ensure that the `Model Name`, `Project Page`, and `E-mail` are filled in correctly and the uploaded json file is valid.</span>', elem_classes="markdown-text",visible=False)
|
232 |
+
|
233 |
+
|
234 |
+
submission_result = gr.Markdown()
|
235 |
+
submit_button.click(
|
236 |
+
add_new_eval,
|
237 |
+
inputs = [
|
238 |
+
input_file,
|
239 |
+
model_type,
|
240 |
+
model_name_textbox,
|
241 |
+
model_ability,
|
242 |
+
revision_name_textbox,
|
243 |
+
access_type,
|
244 |
+
model_link,
|
245 |
+
team_name,
|
246 |
+
contact_email,
|
247 |
+
release_time,
|
248 |
+
model_resolution,
|
249 |
+
model_length,
|
250 |
+
model_fps,
|
251 |
+
model_frame,
|
252 |
+
model_link_optional,
|
253 |
+
],
|
254 |
+
outputs=[submit_button, submit_succ_button, fail_textbox]
|
255 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
|
257 |
|
258 |
+
def refresh_data():
|
259 |
+
value = get_baseline_df()
|
260 |
+
return value, DEFAULT_MODEL_TYPE, DEFAULT_ABILITY
|
261 |
|
262 |
+
with gr.Row(elem_classes="container"):
|
263 |
+
data_run = gr.Button("Refresh")
|
264 |
+
data_run.click(
|
265 |
+
refresh_data,
|
266 |
+
inputs=[],
|
267 |
+
outputs=[data_component, model_type_filter, ability_filter]
|
268 |
+
)
|
269 |
|
270 |
|
271 |
block.launch()
|
constants.py
CHANGED
@@ -48,6 +48,20 @@ MODEL_INFO = [
|
|
48 |
"Date",
|
49 |
]
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
DATA_TITILE_TYPE = ['markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number']
|
52 |
|
53 |
SUBMISSION_NAME = "worldscore_leaderboard_submission"
|
@@ -58,16 +72,9 @@ INFO_DIR = "./worldscore_leaderboard_submission/model_info.csv"
|
|
58 |
COLUMN_NAMES = MODEL_INFO + TASK_INFO
|
59 |
|
60 |
LEADERBORAD_INTRODUCTION = """# WorldScore Leaderboard
|
|
|
61 |
|
62 |
π Welcome to the leaderboard of **WorldScore**, the first unified evaluation benchmark for world generation.
|
63 |
-
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: 10px;">
|
64 |
-
<a href=''><img src='https://img.shields.io/badge/cs.CV-Paper-b31b1b?logo=arxiv&logoColor=red'></a>
|
65 |
-
<a href='https://haoyi-duan.github.io/WorldScore/'><img src='https://img.shields.io/badge/WorldScore-Website-green?logo=googlechrome&logoColor=green'></a>
|
66 |
-
<a href='https://github.com/haoyi-duan/WorldScore'><img src='https://img.shields.io/badge/WorldScore-Code-blue?logo=github&logoColor=blue'></a>
|
67 |
-
<a href='https://huggingface.co/datasets/Howieeeee/WorldScore'><img src='https://img.shields.io/badge/WordScore-Dataset-yellow?logo=huggingface&logoColor=yellow'></a>
|
68 |
-
</div>
|
69 |
-
|
70 |
-
[Paper](https://arxiv.org/abs/2503.15669) | [Website](https://haoyi-duan.github.io/WorldScore/) | [Code](https://github.com/haoyi-duan/WorldScore) | [Dataset](https://huggingface.co/datasets/Howieeeee/WorldScore)
|
71 |
|
72 |
**Join Leaderboard**: Please see the [instructions](https://github.com/Vchitect/VBench/tree/master?tab=readme-ov-file#trophy-leaderboard) for 3 options to participate. One option is to follow [VBench Usage info](https://github.com/Vchitect/VBench?tab=readme-ov-file#usage), and upload the generated `result.json` file here. After clicking the `Submit here!` button, click the `Refresh` button.
|
73 |
"""
|
|
|
48 |
"Date",
|
49 |
]
|
50 |
|
51 |
+
COLNAME2KEY = {
|
52 |
+
"WorldScore-Static":"WorldScore-Static",
|
53 |
+
"WorldScore-Dynamic":"WorldScore-Dynamic",
|
54 |
+
"Camera Control":"camera_control",
|
55 |
+
"Object Control":"object_control",
|
56 |
+
"Content Alignment":"content_alignment",
|
57 |
+
"3D Consistency":"3d_consistency",
|
58 |
+
"Photometric Consistency":"photometric_consistency",
|
59 |
+
"Style Consistency":"style_consistency",
|
60 |
+
"Subjective Quality":"subjective_quality",
|
61 |
+
"Motion Accuracy":"motion_accuracy",
|
62 |
+
"Motion Magnitude":"motion_magnitude",
|
63 |
+
"Motion Smoothness":"motion_smoothness",
|
64 |
+
}
|
65 |
DATA_TITILE_TYPE = ['markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'markdown', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number']
|
66 |
|
67 |
SUBMISSION_NAME = "worldscore_leaderboard_submission"
|
|
|
72 |
COLUMN_NAMES = MODEL_INFO + TASK_INFO
|
73 |
|
74 |
LEADERBORAD_INTRODUCTION = """# WorldScore Leaderboard
|
75 |
+
[Paper](https://arxiv.org/abs/2503.15669) | [Website](https://haoyi-duan.github.io/WorldScore/) | [Code](https://github.com/haoyi-duan/WorldScore) | [Dataset](https://huggingface.co/datasets/Howieeeee/WorldScore)
|
76 |
|
77 |
π Welcome to the leaderboard of **WorldScore**, the first unified evaluation benchmark for world generation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
**Join Leaderboard**: Please see the [instructions](https://github.com/Vchitect/VBench/tree/master?tab=readme-ov-file#trophy-leaderboard) for 3 options to participate. One option is to follow [VBench Usage info](https://github.com/Vchitect/VBench?tab=readme-ov-file#usage), and upload the generated `result.json` file here. After clicking the `Submit here!` button, click the `Refresh` button.
|
80 |
"""
|