Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,896 Bytes
7d1ac51 |
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 |
import cv2
import gradio as gr
from transformers import pipeline
# Cargar el modelo de detecci贸n de objetos de Hugging Face (DETR)
detector = pipeline("object-detection", model="facebook/detr-resnet-50")
def process_video(video_path):
"""
Procesa un video y devuelve el m谩ximo n煤mero detectado de personas, bicicletas y motos en un fotograma.
"""
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
return {"person": 0, "bicycle": 0, "motorcycle": 0}
max_counts = {"person": 0, "bicycle": 0, "motorcycle": 0}
while True:
ret, frame = cap.read()
if not ret:
break
# Convertir el frame de BGR a RGB (requerido por el modelo)
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# Realizar la detecci贸n de objetos
results = detector(frame_rgb)
# Contar objetos detectados en el frame actual (usamos un umbral de confianza)
frame_counts = {"person": 0, "bicycle": 0, "motorcycle": 0}
for detection in results:
if detection["score"] < 0.7:
continue
label = detection["label"].lower()
if label in frame_counts:
frame_counts[label] += 1
# Actualizar el conteo m谩ximo si en este frame se detecta m谩s
for key in frame_counts:
if frame_counts[key] > max_counts[key]:
max_counts[key] = frame_counts[key]
cap.release()
return max_counts
# Crear la interfaz de Gradio para el Space
iface = gr.Interface(
fn=process_video,
inputs=gr.Video(label="Sube tu video"),
outputs="json",
title="Detecci贸n de Objetos en Video",
description="Carga un video y detecta cu谩ntas personas, bicicletas y motos aparecen usando modelos de Hugging Face."
)
if __name__ == "__main__":
iface.launch()
|