Upload app.py with huggingface_hub
Browse files
app.py
CHANGED
|
@@ -11,6 +11,7 @@ knnpath = '20241204-ams-no-env-open_clip_ViT-H-14-378-quickgelu.npz'
|
|
| 11 |
clip_model_name = 'ViT-H-14-378-quickgelu'
|
| 12 |
pretrained_name = 'dfn5b'
|
| 13 |
|
|
|
|
| 14 |
|
| 15 |
# Set page config
|
| 16 |
st.set_page_config(
|
|
@@ -47,6 +48,25 @@ def process_image(image, preprocess):
|
|
| 47 |
processed_image = preprocess(image).unsqueeze(0)
|
| 48 |
return processed_image
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
@st.cache_resource
|
| 51 |
def load_knn():
|
| 52 |
return np.load(knnpath)
|
|
@@ -73,7 +93,7 @@ def main():
|
|
| 73 |
try:
|
| 74 |
image = Image.open(file)
|
| 75 |
|
| 76 |
-
st.image(image, caption="Uploaded Image",
|
| 77 |
|
| 78 |
# Process image
|
| 79 |
with st.spinner('Processing image...'):
|
|
@@ -87,6 +107,10 @@ def main():
|
|
| 87 |
# Normalize vector
|
| 88 |
vec /= vec.norm(dim=-1, keepdim=True)
|
| 89 |
st.write(vec.shape)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
except Exception as e:
|
| 91 |
st.error(f"Error processing image: {str(e)}")
|
| 92 |
|
|
|
|
| 11 |
clip_model_name = 'ViT-H-14-378-quickgelu'
|
| 12 |
pretrained_name = 'dfn5b'
|
| 13 |
|
| 14 |
+
categories = ['walkability', 'bikeability', 'pleasantness', 'greenness', 'safety']
|
| 15 |
|
| 16 |
# Set page config
|
| 17 |
st.set_page_config(
|
|
|
|
| 48 |
processed_image = preprocess(image).unsqueeze(0)
|
| 49 |
return processed_image
|
| 50 |
|
| 51 |
+
def knn_get_score(knn, k, cat, vec):
|
| 52 |
+
allvecs = knn[f'{cat}_vecs']
|
| 53 |
+
scores = knn[f'{cat}_scores']
|
| 54 |
+
# Compute cosine similiarity of vec against allvecs
|
| 55 |
+
# (both are already normalized)
|
| 56 |
+
cos_sim_table = vec @ allvecs.T
|
| 57 |
+
# Get sorted array indices by similiarity in descending order
|
| 58 |
+
sortinds = np.flip(np.argsort(cos_sim_table))
|
| 59 |
+
# Get corresponding scores for the sorted vectors
|
| 60 |
+
kscores = scores[sortinds][:k]
|
| 61 |
+
# Get actual sorted similiarity scores
|
| 62 |
+
ksims = np.expand_dims(cos_sim_table[sortinds][:k], axis=0)
|
| 63 |
+
# Apply normalization after exponential formula
|
| 64 |
+
ksims = softmax(10**ksims)
|
| 65 |
+
# Weighted sum
|
| 66 |
+
kweightedscore = np.sum(kscores * ksims)
|
| 67 |
+
return kweightedscore
|
| 68 |
+
|
| 69 |
+
|
| 70 |
@st.cache_resource
|
| 71 |
def load_knn():
|
| 72 |
return np.load(knnpath)
|
|
|
|
| 93 |
try:
|
| 94 |
image = Image.open(file)
|
| 95 |
|
| 96 |
+
st.image(image, caption="Uploaded Image", width=640)
|
| 97 |
|
| 98 |
# Process image
|
| 99 |
with st.spinner('Processing image...'):
|
|
|
|
| 107 |
# Normalize vector
|
| 108 |
vec /= vec.norm(dim=-1, keepdim=True)
|
| 109 |
st.write(vec.shape)
|
| 110 |
+
k = 40
|
| 111 |
+
for cat in categories:
|
| 112 |
+
st.write(cat, 'rating =', knn_get_score(knn, k, cat, vec))
|
| 113 |
+
|
| 114 |
except Exception as e:
|
| 115 |
st.error(f"Error processing image: {str(e)}")
|
| 116 |
|