Spaces:
Runtime error
Runtime error
import gradio as gr | |
from gradio_client import Client , handle_file | |
import cv2 | |
import os | |
from PIL import Image | |
clientImgPipeLn = Client("dj-dawgs-ipd/IPD_IMAGE_PIPELINE") | |
def predict(video_path): | |
cap = cv2.VideoCapture(video_path) | |
fps = int(cap.get(cv2.CAP_PROP_FPS)) | |
frame_interval = fps * 2 | |
frame_count = 0 | |
success = True | |
temp_dir = "temp_frames" | |
os.makedirs(temp_dir, exist_ok=True) | |
res = 'not_hate' | |
while success: | |
success, frame = cap.read() | |
if frame_count % frame_interval == 0 and success: | |
temp_image_path = os.path.join(temp_dir, f"frame_{frame_count // fps}s.jpg") | |
cv2.imwrite(temp_image_path, frame) | |
response = clientImgPipeLn.predict( | |
image=handle_file(temp_image_path), | |
api_name="/predict" | |
) | |
print(f"Response for frame at {frame_count // fps}s: {response}") | |
if(response[0]['label'] == 'hate'): | |
res = 'hate' | |
break | |
frame_count += 1 | |
cap.release() | |
for file in os.listdir(temp_dir): | |
os.remove(os.path.join(temp_dir, file)) | |
os.rmdir(temp_dir) | |
print("prediction successful") | |
return res | |
iface = gr.Interface(fn=predict, | |
inputs = gr.Video(), | |
outputs=[gr.Label(label = "Class")], | |
title = "Hate Speech Detection in Video", | |
description = "Detect hateful symbols or text in Video" | |
) | |
if __name__ == "__main__": | |
iface.launch() | |