CHSTR commited on
Commit
8d750fc
·
1 Parent(s): 3e0e9f4

Se actualiza el dataset

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. app.py +35 -38
  2. data/valid/Almohadas_y_cojines/6474eb7beca04255e216354707604caa.jpg +0 -0
  3. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d.jpg +0 -0
  4. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_1.jpg +0 -0
  5. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_2.jpg +0 -0
  6. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_3.jpg +0 -0
  7. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_4.jpg +0 -0
  8. data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_5.jpg +0 -0
  9. data/valid/Almohadas_y_cojines/d319582ad5976fa0526871af907d75e5.jpg +0 -0
  10. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb.jpg +0 -0
  11. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_1.jpg +0 -0
  12. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_2.jpg +0 -0
  13. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_3.jpg +0 -0
  14. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_4.jpg +0 -0
  15. data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_5.jpg +0 -0
  16. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4.jpg +0 -0
  17. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_1.jpg +0 -0
  18. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_2.jpg +0 -0
  19. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_3.jpg +0 -0
  20. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_4.jpg +0 -0
  21. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_5.jpg +0 -0
  22. data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_6.jpg +0 -0
  23. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea.jpg +0 -0
  24. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_1.jpg +0 -0
  25. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_2.jpg +0 -0
  26. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_3.jpg +0 -0
  27. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_4.jpg +0 -0
  28. data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_5.jpg +0 -0
  29. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c.jpg +0 -0
  30. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_1.jpg +0 -0
  31. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_2.jpg +0 -0
  32. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_3.jpg +0 -0
  33. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_4.jpg +0 -0
  34. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_5.jpg +0 -0
  35. data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_6.jpg +0 -0
  36. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59.jpg +0 -0
  37. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_1.jpg +0 -0
  38. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_2.jpg +0 -0
  39. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_3.jpg +0 -0
  40. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_4.jpg +0 -0
  41. data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_5.jpg +0 -0
  42. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2.jpg +0 -0
  43. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_1.jpg +0 -0
  44. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_2.jpg +0 -0
  45. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_3.jpg +0 -0
  46. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_4.jpg +0 -0
  47. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_5.jpg +0 -0
  48. data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_6.jpg +0 -0
  49. data/valid/Baberos/e3188f410d687d5e9c939cf9dcc85bc8.jpg +0 -0
  50. data/valid/Baberos/e3188f410d687d5e9c939cf9dcc85bc8_1.jpg +0 -0
app.py CHANGED
@@ -4,29 +4,29 @@ import streamlit as st
4
  from io import BytesIO
5
  import base64
6
  from multiprocessing.dummy import Pool
7
- from PIL import Image, ImageDraw
8
 
9
  import torch
10
  from torchvision import transforms
11
 
12
  # sketches
13
  from streamlit_drawable_canvas import st_canvas
14
- from PIL import Image, ImageOps
15
- from torchvision import transforms
16
  from src.model_LN_prompt import Model
17
 
18
 
19
  import pickle as pkl
20
  from html import escape
21
- from huggingface_hub import hf_hub_download,login
 
22
 
23
  token = os.getenv("HUGGINGFACE_TOKEN")
24
 
25
  # Autentica usando el token
26
- login(token=token)
27
 
28
  # Variables
29
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
30
  HEIGHT = 200
31
  N_RESULTS = 15
32
  color = st.get_option("theme.primaryColor")
@@ -35,25 +35,30 @@ if color is None:
35
  else:
36
  color = tuple(int(color.lstrip("#")[i: i + 2], 16) for i in (0, 2, 4))
37
 
38
-
39
  @st.cache_resource
40
  def load():
41
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
42
- path_images = 'data'
 
 
 
43
 
44
  # Descargar el modelo desde Hugging Face
45
- path_model = hf_hub_download(repo_id="CHSTR/Ecommerce", filename="dinov2_ecommerce.ckpt")
 
46
  print(f"Archivo del modelo descargado en: {path_model}")
47
 
48
  # Cargar el modelo
49
- model = Model().to(device)
50
  model_checkpoint = torch.load(path_model, map_location=device)
