traopia commited on
Commit
a63daec
·
1 Parent(s): 58b25bf

updares app metadata similar images

Browse files
Files changed (1) hide show
  1. app.py +41 -4
app.py CHANGED
@@ -5,6 +5,27 @@ from search import search_images_by_text, get_similar_images
5
  import requests
6
  from io import BytesIO
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  import requests
9
  from io import BytesIO
10
  #@st.cache_data(show_spinner="Loading FashionDB...")
@@ -18,7 +39,7 @@ def load_data_hf():
18
  response = requests.get(npy_url)
19
  response.raise_for_status() # Raise error if download fails
20
  embeddings = np.load(BytesIO(response.content))
21
-
22
  return df, embeddings
23
 
24
 
@@ -96,7 +117,7 @@ with gr.Blocks() as demo:
96
  max_year = int(df['year'].max())
97
 
98
  start_year = gr.Slider(label="Start Year", minimum=min_year, maximum=max_year, value=2000, step=1)
99
- end_year = gr.Slider(label="End Year", minimum=min_year, maximum=max_year, value=2025, step=1)
100
 
101
  query = gr.Textbox(label="Search", placeholder="e.g., pink dress")
102
  search_button = gr.Button("Search")
@@ -129,14 +150,30 @@ with gr.Blocks() as demo:
129
  outputs=[selected_idx, metadata_output]
130
  )
131
 
 
 
132
  def show_similar(idx, metadata):
133
- return find_similar(int(idx), metadata)
 
134
 
 
 
135
  show_similar_button = gr.Button("Show Similar Images")
136
  show_similar_button.click(
137
  show_similar,
138
  inputs=[selected_idx, metadata_state],
139
- outputs=[similar_gallery, metadata_state]
 
 
 
 
 
 
 
 
 
 
 
140
  )
141
 
142
  demo.launch()
 
5
  import requests
6
  from io import BytesIO
7
 
8
+ def create_collection_url(row):
9
+ base_url = "https://www.vogue.com/fashion-shows/"
10
+ season = str(row["season"]).lower()
11
+ year = str(row["year"])
12
+ category = str(row["category"]).lower() if pd.notna(row["category"]) and row["category"] and str(row["category"]).lower() != "nan" else None
13
+ designer = str(row["designer"]).lower().replace(" ", "-")
14
+
15
+ # Add city if available
16
+ city = str(row["city"]).lower().replace(" ", "-") if pd.notna(row["city"]) and row["city"] and str(row["city"]).lower() != "nan" else None
17
+
18
+ if pd.isna(category) or category is None or category == "nan":
19
+ if city:
20
+ return f"{base_url}{city}-{season}-{year}/{designer}"
21
+ else:
22
+ return f"{base_url}{season}-{year}/{designer}"
23
+ else:
24
+ if city:
25
+ return f"{base_url}{city}-{season}-{year}-{category}/{designer}"
26
+ else:
27
+ return f"{base_url}{season}-{year}-{category}/{designer}"
28
+
29
  import requests
30
  from io import BytesIO
31
  #@st.cache_data(show_spinner="Loading FashionDB...")
 
39
  response = requests.get(npy_url)
40
  response.raise_for_status() # Raise error if download fails
41
  embeddings = np.load(BytesIO(response.content))
42
+ df['collection'] = df.apply(create_collection_url, axis=1)
43
  return df, embeddings
44
 
45
 
 
117
  max_year = int(df['year'].max())
118
 
119
  start_year = gr.Slider(label="Start Year", minimum=min_year, maximum=max_year, value=2000, step=1)
120
+ end_year = gr.Slider(label="End Year", minimum=min_year, maximum=max_year, value=2024, step=1)
121
 
122
  query = gr.Textbox(label="Search", placeholder="e.g., pink dress")
123
  search_button = gr.Button("Search")
 
150
  outputs=[selected_idx, metadata_output]
151
  )
152
 
153
+ # def show_similar(idx, metadata):
154
+ # return find_similar(int(idx), metadata)
155
  def show_similar(idx, metadata):
156
+ similar_images, similar_metadata = find_similar(int(idx), metadata)
157
+ return similar_images, similar_metadata
158
 
159
+ similar_metadata_state = gr.State()
160
+ similar_metadata_output = gr.Markdown()
161
  show_similar_button = gr.Button("Show Similar Images")
162
  show_similar_button.click(
163
  show_similar,
164
  inputs=[selected_idx, metadata_state],
165
+ outputs=[similar_gallery, similar_metadata_state]
166
+ )
167
+
168
+ def handle_similar_click(evt: gr.SelectData, metadata):
169
+ idx = evt.index
170
+ md = show_metadata(idx, metadata)
171
+ return idx, md
172
+
173
+ similar_gallery.select(
174
+ handle_similar_click,
175
+ inputs=[similar_metadata_state],
176
+ outputs=[selected_idx, similar_metadata_output]
177
  )
178
 
179
  demo.launch()