مشروع نظام إنذار أمني باستخدام Ultralytics YOLO26#
يدمج مشروع نظام الإنذار الأمني الذي يستخدم Ultralytics YOLO26 إمكانات الرؤية الحاسوبية المتقدمة لتعزيز التدابير الأمنية. يوفّر YOLO26، الذي طوّرته Ultralytics، اكتشاف الأجسام في الوقت الفعلي، مما يتيح للنظام تحديد التهديدات الأمنية المحتملة والاستجابة لها بسرعة. يقدّم هذا المشروع عدة مزايا:
- الاكتشاف في الوقت الفعلي: تُمكّن كفاءة 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 | دقة الاستدلال: 16 (FP16) أو 32/غير محدد (FP32) لنموذجي PyTorch وTorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ومحيط تشغيلها. يحل محل علامة 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 إدارة فعالة للمشاريع ومعالجة مجموعات البيانات، مما قد يحسّن احتياجات التخزين. تعرّف على المزيد حول الخطة الاحترافية للاستفادة من ميزات محسّنة، بما في ذلك مساحة تخزين موسّعة.
يتفوّق Ultralytics YOLO26 على نماذج مثل Faster R-CNN أو SSD بفضل إمكانات الاكتشاف في الوقت الفعلي ودقته الأعلى. وتتيح بنيته الفريدة معالجة الصور بسرعة أكبر بكثير دون المساومة على الإحكام، مما يجعله مثاليًا للتطبيقات الحساسة للوقت مثل أنظمة الإنذار الأمني. ولإجراء مقارنة شاملة لنماذج اكتشاف الأجسام، يمكنك الاطلاع على دليلنا.
لتقليل الإيجابيات الكاذبة، تأكد من تدريب نموذج Ultralytics YOLO26 تدريبًا كافيًا باستخدام مجموعة بيانات متنوعة ومشروحة جيدًا. ويمكن أن يؤدي ضبط المعلمات الفائقة وتحـديث النموذج بانتظام باستخدام بيانات جديدة إلى تحسين دقة الاكتشاف بدرجة كبيرة. يمكنك العثور على تقنيات مفصلة لـضبط المعلمات الفائقة في دليل ضبط المعلمات الفائقة.