Update app.py
Browse files
app.py
CHANGED
|
@@ -8,30 +8,25 @@ import os
|
|
| 8 |
import hashlib
|
| 9 |
from typing import Optional
|
| 10 |
|
| 11 |
-
# =====
|
| 12 |
from torch.nn import Sequential, Conv2d, BatchNorm2d, SiLU, ReLU, LeakyReLU, MaxPool2d, Upsample, ModuleList
|
| 13 |
-
from ultralytics.nn.modules.conv import Conv, Concat
|
| 14 |
from ultralytics.nn.modules.block import Bottleneck, C2f, SPPF
|
|
|
|
| 15 |
from ultralytics.nn.tasks import DetectionModel
|
| 16 |
|
| 17 |
-
# ===== SAFE GLOBALS =====
|
| 18 |
-
# Add all components
|
| 19 |
torch.serialization.add_safe_globals([
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
DetectionModel,
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
Conv2d,
|
| 25 |
-
BatchNorm2d,
|
| 26 |
-
SiLU,
|
| 27 |
-
ReLU,
|
| 28 |
-
LeakyReLU,
|
| 29 |
-
Bottleneck,
|
| 30 |
-
C2f,
|
| 31 |
-
SPPF,
|
| 32 |
-
ModuleList,
|
| 33 |
-
MaxPool2d,
|
| 34 |
-
Upsample
|
| 35 |
])
|
| 36 |
|
| 37 |
# ===== MODEL CONFIG =====
|
|
@@ -73,7 +68,10 @@ def load_model(model_path: str) -> YOLO:
|
|
| 73 |
"""Safely load YOLO model with error handling"""
|
| 74 |
print("🔧 Loading model...")
|
| 75 |
try:
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
| 77 |
# Test with small dummy input
|
| 78 |
with torch.no_grad():
|
| 79 |
dummy = torch.zeros(1, 3, 640, 640)
|
|
|
|
| 8 |
import hashlib
|
| 9 |
from typing import Optional
|
| 10 |
|
| 11 |
+
# ===== IMPORT ALL NECESSARY MODULES =====
|
| 12 |
from torch.nn import Sequential, Conv2d, BatchNorm2d, SiLU, ReLU, LeakyReLU, MaxPool2d, Upsample, ModuleList
|
| 13 |
+
from ultralytics.nn.modules.conv import Conv, Concat
|
| 14 |
from ultralytics.nn.modules.block import Bottleneck, C2f, SPPF
|
| 15 |
+
from ultralytics.nn.modules.head import Detect # Added Detect
|
| 16 |
from ultralytics.nn.tasks import DetectionModel
|
| 17 |
|
| 18 |
+
# ===== SAFE GLOBALS CONFIGURATION =====
|
| 19 |
+
# Add all components to safe globals
|
| 20 |
torch.serialization.add_safe_globals([
|
| 21 |
+
# Torch modules
|
| 22 |
+
Sequential, Conv2d, BatchNorm2d, SiLU, ReLU, LeakyReLU,
|
| 23 |
+
MaxPool2d, Upsample, ModuleList,
|
| 24 |
+
|
| 25 |
+
# Ultralytics modules
|
| 26 |
DetectionModel,
|
| 27 |
+
Conv, Concat,
|
| 28 |
+
Bottleneck, C2f, SPPF,
|
| 29 |
+
Detect, # Added Detect head
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
])
|
| 31 |
|
| 32 |
# ===== MODEL CONFIG =====
|
|
|
|
| 68 |
"""Safely load YOLO model with error handling"""
|
| 69 |
print("🔧 Loading model...")
|
| 70 |
try:
|
| 71 |
+
# Temporary workaround for PyTorch 2.6+ weights_only=True issues
|
| 72 |
+
# Only use if you trust the model source!
|
| 73 |
+
model = YOLO(model_path, task='detect')
|
| 74 |
+
|
| 75 |
# Test with small dummy input
|
| 76 |
with torch.no_grad():
|
| 77 |
dummy = torch.zeros(1, 3, 640, 640)
|