Se actualiza el dataset
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- app.py +35 -38
- data/valid/Almohadas_y_cojines/6474eb7beca04255e216354707604caa.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_1.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_2.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_3.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_4.jpg +0 -0
- data/valid/Almohadas_y_cojines/b6f4b43eb8e47193358b0b3b69b9cd4d_5.jpg +0 -0
- data/valid/Almohadas_y_cojines/d319582ad5976fa0526871af907d75e5.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_1.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_2.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_3.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_4.jpg +0 -0
- data/valid/Baberos/134673c99a13f9f17bb4a3420aa830bb_5.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_1.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_2.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_3.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_4.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_5.jpg +0 -0
- data/valid/Baberos/80ff9b872165c3f13c72859dbbcbd4a4_6.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_1.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_2.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_3.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_4.jpg +0 -0
- data/valid/Baberos/9daca95e1bd0ca6aad1812e44007a2ea_5.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_1.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_2.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_3.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_4.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_5.jpg +0 -0
- data/valid/Baberos/c4bb79af1cdae49467eea9efca2ee32c_6.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_1.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_2.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_3.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_4.jpg +0 -0
- data/valid/Baberos/c939ccd756d45577cb28f93ee5486a59_5.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_1.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_2.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_3.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_4.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_5.jpg +0 -0
- data/valid/Baberos/cce281a309ee213c364cfa0bd62ba1f2_6.jpg +0 -0
- data/valid/Baberos/e3188f410d687d5e9c939cf9dcc85bc8.jpg +0 -0
- 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 |
-
|
42 |
-
|
|
|
|
|
|
|
43 |
|
44 |
# Descargar el modelo desde Hugging Face
|
45 |
-
path_model = hf_hub_download(
|
|
|
46 |
print(f"Archivo del modelo descargado en: {path_model}")
|
47 |
|
48 |
# Cargar el modelo
|
49 |
-
model = Model()
|
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(
|
|
|
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 +
|
|
|
|
|
67 |
|
68 |
for i in range(len(embeddings[1])):
|
69 |
-
embeddings[1][i] = (embeddings[1][i][0], path_images +
|
|
|
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 =
|
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 |
-
|
100 |
-
label_to_path[i], # DocExplore
|
101 |
)
|
102 |
for i in label_of_images[max_indices].cpu().numpy().tolist()
|
103 |
-
], 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 |
-
|
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 |
-
|
238 |
-
|
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 |
-
|
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)
|
|