Proyecto de sistema de alarma de seguridad con Ultralytics YOLO26#
Este proyecto utiliza visión artificial de Ultralytics YOLO26 para crear un sistema de alarma de seguridad. YOLO26 proporciona detección de objetos en tiempo real, lo que permite al sistema identificar posibles amenazas para la seguridad y responder a ellas rápidamente. Este proyecto ofrece varias ventajas:
- Detección en tiempo real: La eficiencia de YOLO26 permite al sistema de alarma de seguridad detectar incidentes y responder a ellos en tiempo real, lo que minimiza el tiempo de respuesta.
- Precisión: La detección precisa de objetos de YOLO26 reduce los falsos positivos y mejora la fiabilidad del sistema de alarma de seguridad.
- Capacidades de integración: El proyecto puede añadir análisis de IA a las cámaras de seguridad existentes, incorporando una capa inteligente de detección a los sistemas de vigilancia actuales.
Ver: Sistema de alarma de seguridad con Ultralytics YOLO26 + Soluciones de detección de objetos
Envía alertas de seguridad con YOLO26#
La solución SecurityAlarm sigue los objetos de la señal de vídeo y envía una única alerta por correo electrónico con una imagen anotada adjunta en cuanto el número de detecciones alcanza el umbral records. Autentica una cuenta de Gmail con una contraseña de aplicación y, a continuación, ejecuta la solución sobre tu fuente.
Ve al generador de contraseñas de aplicación, asigna un nombre a la aplicación, como «proyecto de seguridad», y obtén una contraseña de 16 caracteres. Copia esta contraseña y pégala en el campo password del código siguiente.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Escritor de vídeo
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("security_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
from_email = "abc@gmail.com" # la dirección de correo electrónico del remitente
password = "---- ---- ---- ----" # contraseña de aplicación de 16 caracteres generada mediante: https://myaccount.google.com/apppasswords
to_email = "xyz@gmail.com" # la dirección de correo electrónico del destinatario
# Inicializa el objeto de alarma de seguridad
securityalarm = solutions.SecurityAlarm(
show=True, # mostrar el resultado
model="yolo26n.pt", # p. ej., yolo26s.pt, yolo26m.pt
records=1, # recuento total de detecciones para enviar un correo electrónico
)
securityalarm.authenticate(from_email, password, to_email) # autenticar el servidor de correo electrónico
# Procesar el vídeo
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = securityalarm(im0)
# print(results) # acceder a la salida
video_writer.write(results.plot_im) # escribe el fotograma procesado.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # cerrar todas las ventanas abiertasAl ejecutar el código, recibirás una única notificación por correo electrónico si se detecta algún objeto. La notificación se envía inmediatamente, no de forma reiterada. Puedes personalizar el código según los requisitos de tu proyecto.
Ejemplo de correo recibido#
Argumentos de SecurityAlarm#
Aquí tienes una tabla con los argumentos de SecurityAlarm:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta a un archivo de modelo Ultralytics YOLO. |
records | int | 5 | Número total de detecciones necesario para activar un correo electrónico con el sistema de alarma de seguridad. |
line_width | int | 2 | Grosor de línea de los cuadros, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Activa el registro por fotograma de la forma de entrada, los recuentos por clase y la velocidad de procesamiento de la solución. La llamada de seguimiento en sí siempre es silenciosa. |
La solución SecurityAlarm admite varios parámetros de track:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Especifica el algoritmo de seguimiento que se va a usar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza de las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones solapadas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas. |
device | str | None | Especifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite elegir entre CPU, una GPU concreta u otros dispositivos de cálculo para ejecutar el modelo. |
imgsz | int or tuple | 640 | Tamaño de imagen de destino para la inferencia: un entero para una imagen cuadrada o una pareja (height, width). Las dimensiones se ajustan al stride del modelo. |
max_det | int | 300 | Número máximo de detecciones que se conservan por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas. |
quantize | int or str | None | Precisión de inferencia: 16 (FP16) o 32/unset (FP32) para los modelos PyTorch y TorchScript fuera de CPU; los demás formatos usan la precisión que seleccionen el artefacto y el entorno de ejecución. Sustituye al argumento obsoleto half. |
Además, están disponibles los siguientes ajustes de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si True, muestra las imágenes o los vídeos anotados en una ventana. Es útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
show_conf | bool | True | Muestra la puntuación de confianza de cada detección junto a su etiqueta. Permite conocer el grado de certeza del modelo para cada detección. |
show_labels | bool | True | Muestra etiquetas para cada detección en la salida visual. Facilita la identificación inmediata de los objetos detectados. |
Cómo funciona#
El sistema de alarma de seguridad utiliza el seguimiento de objetos para supervisar las fuentes de vídeo y detectar posibles amenazas de seguridad. Cuando el número de objetos detectados en un fotograma alcanza el umbral especificado (definido por el parámetro records), envía automáticamente una notificación por correo electrónico con una imagen adjunta en la que se muestran los objetos detectados.
El sistema utiliza la clase SecurityAlarm, que proporciona métodos para:
- Procesar fotogramas y extraer detecciones de objetos
- Anotar fotogramas con cuadros delimitadores alrededor de los objetos detectados
- Enviar notificaciones por correo electrónico cuando se alcancen los umbrales de detección
Esta implementación es adecuada para la seguridad doméstica, la vigilancia en comercios y otras aplicaciones de supervisión en las que es fundamental recibir una notificación inmediata sobre los objetos detectados.
Preguntas frecuentes#
Ultralytics YOLO26 mejora los sistemas de alarma de seguridad al ofrecer una detección de objetos precisa y en tiempo real, que reduce los falsos positivos para que el sistema responda principalmente a sucesos reales. Puedes reducir aún más las falsas alarmas limitando la detección a
classesrelevantes (por ejemplo, solo personas), elevando el umbral deconfo aumentandorecords.Sí. La solución
SecurityAlarmprocesa fotogramas de cualquier fuente que OpenCV pueda leer, incluidos archivos de vídeo, cámaras web y secuencias RTSP de cámaras IP, por lo que puedes añadir detección de YOLO26 a una instalación de cámaras existente.La ejecución de Ultralytics YOLO26 en una configuración estándar suele requerir unos 5 GB de espacio libre en disco. Esto incluye el espacio para almacenar el modelo YOLO26 y las dependencias adicionales. Para soluciones en la nube, Ultralytics Platform ofrece una gestión eficiente de proyectos y conjuntos de datos, lo que puede optimizar las necesidades de almacenamiento. El plan Pro aumenta el almacenamiento hasta los 500 GB.
Ultralytics YOLO26 ofrece ventajas frente a modelos como Faster R-CNN o SSD gracias a su capacidad de detección en tiempo real y a su mayor precisión. Su arquitectura de una etapa procesa las imágenes mucho más rápido sin comprometer la precisión, por lo que es adecuada para aplicaciones con plazos críticos, como los sistemas de alarma de seguridad.
Para reducir los falsos positivos, asegúrate de que tu modelo Ultralytics YOLO26 se haya entrenado correctamente con un conjunto de datos diverso y bien anotado. Ajustar los hiperparámetros y actualizar el modelo periódicamente con datos nuevos puede mejorar considerablemente la precisión de detección.