Surveillance De La Distance Entre Les Foules DeepSOCIAL Le Guide Chinois Le Plus Complet Sur Les Documents Et Les Codes Sources

Le projet de surveillance de la distance entre les foules DeepSOCIAL, open source par Mahdi Rezaei, chercheur à l'Institut d'études des transports de l'Université de Leeds au Royaume-Uni, est devenu une application en ligne populaire récemment.Accès au didacticiel en ligne sur le code source
DeepSOCIAL utilise YOLOv4 pour réaliser la détection des piétons, puis utilise SORT pour réaliser le suivi de la cible, et utilise la cartographie de perspective inverse IPM à vision monoculaire pour réaliser l'estimation de la distance, et enfin évalue la surveillance de la distance de la foule et l'évaluation des risques.

La raison pour laquelle DeepSOCIAL est devenu un tutoriel populaire n'est pas seulement en raison de sa grande praticité dans l'épidémie actuelle, mais aussi en raison de son excellent effet.La précision moyenne atteint 99,8 % et la vitesse en temps réel est de 24,1 ips. Il peut être utilisé dans les véhicules autonomes, la reconnaissance du comportement humain, la détection d'anomalies, les sports, l'analyse de foule et d'autres domaines.

Détection des piétons : YOLO v4
Dans le cadre du projet DeepSOCIAL, YOLOv4 a été sélectionné pour mettre en œuvre la détection de cibles piétonnes. Dans l’article, l’auteur a comparé plusieurs méthodes de détection de cibles :RCNN, RCNN rapide, RCNN plus rapide, SSD, YOLO Dans l'ensemble de données Classes d'objets visuels PASCAL (VOC) et MS COCO Testé en .
Utilisé pour mesurer la précision et la vitesse de reconnaissance dans la détection de cibles :mAP (précision moyenne) et FPS (images par seconde)Effectuer une évaluation.
Finalement, YOLOv4 a été sélectionné comme méthode de détection de cible.


Suivi des piétons : SORT
Dans le suivi des piétons de DeepSOCIAL, l'algorithme Simple Online and Real-time (SORT) a été sélectionné.

Les principaux utilisésLe filtre de Kalman est combiné à l'algorithme hongrois pour résoudre le problème de la prédiction de mouvement et de l'association de données.
Estimation de la distance piétonne : cartographie en perspective inverse IPM
Le projet DeepSOCIAL utilise la vision monoculaire, mais utilise une seule caméra pour projeter la scène du monde en trois dimensions sur un plan d'image en perspective bidimensionnel, ce qui conduit facilement à une distorsion de la distance des pixels entre les objets.

Dans l'espace 3D, le centre ou le point de référence de chaque boîte est associé à trois paramètres (x, y, z), tandis que dans l'image reçue de la caméra, l'espace 3D d'origine est réduit à 2D (x, y) et le paramètre de profondeur (z) n'est pas disponible.
Afin d'appliquer une transition IPM (Inverse Perspective Mapping) calibrée, vous devez d'abord supprimer l'effet de perspective en définissant le paramètre de profondeur z = 0 et effectuer l'étalonnage de la caméra. Vous devez également connaître la position de la caméra, sa hauteur, son champ de vision, etc.
Opération du projet
1. Présentation des dépendances
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. Compiler 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. Utilisation de l'interface Python de 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. Utilisez SORT pour atteindre vos objectifs de suivi en temps réel
!pip install filterpy
from sort import *
mot_tracker = Sort(max_age=25, min_hits=4, iou_threshold=0.3)
5. Paramètres d'entrée
Input = "/openbayes/input/input1/OxfordTownCentreDataset.avi"
ReductionFactor = 2
calibration = [[180,162],[618,0],[552,540],[682,464]]
6. Présentation des paramètres et des fonctions de DeepSocial
7. Processus de raisonnement
8. Afficher les résultats
Détection de cibles piétonnes et attribution d'identifiants
Suivi des piétons et mesure de la distance
Carte thermique des rassemblements de foule
Le code pour 6 et 7 est relativement long.Veuillez visiter le tutoriel original