Abs6187 commited on
Commit
a0e5e74
·
verified ·
1 Parent(s): fa01bd3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -45
app.py CHANGED
@@ -1,50 +1,54 @@
1
  import streamlit as st
 
2
  from ultralytics import YOLO
3
  from PIL import Image
4
  import os
 
5
 
6
- # Load the trained YOLOv8 model for seatbelt detection
7
- model = YOLO("best.pt") # Assumes you have a seatbelt-specific trained model
8
-
9
- # Define the prediction function
10
- def predict(image):
11
- results = model(image) # Run YOLOv8 model on the uploaded image
12
- results_img = results[0].plot() # Get image with bounding boxes
13
- return Image.fromarray(results_img)
14
-
15
- # Get example images from the images folder
16
- def get_example_images():
17
- examples = []
18
- image_folder = "images"
19
- for filename in os.listdir(image_folder):
20
- if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
21
- examples.append(os.path.join(image_folder, filename))
22
- return examples
23
-
24
- # Streamlit UI for Seatbelt Detection with YOLO
25
- st.title("Seatbelt Detection with YOLOv8")
26
- st.markdown("Upload an image to detect seatbelt usage.")
27
-
28
- # Allow the user to upload an image
29
- uploaded_image = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
30
-
31
- if uploaded_image is not None:
32
- # Open the uploaded image using PIL
33
- image = Image.open(uploaded_image)
34
-
35
- # Display the uploaded image
36
- st.image(image, caption="Uploaded Image", use_column_width=True)
37
-
38
- # Run the model prediction
39
- st.subheader("Prediction Results:")
40
- result_image = predict(image)
41
-
42
- # Display the result image with bounding boxes
43
- st.image(result_image, caption="Detected Image", use_column_width=True)
44
-
45
- # Optionally, show example images from the folder
46
- if st.checkbox('Show example images'):
47
- example_images = get_example_images()
48
- for example_image in example_images:
49
- img = Image.open(example_image)
50
- st.image(img, caption=os.path.basename(example_image), use_column_width=True)
 
 
 
1
  import streamlit as st
2
+ import torch
3
  from ultralytics import YOLO
4
  from PIL import Image
5
  import os
6
+ import sys
7
 
8
+ # Print Python and library versions for debugging
9
+ st.write(f"Python version: {sys.version}")
10
+ st.write(f"Torch version: {torch.__version__}")
11
+ st.write(f"Current working directory: {os.getcwd()}")
12
+ st.write(f"Files in current directory: {os.listdir('.')}")
13
+
14
+ # Check if the model file exists
15
+ model_path = "best.pt" # or the path to your actual model file
16
+ if not os.path.exists(model_path):
17
+ st.error(f"Model file {model_path} not found!")
18
+ else:
19
+ st.success(f"Model file {model_path} found!")
20
+
21
+ try:
22
+ # Load the trained YOLOv8 model
23
+ model = YOLO(model_path)
24
+
25
+ # Define the prediction function
26
+ def predict(image):
27
+ results = model(image) # Run YOLOv8 model on the uploaded image
28
+ results_img = results[0].plot() # Get image with bounding boxes
29
+ return Image.fromarray(results_img)
30
+
31
+ # Streamlit UI for Object Detection
32
+ st.title("Object Detection with YOLOv8")
33
+ st.markdown("Upload an image for detection.")
34
+
35
+ # Allow the user to upload an image
36
+ uploaded_image = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
37
+
38
+ if uploaded_image is not None:
39
+ # Open the uploaded image using PIL
40
+ image = Image.open(uploaded_image)
41
+
42
+ # Display the uploaded image
43
+ st.image(image, caption="Uploaded Image", use_column_width=True)
44
+
45
+ # Run the model prediction
46
+ st.subheader("Prediction Results:")
47
+ result_image = predict(image)
48
+
49
+ # Display the result image with bounding boxes
50
+ st.image(result_image, caption="Detected Image", use_column_width=True)
51
+
52
+ except Exception as e:
53
+ st.error(f"An error occurred: {e}")
54
+ st.error(f"Traceback: {sys.exc_info()}")