Ultralytics YOLO27:
Get Started

使用 Ultralytics YOLO26 构建安全报警系统项目#

AI-powered security alarm system with object detection

利用 Ultralytics YOLO26 构建的安全报警系统项目集成了先进的计算机视觉能力,以加强安全措施。由 Ultralytics 开发的 YOLO26 可实现实时目标检测,使系统能够及时识别并应对潜在的安全威胁。该项目具有多项优势:

  • 实时检测:YOLO26 的高效性能使安全报警系统能够实时检测并响应安全事件,从而缩短响应时间。
  • 准确率:YOLO26 以目标检测准确率高而闻名,可减少误报并提高安全报警系统的可靠性。
  • 集成能力:该项目可以无缝集成到现有安全基础设施中,提供升级版的智能监控能力。


观看: 使用 Ultralytics YOLO26 和 Solutions 构建安防报警系统 目标检测

使用 YOLO26 发送安全警报#

SecurityAlarm 解决方案会跟踪视频流中的对象,并在检测数量达到 records 阈值时立即发送一封附有标注图像的邮件警报。使用应用专用密码验证 Gmail 账号,然后在视频源上运行该解决方案。

需要应用专用密码

前往应用专用密码生成器,为应用命名,例如“security project”,然后获取一个 16 位密码。复制该密码,并粘贴到以下代码中的 password 字段。

使用 Ultralytics YOLO 构建安全报警系统
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 视频写入器
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("security_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

from_email = "abc@gmail.com"  # 发件人邮箱地址
password = "---- ---- ---- ----"  # 通过以下网址生成的 16 位应用专用密码:https://myaccount.google.com/apppasswords
to_email = "xyz@gmail.com"  # 收件人邮箱地址

# 初始化安全报警对象
securityalarm = solutions.SecurityAlarm(
    show=True,  # 显示输出
    model="yolo26n.pt",  # 例如:yolo26s.pt、yolo26m.pt
    records=1,  # 发送邮件的检测总数
)

securityalarm.authenticate(from_email, password, to_email)  # 验证邮件服务器

# 处理视频
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = securityalarm(im0)

    # print(results)  # 访问输出

    video_writer.write(results.plot_im)  # 写入处理后的帧。

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # 关闭所有已打开的窗口

运行代码后,只要检测到任何对象,你就会收到一封邮件通知。通知会立即发送,不会重复发送。你可以根据项目需求自定义代码。

收到的邮件示例#

Security alert email notification example

SecurityAlarm 参数#

下面是 SecurityAlarm 参数表:

参数类型默认值说明
modelstrNoneUltralytics YOLO 模型文件的路径。
recordsint5触发安全警报系统发送邮件所需的检测总数。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。

SecurityAlarm 解决方案支持多种 track 参数:

参数类型默认值说明
trackerstr'tracktrack.yaml'指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。
ioufloat0.7设置用于筛除重叠检测结果的交并比 (IoU) 阈值。
classeslistNone按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。
devicestrNone指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。
imgszint or tuple640目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。
max_detint300跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。
quantizeint or strNone推理精度:对于非 CPU 上运行的 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/unset (FP32) 进行选择;其他格式使用其模型文件和运行时所选的精度。此参数替代已弃用的 half 参数。

此外,还可以使用以下可视化设置:

参数类型默认值说明
showboolFalse如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。
show_confboolTrue在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。

工作原理#

安全警报系统使用对象跟踪监控视频流并检测潜在的安全威胁。当一帧中检测到的对象数量达到指定阈值(由 records 参数设置)时,系统会自动发送邮件通知,并附上显示检测对象的图像。

系统利用 SecurityAlarm 类提供的方法来:

  1. 处理帧并提取对象检测结果
  2. 在帧上标注检测对象周围的边界框
  3. 达到检测阈值时发送邮件通知

此实现非常适合家庭安防、零售监控以及其他需要及时通知检测对象的监控应用。

常见问题#

  • Ultralytics YOLO26 通过提供高精度实时对象检测,增强安全警报系统的性能。其先进算法能显著减少误报,确保系统仅对真实威胁做出响应。这种更高的可靠性可以无缝集成到现有安全基础设施中,从而提升整体监控质量。

  • 可以,Ultralytics YOLO26 能无缝集成到现有安全基础设施中。系统支持多种模式,并提供灵活的自定义选项,让你能够借助先进的对象检测功能增强现有配置。有关在项目中集成 YOLO26 的详细说明,请参阅集成部分。

  • 在标准配置下运行 Ultralytics YOLO26 通常需要约 5GB 的可用磁盘空间,用于存储 YOLO26 模型和其他依赖项。对于云端解决方案,Ultralytics Platform 可高效管理项目和数据集,从而优化存储需求。了解 Pro Plan 的更多信息,获取扩展存储等增强功能。

  • 凭借实时检测能力和更高的准确性,Ultralytics YOLO26 比 Faster R-CNN 或 SSD 等模型更具优势。其独特架构能以更快的速度处理图像,同时不影响精确率,因此非常适合安全警报系统等对时效性要求高的应用。若要全面比较对象检测模型,可以参阅我们的指南。

  • 要减少误报,请确保使用多样且标注完善的数据集充分训练 Ultralytics YOLO26 模型。微调超参数并定期使用新数据更新模型,可以显著提高检测准确性。你可以在我们的超参数调优指南中找到详细的超参数调优技巧。

评论