top_wear / app.py
vishalkatheriya18's picture
Update app.py
c6a1409 verified
raw
history blame
2.1 kB
import streamlit as st
from ultralytics import YOLO
from PIL import Image
import requests
from io import BytesIO
import time
# Load the YOLO model only once using Streamlit session state
if 'models_loaded' not in st.session_state:
st.session_state.yolo_model = YOLO('/kaggle/working/classification_project/yolo_classification/weights/best.pt') # Update with your model path
st.session_state.models_loaded = True
# Define function for inference using YOLO
def predict_with_yolo(image):
# Run inference on the image using the YOLO model
results = st.session_state.yolo_model(image)
# Extract predictions
predictions = []
if results:
for result in results:
for box in result.boxes:
class_name = result.names[box.label]
confidence = box.conf.item() # Convert tensor to a Python float
predictions.append({
"Class": class_name,
"Confidence": confidence
})
return predictions
# Streamlit app UI
st.title("Clothing Detection with YOLO")
url = st.text_input("Paste image URL here...")
if url:
try:
response = requests.get(url)
if response.status_code == 200:
image = Image.open(BytesIO(response.content)).convert('RGB')
st.image(image.resize((200, 200)), caption="Uploaded Image", use_column_width=False)
start_time = time.time()
# Predict using YOLO
predictions = predict_with_yolo(image)
# Display predictions
if predictions:
st.write("Predictions:")
for pred in predictions:
st.write(f"Class: {pred['Class']}, Confidence: {pred['Confidence']:.2f}")
else:
st.write("No objects detected.")
st.write(f"Time taken: {time.time() - start_time:.2f} seconds")
else:
st.error("Failed to load image from URL. Please check the URL.")
except Exception as e:
st.error(f"Error processing the image: {str(e)}")