Spaces:
Runtime error
Runtime error
modify to cpu
Browse files- app.py +6 -12
- misc/evaluation.py +6 -7
- requirements.txt +0 -2
app.py
CHANGED
@@ -34,10 +34,9 @@ import requests
|
|
34 |
import cv2
|
35 |
from io import BytesIO
|
36 |
from translate import Translator
|
37 |
-
import cupy as cp
|
38 |
|
39 |
|
40 |
-
device = torch.device("
|
41 |
batch_size = 1
|
42 |
topK = 5
|
43 |
|
@@ -46,10 +45,6 @@ I2I = "Image 2 Image"
|
|
46 |
model_path = "data/best_model.pth.tar"
|
47 |
# model = SentenceTransformer("clip-ViT-B-32")
|
48 |
|
49 |
-
img_folder = Path("./photos/")
|
50 |
-
|
51 |
-
# start
|
52 |
-
|
53 |
def download_url_img(url):
|
54 |
|
55 |
try:
|
@@ -74,17 +69,17 @@ def search(mode, text):
|
|
74 |
dataset_loader = DataLoader(dataset, batch_size=batch_size, num_workers=1, pin_memory=True, collate_fn=collate_fn_cap_padded)
|
75 |
caps_enc = list()
|
76 |
|
77 |
-
for
|
78 |
input_caps = caps.to(device)
|
79 |
with torch.no_grad():
|
80 |
-
_,
|
81 |
-
caps_enc.append(
|
82 |
-
|
|
|
83 |
|
84 |
imgs_url = [os.path.join("http://images.cocodataset.org/train2017", img_path.strip().split('_')[-1]) for img_path in imgs_path]
|
85 |
|
86 |
recall_imgs = recallTopK(caps_stack, imgs_emb, imgs_url, ks=100)
|
87 |
-
|
88 |
# Cat image downloaded from https://www.flickr.com/photos/blacktigersdream/23119711630
|
89 |
# cat_image = "./cat_example.jpg"
|
90 |
# Dog example downloaded from https://upload.wikimedia.org/wikipedia/commons/1/18/Dog_Breeds.jpg
|
@@ -115,7 +110,6 @@ if __name__ == "__main__":
|
|
115 |
encoder = TextEncoder()
|
116 |
imgs_emb_file_path = "./coco_img_emb"
|
117 |
imgs_emb, imgs_path = load_obj(imgs_emb_file_path)
|
118 |
-
imgs_emb = cp.asarray(imgs_emb)
|
119 |
print("prepare done!")
|
120 |
iface = gr.Interface(
|
121 |
fn=search,
|
|
|
34 |
import cv2
|
35 |
from io import BytesIO
|
36 |
from translate import Translator
|
|
|
37 |
|
38 |
|
39 |
+
device = torch.device("cpu")
|
40 |
batch_size = 1
|
41 |
topK = 5
|
42 |
|
|
|
45 |
model_path = "data/best_model.pth.tar"
|
46 |
# model = SentenceTransformer("clip-ViT-B-32")
|
47 |
|
|
|
|
|
|
|
|
|
48 |
def download_url_img(url):
|
49 |
|
50 |
try:
|
|
|
69 |
dataset_loader = DataLoader(dataset, batch_size=batch_size, num_workers=1, pin_memory=True, collate_fn=collate_fn_cap_padded)
|
70 |
caps_enc = list()
|
71 |
|
72 |
+
for i, (caps, length) in enumerate(dataset_loader, 0):
|
73 |
input_caps = caps.to(device)
|
74 |
with torch.no_grad():
|
75 |
+
_, output_emb = join_emb(None, input_caps, length)
|
76 |
+
caps_enc.append(output_emb.cpu().data.numpy())
|
77 |
+
|
78 |
+
caps_stack = np.vstack(caps_enc)
|
79 |
|
80 |
imgs_url = [os.path.join("http://images.cocodataset.org/train2017", img_path.strip().split('_')[-1]) for img_path in imgs_path]
|
81 |
|
82 |
recall_imgs = recallTopK(caps_stack, imgs_emb, imgs_url, ks=100)
|
|
|
83 |
# Cat image downloaded from https://www.flickr.com/photos/blacktigersdream/23119711630
|
84 |
# cat_image = "./cat_example.jpg"
|
85 |
# Dog example downloaded from https://upload.wikimedia.org/wikipedia/commons/1/18/Dog_Breeds.jpg
|
|
|
110 |
encoder = TextEncoder()
|
111 |
imgs_emb_file_path = "./coco_img_emb"
|
112 |
imgs_emb, imgs_path = load_obj(imgs_emb_file_path)
|
|
|
113 |
print("prepare done!")
|
114 |
iface = gr.Interface(
|
115 |
fn=search,
|
misc/evaluation.py
CHANGED
@@ -23,16 +23,15 @@ Author: Martin Engilberge
|
|
23 |
import numpy as np
|
24 |
|
25 |
from misc.utils import flatten
|
26 |
-
import cupy as cp
|
27 |
|
28 |
def cosine_sim(A, B):
|
29 |
-
img_norm =
|
30 |
-
caps_norm =
|
31 |
|
32 |
-
scores =
|
33 |
|
34 |
-
norms =
|
35 |
-
|
36 |
|
37 |
scores = (scores / norms)
|
38 |
|
@@ -43,7 +42,7 @@ def recallTopK(cap_enc, imgs_enc, imgs_path, ks=10, scores=None):
|
|
43 |
if scores is None:
|
44 |
scores = cosine_sim(cap_enc, imgs_enc)
|
45 |
|
46 |
-
recall_imgs = [imgs_path[
|
47 |
|
48 |
return recall_imgs
|
49 |
|
|
|
23 |
import numpy as np
|
24 |
|
25 |
from misc.utils import flatten
|
|
|
26 |
|
27 |
def cosine_sim(A, B):
|
28 |
+
img_norm = np.linalg.norm(A, axis=1)
|
29 |
+
caps_norm = np.linalg.norm(B, axis=1)
|
30 |
|
31 |
+
scores = np.dot(A, B.T)
|
32 |
|
33 |
+
norms = np.dot(np.expand_dims(img_norm, 1),
|
34 |
+
np.expand_dims(caps_norm.T, 1).T)
|
35 |
|
36 |
scores = (scores / norms)
|
37 |
|
|
|
42 |
if scores is None:
|
43 |
scores = cosine_sim(cap_enc, imgs_enc)
|
44 |
|
45 |
+
recall_imgs = [imgs_path[i] for i in np.argsort(scores, axis=1)[0][::-1][:ks]]
|
46 |
|
47 |
return recall_imgs
|
48 |
|
requirements.txt
CHANGED
@@ -1,5 +1,3 @@
|
|
1 |
-
cupy==10.2.0
|
2 |
-
cupy_cuda101==9.6.0
|
3 |
gradio==2.8.9
|
4 |
matplotlib==2.2.2
|
5 |
nltk==3.3
|
|
|
|
|
|
|
1 |
gradio==2.8.9
|
2 |
matplotlib==2.2.2
|
3 |
nltk==3.3
|