Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -7,6 +7,41 @@ import streamlit as st
|
|
| 7 |
|
| 8 |
import json
|
| 9 |
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
# Import our modular components
|
| 12 |
from video_processing import extract_frames_from_video
|
|
@@ -172,6 +207,27 @@ def check_password() -> bool:
|
|
| 172 |
|
| 173 |
|
| 174 |
def main():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
"""Main application entry point"""
|
| 176 |
# Initialize application
|
| 177 |
initialize_app()
|
|
|
|
| 7 |
|
| 8 |
import json
|
| 9 |
from dotenv import load_dotenv
|
| 10 |
+
# --- Reproducibility & Threading ---
|
| 11 |
+
import os, random
|
| 12 |
+
import numpy as np
|
| 13 |
+
|
| 14 |
+
# Falls torch/cv2 verfügbar sind: Seeds/Threads setzen
|
| 15 |
+
try:
|
| 16 |
+
import torch
|
| 17 |
+
TORCH_AVAILABLE = True
|
| 18 |
+
except Exception:
|
| 19 |
+
TORCH_AVAILABLE = False
|
| 20 |
+
|
| 21 |
+
try:
|
| 22 |
+
import cv2
|
| 23 |
+
CV2_AVAILABLE = True
|
| 24 |
+
except Exception:
|
| 25 |
+
CV2_AVAILABLE = False
|
| 26 |
+
|
| 27 |
+
SEED = 42
|
| 28 |
+
random.seed(SEED)
|
| 29 |
+
np.random.seed(SEED)
|
| 30 |
+
os.environ["PYTHONHASHSEED"] = str(SEED)
|
| 31 |
+
|
| 32 |
+
if TORCH_AVAILABLE:
|
| 33 |
+
torch.manual_seed(SEED)
|
| 34 |
+
torch.set_num_threads(1) # vermeidet non-deterministische Parallel-Reduktionen
|
| 35 |
+
# Optional (nur wenn keine Fehlermeldung kommt):
|
| 36 |
+
# torch.use_deterministic_algorithms(True)
|
| 37 |
+
|
| 38 |
+
if CV2_AVAILABLE:
|
| 39 |
+
try:
|
| 40 |
+
cv2.setNumThreads(1) # OpenCV deterministischer
|
| 41 |
+
except Exception:
|
| 42 |
+
pass
|
| 43 |
+
|
| 44 |
+
|
| 45 |
|
| 46 |
# Import our modular components
|
| 47 |
from video_processing import extract_frames_from_video
|
|
|
|
| 207 |
|
| 208 |
|
| 209 |
def main():
|
| 210 |
+
# Diagnose: Versionen anzeigen (hilft bei Abweichungen lokal vs. online)
|
| 211 |
+
with st.expander("Diagnostics (Versionen)"):
|
| 212 |
+
versions = {}
|
| 213 |
+
try:
|
| 214 |
+
import cv2; versions["opencv"] = cv2.__version__
|
| 215 |
+
except Exception: versions["opencv"] = "n/a"
|
| 216 |
+
try:
|
| 217 |
+
import numpy as _np; versions["numpy"] = _np.__version__
|
| 218 |
+
except Exception: versions["numpy"] = "n/a"
|
| 219 |
+
try:
|
| 220 |
+
import torch as _torch; versions["torch"] = _torch.__version__
|
| 221 |
+
except Exception: versions["torch"] = "n/a"
|
| 222 |
+
try:
|
| 223 |
+
import transformers as _tf; versions["transformers"] = _tf.__version__
|
| 224 |
+
except Exception: versions["transformers"] = "n/a"
|
| 225 |
+
try:
|
| 226 |
+
import PIL; versions["pillow"] = PIL.__version__
|
| 227 |
+
except Exception: versions["pillow"] = "n/a"
|
| 228 |
+
|
| 229 |
+
st.write(versions)
|
| 230 |
+
|
| 231 |
"""Main application entry point"""
|
| 232 |
# Initialize application
|
| 233 |
initialize_app()
|