Crowd Distance Monitoring DeepSOCIAL Das Umfassendste Chinesische Dokument + Quellcode-Handbuch

Das Crowd-Distance-Monitoring-Projekt DeepSOCIAL, das von Mahdi Rezaei, einem Forscher am Institute of Transport Studies der University of Leeds in Großbritannien, als Open Source bereitgestellt wird, hat sich in letzter Zeit zu einer beliebten Online-Anwendung entwickelt.Online-Zugriff auf das Quellcode-Tutorial
DeepSOCIAL verwendet YOLOv4 zur Fußgängererkennung, verwendet dann SORT zur Zielverfolgung und verwendet monokulares Sehen (IPM) zur inversen perspektivischen Abbildung zur Entfernungsschätzung und wertet schließlich die Überwachung der Menschenmengenentfernung und die Risikobewertung aus.

Der Grund, warum DeepSOCIAL zu einem beliebten Tutorial geworden ist, liegt nicht nur an seiner Praktikabilität in der aktuellen Epidemie, sondern auch an seiner hervorragenden Wirkung.Die durchschnittliche Genauigkeit erreicht 99,8 % und die Echtzeitgeschwindigkeit beträgt 24,1 fps. Es kann in autonomen Fahrzeugen, zur Erkennung menschlichen Verhaltens, zur Anomalieerkennung, im Sport, bei der Analyse von Menschenmengen und in anderen Bereichen eingesetzt werden.

Fußgängererkennung: YOLO v4
Im DeepSOCIAL-Projekt wurde YOLOv4 zur Implementierung der Fußgängerzielerkennung ausgewählt. In dem Artikel vergleicht der Autor mehrere Methoden zur Zielerkennung:RCNN, schnelles RCNN, schnelleres RCNN, SSD, YOLO Im Datensatz PASCAL Visual Object Classes (VOC) und MS COCO Getestet in .
Wird verwendet, um die Erkennungsgenauigkeit und Geschwindigkeit bei der Zielerfassung zu messen:mAP (mittlere durchschnittliche Präzision) und FPS (Frames pro Sekunde)Führen Sie eine Bewertung durch.
Schließlich wurde YOLOv4 als Zielerkennungsmethode ausgewählt.


Fußgängerverfolgung: SORT
Für die Fußgängerverfolgung von DeepSOCIAL wurde der Simple Online and Real-time (SORT)-Algorithmus ausgewählt.

Die wichtigsten verwendetenDer Kalman-Filter wird mit dem ungarischen Algorithmus kombiniert, um das Problem der Bewegungsvorhersage und Datenassoziation zu lösen.
Schätzung der Fußgängerentfernung: IPM Inverse Perspective Mapping
Das DeepSOCIAL-Projekt verwendet monokulares Sehen, projiziert die dreidimensionale Weltszene jedoch mit einer einzelnen Kamera auf eine zweidimensionale perspektivische Bildebene, was leicht zu einer Verzerrung des Pixelabstands zwischen Objekten führt.

Im 3D-Raum ist der Mittelpunkt oder Referenzpunkt jedes Kästchens mit drei Parametern (x, y, z) verknüpft, während im von der Kamera empfangenen Bild der ursprüngliche 3D-Raum auf 2D (x, y) reduziert ist und der Tiefenparameter (z) nicht verfügbar ist.
Um einen kalibrierten IPM-Übergang (Inverse Perspective Mapping) anzuwenden, müssen Sie zunächst den perspektivischen Effekt entfernen, indem Sie den Tiefenparameter z = 0 setzen und eine Kamerakalibrierung durchführen. Sie müssen auch die Position, Höhe, das Sichtfeld usw. der Kamera kennen.
Projektbetrieb
1. Einführung von Abhängigkeiten
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. Kompilieren Sie 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. Verwenden der Python-Schnittstelle des Darknets
# 导入 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. Nutzen Sie SORT, um Echtzeit-Tracking-Ziele zu erreichen
!pip install filterpy
from sort import *
mot_tracker = Sort(max_age=25, min_hits=4, iou_threshold=0.3)
5. Eingabeeinstellungen
Input = "/openbayes/input/input1/OxfordTownCentreDataset.avi"
ReductionFactor = 2
calibration = [[180,162],[618,0],[552,540],[682,464]]
6. DeepSocial-Parametereinstellungen und Funktionseinführung
7. Denkprozess
8. Ergebnisse anzeigen
Fußgängerzielerkennung und ID-Zuweisung
Fußgängerortung & Distanzmessung
Heatmap für Menschenansammlungen
Der Code für 6&7 ist relativ lang.Bitte besuchen Sie das Original-Tutorial