Kush1211 commited on
Commit
5fc297d
·
verified ·
1 Parent(s): fae5fc5

Upload 6 files

Browse files
Files changed (7) hide show
  1. .gitattributes +4 -0
  2. NV_1.mp4 +3 -0
  3. NV_11.mp4 +3 -0
  4. V_1000.mp4 +3 -0
  5. V_102.mp4 +3 -0
  6. app.py +80 -0
  7. violence-keras-default-v1.zip +3 -0
.gitattributes CHANGED
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ NV_1.mp4 filter=lfs diff=lfs merge=lfs -text
37
+ NV_11.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ V_1000.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ V_102.mp4 filter=lfs diff=lfs merge=lfs -text
NV_1.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc12a32b655938561b38f0bae13bc45921322d6a03d8bd57764c085814e037b7
3
+ size 7982710
NV_11.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:18b26dffa924186e0786009a14f792aee7747de9bf6ce96b0643e08415323c8b
3
+ size 1660244
V_1000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:41142ab86a7e0d07be1af1a9d359430d1eb4f4cd7e968811ea02f2d4ffd78526
3
+ size 263006
V_102.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f661a0b0b2de8aebb060f487b7b2f00fe415e02086cff6e1fe85713cb7de40b
3
+ size 505510
app.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+ import cv2
5
+ import os
6
+
7
+ # Load model
8
+ model = tf.keras.models.load_model('violence-keras-default-v1/best_model.keras')
9
+
10
+ # Video processor class
11
+ class SingleVideoProcessor:
12
+ def __init__(self, video_path, max_frames=50, frame_size=(128, 128), frame_interval=3):
13
+ self.video_path = video_path
14
+ self.max_frames = max_frames
15
+ self.frame_size = frame_size
16
+ self.frame_interval = frame_interval
17
+
18
+ def process(self):
19
+ frames = self.load_video_frames()
20
+ frames = self.resize_frames(frames)
21
+ frames = self.pad_video_frames(frames)
22
+ return np.array(frames, dtype=np.float32)
23
+
24
+ def load_video_frames(self):
25
+ frames = []
26
+ cap = cv2.VideoCapture(self.video_path)
27
+ frame_count = 0
28
+ while cap.isOpened():
29
+ ret, frame = cap.read()
30
+ if not ret:
31
+ break
32
+ frame_count += 1
33
+ if frame_count % self.frame_interval == 0:
34
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
35
+ frames.append(frame)
36
+ cap.release()
37
+ return frames
38
+
39
+ def resize_frames(self, frames):
40
+ return [cv2.resize(frame, self.frame_size) for frame in frames]
41
+
42
+ def pad_video_frames(self, frames):
43
+ if len(frames) < self.max_frames:
44
+ padding = self.max_frames - len(frames)
45
+ frames.extend([np.zeros_like(frames[0])] * padding)
46
+ else:
47
+ frames = frames[:self.max_frames]
48
+ return frames
49
+
50
+ # Prediction function
51
+ def predict_violence(video_path):
52
+ processor = SingleVideoProcessor(video_path)
53
+ processed_video = processor.process()
54
+ processed_video = np.expand_dims(processed_video, axis=0)
55
+ prediction = model.predict(processed_video)[0][0]
56
+
57
+ label = "Violence" if prediction >= 0.5 else "Non-Violence"
58
+ confidence = f"{prediction:.4f}"
59
+ print(prediction)
60
+ return f"{label} (Confidence: {confidence})"
61
+
62
+ # Example videos (ensure these exist in your working directory)
63
+ examples = [
64
+ ["NV_1.mp4"],
65
+ ["V_1000.mp4"],
66
+ ["V_102.mp4"],
67
+ ["NV_11.mp4"]
68
+ ]
69
+
70
+ # Launch Gradio Interface
71
+ demo = gr.Interface(
72
+ fn=predict_violence,
73
+ inputs=gr.Video(label="Upload or Select a Video"),
74
+ outputs=gr.Text(label="Prediction"),
75
+ examples=examples,
76
+ title="Violence Detection in Video",
77
+ description="This model classifies videos as Violence or Non-Violence. Upload a short clip or select from examples."
78
+ )
79
+
80
+ demo.launch()
violence-keras-default-v1.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d2ade3703ceeeefc767446b08c80a6471627ac82e0a887f8d5f61e8e84ba69ba
3
+ size 4509603