# This is a Gradio app for similarity image search. # The app takes a text input and returns the top_k images based on similarity. import gradio as gr import numpy as np import pandas as pd # Dummy function to simulate image search based on text input def similarity_image_search(text, top_k): # Simulate a database of images with their similarity scores images = [ ("image1.jpg", 0.95), ("image2.jpg", 0.85), ("image3.jpg", 0.75), ("image4.jpg", 0.65), ("image5.jpg", 0.55), ("image6.jpg", 0.45), ("image7.jpg", 0.35), ("image8.jpg", 0.25), ("image9.jpg", 0.15), ("image10.jpg", 0.05), ] # Sort images by similarity score in descending order images.sort(key=lambda x: x[1], reverse=True) # Return the top_k images return [img[0] for img in images[:top_k]] # Create a Gradio interface with gr.Blocks() as demo: # Text input for the search query text_input = gr.Textbox(label="Search Query") # Slider to select the number of top images to display top_k_slider = gr.Slider(1, 10, value=5, label="Number of Top Images") # Gallery to display the top_k images image_gallery = gr.Gallery(label="Top Images", columns=3) # Define the event listener for the text input text_input.submit(similarity_image_search, inputs=[text_input, top_k_slider], outputs=image_gallery) # Launch the Gradio app if __name__ == "__main__": demo.launch(show_error=True)