使用安全警报系统项目Ultralytics YOLO11
利用Ultralytics YOLO11 的安全警报系统项目集成了先进的计算机视觉功能,以加强安全措施。YOLO11该项目由Ultralytics 开发,提供实时物体检测功能,使系统能够识别潜在的安全威胁并迅速做出反应。该项目具有以下几个优点:
- 实时检测: YOLO11 的高效性使安全警报系统能够实时检测和响应安全事件,最大限度地缩短响应时间。
- 准确性: YOLO11 以其物体检测的准确性著称,可减少误报,提高安全警报系统的可靠性。
- 集成能力:该项目可与现有的安全基础设施无缝集成,提供一个升级的智能监控层。
观看: 安全警报系统项目Ultralytics YOLO11 物体检测
代码
设置报文参数
备注
必须生成应用程序密码
- 导航至应用程序密码生成器,指定一个应用程序名称,如 "安全项目",然后获取一个 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()
调用对象检测类并运行推理
就是这样!执行代码后,如果检测到任何对象,您的电子邮件就会收到一条通知。通知会立即发送,不会重复发送。不过,您也可以根据自己的项目要求定制代码。
收到的电子邮件样本
常见问题
Ultralytics YOLO11 如何提高安全警报系统的准确性?
Ultralytics YOLO11 通过提供高精确度的实时目标检测,增强了安防报警系统的功能。其先进的算法大大减少了误报,确保系统只对真正的威胁做出反应。这种更高的可靠性可与现有安防基础设施无缝集成,提升整体监控质量。
能否将Ultralytics YOLO11 与现有安全基础设施集成?
是的,Ultralytics YOLO11 可以与您现有的安全基础设施无缝集成。该系统支持多种模式,可灵活定制,让您可以利用先进的目标检测功能增强现有设置。有关在项目中集成YOLO11 的详细说明,请访问集成部分。
运行Ultralytics YOLO11 有哪些存储要求?
在标准设置上运行Ultralytics YOLO11 通常需要约 5GB 的可用磁盘空间。这包括用于存储YOLO11 模型和任何附加依赖项的空间。对于基于云的解决方案,Ultralytics HUB 可提供高效的项目管理和数据集处理,从而优化存储需求。了解有关专业计划的更多信息,以获得包括扩展存储在内的增强功能。
Ultralytics YOLO11 与 Faster R-CNN 或 SSD 等其他物体检测模型有何不同?
Ultralytics YOLO11 与 Faster R-CNN 或 SSD 等型号相比,它具有实时检测能力和更高的精度。其独特的架构使其能够更快地处理图像,同时又不影响精度,非常适合安防报警系统等时间敏感型应用。有关物体检测模型的全面比较,请参阅我们的指南。
如何使用Ultralytics YOLO11 减少安全系统中的误报频率?
为减少误报,请确保您的Ultralytics YOLO11 模型经过了充分的训练,数据集种类繁多且标注齐全。微调超参数并定期用新数据更新模型可以显著提高检测准确率。详细的超参数调整技术可参阅我们的超参数调整指南。