Saltar al contenido

Proyecto de sistema de alarma de seguridad mediante Ultralytics YOLOv8

Sistema de alarma de seguridad

El Proyecto de Sistema de Alarma de Seguridad que utiliza Ultralytics YOLOv8 integra capacidades avanzadas de visi贸n por ordenador para mejorar las medidas de seguridad. YOLOv8, desarrollado por Ultralytics, proporciona detecci贸n de objetos en tiempo real, lo que permite al sistema identificar y responder r谩pidamente a posibles amenazas para la seguridad. Este proyecto ofrece varias ventajas:

  • Detecci贸n en tiempo real: la eficacia de YOLOv8 permite al Sistema de Alarma de Seguridad detectar y responder a los incidentes de seguridad en tiempo real, minimizando el tiempo de respuesta.
  • Precisi贸n: YOLOv8 es conocido por su precisi贸n en la detecci贸n de objetos, lo que reduce los falsos positivos y aumenta la fiabilidad del sistema de alarma de seguridad.
  • Capacidad de integraci贸n: El proyecto puede integrarse perfectamente con la infraestructura de seguridad existente, proporcionando una capa mejorada de vigilancia inteligente.



Observa: Proyecto de Sistema de Alarma de Seguridad con Ultralytics YOLOv8 Detecci贸n de Objetos

C贸digo

Configura los par谩metros del mensaje

Nota

La generaci贸n de contrase帽as para aplicaciones es necesaria

  • Navega hasta App Password Generator, designa un nombre de app como "proyecto de seguridad" y obt茅n una contrase帽a de 16 d铆gitos. Copia esta contrase帽a y p茅gala en el campo de contrase帽a designado seg煤n las instrucciones.
password = ""
from_email = ""  # must match the email used to generate the password
to_email = ""  # receiver email

Creaci贸n y autentificaci贸n del servidor

import smtplib

server = smtplib.SMTP("smtp.gmail.com: 587")
server.starttls()
server.login(from_email, password)

Funci贸n de env铆o de correo electr贸nico

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


def send_email(to_email, from_email, object_detected=1):
    """Sends an email notification indicating the number of objects detected; defaults to 1 object."""
    message = MIMEMultipart()
    message["From"] = from_email
    message["To"] = to_email
    message["Subject"] = "Security Alert"
    # Add in the message body
    message_body = f"ALERT - {object_detected} objects has been detected!!"

    message.attach(MIMEText(message_body, "plain"))
    server.sendmail(from_email, to_email, message.as_string())

Detecci贸n de objetos y env铆o de alertas

from time import time

import cv2
import torch

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors


class ObjectDetection:
    def __init__(self, capture_index):
        """Initializes an ObjectDetection instance with a given camera index."""
        self.capture_index = capture_index
        self.email_sent = False

        # model information
        self.model = YOLO("yolov8n.pt")

        # visual information
        self.annotator = None
        self.start_time = 0
        self.end_time = 0

        # device information
        self.device = "cuda" if torch.cuda.is_available() else "cpu"

    def predict(self, im0):
        """Run prediction using a YOLO model for the input image `im0`."""
        results = self.model(im0)
        return results

    def display_fps(self, im0):
        """Displays the FPS on an image `im0` by calculating and overlaying as white text on a black rectangle."""
        self.end_time = time()
        fps = 1 / round(self.end_time - self.start_time, 2)
        text = f"FPS: {int(fps)}"
        text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 1.0, 2)[0]
        gap = 10
        cv2.rectangle(
            im0,
            (20 - gap, 70 - text_size[1] - gap),
            (20 + text_size[0] + gap, 70 + gap),
            (255, 255, 255),
            -1,
        )
        cv2.putText(im0, text, (20, 70), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 0), 2)

    def plot_bboxes(self, results, im0):
        """Plots bounding boxes on an image given detection results; returns annotated image and class IDs."""
        class_ids = []
        self.annotator = Annotator(im0, 3, results[0].names)
        boxes = results[0].boxes.xyxy.cpu()
        clss = results[0].boxes.cls.cpu().tolist()
        names = results[0].names
        for box, cls in zip(boxes, clss):
            class_ids.append(cls)
            self.annotator.box_label(box, label=names[int(cls)], color=colors(int(cls), True))
        return im0, class_ids

    def __call__(self):
        """Run object detection on video frames from a camera stream, plotting and showing the results."""
        cap = cv2.VideoCapture(self.capture_index)
        assert cap.isOpened()
        cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
        cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
        frame_count = 0
        while True:
            self.start_time = time()
            ret, im0 = cap.read()
            assert ret
            results = self.predict(im0)
            im0, class_ids = self.plot_bboxes(results, im0)

            if len(class_ids) > 0:  # Only send email If not sent before
                if not self.email_sent:
                    send_email(to_email, from_email, len(class_ids))
                    self.email_sent = True
            else:
                self.email_sent = False

            self.display_fps(im0)
            cv2.imshow("YOLOv8 Detection", im0)
            frame_count += 1
            if cv2.waitKey(5) & 0xFF == 27:
                break
        cap.release()
        cv2.destroyAllWindows()
        server.quit()