51
  model.load_state_dict(model_checkpoint['state_dict'])
52
  model.eval()
 
53
  print("Modelo cargado exitosamente")
54
 
55
  # Descargar y cargar los embeddings desde Hugging Face
56
- embeddings_file = hf_hub_download(repo_id="CHSTR/Ecommerce", filename="ecommerce_demo.pkl")
 
57
  print(f"Archivo de embeddings descargado en: {embeddings_file}")
58
 
59
  embeddings = {
@@ -63,26 +68,27 @@ def load():
63
 
64
  # Actualizar los paths de las imágenes en los embeddings
65
  for i in range(len(embeddings[0])):
66
- embeddings[0][i] = (embeddings[0][i][0], path_images + embeddings[0][i][1].split("/images")[-1])
 
 
67
 
68
  for i in range(len(embeddings[1])):
69
- embeddings[1][i] = (embeddings[1][i][0], path_images + embeddings[1][i][1].split("/images")[-1])
 
70
 
71
  return model, path_images, embeddings
72
 
73
-
74
- def compute_text_embeddings(sketch):
75
  with torch.no_grad():
76
  sketch_feat = model(sketch.to(device), dtype='sketch')
77
  return sketch_feat
78
 
79
-
80
  def image_search(query, corpus, n_results=N_RESULTS):
81
- query_embedding = compute_text_embeddings(query)
82
  corpus_id = 0 if corpus == "Unsplash" else 1
83
  image_features = torch.tensor(
84
  [item[0] for item in embeddings[corpus_id]]).to(device)
85
-
86
  dot_product = (image_features @ query_embedding.T)[:, 0]
87
  _, max_indices = torch.topk(
88
  dot_product, n_results, dim=0, largest=True, sorted=True)
@@ -96,11 +102,10 @@ def image_search(query, corpus, n_results=N_RESULTS):
96
 
97
  return [
98
  (
99
- # path_images + "page" + str(i) + ".jpg", # DocExplore
100
- label_to_path[i], # DocExplore
101
  )
102
  for i in label_of_images[max_indices].cpu().numpy().tolist()
103
- ], dot_product[max_indices] # bbox_of_images[max_indices], dot_product[max_indices]
104
 
105
 
106
  def make_square(img, fill_color=(255, 255, 255)):
@@ -171,20 +176,14 @@ div_style = {
171
  }
172
 
173
 
174
- print("Cargando modelos...")
175
  model, path_images, embeddings = load()
176
- source = {0: "\Ecommerce", 1: "\nNone"}
177
 
178
- stroke_width = st.sidebar.slider("Stroke width: ", 1, 25, 5)
179
 
180
- dataset_transforms = transforms.Compose([
181
- transforms.Resize((224, 224)),
182
- transforms.ToTensor(),
183
- transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
184
- ])
185
 
 
 
186
 
187
- def main():
188
  st.markdown(
189
  """
190
  <style>
@@ -234,9 +233,8 @@ def main():
234
  key="color_annotation_app",
235
  )
236
 
237
- _, c, _ = st.columns((1, 3, 1))
238
- query = ["koala"] # c.text_input("", value="koala")
239
- corpus = c.radio("", ["Ecommerce"])
240
 
241
  if canvas_result.image_data is not None:
242
  draw = Image.fromarray(canvas_result.image_data.astype("uint8"))
@@ -249,11 +247,8 @@ def main():
249
  mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]
250
  )(draw_tensor)
251
  draw_tensor = draw_tensor.unsqueeze(0)
252
- else:
253
- return
254
 
255
- if len(query) > 0:
256
- retrieved, dot_product = image_search(draw_tensor, corpus)
257
  imgs, xs, ys = get_images([x[0] for x in retrieved])
258
  encoded_images = []
259
  for image_idx in range(len(imgs)):
@@ -265,6 +260,8 @@ def main():
265
  img0.resize((new_x, new_y))))
266
  st.markdown(get_html(retrieved, encoded_images),
267
  unsafe_allow_html=True)
 
 
268
 
269
 
270
  if __name__ == "__main__":
 
4
  from io import BytesIO
5
  import base64
6
  from multiprocessing.dummy import Pool
7
+ from PIL import Image, ImageDraw, ImageOps
8
 
9
  import torch
10
  from torchvision import transforms
11
 
12
  # sketches
13
  from streamlit_drawable_canvas import st_canvas
 
 
14
  from src.model_LN_prompt import Model
15
 
16
 
17
  import pickle as pkl
18
  from html import escape
19
+ from huggingface_hub import hf_hub_download, login
20
+ from datasets import load_dataset
21
 
22
  token = os.getenv("HUGGINGFACE_TOKEN")
23
 
24
  # Autentica usando el token
25
+ login(token=token, add_to_git_credential=True)
26
 
27
  # Variables
28
+ device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
29
+ print(f"Device: {device}")
30
  HEIGHT = 200
31
  N_RESULTS = 15
32
  color = st.get_option("theme.primaryColor")
 
35
  else:
36
  color = tuple(int(color.lstrip("#")[i: i + 2], 16) for i in (0, 2, 4))
37
 
 
38
  @st.cache_resource
39
  def load():
40
+ print("Cargando todo...")
41
+ dataset = load_dataset("CHSTR/ecommerce")
42
+ path_images = "/".join(dataset['validation']
43
+ ['image'][0].filename.split("/")[:-3]) + "/"
44
+ print(f"Directorio de imágenes: {path_images}")
45
 
46
  # Descargar el modelo desde Hugging Face
47
+ path_model = hf_hub_download(
48
+ repo_id="CHSTR/Ecommerce", filename="dinov2_ecommerce.ckpt")
49
  print(f"Archivo del modelo descargado en: {path_model}")
50
 
51
  # Cargar el modelo
52
+ model = Model()
53
  model_checkpoint = torch.load(path_model, map_location=device)
54
  model.load_state_dict(model_checkpoint['state_dict'])
55
  model.eval()
56
+ # model.to(device)
57
  print("Modelo cargado exitosamente")
58
 
59
  # Descargar y cargar los embeddings desde Hugging Face
60
+ embeddings_file = hf_hub_download(
61
+ repo_id="CHSTR/Ecommerce", filename="ecommerce_demo.pkl")
62
  print(f"Archivo de embeddings descargado en: {embeddings_file}")
63
 
64
  embeddings = {
 
68
 
69
  # Actualizar los paths de las imágenes en los embeddings
70
  for i in range(len(embeddings[0])):
71
+ embeddings[0][i] = (embeddings[0][i][0], path_images +
72
+ "/".join(embeddings[0][i][1].split("/")[-3:]))
73
+ # print(embeddings[0][i])
74
 
75
  for i in range(len(embeddings[1])):
76
+ embeddings[1][i] = (embeddings[1][i][0], path_images +
77
+ "/".join(embeddings[1][i][1].split("/")[-3:]))
78
 
79
  return model, path_images, embeddings
80
 
81
+ def compute_sketch(sketch):
 
82
  with torch.no_grad():
83
  sketch_feat = model(sketch.to(device), dtype='sketch')
84
  return sketch_feat
85
 
 
86
  def image_search(query, corpus, n_results=N_RESULTS):
87
+ query_embedding = compute_sketch(query)
88
  corpus_id = 0 if corpus == "Unsplash" else 1
89
  image_features = torch.tensor(
90
  [item[0] for item in embeddings[corpus_id]]).to(device)
91
+
92
  dot_product = (image_features @ query_embedding.T)[:, 0]
93
  _, max_indices = torch.topk(
94
  dot_product, n_results, dim=0, largest=True, sorted=True)
 
102
 
103
  return [
104
  (
105
+ label_to_path[i],
 
106
  )
107
  for i in label_of_images[max_indices].cpu().numpy().tolist()
108
+ ], dot_product[max_indices]
109
 
110
 
111
  def make_square(img, fill_color=(255, 255, 255)):
 
176
  }
177
 
178
 
 
179
  model, path_images, embeddings = load()
 
180
 
 
181
 
182
+ def main():
 
 
 
 
183
 
184
+ print("Cargando modelos...")
185
+ stroke_width = st.sidebar.slider("Stroke width: ", 1, 25, 5)
186
 
 
187
  st.markdown(
188
  """
189
  <style>
 
233
  key="color_annotation_app",
234
  )
235
 
236
+ st.columns((1, 3, 1))
237
+ corpus = ["Ecommerce"]
 
238
 
239
  if canvas_result.image_data is not None:
240
  draw = Image.fromarray(canvas_result.image_data.astype("uint8"))
 
247
  mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]
