Ultralytics YOLO11是一款集成了高级计算机视觉功能的实时目标检测系统,它能够提高安全监控的效率和准确性。该系统能够快速识别和响应潜在的安全威胁,从而最小化响应时间。YOLO11 以其在目标检测中的准确性而闻名,减少了误报,提高了安全报警系统的可靠性。此外,该项目能够无缝集成到现有的安全基础设施中,为智能监控提供了升级的层次。
YOLO11 的高效性能使得安全报警系统能够实时检测和响应安全事件,最大限度地减少了响应时间。这种实时检测能力对于需要快速反应的安全场景至关重要,例如在监控摄像头捕捉到可疑行为时,系统可以立即发出警报。
YOLO11 在目标检测方面的准确性是其主要优势之一。通过减少误报,它提高了安全报警系统的可靠性。这意味着系统只会对真正的威胁做出反应,从而避免了不必要的安全措施,如误报导致的资源浪费。
该项目可以与现有的安全基础设施无缝集成,提供智能监控的升级层。这意味着用户可以利用现有的设备和系统,通过集成 YOLO11 来增强其监控能力,而无需进行大规模的硬件升级或更换。
在检测到目标时,系统可以自动发送电子邮件通知。这需要生成一个应用密码,并在发送邮件的函数中使用。以下是一个简单的 Python 代码示例,展示了如何设置邮件发送功能:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
def send_email(to_email, from_email, object_detected=1):
""“发送电子邮件通知,指示检测到的目标数量;默认为1个目标。”""
message = MIMEMultipart()
message["From"] = from_email
message["To"] = to_email
message["Subject"] = "安全警报"
message_body = f"警报 - {object_detected} 个目标已被检测到!!"
message.attach(MIMEText(message_body, "plain"))
server = smtplib.SMTP("smtp.gmail.com: 587")
server.starttls()
server.login(from_email, password)
server.sendmail(from_email, to_email, message.as_string())
以下是一个使用 Ultralytics YOLO11 进行对象检测并发送警报的 Python 类示例。该类初始化时需要指定摄像头索引,并在检测到目标时发送电子邮件。
import cv2
import torch
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
class ObjectDetection:
def __init__(self, capture_index):
""“使用给定的摄像头索引初始化 ObjectDetection 实例。”""
self.capture_index = capture_index
self.email_sent = False
self.model = YOLO("yolo11n.pt")
self.annotator = None
self.start_time = 0
self.end_time = 0
self.device = "cuda" if torch.cuda.is_available() else "cpu"
def predict(self, im0):
""“使用 YOLO 模型对输入图像 `im0` 进行预测。”""
results = self.model(im0)
return results
def display_fps(self, im0):
""“通过计算并在黑色矩形上叠加白色文本来显示图像 `im0` 上的 FPS。”""
self.end_time = 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):
""“在给定检测结果的图像上绘制边界框;返回注释过的图像和类 ID。”""
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):
""“从摄像头流中运行对象检测,绘制并显示结果。”""
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.time()
ret, im0 = cap.read()
assert ret
results = self.predict(im0)
im0, class_ids = self.plot_bboxes(results, im0)
if len(class_ids) > 0:
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()
要运行对象检测,只需创建 ObjectDetection 类的实例并调用它。以下是如何执行的示例:
detector = ObjectDetection(capture_index=0)
detector()
执行上述代码后,如果检测到任何对象,将收到一封电子邮件通知。通知会立即发送,不会重复。当然,可以根据项目需求自定义代码。
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 等模型。其独特的架构允许它在不牺牲精度的情况下更快地处理图像,使其非常适合安全报警系统等时间敏感的应用。有关目标检测模型的全面比较,可以探索。