atticus commited on
Commit
dfbeba0
1 Parent(s): 32a8018

modify to cpu

Browse files
Files changed (3) hide show
  1. app.py +6 -12
  2. misc/evaluation.py +6 -7
  3. 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("cuda")
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 _, (caps, length) in enumerate(dataset_loader, 0):
78
  input_caps = caps.to(device)
79
  with torch.no_grad():
80
- _, caps_emb = join_emb(None, input_caps, length)
81
- caps_enc.append(caps_emb)
82
- caps_stack = cp.vstack(caps_enc)
 
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 = cp.linalg.norm(A, axis=1)
30
- caps_norm = cp.linalg.norm(B, axis=1)
31
 
32
- scores = cp.dot(A, B.T)
33
 
34
- norms = cp.dot(cp.expand_dims(img_norm, 1),
35
- cp.expand_dims(caps_norm.T, 1).T)
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[cp.asnumpy(i)] for i in cp.argsort(scores, axis=1)[0][::-1][:ks]]
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