使用 Ultralytics YOLO11 的安全警报系统项目
安全警报系统项目采用 Ultralytics YOLO11,集成了先进的计算机视觉功能,以加强安全措施。YOLO11 由 Ultralytics 开发,提供实时目标检测,使系统能够迅速识别并响应潜在的安全威胁。该项目具有以下几个优点:
- 实时检测: YOLO11 的效率使安全警报系统能够实时检测并响应安全事件,从而最大限度地缩短响应时间。
- 准确性: YOLO11 以其在目标检测方面的准确性而闻名,可减少误报并提高安全警报系统的可靠性。
- 集成能力: 该项目可以与现有的安全基础设施无缝集成,从而提供升级的智能监控层。
观看: 使用 Ultralytics YOLO11 的安全警报系统 + 解决方案 目标检测
注意
App 密码生成是必需的
- 导航至 App 密码生成器,指定一个应用名称,例如“安全项目”,并获取一个 16 位密码。复制此密码并将其粘贴到指定的
password
代码中的字段如下。
使用 Ultralytics YOLO 的安全警报系统
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="yolo11n.pt", # i.e. yolo11s.pt, yolo11m.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 |
触发带有安全警报系统的电子邮件的总检测计数。 |
字段 SecurityAlarm
解决方案支持各种 track
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
指定要使用的跟踪算法,例如: bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。 |
iou |
float |
0.5 |
设置用于过滤重叠检测的 Intersection over Union (IoU) 阈值。 |
classes |
list |
None |
按类别索引过滤结果。例如, classes=[0, 2, 3] 仅跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪对象的可视化输出。 |
device |
str |
None |
指定用于推理的设备(例如, cpu , cuda:0 或 0 )。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。 |
此外,以下可视化设置可用:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
show |
bool |
False |
可视化参数: True ,则在窗口中显示带注释的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。 |
line_width |
None or int |
None |
指定边界框的线条宽度。 如果 None ,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。 |
show_conf |
bool |
True |
在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。 |
show_labels |
bool |
True |
在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。 |
工作原理
安全警报系统使用 对象跟踪 以监控视频源并检测潜在的安全威胁。当系统检测到超过指定阈值的对象时(由 records
参数),它会自动发送一封带有图像附件的电子邮件通知,显示检测到的对象。
该系统利用 SecurityAlarm 类,该类提供以下方法:
- 处理帧并提取对象检测结果
- 使用边界框注释检测到的对象周围的帧
- 当超过检测阈值时发送电子邮件通知
此实现非常适合家庭安全、零售监控和其他监控应用,在这些应用中,立即通知检测到的对象至关重要。
常见问题
Ultralytics YOLO11 如何提高安全警报系统的准确性?
Ultralytics YOLO11 通过提供高精度、实时的对象检测来增强安全警报系统。其先进的算法显著减少了误报,确保系统仅响应真正的威胁。这种更高的可靠性可以与现有的安全基础设施无缝集成,从而提升整体监控质量。
是否可以将 Ultralytics YOLO11 与我现有的安全基础设施集成?
是的,Ultralytics YOLO11 可以与您现有的安全基础设施无缝集成。该系统支持各种模式,并为定制提供了灵活性,使您可以通过高级对象检测功能增强现有设置。有关在您的项目中集成 YOLO11 的详细说明,请访问 集成部分。
运行 Ultralytics YOLO11 需要哪些存储要求?
在标准设置上运行 Ultralytics YOLO11 通常需要大约 5GB 的可用磁盘空间。这包括存储 YOLO11 模型和任何其他依赖项的空间。对于基于云的解决方案,Ultralytics HUB 提供高效的项目管理和数据集处理,从而可以优化存储需求。了解有关专业计划的更多信息,以获取包括扩展存储在内的增强功能。
与其他目标检测模型(如 Faster R-CNN 或 SSD)相比,Ultralytics YOLO11 有何不同?
Ultralytics YOLO11 凭借其实时检测能力和更高的准确性,优于 Faster R-CNN 或 SSD 等模型。其独特的架构使其能够更快地处理图像,而不会影响 精度,使其成为安全警报系统等时间敏感型应用的理想选择。有关对象检测模型的全面比较,您可以浏览我们的 指南。
如何使用 Ultralytics YOLO11 降低安全系统中误报的频率?
为了减少误报,请确保您的 Ultralytics YOLO11 模型经过充分训练,并使用多样化且注释良好的数据集。微调超参数并定期使用新数据更新模型可以显着提高检测准确性。详细的 超参数调整 技术可以在我们的 超参数调整指南 中找到。