Slep commited on
Commit
63825b4
1 Parent(s): 365aab1

Add conditioning, row filtering, fix ranking, markdown header

Browse files
Files changed (1) hide show
  1. app.py +29 -7
app.py CHANGED
@@ -27,6 +27,7 @@ EXPECTED_KEY_TO_COLNAME = OrderedDict(
27
  ("rank", "Rank"), # Just for columns order
28
  ("model", "Model"), # Just for columns order
29
  ("model_size", "Model Size (Million)"), # Just for columns order
 
30
  ("embedding_dim", "Embedding Dimension"),
31
  ]
32
  + [
@@ -95,11 +96,13 @@ def get_data_from_hub():
95
  return pd.DataFrame(df_list, columns=EXPECTED_KEY_TO_COLNAME.values())
96
 
97
 
98
- def filter_columns(df, k_filter, d_filter):
 
99
  # Fixed column positions
100
  selected_columns = [
101
  EXPECTED_KEY_TO_COLNAME["rank"],
102
  EXPECTED_KEY_TO_COLNAME["model"],
 
103
  EXPECTED_KEY_TO_COLNAME["model_size"],
104
  EXPECTED_KEY_TO_COLNAME["embedding_dim"],
105
  ]
@@ -124,12 +127,20 @@ def filter_columns(df, k_filter, d_filter):
124
  selected_columns.append(EXPECTED_KEY_TO_COLNAME["n_dists"])
125
  datatypes.append("number")
126
 
 
 
 
 
 
127
  return df[selected_columns], datatypes
128
 
129
 
130
  def add_rank(df):
131
  main_metrics = df["R@1 +1M Dist."].str.split("±").str[0].astype(float)
132
- df["Rank"] = main_metrics.argsort() + 1
 
 
 
133
  return df
134
 
135
 
@@ -141,14 +152,16 @@ def save_current_leaderboard(df):
141
  return filename
142
 
143
 
144
- def load_lrvsf_models(k_filter, d_filter, csv_file):
145
  # Remove previous tmpfile
146
  if csv_file:
147
  os.remove(csv_file)
148
 
149
  df = get_data_from_hub()
150
  df = add_rank(df)
151
- df, datatypes = filter_columns(df, k_filter, d_filter)
 
 
152
  filename = save_current_leaderboard(df)
153
 
154
  outputs = [
@@ -163,7 +176,11 @@ if __name__ == "__main__":
163
  with gr.Blocks() as demo:
164
  gr.Markdown(
165
  """
166
- # LAION - Referred Visual Search - Fashion : Leaderboard
 
 
 
 
167
  """
168
  )
169
  with gr.Row():
@@ -175,6 +192,11 @@ if __name__ == "__main__":
175
  value=DIST_EVALUATIONS,
176
  label="Number of Distractors",
177
  )
 
 
 
 
 
178
 
179
  df_table = gr.Dataframe(type="pandas", interactive=False)
180
  csv_file = gr.File(interactive=False)
@@ -183,12 +205,12 @@ if __name__ == "__main__":
183
  # Actions
184
  refresh.click(
185
  load_lrvsf_models,
186
- inputs=[k_filter, d_filter, csv_file],
187
  outputs=[df_table, csv_file],
188
  )
189
  demo.load(
190
  load_lrvsf_models,
191
- inputs=[k_filter, d_filter, csv_file],
192
  outputs=[df_table, csv_file],
193
  )
194
 
 
27
  ("rank", "Rank"), # Just for columns order
28
  ("model", "Model"), # Just for columns order
29
  ("model_size", "Model Size (Million)"), # Just for columns order
30
+ ("conditioning", "Conditioning"),
31
  ("embedding_dim", "Embedding Dimension"),
32
  ]
33
  + [
 
96
  return pd.DataFrame(df_list, columns=EXPECTED_KEY_TO_COLNAME.values())
97
 
98
 
99
+ def filter_dataframe(df, k_filter, d_filter, c_filter):
100
+ # ===== FILTER COLUMNS
101
  # Fixed column positions
102
  selected_columns = [
103
  EXPECTED_KEY_TO_COLNAME["rank"],
104
  EXPECTED_KEY_TO_COLNAME["model"],
105
+ EXPECTED_KEY_TO_COLNAME["conditioning"],
106
  EXPECTED_KEY_TO_COLNAME["model_size"],
107
  EXPECTED_KEY_TO_COLNAME["embedding_dim"],
108
  ]
 
127
  selected_columns.append(EXPECTED_KEY_TO_COLNAME["n_dists"])
128
  datatypes.append("number")
129
 
130
+ df = df[selected_columns]
131
+
132
+ # ===== FILTER ROWS
133
+ df = df[df[EXPECTED_KEY_TO_COLNAME["conditioning"]].isin(c_filter)]
134
+
135
  return df[selected_columns], datatypes
136
 
137
 
138
  def add_rank(df):
139
  main_metrics = df["R@1 +1M Dist."].str.split("±").str[0].astype(float)
140
+
141
+ # Argsort is smallest to largest so we reverse it
142
+ # We add 1 to start the rank at 1 instead of 0
143
+ df["Rank"] = main_metrics.argsort().values[::-1] + 1
144
  return df
145
 
146
 
 
152
  return filename
153
 
154
 
155
+ def load_lrvsf_models(k_filter, d_filter, c_filter, csv_file):
156
  # Remove previous tmpfile
157
  if csv_file:
158
  os.remove(csv_file)
159
 
160
  df = get_data_from_hub()
161
  df = add_rank(df)
162
+ df, datatypes = filter_dataframe(df, k_filter, d_filter, c_filter)
163
+ df = df.sort_values(by="Rank")
164
+
165
  filename = save_current_leaderboard(df)
166
 
167
  outputs = [
 
176
  with gr.Blocks() as demo:
177
  gr.Markdown(
178
  """
179
+ # LAION - Referred Visual Search - Fashion 👗 Leaderboard
180
+
181
+ - To submit, refer to the [LAION-RVS-Fashion Benchmark repository](https://github.com/Simon-Lepage/LRVSF-Benchmark).
182
+ - For details on the task and the dataset, refer to the [LRVSF paper](https://arxiv.org/abs/2306.02928).
183
+ - To download the leaderboard as CSV, click on the file below the table.
184
  """
185
  )
186
  with gr.Row():
 
192
  value=DIST_EVALUATIONS,
193
  label="Number of Distractors",
194
  )
195
+ c_filter = gr.CheckboxGroup(
196
+ choices=["category", "text"],
197
+ value=["category", "text"],
198
+ label="Conditioning",
199
+ )
200
 
201
  df_table = gr.Dataframe(type="pandas", interactive=False)
202
  csv_file = gr.File(interactive=False)
 
205
  # Actions
206
  refresh.click(
207
  load_lrvsf_models,
208
+ inputs=[k_filter, d_filter, c_filter, csv_file],
209
  outputs=[df_table, csv_file],
210
  )
211
  demo.load(
212
  load_lrvsf_models,
213
+ inputs=[k_filter, d_filter, c_filter, csv_file],
214
  outputs=[df_table, csv_file],
215
  )
216