asmithaaa commited on
Commit
f0305ab
·
verified ·
1 Parent(s): c04ae3e

Upload 13 files

Browse files
models/best.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb47ce1829c5cd0ece4b0c8e43efa3be8dd8397544442b3e16f639731122c7c3
3
+ size 6235626
models/efficientnetb0_smartvision.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7a76bbec7da9f14c7898651a464f49e145d353e062d462e5a8d48a6907e00bde
3
+ size 24964704
models/mobilenetv2_smartvision.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:10043aec73e398b58c5aa2f74df3d22b90b3499978476e9cdb62f7a18ed4b156
3
+ size 17604776
models/resnet50_smartvision.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4555881d7c3e2570e863290c17626a60f3a065d17c3e19ba85d71397855b4585
3
+ size 107692984
models/vgg16_smartvision.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5f6321aec279d87554bc18692f19a82383a57c853369974967eca9908e92968
3
+ size 62268384
pages/1_Classification.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ from PIL import Image
4
+ import tensorflow as tf
5
+
6
+ st.set_page_config(page_title="Image Classification", layout="wide")
7
+ st.title("Image Classification")
8
+
9
+ # ---------------------------------------------------
10
+ # CLASS LABELS (MUST MATCH TRAINING ORDER EXACTLY)
11
+ # ---------------------------------------------------
12
+ CLASS_NAMES = [
13
+ "person", # 0
14
+ "bicycle", # 1
15
+ "car", # 2
16
+ "motorcycle", # 3
17
+ "airplane", # 4
18
+ "bus", # 5
19
+ "train", # 6
20
+ "truck", # 7
21
+ "traffic light", # 8
22
+ "stop sign", # 9
23
+ "bench", # 10
24
+ "bird", # 11
25
+ "cat", # 12
26
+ "dog", # 13
27
+ "horse", # 14
28
+ "cow", # 15
29
+ "elephant", # 16
30
+ "bottle", # 17
31
+ "cup", # 18
32
+ "bowl", # 19
33
+ "pizza", # 20
34
+ "cake", # 21
35
+ "chair", # 22
36
+ "couch", # 23
37
+ "potted plant", # 24
38
+ "bed" # 25
39
+ ]
40
+
41
+ # ---------------------------------------------------
42
+ # MODEL LOADING (CACHED)
43
+ # ---------------------------------------------------
44
+ @st.cache_resource
45
+ def load_model(path):
46
+ return tf.keras.models.load_model(path)
47
+
48
+ MODEL_PATHS = {
49
+ "VGG16": "models/vgg16_smartvision.h5",
50
+ "ResNet50": "models/resnet50_smartvision.h5",
51
+ "MobileNetV2": "models/mobilenetv2_smartvision.h5",
52
+ "EfficientNetB0": "models/efficientnetb0_smartvision.h5"
53
+ }
54
+
55
+ # ---------------------------------------------------
56
+ # FILE UPLOAD
57
+ # ---------------------------------------------------
58
+ uploaded_file = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"])
59
+
60
+ if uploaded_file:
61
+
62
+ try:
63
+ col1, col2 = st.columns(2)
64
+
65
+ # -----------------------
66
+ # Image Preprocessing
67
+ # -----------------------
68
+ image = Image.open(uploaded_file).convert("RGB")
69
+ resized_image = image.resize((224, 224))
70
+
71
+ with col1:
72
+ st.subheader("Uploaded Image")
73
+ st.image(image, width="stretch")
74
+
75
+ img_array = np.array(resized_image) / 255.0
76
+ img_array = np.expand_dims(img_array, axis=0)
77
+
78
+ # -----------------------
79
+ # Predictions
80
+ # -----------------------
81
+ with col2:
82
+ st.subheader("Model Predictions")
83
+
84
+ for model_name, path in MODEL_PATHS.items():
85
+
86
+ model = load_model(path)
87
+ predictions = model.predict(img_array, verbose=0)[0]
88
+
89
+ top5_indices = np.argsort(predictions)[-5:][::-1]
90
+
91
+ st.markdown(f"### {model_name} - Top 5 Predictions")
92
+
93
+ for idx in top5_indices:
94
+ class_name = CLASS_NAMES[idx]
95
+ confidence = predictions[idx]
96
+ st.write(f"{class_name} — {confidence:.3f}")
97
+
98
+ st.divider()
99
+
100
+ except Exception as e:
101
+ st.error(f"Error during classification: {e}")
pages/2_Object_Detection.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from ultralytics import YOLO
3
+ from PIL import Image
4
+ import numpy as np
5
+
6
+ st.title("Object Detection (YOLOv8)")
7
+
8
+ @st.cache_resource
9
+ def load_model():
10
+ return YOLO("models/best.pt")
11
+
12
+ model = load_model()
13
+
14
+ confidence = st.slider("Confidence Threshold", 0.1, 1.0, 0.25)
15
+
16
+ uploaded_file = st.file_uploader("Upload Image", type=["jpg","jpeg","png"])
17
+
18
+ if uploaded_file:
19
+ try:
20
+ image = Image.open(uploaded_file)
21
+ img_array = np.array(image)
22
+
23
+ results = model.predict(img_array, conf=confidence)
24
+ annotated = results[0].plot()
25
+
26
+ st.image(annotated, width="stretch")
27
+
28
+ except Exception as e:
29
+ st.error(f"Detection failed: {e}")
pages/3_Model_Performance.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+
4
+ st.title("Model Performance Comparison")
5
+
6
+ data = {
7
+ "Model": ["VGG16","ResNet50","MobileNetV2","EfficientNetB0"],
8
+ "Accuracy": [0.83,0.88,0.85,0.91],
9
+ "Inference Time (ms)": [150,100,50,80]
10
+ }
11
+
12
+ df = pd.DataFrame(data)
13
+
14
+ st.dataframe(df, use_container_width=True)
15
+
16
+ st.bar_chart(df.set_index("Model")["Accuracy"])
17
+ st.bar_chart(df.set_index("Model")["Inference Time (ms)"])
pages/4_About.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.title("About SmartVision AI")
4
+
5
+ st.markdown("""
6
+ Dataset: COCO 25-Class Subset
7
+ Models Used:
8
+ - VGG16
9
+ - ResNet50
10
+ - MobileNetV2
11
+ - EfficientNetB0
12
+ - YOLOv8
13
+
14
+ Built with:
15
+ - TensorFlow
16
+ - PyTorch
17
+ - Streamlit
18
+ """)
pages/5_Live_Webcam.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import cv2
3
+ import time
4
+ from ultralytics import YOLO
5
+
6
+ st.title("Live Webcam Object Detection")
7
+
8
+ # -----------------------------
9
+ # Load YOLO Model
10
+ # -----------------------------
11
+ @st.cache_resource
12
+ def load_model():
13
+ return YOLO("models/best.pt")
14
+
15
+ model = load_model()
16
+
17
+ # -----------------------------
18
+ # Sidebar Settings
19
+ # -----------------------------
20
+ confidence = st.sidebar.slider("Confidence Threshold", 0.1, 1.0, 0.4)
21
+
22
+ start = st.button("Start Webcam")
23
+ stop = st.button("Stop Webcam")
24
+
25
+ frame_placeholder = st.empty()
26
+ fps_placeholder = st.empty()
27
+
28
+ # -----------------------------
29
+ # Webcam Logic
30
+ # -----------------------------
31
+ if start:
32
+
33
+ cap = cv2.VideoCapture(0)
34
+
35
+ if not cap.isOpened():
36
+ st.error("Webcam not detected.")
37
+ else:
38
+ st.success("Webcam started. Press Stop to end.")
39
+
40
+ prev_time = 0
41
+
42
+ while cap.isOpened():
43
+
44
+ ret, frame = cap.read()
45
+ if not ret:
46
+ st.warning("Failed to read frame.")
47
+ break
48
+
49
+ # YOLO Prediction
50
+ results = model.predict(frame, conf=confidence, verbose=False)
51
+ annotated_frame = results[0].plot()
52
+
53
+ # FPS Calculation
54
+ current_time = time.time()
55
+ fps = 1 / (current_time - prev_time) if prev_time != 0 else 0
56
+ prev_time = current_time
57
+
58
+ # Display Frame
59
+ frame_placeholder.image(
60
+ annotated_frame,
61
+ channels="BGR",
62
+ width="stretch"
63
+ )
64
+
65
+ fps_placeholder.write(f"FPS: {fps:.2f}")
66
+
67
+ if stop:
68
+ break
69
+
70
+ cap.release()
71
+ cv2.destroyAllWindows()
runs/detect/smartvision_yolov8/args.yaml ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task: detect
2
+ mode: train
3
+ model: yolov8n.pt
4
+ data: smartvision_dataset/detection/data.yaml
5
+ epochs: 90
6
+ time: null
7
+ patience: 100
8
+ batch: 16
9
+ imgsz: 640
10
+ save: true
11
+ save_period: -1
12
+ cache: false
13
+ device: cpu
14
+ workers: 8
15
+ project: null
16
+ name: smartvision_yolov8
17
+ exist_ok: false
18
+ pretrained: true
19
+ optimizer: auto
20
+ verbose: true
21
+ seed: 0
22
+ deterministic: true
23
+ single_cls: false
24
+ rect: false
25
+ cos_lr: false
26
+ close_mosaic: 10
27
+ resume: false
28
+ amp: true
29
+ fraction: 1.0
30
+ profile: false
31
+ freeze: null
32
+ multi_scale: 0.0
33
+ compile: false
34
+ overlap_mask: true
35
+ mask_ratio: 4
36
+ dropout: 0.0
37
+ val: true
38
+ split: val
39
+ save_json: false
40
+ conf: null
41
+ iou: 0.7
42
+ max_det: 300
43
+ half: false
44
+ dnn: false
45
+ plots: true
46
+ end2end: null
47
+ source: null
48
+ vid_stride: 1
49
+ stream_buffer: false
50
+ visualize: false
51
+ augment: false
52
+ agnostic_nms: false
53
+ classes: null
54
+ retina_masks: false
55
+ embed: null
56
+ show: false
57
+ save_frames: false
58
+ save_txt: false
59
+ save_conf: false
60
+ save_crop: false
61
+ show_labels: true
62
+ show_conf: true
63
+ show_boxes: true
64
+ line_width: null
65
+ format: torchscript
66
+ keras: false
67
+ optimize: false
68
+ int8: false
69
+ dynamic: false
70
+ simplify: true
71
+ opset: null
72
+ workspace: null
73
+ nms: false
74
+ lr0: 0.01
75
+ lrf: 0.01
76
+ momentum: 0.937
77
+ weight_decay: 0.0005
78
+ warmup_epochs: 3.0
79
+ warmup_momentum: 0.8
80
+ warmup_bias_lr: 0.1
81
+ box: 7.5
82
+ cls: 0.5
83
+ dfl: 1.5
84
+ pose: 12.0
85
+ kobj: 1.0
86
+ rle: 1.0
87
+ angle: 1.0
88
+ nbs: 64
89
+ hsv_h: 0.015
90
+ hsv_s: 0.7
91
+ hsv_v: 0.4
92
+ degrees: 0.0
93
+ translate: 0.1
94
+ scale: 0.5
95
+ shear: 0.0
96
+ perspective: 0.0
97
+ flipud: 0.0
98
+ fliplr: 0.5
99
+ bgr: 0.0
100
+ mosaic: 1.0
101
+ mixup: 0.0
102
+ cutmix: 0.0
103
+ copy_paste: 0.0
104
+ copy_paste_mode: flip
105
+ auto_augment: randaugment
106
+ erasing: 0.4
107
+ cfg: null
108
+ tracker: botsort.yaml
109
+ save_dir: C:\Users\asmis\OneDrive\Desktop\Smartvision\runs\detect\smartvision_yolov8
runs/detect/smartvision_yolov82/args.yaml ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task: detect
2
+ mode: train
3
+ model: yolov8n.pt
4
+ data: smartvision_dataset/detection/data.yaml
5
+ epochs: 90
6
+ time: null
7
+ patience: 100
8
+ batch: 16
9
+ imgsz: 640
10
+ save: true
11
+ save_period: -1
12
+ cache: false
13
+ device: cpu
14
+ workers: 8
15
+ project: null
16
+ name: smartvision_yolov82
17
+ exist_ok: false
18
+ pretrained: true
19
+ optimizer: auto
20
+ verbose: true
21
+ seed: 0
22
+ deterministic: true
23
+ single_cls: false
24
+ rect: false
25
+ cos_lr: false
26
+ close_mosaic: 10
27
+ resume: false
28
+ amp: true
29
+ fraction: 1.0
30
+ profile: false
31
+ freeze: null
32
+ multi_scale: 0.0
33
+ compile: false
34
+ overlap_mask: true
35
+ mask_ratio: 4
36
+ dropout: 0.0
37
+ val: true
38
+ split: val
39
+ save_json: false
40
+ conf: null
41
+ iou: 0.7
42
+ max_det: 300
43
+ half: false
44
+ dnn: false
45
+ plots: true
46
+ end2end: null
47
+ source: null
48
+ vid_stride: 1
49
+ stream_buffer: false
50
+ visualize: false
51
+ augment: false
52
+ agnostic_nms: false
53
+ classes: null
54
+ retina_masks: false
55
+ embed: null
56
+ show: false
57
+ save_frames: false
58
+ save_txt: false
59
+ save_conf: false
60
+ save_crop: false
61
+ show_labels: true
62
+ show_conf: true
63
+ show_boxes: true
64
+ line_width: null
65
+ format: torchscript
66
+ keras: false
67
+ optimize: false
68
+ int8: false
69
+ dynamic: false
70
+ simplify: true
71
+ opset: null
72
+ workspace: null
73
+ nms: false
74
+ lr0: 0.01
75
+ lrf: 0.01
76
+ momentum: 0.937
77
+ weight_decay: 0.0005
78
+ warmup_epochs: 3.0
79
+ warmup_momentum: 0.8
80
+ warmup_bias_lr: 0.1
81
+ box: 7.5
82
+ cls: 0.5
83
+ dfl: 1.5
84
+ pose: 12.0
85
+ kobj: 1.0
86
+ rle: 1.0
87
+ angle: 1.0
88
+ nbs: 64
89
+ hsv_h: 0.015
90
+ hsv_s: 0.7
91
+ hsv_v: 0.4
92
+ degrees: 0.0
93
+ translate: 0.1
94
+ scale: 0.5
95
+ shear: 0.0
96
+ perspective: 0.0
97
+ flipud: 0.0
98
+ fliplr: 0.5
99
+ bgr: 0.0
100
+ mosaic: 1.0
101
+ mixup: 0.0
102
+ cutmix: 0.0
103
+ copy_paste: 0.0
104
+ copy_paste_mode: flip
105
+ auto_augment: randaugment
106
+ erasing: 0.4
107
+ cfg: null
108
+ tracker: botsort.yaml
109
+ save_dir: C:\Users\asmis\OneDrive\Desktop\Smartvision\runs\detect\smartvision_yolov82
runs/detect/smartvision_yolov83/args.yaml ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ task: detect
2
+ mode: train
3
+ model: yolov8n.pt
4
+ data: smartvision_dataset/detection/data.yaml
5
+ epochs: 90
6
+ time: null
7
+ patience: 100
8
+ batch: 16
9
+ imgsz: 640
10
+ save: true
11
+ save_period: -1
12
+ cache: false
13
+ device: cpu
14
+ workers: 8
15
+ project: null
16
+ name: smartvision_yolov83
17
+ exist_ok: false
18
+ pretrained: true
19
+ optimizer: auto
20
+ verbose: true
21
+ seed: 0
22
+ deterministic: true
23
+ single_cls: false
24
+ rect: false
25
+ cos_lr: false
26
+ close_mosaic: 10
27
+ resume: false
28
+ amp: true
29
+ fraction: 1.0
30
+ profile: false
31
+ freeze: null
32
+ multi_scale: 0.0
33
+ compile: false
34
+ overlap_mask: true
35
+ mask_ratio: 4
36
+ dropout: 0.0
37
+ val: true
38
+ split: val
39
+ save_json: false
40
+ conf: null
41
+ iou: 0.7
42
+ max_det: 300
43
+ half: false
44
+ dnn: false
45
+ plots: true
46
+ end2end: null
47
+ source: null
48
+ vid_stride: 1
49
+ stream_buffer: false
50
+ visualize: false
51
+ augment: false
52
+ agnostic_nms: false
53
+ classes: null
54
+ retina_masks: false
55
+ embed: null
56
+ show: false
57
+ save_frames: false
58
+ save_txt: false
59
+ save_conf: false
60
+ save_crop: false
61
+ show_labels: true
62
+ show_conf: true
63
+ show_boxes: true
64
+ line_width: null
65
+ format: torchscript
66
+ keras: false
67
+ optimize: false
68
+ int8: false
69
+ dynamic: false
70
+ simplify: true
71
+ opset: null
72
+ workspace: null
73
+ nms: false
74
+ lr0: 0.01
75
+ lrf: 0.01
76
+ momentum: 0.937
77
+ weight_decay: 0.0005
78
+ warmup_epochs: 3.0
79
+ warmup_momentum: 0.8
80
+ warmup_bias_lr: 0.1
81
+ box: 7.5
82
+ cls: 0.5
83
+ dfl: 1.5
84
+ pose: 12.0
85
+ kobj: 1.0
86
+ rle: 1.0
87
+ angle: 1.0
88
+ nbs: 64
89
+ hsv_h: 0.015
90
+ hsv_s: 0.7
91
+ hsv_v: 0.4
92
+ degrees: 0.0
93
+ translate: 0.1
94
+ scale: 0.5
95
+ shear: 0.0
96
+ perspective: 0.0
97
+ flipud: 0.0
98
+ fliplr: 0.5
99
+ bgr: 0.0
100
+ mosaic: 1.0
101
+ mixup: 0.0
102
+ cutmix: 0.0
103
+ copy_paste: 0.0
104
+ copy_paste_mode: flip
105
+ auto_augment: randaugment
106
+ erasing: 0.4
107
+ cfg: null
108
+ tracker: botsort.yaml
109
+ save_dir: C:\Users\asmis\OneDrive\Desktop\Smartvision\runs\detect\smartvision_yolov83