使用 Ultralytics YOLO26 的安防报警系统项目#
使用 Ultralytics YOLO26 的安防报警系统项目集成了先进的计算机视觉能力,以增强安全防护措施。Ultralytics 开发的 YOLO26 提供实时目标检测功能,使系统能够及时识别并响应潜在的安全威胁。该项目具有以下优势:
- **实时检测:**YOLO26 的高效性使安防报警系统能够实时检测并响应安全事件,从而缩短响应时间。
- **准确率:**YOLO26 以其目标检测准确率而闻名,可减少误报并提高安防报警系统的可靠性。
- **集成能力:**该项目可以无缝集成到现有的安全基础设施中,为其提供升级后的智能监控层。
使用 YOLO26 发送安全警报#
SecurityAlarm 解决方案会跟踪视频流中的对象,并在检测数量达到 records 阈值后,立即发送一封附带标注图像的电子邮件警报。使用应用专用密码验证 Gmail 账户,然后针对源运行该解决方案。
前往 App Password Generator,指定一个应用名称(例如“security project”),并获取一个 16 位密码。复制这个密码并将其粘贴到下方代码的 password 字段中。
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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" # the sender email address
password = "---- ---- ---- ----" # 16-digits password generated via: https://myaccount.google.com/apppasswords
to_email = "xyz@gmail.com" # the receiver email address
# Initialize security alarm object
securityalarm = solutions.SecurityAlarm(
show=True, # display the output
model="yolo26n.pt", # e.g., yolo26s.pt, yolo26m.pt
records=1, # total detections count to send an email
)
securityalarm.authenticate(from_email, password, to_email) # authenticate the email server
# Process video
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) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows运行代码后,如果检测到任何对象,你将收到一封电子邮件通知。通知会立即发送,不会重复发送。你可以根据项目需求自定义代码。
收到的电子邮件示例#
SecurityAlarm 参数#
下面是 SecurityAlarm 参数表:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
records | int | 5 | 触发安防报警系统发送电子邮件所需的检测总数。 |
line_width | int | 2 | 解决方案绘制的框、关键点和计数的线条粗细。 |
verbose | bool | True | 启用解决方案逐帧记录输入形状、类别计数和处理速度的日志。跟踪调用本身始终保持静默。 |
SecurityAlarm 解决方案支持多种 track 参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
tracker | str | 'botsort.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 | 推理精度:针对 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/不设置 (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。