248
  )(draw_tensor)
249
  draw_tensor = draw_tensor.unsqueeze(0)
 
 
250
 
251
+ retrieved, _ = image_search(draw_tensor, corpus)
 
252
  imgs, xs, ys = get_images([x[0] for x in retrieved])
253
  encoded_images = []
254
  for image_idx in range(len(imgs)):
 
260
  img0.resize((new_x, new_y))))
261
  st.markdown(get_html(retrieved, encoded_images),
262
  unsafe_allow_html=True)
263
+ else:
264
+ return
265
 
266
 
267
  if __name__ == "__main__":
data/valid/Almohadas_y_cojines/6474eb7beca04255e216354707604caa.jpg DELETED
Binary file (13.5 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d.jpg DELETED
Binary file (29.2 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_1.jpg DELETED
Binary file (30.9 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_2.jpg DELETED
Binary file (30.4 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_3.jpg DELETED
Binary file (29.8 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_4.jpg DELETED
Binary file (30.5 kB)
 
data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_5.jpg DELETED
Binary file (30.4 kB)
 
data/valid/Almohadas_y_cojines/d319582ad5976fa0526871af907d75e5.jpg DELETED
Binary file (32.4 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb.jpg DELETED
Binary file (23.8 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_1.jpg DELETED
Binary file (23.7 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_2.jpg DELETED
Binary file (24 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_3.jpg DELETED
Binary file (24 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_4.jpg DELETED
Binary file (24.7 kB)
 
data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_5.jpg DELETED
Binary file (25 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4.jpg DELETED
Binary file (31.6 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_1.jpg DELETED
Binary file (32.6 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_2.jpg DELETED
Binary file (32.2 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_3.jpg DELETED
Binary file (31.2 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_4.jpg DELETED
Binary file (31.9 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_5.jpg DELETED
Binary file (31.5 kB)
 
data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_6.jpg DELETED
Binary file (25.9 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea.jpg DELETED
Binary file (56.5 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_1.jpg DELETED
Binary file (58.8 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_2.jpg DELETED
Binary file (57.9 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_3.jpg DELETED
Binary file (58.9 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_4.jpg DELETED
Binary file (54.3 kB)
 
data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_5.jpg DELETED
Binary file (58.2 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c.jpg DELETED
Binary file (31.4 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_1.jpg DELETED
Binary file (31.7 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_2.jpg DELETED
Binary file (31.2 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_3.jpg DELETED
Binary file (31.4 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_4.jpg DELETED
Binary file (31.6 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_5.jpg DELETED
Binary file (31.7 kB)
 
data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_6.jpg DELETED
Binary file (27.7 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59.jpg DELETED
Binary file (32.4 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_1.jpg DELETED
Binary file (32.6 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_2.jpg DELETED
Binary file (31.7 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_3.jpg DELETED
Binary file (32.3 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_4.jpg DELETED
Binary file (32.7 kB)
 
data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_5.jpg DELETED
Binary file (33 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2.jpg DELETED
Binary file (28 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_1.jpg DELETED
Binary file (28 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_2.jpg DELETED
Binary file (27.9 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_3.jpg DELETED
Binary file (28.1 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_4.jpg DELETED
Binary file (28.3 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_5.jpg DELETED
Binary file (28.3 kB)
 
data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_6.jpg DELETED
Binary file (25.9 kB)
 
data/valid/Baberos/e3188f410d687d5e9c939cf9dcc85bc8.jpg DELETED
Binary file (44.1 kB)
 
data/valid/Baberos/e3188f410d687d5e9c939cf9dcc85bc8_1.jpg DELETED
Binary file (43.7 kB)