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 tiên tiến của công nghệ thị giác máy tính để 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 cung cấp một số lợi thế:
- Phát hiện thời gian thực: YOLO11 Hiệu quả của Hệ thống báo động an ninh cho phép 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.
- Sự 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 lớp giám sát thông minh nâng cấp.
Đồng hồ: Dự án hệ thống báo động an ninh với Ultralytics YOLO11 Phát hiện đối tượng
Mã số
Thiết lập các thông số của tin nhắn
Ghi chú
Tạo mật khẩu ứng dụng là cần thiết
- Điều hướng đến App Password Generator , chỉ định tên ứng dụng như "security project" và lấy mật khẩu gồm 16 chữ số. Sao chép mật khẩu này và dá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à 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 Phát hiện đối tượng và chạy suy luận
Vậy là xong! 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 phải nhiều lần. Tuy nhiên, hãy thoải mái tùy chỉnh mã để phù hợp với yêu cầu của dự án.
Mẫu Email Đã Nhận
CÂU HỎI THƯỜNG GẶP
Làm thế nào Ultralytics YOLO11 cải thiện độ chính xác của hệ thống báo động an ninh?
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ể 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 bằng các khả năng phát hiện đối tượng tiên tiến. Để biết hướng dẫn chi tiết về cách tích hợp YOLO11 trong 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 ?
Đang chạy Ultralytics YOLO11 trên một thiết lập tiêu chuẩn thường yêu cầu khoảng 5GB dung lượng đĩa trống. Điều này bao gồm dung lượng để lưu trữ YOLO11 mô hình và bất kỳ sự 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 khác với các mô hình phát hiện đối tượng khác như Faster R-CNN hoặc SSD?
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 ?
Để giảm thiểu các kết quả dương tính giả, hãy đảm bảo Ultralytics YOLO11 mô hình đượ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.