Proyecto de sistema de alarma de seguridad mediante Ultralytics YOLO11
El proyecto de sistema de alarma de seguridad que utiliza Ultralytics YOLO11 integra capacidades avanzadas de visi贸n por ordenador para mejorar las medidas de seguridad. YOLO11, desarrollado por Ultralytics, proporciona detecci贸n de objetos en tiempo real, lo que permite al sistema identificar y responder con prontitud a posibles amenazas para la seguridad. Este proyecto ofrece varias ventajas:
- Detecci贸n en tiempo real: la eficacia de YOLO11 permite al sistema de alarma de seguridad detectar y responder a incidentes de seguridad en tiempo real, minimizando el tiempo de respuesta.
- Precisi贸n: YOLO11 es conocida 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 YOLO11 Detecci贸n de objetos
C贸digo
Configurar los par谩metros del mensaje
Nota
La generaci贸n de contrase帽as de aplicaciones es necesaria
- Navegue hasta App Password Generator, designe un nombre de aplicaci贸n como "proyecto de seguridad" y obtenga una contrase帽a de 16 d铆gitos. Copie esta contrase帽a y p茅guela en el campo de contrase帽a designado siguiendo las instrucciones.
password = ""
from_email = "" # must match the email used to generate the password
to_email = "" # receiver email
Creaci贸n y autenticaci贸n de servidores
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("yolo11n.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("YOLO11 Detection", im0)
frame_count += 1
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
server.quit()
Llamar a la clase Detecci贸n de Objetos y Ejecutar la Inferencia
Ya est谩. Cuando ejecute el c贸digo, recibir谩 una 煤nica notificaci贸n en su correo electr贸nico si se detecta alg煤n objeto. La notificaci贸n se env铆a inmediatamente, no repetidamente. No obstante, si茅ntase libre de personalizar el c贸digo para adaptarlo a los requisitos de su proyecto.
Muestra de correo electr贸nico recibido
PREGUNTAS FRECUENTES
驴C贸mo mejora Ultralytics YOLO11 la precisi贸n de un sistema de alarma de seguridad?
Ultralytics YOLO11 mejora los sistemas de alarma de seguridad ofreciendo una detecci贸n de objetos en tiempo real de gran precisi贸n. Sus avanzados algoritmos reducen significativamente los falsos positivos, garantizando que el sistema s贸lo responda a las amenazas reales. Esta mayor fiabilidad puede integrarse perfectamente en la infraestructura de seguridad existente, mejorando la calidad general de la vigilancia.
驴Puedo integrar Ultralytics YOLO11 con mi infraestructura de seguridad actual?
S铆, Ultralytics YOLO11 puede integrarse perfectamente con su infraestructura de seguridad existente. El sistema admite varios modos y ofrece flexibilidad para la personalizaci贸n, lo que le permite mejorar su configuraci贸n actual con funciones avanzadas de detecci贸n de objetos. Para obtener instrucciones detalladas sobre la integraci贸n de YOLO11 en sus proyectos, visite la secci贸n de integraci贸n.
驴Cu谩les son los requisitos de almacenamiento para ejecutar Ultralytics YOLO11 ?
La ejecuci贸n de Ultralytics YOLO11 en una configuraci贸n est谩ndar suele requerir unos 5 GB de espacio libre en disco. Esto incluye espacio para almacenar el modelo YOLO11 y cualquier dependencia adicional. Para las soluciones basadas en la nube, Ultralytics HUB ofrece una gesti贸n eficaz de los proyectos y de los conjuntos de datos, lo que puede optimizar las necesidades de almacenamiento. Obtenga m谩s informaci贸n sobre el Plan Pro para obtener funciones mejoradas, incluido el almacenamiento ampliado.
驴Qu茅 diferencia a Ultralytics YOLO11 de otros modelos de detecci贸n de objetos como Faster R-CNN o SSD?
Ultralytics YOLO11 ofrece una ventaja sobre modelos como Faster R-CNN o SSD gracias a su capacidad de detecci贸n en tiempo real y 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, puede consultar nuestra gu铆a.
驴C贸mo puedo reducir la frecuencia de falsos positivos en mi sistema de seguridad utilizando Ultralytics YOLO11 ?
Para reducir los falsos positivos, aseg煤rese de que su modelo Ultralytics YOLO11 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. Encontrar谩 t茅cnicas detalladas de ajuste de hiperpar谩metros en nuestra gu铆a de ajuste de hiperpar谩metros.