使用 Ultralytics YOLO26 构建安全报警系统项目#
利用 Ultralytics YOLO26 构建的安全报警系统项目集成了先进的计算机视觉能力,以加强安全措施。由 Ultralytics 开发的 YOLO26 可实现实时目标检测,使系统能够及时识别并应对潜在的安全威胁。该项目具有多项优势:
- 实时检测:YOLO26 的高效性能使安全报警系统能够实时检测并响应安全事件,从而缩短响应时间。
- 准确率:YOLO26 以目标检测准确率高而闻名,可减少误报并提高安全报警系统的可靠性。
- 集成能力:该项目可以无缝集成到现有安全基础设施中,提供升级版的智能监控能力。
使用 YOLO26 发送安全警报#
SecurityAlarm 解决方案会跟踪视频流中的对象,并在检测数量达到 records 阈值时立即发送一封附有标注图像的邮件警报。使用应用专用密码验证 Gmail 账号,然后在视频源上运行该解决方案。
前往应用专用密码生成器,为应用命名,例如“security project”,然后获取一个 16 位密码。复制该密码,并粘贴到以下代码中的 password 字段。
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() # 关闭所有已打开的窗口运行代码后,只要检测到任何对象,你就会收到一封邮件通知。通知会立即发送,不会重复发送。你可以根据项目需求自定义代码。
收到的邮件示例#
SecurityAlarm 参数#
下面是 SecurityAlarm 参数表:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
records | int | 5 | 触发安全警报系统发送邮件所需的检测总数。 |
line_width | int | 2 | 解决方案绘制的框、关键点和计数的线条粗细。 |
verbose | bool | True | 启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。 |
SecurityAlarm 解决方案支持多种 track 参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。 |
iou | float | 0.7 | 设置用于筛除重叠检测结果的交并比 (IoU) 阈值。 |
classes | list | None | 按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。 |
imgsz | int or tuple | 640 | 目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。 |
max_det | int | 300 | 跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。 |
quantize | int or str | None | 推理精度:对于非 CPU 上运行的 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/unset (FP32) 进行选择;其他格式使用其模型文件和运行时所选的精度。此参数替代已弃用的 half 参数。 |
此外,还可以使用以下可视化设置:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
show | bool | False | 如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。 |
show_conf | bool | True | 在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。 |
工作原理#
安全警报系统使用对象跟踪监控视频流并检测潜在的安全威胁。当一帧中检测到的对象数量达到指定阈值(由 records 参数设置)时,系统会自动发送邮件通知,并附上显示检测对象的图像。
系统利用 SecurityAlarm 类提供的方法来:
- 处理帧并提取对象检测结果
- 在帧上标注检测对象周围的边界框
- 达到检测阈值时发送邮件通知
此实现非常适合家庭安防、零售监控以及其他需要及时通知检测对象的监控应用。
常见问题#
Ultralytics YOLO26 通过提供高精度实时对象检测,增强安全警报系统的性能。其先进算法能显著减少误报,确保系统仅对真实威胁做出响应。这种更高的可靠性可以无缝集成到现有安全基础设施中,从而提升整体监控质量。
可以,Ultralytics YOLO26 能无缝集成到现有安全基础设施中。系统支持多种模式,并提供灵活的自定义选项,让你能够借助先进的对象检测功能增强现有配置。有关在项目中集成 YOLO26 的详细说明,请参阅集成部分。
在标准配置下运行 Ultralytics YOLO26 通常需要约 5GB 的可用磁盘空间,用于存储 YOLO26 模型和其他依赖项。对于云端解决方案,Ultralytics Platform 可高效管理项目和数据集,从而优化存储需求。了解 Pro Plan 的更多信息,获取扩展存储等增强功能。