HyperAI

مراقبة مسافة الحشود DeepSOCIAL الدليل الأكثر اكتمالاً للورقة الصينية + دليل الكود المصدري

منذ 4 أعوام
معلومة
Rollroll Yuan
特色图像

أصبح مشروع مراقبة المسافة بين الحشود DeepSOCIAL، والذي أنشأه مهدي رضائي، الباحث في معهد دراسات النقل بجامعة ليدز في المملكة المتحدة، مفتوح المصدر، تطبيقًا شائعًا عبر الإنترنت مؤخرًا.الوصول إلى البرنامج التعليمي لمصدر الكود عبر الإنترنت 


يستخدم DeepSOCIAL YOLOv4 لتحقيق اكتشاف المشاة، ثم يستخدم SORT لتحقيق تتبع الهدف، ويستخدم رسم المنظور العكسي أحادي العين IPM لتحقيق تقدير المسافة، وأخيرًا يقيم مراقبة مسافة الحشود وتقييم المخاطر.

نتائج تنفيذ DeepSOCIAL

السبب وراء أن DeepSOCIAL أصبح برنامجًا تعليميًا شائعًا ليس فقط بسبب عمليته في الوباء الحالي، ولكن أيضًا بسبب تأثيره الممتاز.يصل متوسط الدقة إلى 99.8 % وسرعة الوقت الحقيقي هي 24.1 إطارًا في الثانية. يمكن استخدامه في المركبات ذاتية القيادة، والتعرف على السلوك البشري، واكتشاف الشذوذ، والرياضة، وتحليل الحشود وغيرها من المجالات.

الهيكل النموذجي العام لمرحلة اكتشاف الهدف

اكتشاف المشاة: YOLO v4

في مشروع DeepSOCIAL، تم اختيار YOLOv4 لتنفيذ اكتشاف هدف المشاة. في هذه الورقة، قام المؤلف بمقارنة العديد من طرق الكشف عن الهدف:RCNN، RCNN سريع، RCNN أسرع، SSD، YOLO في مجموعة البيانات فئات الكائنات المرئية في PASCAL (VOC) وMS COCO تم اختباره في .


يستخدم لقياس دقة التعرف وسرعته في اكتشاف الهدف:متوسط الدقة المتوسطة (mAP) ومعدل الإطارات في الثانية (FPS)إجراء تقييم.

وأخيرًا، تم اختيار YOLOv4 كطريقة للكشف عن الهدف.

نتائج اختبار mAP لطرق الكشف عن الكائنات السائدة
نتائج اختبار FPS لطرق الكشف عن الأهداف السائدة

تتبع المشاة: فرز

في تتبع المشاة في DeepSOCIAL، تم اختيار خوارزمية Simple Online and Real-time (SORT).

تأثيرات الكشف عن الأفراد وتعيين الهوية والتتبع وعرض مسار الحركة

أهمها المستخدمةيتم دمج مرشح كالمان مع الخوارزمية المجرية لحل مشكلة التنبؤ بالحركة وربط البيانات.

تقدير مسافة المشاة: رسم خرائط المنظور العكسي IPM

يستخدم مشروع DeepSOCIAL الرؤية أحادية العين، لكنه يستخدم كاميرا واحدة لإسقاط مشهد العالم ثلاثي الأبعاد على مستوى صورة منظور ثنائي الأبعاد، مما يؤدي بسهولة إلى تشويه مسافة البكسل بين الكائنات.

من خلال تطبيق IPM، سيتم تعيين نقطة البكسل ثنائية الأبعاد (u، v) إلى نقطة إحداثيات المشهد العالمي ثلاثي الأبعاد المقابلة (Xw، Yw، Zw)

في الفضاء ثلاثي الأبعاد، يرتبط مركز أو نقطة مرجعية لكل صندوق بثلاثة معلمات (x،y،z)، بينما في الصورة المستلمة من الكاميرا، يتم تقليص الفضاء ثلاثي الأبعاد الأصلي إلى ثنائي الأبعاد (x،y)، ومعلمة العمق (z) غير متوفرة.


لتطبيق انتقال IPM (تعيين المنظور العكسي) المعاير، يجب عليك أولاً إزالة تأثير المنظور عن طريق تعيين معلمة العمق z = 0 وإجراء معايرة الكاميرا. يجب عليك أيضًا معرفة موضع الكاميرا وارتفاعها وحقل الرؤية وما إلى ذلك.

تشغيل المشروع

1. تقديم التبعيات

from IPython.display import display, Javascript, Image
from base64 import b64decode, b64encode
import os
import cv2
import numpy as np
import PIL
import io
import html
import time
import matplotlib.pyplot as plt
%matplotlib inline

2. تجميع YOLOv4

%cd darknet !sed -i 's/OPENCV=0/OPENCV=1/' Makefile!sed -i 's/GPU=0/GPU=1/' Makefile!sed -i 's/CUDNN=0/CUDNN=1/' Makefile!sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile!sed -i 's/LIBSO=0/LIBSO=1/' Makefile

3. استخدام واجهة بايثون في Darknet

# 导入 Darknet 函数来执行对象检测
from darknet2 import *
​
# 载入 YOLOv4 架构
network, class_names, class_colors = load_network("cfg/yolov4.cfg", "cfg/coco.data", "/openbayes/input/input0/DeepSocial.weights")
width = network_width(network)
height = network_height(network)
​
# 在图像上运行 Darknet helper 函数
def darknet_helper(img, width, height):
  darknet_image = make_image(width, height, 3)
  img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  img_resized = cv2.resize(img_rgb, (width, height),
                              interpolation=cv2.INTER_LINEAR)
​
  # 获取图像比例,将边界框转换为适当的尺寸
  img_height, img_width, _ = img.shape
  width_ratio = img_width/width
  height_ratio = img_height/height
​
  # 运行 Darknet 模型
  copy_image_from_bytes(darknet_image, img_resized.tobytes())
  detections = detect_image(network, class_names, darknet_image)
  free_image(darknet_image)
  return detections, width_ratio, height_ratio

4. استخدم SORT لتحقيق أهداف التتبع في الوقت الفعلي

!pip install filterpyfrom sort import *mot_tracker    = Sort(max_age=25, min_hits=4, iou_threshold=0.3)

5. إعدادات الإدخال

Input            = "/openbayes/input/input1/OxfordTownCentreDataset.avi"
ReductionFactor  = 2
calibration      = [[180,162],[618,0],[552,540],[682,464]]

6. إعدادات معلمات DeepSocial ومقدمة عن الوظيفة

7. عملية التفكير

8. عرض النتائج


تحديد هوية المشاة وتحديد أهدافهم

تتبع المشاة وقياس المسافة
خريطة حرارية لتجمعات الحشود
يعتبر الكود الخاص بـ 6 و 7 طويلًا نسبيًا.يرجى زيارة البرنامج التعليمي الأصلي