Update app.py
Browse files
app.py
CHANGED
|
@@ -9,16 +9,15 @@ model = AutoModel.from_pretrained('jinaai/jina-clip-v1', trust_remote_code=True)
|
|
| 9 |
def compute_similarity(input1_type, input1_text, input1_image, input2_type, input2_text, input2_image):
|
| 10 |
"""Computes similarity for Text-Text, Image-Image, or Text-Image comparisons."""
|
| 11 |
|
| 12 |
-
# Ensure images are valid (Gradio
|
| 13 |
input1_image = None if isinstance(input1_image, bool) else input1_image
|
| 14 |
input2_image = None if isinstance(input2_image, bool) else input2_image
|
| 15 |
|
| 16 |
-
#
|
| 17 |
if input1_type == "Text" and not input1_text.strip():
|
| 18 |
return "Error: Input 1 (Text) is empty!"
|
| 19 |
if input1_type == "Image" and input1_image is None:
|
| 20 |
return "Error: Please upload a valid image for Input 1!"
|
| 21 |
-
|
| 22 |
if input2_type == "Text" and not input2_text.strip():
|
| 23 |
return "Error: Input 2 (Text) is empty!"
|
| 24 |
if input2_type == "Image" and input2_image is None:
|
|
@@ -30,18 +29,15 @@ def compute_similarity(input1_type, input1_text, input1_image, input2_type, inpu
|
|
| 30 |
emb1 = model.encode_text([input1_text])
|
| 31 |
emb2 = model.encode_text([input2_text])
|
| 32 |
elif input1_type == "Image" and input2_type == "Image":
|
| 33 |
-
emb1 = model.encode_image([Image.fromarray(input1_image)])
|
| 34 |
-
emb2 = model.encode_image([Image.fromarray(input2_image)])
|
| 35 |
else:
|
| 36 |
if input1_type == "Image":
|
| 37 |
-
emb1 = model.encode_image([Image.fromarray(input1_image)])
|
| 38 |
emb2 = model.encode_text([input2_text])
|
| 39 |
else:
|
| 40 |
emb1 = model.encode_text([input1_text])
|
| 41 |
-
emb2 = model.encode_image([Image.fromarray(input2_image)])
|
| 42 |
-
|
| 43 |
-
if emb1 is None or emb2 is None:
|
| 44 |
-
return "Error: Failed to process one or both inputs."
|
| 45 |
|
| 46 |
similarity_score = (emb1 @ emb2.T).item()
|
| 47 |
return similarity_score
|
|
|
|
| 9 |
def compute_similarity(input1_type, input1_text, input1_image, input2_type, input2_text, input2_image):
|
| 10 |
"""Computes similarity for Text-Text, Image-Image, or Text-Image comparisons."""
|
| 11 |
|
| 12 |
+
# Ensure images are valid (Gradio sometimes sends `False` instead of `None`)
|
| 13 |
input1_image = None if isinstance(input1_image, bool) else input1_image
|
| 14 |
input2_image = None if isinstance(input2_image, bool) else input2_image
|
| 15 |
|
| 16 |
+
# Validate inputs
|
| 17 |
if input1_type == "Text" and not input1_text.strip():
|
| 18 |
return "Error: Input 1 (Text) is empty!"
|
| 19 |
if input1_type == "Image" and input1_image is None:
|
| 20 |
return "Error: Please upload a valid image for Input 1!"
|
|
|
|
| 21 |
if input2_type == "Text" and not input2_text.strip():
|
| 22 |
return "Error: Input 2 (Text) is empty!"
|
| 23 |
if input2_type == "Image" and input2_image is None:
|
|
|
|
| 29 |
emb1 = model.encode_text([input1_text])
|
| 30 |
emb2 = model.encode_text([input2_text])
|
| 31 |
elif input1_type == "Image" and input2_type == "Image":
|
| 32 |
+
emb1 = model.encode_image([Image.fromarray(input1_image.astype("uint8"))])
|
| 33 |
+
emb2 = model.encode_image([Image.fromarray(input2_image.astype("uint8"))])
|
| 34 |
else:
|
| 35 |
if input1_type == "Image":
|
| 36 |
+
emb1 = model.encode_image([Image.fromarray(input1_image.astype("uint8"))])
|
| 37 |
emb2 = model.encode_text([input2_text])
|
| 38 |
else:
|
| 39 |
emb1 = model.encode_text([input1_text])
|
| 40 |
+
emb2 = model.encode_image([Image.fromarray(input2_image.astype("uint8"))])
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
similarity_score = (emb1 @ emb2.T).item()
|
| 43 |
return similarity_score
|