Llama a la clase Detecci贸n de Objetos y Ejecuta la Inferencia

detector = ObjectDetection(capture_index=0)
detector()

隆Ya est谩! Cuando ejecutes el c贸digo, recibir谩s una 煤nica notificaci贸n en tu correo electr贸nico si se detecta alg煤n objeto. La notificaci贸n se env铆a inmediatamente, no de forma repetida. No obstante, si茅ntete libre de personalizar el c贸digo para adaptarlo a los requisitos de tu proyecto.

Muestra de correo electr贸nico recibido

Muestra de correo electr贸nico recibido

PREGUNTAS FRECUENTES

驴C贸mo mejora Ultralytics YOLOv8 la precisi贸n de un sistema de alarma de seguridad?

Ultralytics YOLOv8 mejora los sistemas de alarma de seguridad ofreciendo una detecci贸n de objetos en tiempo real de gran precisi贸n. Sus algoritmos avanzados reducen significativamente los falsos positivos, garantizando que el sistema s贸lo responda a las amenazas aut茅nticas. Esta mayor fiabilidad puede integrarse perfectamente en la infraestructura de seguridad existente, mejorando la calidad general de la vigilancia.

驴Puedo integrar Ultralytics YOLOv8 con mi infraestructura de seguridad actual?

S铆, Ultralytics YOLOv8 puede integrarse perfectamente con tu infraestructura de seguridad existente. El sistema admite varios modos y ofrece flexibilidad para la personalizaci贸n, lo que te permite mejorar tu configuraci贸n actual con funciones avanzadas de detecci贸n de objetos. Para obtener instrucciones detalladas sobre la integraci贸n de YOLOv8 en tus proyectos, visita la secci贸n de integraci贸n.

驴Cu谩les son los requisitos de almacenamiento para ejecutar Ultralytics YOLOv8 ?

Ejecutar Ultralytics YOLOv8 en una configuraci贸n est谩ndar suele requerir unos 5 GB de espacio libre en disco. Esto incluye el espacio para almacenar el modelo YOLOv8 y cualquier dependencia adicional. Para las soluciones basadas en la nube, Ultralytics HUB ofrece una gesti贸n eficaz de los proyectos y del conjunto de datos, lo que puede optimizar las necesidades de almacenamiento. Inf贸rmate sobre el Plan Pro para obtener funciones mejoradas, incluido el almacenamiento ampliado.

驴Qu茅 diferencia a Ultralytics YOLOv8 de otros modelos de detecci贸n de objetos como Faster R-CNN o SSD?

Ultralytics YOLOv8 proporciona una ventaja sobre modelos como el R-CNN m谩s r谩pido o el SSD gracias a su capacidad de detecci贸n en tiempo real y a su mayor precisi贸n. Su arquitectura 煤nica le permite procesar im谩genes mucho m谩s r谩pido sin comprometer la precisi贸n, lo que lo hace ideal para aplicaciones sensibles al tiempo, como los sistemas de alarma de seguridad. Para una comparaci贸n exhaustiva de los modelos de detecci贸n de objetos, puedes explorar nuestra gu铆a.

驴C贸mo puedo reducir la frecuencia de falsos positivos en mi sistema de seguridad utilizando Ultralytics YOLOv8 ?

Para reducir los falsos positivos, aseg煤rate de que tu modelo Ultralytics YOLOv8 est谩 adecuadamente entrenado con un conjunto de datos diverso y bien anotado. El ajuste fino de los hiperpar谩metros y la actualizaci贸n peri贸dica del modelo con nuevos datos pueden mejorar significativamente la precisi贸n de la detecci贸n. Puedes encontrar t茅cnicas detalladas de ajuste de hiperpar谩metros en nuestra gu铆a de ajuste de hiperpar谩metros.



Creado 2023-12-02, Actualizado 2024-07-05
Autores: glenn-jocher (7), ambitious-octopus (1), IvorZhu331 (1), RizwanMunawar (1)

Comentarios