Spaces:
Sleeping
Sleeping
from fashion_clip.fashion_clip import FashionCLIP | |
import pickle | |
import subprocess | |
import streamlit as st | |
import numpy as np | |
from PIL import Image | |
import os | |
from streamlit_image_select import image_select | |
os.environ["CUDA_VISIBLE_DEVICES"] ="" | |
import torch | |
torch.cuda.is_available = lambda : False | |
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') | |
st.sidebar.write("# Shoping muse") | |
#query = st.sidebar.text_input("Enter some text", "A red dress") | |
#prompt = st.chat_input("Say something") | |
st.write("Shoping MUSE") | |
def horizontal_scroll_images(images): | |
with st.beta_container(): | |
for img_path in images: | |
st.image(img_path, use_column_width=True) | |
def horizontal_scroll_images(images,image_width=300): | |
cols = st.columns(len(images)) | |
for col, img_path in zip(cols, images): | |
col.image(img_path, use_column_width=True) | |
#def horizontal_scroll_images(images, image_width=300): | |
# cols = st.columns(len(images)) | |
# for col, img_path in zip(cols, images): | |
# col.image(img_path, width=image_width) | |
new_size = (800, 600) # Set your desired width and height | |
def load_embedding_file(): | |
with open("embeddings_and_paths.pkl", "rb") as filino: | |
data = pickle.load(filino) | |
images = data["images_path"] | |
embeddings = data["embeddings"] | |
return images, embeddings | |
fclip = FashionCLIP('fashion-clip') | |
if not os.path.exists("clothing-dataset"): | |
subprocess.run("git clone https://github.com/alexeygrigorev/clothing-dataset", shell=True) | |
#st.write("## Simple FashionCLIP search engine") | |
#query = st.text_input("Enter a description of the clothing item you want to find", "a red dress") | |
#query = prompt | |
images, image_embeddings = load_embedding_file() | |
image_cnt=8 | |
def append_message(sender, message): | |
chat_history.append((sender, message)) | |
def chatbot_interface(): | |
st.sidebar.title("Chatbot Interface") | |
user_input = st.sidebar.text_input("You:", key="user_input") | |
if st.sidebar.button("Send"): | |
append_message("You", user_input) | |
# Replace the following line with your chatbot logic to generate a response | |
append_message("Chatbot", f"Bot response to: {user_input}") | |
query=user_input | |
text_embedding = fclip.encode_text([query], 32)[0] | |
arr=text_embedding.dot(image_embeddings.T) | |
id_of_matched_object1=(-arr).argsort()[:image_cnt] | |
id_of_matched_object = np.argmax(arr) | |
image = Image.open(images[id_of_matched_object]) | |
#st.image(image) | |
image=[] | |
for k in id_of_matched_object1: | |
image.append(Image.open(images[k]).resize(new_size)) | |
img = image_select( | |
label="Results", | |
images=image, | |
captions=[str(query) + "result "] * (image_cnt), | |
) | |
st.sidebar.markdown("---") | |
# Display the chat history | |
st.sidebar.title("Chat History") | |
for sender, message in chat_history: | |
st.sidebar.text(f"{sender}: {message}") | |
# Initialize the chat history | |
chat_history = [] | |
# Main content area | |
st.title("Muse Chatbot") | |
# Display the chatbot interface inside a box in the sidebar | |
st.sidebar.markdown("## Chatbot Box") | |
#text_embedding = fclip.encode_text([query], 32)[0] | |
#arr=text_embedding.dot(image_embeddings.T) | |
#id_of_matched_object1=(-arr).argsort()[:image_cnt] | |
#id_of_matched_object = np.argmax(arr) | |
#image = Image.open(images[id_of_matched_object]) | |
#st.image(image) | |
#image=[] | |
#for k in id_of_matched_object1: | |
# image.append(Image.open(images[k]).resize(new_size)) | |
#img = image_select( | |
# label="Results", | |
# images=image, | |
# captions=[str(query) + "result "] * (image_cnt), | |
#) | |
#st.title("Horizontal Scroll of Images") | |
# Specify the width of the images | |
#image_width = 300 | |
#horizontal_scroll_images(image) | |
#print(image) | |
#st.image(image , use_column_width=True, caption=["some generic text"] * (image_cnt)) | |
chatbot_interface() | |