Dự án hệ thống báo động an ninh sử dụng Ultralytics YOLO11
Dự án Hệ thống báo động an ninh sử dụng Ultralytics YOLO11 tích hợp các khả năng thị giác máy tính tiên tiến để tăng cường các biện pháp bảo mật. YOLO11, được phát triển bởi Ultralytics , cung cấp khả năng phát hiện đối tượng theo thời gian thực, cho phép hệ thống xác định và phản hồi kịp thời các mối đe dọa bảo mật tiềm ẩn. Dự án này mang lại một số lợi thế:
- Phát hiện thời gian thực: Hiệu quả của YOLO11 cho phép Hệ thống báo động an ninh phát hiện và ứng phó với các sự cố an ninh theo thời gian thực, giảm thiểu thời gian phản ứng.
- Độ chính xác : YOLO11 được biết đến với độ chính xác trong phát hiện đối tượng, giảm thiểu báo động giả và nâng cao độ tin cậy của hệ thống báo động an ninh.
- Khả năng tích hợp: Dự án có thể được tích hợp liền mạch với cơ sở hạ tầng an ninh hiện có, cung cấp một lớp giám sát thông minh được nâng cấp.
Xem: Dự án hệ thống báo động an ninh với Ultralytics YOLO11 Phát hiện đối tượng
Mã
Thiết lập các tham số của thư
Ghi
Tạo mật khẩu ứng dụng là cần thiết
- Điều hướng đến Trình tạo mật khẩu ứng dụng, chỉ định tên ứng dụng như "dự án bảo mật" và lấy mật khẩu gồm 16 chữ số. Sao chép mật khẩu này và dán nó vào trường mật khẩu được chỉ định theo hướng dẫn.
password = ""
from_email = "" # must match the email used to generate the password
to_email = "" # receiver email
Tạo và xác thực máy chủ
import smtplib
server = smtplib.SMTP("smtp.gmail.com: 587")
server.starttls()
server.login(from_email, password)
Chức năng gửi email
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())
Phát hiện đối tượng và người gửi cảnh báo
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()
Gọi lớp Object Detection và chạy Inference
Đó là nó! Khi bạn thực thi mã, bạn sẽ nhận được một thông báo duy nhất trên email của mình nếu phát hiện bất kỳ đối tượng nào. Thông báo được gửi ngay lập tức, không lặp đi lặp lại. Tuy nhiên, hãy thoải mái tùy chỉnh mã cho phù hợp với yêu cầu dự án của bạn.
Email nhận được mẫu
FAQ
Làm thế nào Ultralytics YOLO11 có cải thiện độ chính xác của hệ thống báo động an ninh không?
Ultralytics YOLO11 cải thiện hệ thống báo động an ninh bằng cách cung cấp khả năng phát hiện đối tượng theo thời gian thực, độ chính xác cao. Các thuật toán tiên tiến của nó làm giảm đáng kể các báo động giả, đảm bảo rằng hệ thống chỉ phản hồi các mối đe dọa thực sự. Độ tin cậy tăng lên này có thể được tích hợp liền mạch với cơ sở hạ tầng an ninh hiện có, nâng cao chất lượng giám sát tổng thể.
Tôi có thể tích hợp Ultralytics YOLO11 với cơ sở hạ tầng bảo mật hiện tại của tôi?
Đúng, Ultralytics YOLO11 có thể được tích hợp liền mạch với cơ sở hạ tầng bảo mật hiện tại của bạn. Hệ thống hỗ trợ nhiều chế độ khác nhau và cung cấp tính linh hoạt để tùy chỉnh, cho phép bạn nâng cao thiết lập hiện tại của mình với khả năng phát hiện đối tượng nâng cao. Để biết hướng dẫn chi tiết về cách tích hợp YOLO11 vào các dự án của bạn, hãy truy cập phần tích hợp .
Yêu cầu lưu trữ để chạy là gì? Ultralytics YOLO11 là gì?
Đang chạy Ultralytics YOLO11 trên thiết lập chuẩn thường yêu cầu khoảng 5GB dung lượng đĩa trống. Bao gồm dung lượng để lưu trữ mô hình YOLO11 và bất kỳ phụ thuộc bổ sung nào. Đối với các giải pháp dựa trên đám mây, Ultralytics HUB cung cấp khả năng quản lý dự án và xử lý tập dữ liệu hiệu quả, có thể tối ưu hóa nhu cầu lưu trữ. Tìm hiểu thêm về Pro Plan để biết các tính năng nâng cao bao gồm lưu trữ mở rộng.
Điều gì làm cho Ultralytics YOLO11 có khác biệt so với các mô hình phát hiện đối tượng khác như Faster R-CNN hoặc SSD không?
Ultralytics YOLO11 cung cấp lợi thế hơn các mô hình như Faster R-CNN hoặc SSD với khả năng phát hiện thời gian thực và độ chính xác cao hơn. Kiến trúc độc đáo của nó cho phép xử lý hình ảnh nhanh hơn nhiều mà không ảnh hưởng đến độ chính xác , khiến nó trở nên lý tưởng cho các ứng dụng nhạy cảm với thời gian như hệ thống báo động an ninh. Để so sánh toàn diện các mô hình phát hiện đối tượng, bạn có thể khám phá hướng dẫn của chúng tôi.
Làm thế nào tôi có thể giảm tần suất báo động giả trong hệ thống an ninh của mình bằng cách sử dụng Ultralytics YOLO11 là gì?
Để giảm thiểu các kết quả dương tính giả, hãy đảm bảo Ultralytics Mô hình YOLO11 được đào tạo đầy đủ với một tập dữ liệu đa dạng và được chú thích tốt. Việc tinh chỉnh siêu tham số và thường xuyên cập nhật mô hình bằng dữ liệu mới có thể cải thiện đáng kể độ chính xác phát hiện. Các kỹ thuật điều chỉnh siêu tham số chi tiết có thể được tìm thấy trong hướng dẫn điều chỉnh siêu tham số của chúng tôi.