PrashanthB461 commited on
Commit
a75980a
·
verified ·
1 Parent(s): 457903c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -15
app.py CHANGED
@@ -7,13 +7,14 @@ import numpy as np
7
  try:
8
  from ultralytics import YOLO
9
  except ImportError as e:
10
- print("❌ Ultralytics not installed.")
11
  raise
12
 
13
  # ==========================
14
  # Configuration
15
  # ==========================
16
  DEFAULT_MODEL_PATH = "models/yolov8_safety.pt"
 
17
  MODEL_PATH = os.getenv("SAFETY_MODEL_PATH", DEFAULT_MODEL_PATH)
18
 
19
  VIOLATION_LABELS = {
@@ -36,15 +37,16 @@ except Exception as e:
36
  # ==========================
37
  # Load Model
38
  # ==========================
39
- if not os.path.isfile(MODEL_PATH):
40
- raise FileNotFoundError(
41
- f" ERROR: Model file '{MODEL_PATH}' not found.\n"
42
- f"👉 Please upload it to the 'models/' folder or set SAFETY_MODEL_PATH env variable."
43
- )
 
44
 
45
  try:
46
- model = YOLO(MODEL_PATH)
47
- print(f"✅ Model loaded from {MODEL_PATH}")
48
  except Exception as e:
49
  print(f"❌ Failed to load model: {e}")
50
  raise
@@ -74,13 +76,13 @@ def process_video(video_path):
74
  conf = float(box.conf)
75
  xywh = box.xywh.cpu().numpy()[0]
76
 
77
- if cls in VIOLATION_LABELS:
78
- violations.append({
79
- "frame": frame_count,
80
- "violation": VIOLATION_LABELS[cls],
81
- "confidence": round(conf, 2),
82
- "bounding_box": [round(x, 2) for x in xywh]
83
- })
84
 
85
  frame_count += 1
86
 
 
7
  try:
8
  from ultralytics import YOLO
9
  except ImportError as e:
10
+ print("❌ Ultralytics not installed. Run: pip install ultralytics")
11
  raise
12
 
13
  # ==========================
14
  # Configuration
15
  # ==========================
16
  DEFAULT_MODEL_PATH = "models/yolov8_safety.pt"
17
+ FALLBACK_MODEL = "yolov8n.pt" # Use nano model if custom one is missing
18
  MODEL_PATH = os.getenv("SAFETY_MODEL_PATH", DEFAULT_MODEL_PATH)
19
 
20
  VIOLATION_LABELS = {
 
37
  # ==========================
38
  # Load Model
39
  # ==========================
40
+ if os.path.isfile(MODEL_PATH):
41
+ selected_model = MODEL_PATH
42
+ print(f" Found model at: {selected_model}")
43
+ else:
44
+ print(f"⚠️ Model file '{MODEL_PATH}' not found. Falling back to: {FALLBACK_MODEL}")
45
+ selected_model = FALLBACK_MODEL
46
 
47
  try:
48
+ model = YOLO(selected_model)
49
+ print(f"✅ Model loaded: {selected_model}")
50
  except Exception as e:
51
  print(f"❌ Failed to load model: {e}")
52
  raise
 
76
  conf = float(box.conf)
77
  xywh = box.xywh.cpu().numpy()[0]
78
 
79
+ label = VIOLATION_LABELS.get(cls, f"class_{cls}")
80
+ violations.append({
81
+ "frame": frame_count,
82
+ "violation": label,
83
+ "confidence": round(conf, 2),
84
+ "bounding_box": [round(x, 2) for x in xywh]
85
+ })
86
 
87
  frame_count += 1
88