Spaces:
Sleeping
Sleeping
import os | |
from ast import literal_eval | |
from segment_key import * | |
from matplotlib import pyplot as plt | |
import gradio as gr | |
def show_kps(contour): | |
list1 = range(0, 310) | |
list2 = list(zip(get_features_right(contour), list1)) | |
x_coords = [point[0] for point in list2] | |
y_coords = [point[1] for point in list2] | |
plt.scatter(x_coords, y_coords, c='red', marker='o', label='Keypoints') | |
list2 = list(zip(get_features_left(contour), list1)) | |
x_coords = [point[0] for point in list2] | |
y_coords = [point[1] for point in list2] | |
plt.scatter(x_coords, y_coords, c='red', marker='o', label='Keypoints') | |
list2 = list(zip(list1, get_features_up(contour))) | |
x_coords = [point[0] for point in list2] | |
y_coords = [point[1] for point in list2] | |
plt.scatter(x_coords, y_coords, c='red', marker='o', label='Keypoints') | |
list2 = list(zip(list1, get_features_down(contour))) | |
x_coords = [point[0] for point in list2] | |
y_coords = [point[1] for point in list2] | |
plt.scatter(x_coords, y_coords, c='red', marker='o', label='Keypoints') | |
plt.show() | |
def get_all_features(): | |
contours = [] | |
with open('prediction/database.txt', 'r') as file: | |
lines = file.readlines() | |
for line in lines: | |
results = (line.split(';')[1]) | |
results = results.replace(",,", ",'',") | |
results = literal_eval(results) | |
results = np.array(results) | |
contours.append((line.split(';')[0], results)) | |
return contours | |
def cos_similarity(feature1, feature2): | |
return np.dot(feature1, feature2) / (np.linalg.norm(feature1) * np.linalg.norm(feature2)) | |
def predict_match(image): | |
kp_image, main_feature = final_features(image) | |
contours = get_all_features() | |
l = [] | |
for image in contours: | |
feature = image[1] | |
feature_similarity = 1 - cos_similarity(feature, main_feature) | |
l.append([image[0], feature_similarity]) | |
l.sort(key=lambda x: x[1]) | |
return kp_image, l[0][0] | |
# Create the Gradio interface | |
iface = gr.Interface( | |
fn=predict_match, | |
inputs=gr.Image(type='pil'), | |
outputs=["image", "text"], | |
title="YOLOv8 Object Detection", | |
description="Upload an image to detect objects using the YOLOv8 model.", | |
) | |
# Launch the interface | |
iface.launch() |