Spaces:
Sleeping
Sleeping
| import vgg16 | |
| import numpy as np | |
| def cosine_similarity(vector1, vector2): | |
| # # 计算向量的点积 | |
| # dot_product = np.dot(vector1, vector2) | |
| # # 计算向量的模长 | |
| # magnitude_vector1 = np.linalg.norm(vector1) | |
| # magnitude_vector2 = np.linalg.norm(vector2) | |
| # # 计算余弦相似度 | |
| # return dot_product / (magnitude_vector1 * magnitude_vector2) | |
| flat_vector1 = vector1.reshape(-1) | |
| flat_vector2 = vector2.reshape(-1) | |
| dot_product = np.dot(flat_vector1, flat_vector2) | |
| norm_vector1 = np.linalg.norm(flat_vector1) | |
| norm_vector2 = np.linalg.norm(flat_vector2) | |
| return dot_product / (norm_vector1 * norm_vector2) | |
| def cal_compatibility(): | |
| n = 4096 | |
| access_feature = [] | |
| cloth_feature = [] | |
| for item_id in range(1, 9): | |
| access_feature.append(vgg16.extract_features('downloads/access_' + '%s.jpg' % item_id)[0]) | |
| for item_id in range(1, 7): | |
| cloth_feature.append(vgg16.extract_features('downloads/cloth_' + '%s.jpeg' % item_id)[0]) | |
| best_score = float('-inf') | |
| best_cloth = 0 | |
| best_access = 0 | |
| for i in range(1, 9): | |
| for j in range(1, 7): | |
| score = cosine_similarity(access_feature[i - 1], cloth_feature[j - 1]) | |
| if score > best_score: | |
| best_score = score | |
| best_cloth = j | |
| best_access = i | |
| print(best_cloth, best_access) | |
| picture = [f"downloads/cloth_{best_cloth}.jpeg", f"downloads/access_{best_access}.jpg"] | |
| return picture |