Проект системы охранной сигнализации с использованием Ultralytics YOLO11
Проект системы охранной сигнализации, использующий Ultralytics YOLO11 , объединяет передовые возможности компьютерного зрения для усиления мер безопасности. YOLO11 Проект, разработанный Ultralytics, обеспечивает обнаружение объектов в режиме реального времени, что позволяет системе оперативно выявлять потенциальные угрозы безопасности и реагировать на них. Этот проект обладает рядом преимуществ:
- Обнаружение в реальном времени: эффективность YOLO11 позволяет системе охранной сигнализации обнаруживать и реагировать на инциденты безопасности в режиме реального времени, что минимизирует время реагирования.
- Точность: YOLO11 известен своей точностью в обнаружении объектов, снижая количество ложных срабатываний и повышая надежность системы охранной сигнализации.
- Возможности интеграции: Проект может быть легко интегрирован в существующую инфраструктуру безопасности, обеспечивая новый уровень интеллектуального наблюдения.
Смотреть: Проект системы охранной сигнализации с Ultralytics YOLO11 Обнаружение объектов
Код
Настройка параметров сообщения
Примечание
Необходима генерация паролей для приложений
- Перейдите в раздел App Password Generator, укажите название приложения, например "Security Project", и получите 16-значный пароль. Скопируйте этот пароль и вставьте его в указанное поле для ввода пароля в соответствии с инструкциями.
password = ""
from_email = "" # must match the email used to generate the password
to_email = "" # receiver email
Создание сервера и аутентификация
import smtplib
server = smtplib.SMTP("smtp.gmail.com: 587")
server.starttls()
server.login(from_email, password)
Функция отправки электронной почты
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())
Обнаружение объектов и отправка оповещений
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()
Вызовите класс обнаружения объектов и выполните вывод
Вот и все! При выполнении кода вы получите одно уведомление на свой email, если обнаружите какой-либо объект. Уведомление отправляется сразу, а не многократно. Однако не стесняйтесь настраивать код в соответствии с требованиями вашего проекта.
Образец полученного электронного письма
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как Ultralytics YOLO11 повышает точность системы охранной сигнализации?
Ultralytics YOLO11 улучшает системы охранной сигнализации, обеспечивая высокоточное обнаружение объектов в режиме реального времени. Передовые алгоритмы значительно снижают количество ложных срабатываний, гарантируя, что система реагирует только на реальные угрозы. Эта система с повышенной надежностью может быть легко интегрирована в существующую инфраструктуру безопасности, повышая общее качество видеонаблюдения.
Можно ли интегрировать Ultralytics YOLO11 с существующей инфраструктурой безопасности?
Да, Ultralytics YOLO11 может быть легко интегрирована в существующую инфраструктуру безопасности. Система поддерживает различные режимы и обеспечивает гибкость настройки, позволяя вам расширить существующую систему с помощью передовых возможностей обнаружения объектов. Подробные инструкции по интеграции YOLO11 в ваши проекты можно найти в разделе "Интеграция".
Каковы требования к хранению данных для запуска Ultralytics YOLO11 ?
Для запуска Ultralytics YOLO11 на стандартной установке обычно требуется около 5 ГБ свободного дискового пространства. Сюда входит место для хранения модели YOLO11 и всех дополнительных зависимостей. Для облачных решений Ultralytics HUB предлагает эффективное управление проектами и работу с наборами данных, что позволяет оптимизировать потребности в хранении. Узнайте больше о тарифном плане Pro Plan с расширенными возможностями, включая увеличенное хранилище.
Чем Ultralytics YOLO11 отличается от других моделей обнаружения объектов, таких как Faster R-CNN или SSD?
Ultralytics YOLO11 обеспечивает преимущество перед такими моделями, как Faster R-CNN или SSD, благодаря возможностям обнаружения в реальном времени и более высокой точности. Его уникальная архитектура позволяет обрабатывать изображения гораздо быстрее без ущерба для точности, что делает его идеальным для чувствительных ко времени приложений, таких как системы охранной сигнализации. Для всестороннего сравнения моделей обнаружения объектов вы можете изучить наше руководство.
Как снизить частоту ложных срабатываний в системе безопасности, используя Ultralytics YOLO11 ?
Чтобы уменьшить количество ложных срабатываний, убедитесь, что модель Ultralytics YOLO11 обучена на разнообразных и хорошо проаннотированных наборах данных. Точная настройка гиперпараметров и регулярное обновление модели новыми данными могут значительно повысить точность обнаружения. Подробные методы настройки гиперпараметров можно найти в нашем руководстве по настройке гиперпараметров.