File size: 2,479 Bytes
486cf4b
 
5ed03fa
 
486cf4b
 
 
5ed03fa
 
486cf4b
 
 
 
 
 
 
 
12d808d
3040f21
12d808d
 
3040f21
 
 
12d808d
 
3040f21
 
 
 
 
 
 
eb8b644
 
987b27d
 
 
 
 
eb8b644
3040f21
12d808d
 
 
 
258cf12
 
4d7986a
486cf4b
5ed03fa
595de22
 
 
 
4d7986a
d9882d4
3dad993
d9882d4
258cf12
 
 
595de22
 
 
 
 
 
b9ab66b
60a38c2
595de22
 
 
 
 
 
 
 
 
 
 
 
 
3040f21
595de22
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#import os
#import streamlit as st

# Fix permission error for Hugging Face Spaces
#os.environ["STREAMLIT_HOME"] = "./safe_streamlit_home"
#os.environ["STREAMLIT_BROWSER_GATHER_USAGE_STATS"] = "false"
#os.makedirs(os.environ["STREAMLIT_HOME"], exist_ok=True)

# Your other imports...
import os

# βœ… Tell Streamlit NOT to collect usage data or write config files
os.environ["STREAMLIT_BROWSER_GATHER_USAGE_STATS"] = "false"
os.environ["XDG_CONFIG_HOME"] = "/tmp"

import streamlit as st


#hf_token = os.getenv("HF_token")  # Match the exact name you set in the Secrets tab

# Example usage with requests
#headers = {
   # "Authorization": f"Bearer {hf_token}"
#}

# Example: Access a private file or API on Hugging Face
#import requests
#response = requests.get("https://huggingface.co/api/whoami-v2", headers=headers)

#print(response.json())

import os
token = os.getenv("app")  # secure
from huggingface_hub import hf_hub_download

#hf_hub_download(
    #repo_id="muskan19/Violence_Detector",
    #filename="violence_model.h5",
    #use_auth_token=token
#)






import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))


# Streamlit app will be generated here
import streamlit as st
import cv2
import numpy as np
from preprocess import preprocess_frame
#from predict import run_prediction
from predict import run_prediction, load_trained_model


#from src.preprocess import preprocess_frame
#from src.predict import load_trained_model, predict_violence
import tempfile

st.set_page_config(layout="wide")
st.title("πŸ” Violence Detection in Video")
st.markdown("Upload a video and let the model detect violent scenes in real-time.")

uploaded_file = st.file_uploader("Upload a video", type=["mp4", "avi","mpeg","mov","mpg"])
model = load_trained_model()

if uploaded_file is not None:
    tfile = tempfile.NamedTemporaryFile(delete=False)
    tfile.write(uploaded_file.read())
    cap = cv2.VideoCapture(tfile.name)
    stframe = st.empty()

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        processed = preprocess_frame(frame)
        pred = run_prediction(model, processed)
        label = "Violent" if pred <= 0.5 else "Non-Violent"
        color = (0, 0, 255) if label == "Violent" else (0, 255, 0)

        cv2.putText(frame, f'{label} ({pred:.2f})', (10, 30),
                    cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
        stframe.image(frame, channels="BGR")

    cap.release()