HyperAI초신경

군중 거리 모니터링 DeepSOCIAL 가장 완벽한 중국어 논문 + 소스 코드 가이드

4년 전
정보
Rollroll Yuan
特色图像

영국 리즈 대학교 교통연구소의 연구원인 마흐디 레자에이가 오픈 소스로 공개한 DeepSOCIAL 군중 거리 모니터링 프로젝트는 최근 인기 있는 온라인 애플리케이션이 되었습니다.온라인 소스 코드 튜토리얼 접속 


DeepSOCIAL은 YOLOv4를 사용하여 보행자 감지를 달성한 다음 SORT를 사용하여 대상 추적을 달성하고 단안 시야 IPM 역 원근 매핑을 사용하여 거리 추정을 달성하고 마지막으로 군중 거리 모니터링 및 위험 평가를 평가합니다.

DeepSOCIAL 구현 결과

DeepSOCIAL이 인기 있는 튜토리얼이 된 이유는 현재의 전염병 상황에서의 실용성 때문만은 아니고, 그 효과가 뛰어나기 때문이기도 합니다.평균 정확도는 99.8 %에 이르고 실시간 속도는 24.1fps입니다. 자율주행차, 인간 행동 인식, 이상 감지, 스포츠, 군중 분석 등 다양한 분야에 활용될 수 있습니다.

타겟 탐지 단계의 전체 모델 구조

보행자 감지: YOLO v4

DeepSOCIAL 프로젝트에서는 보행자 타겟 감지를 구현하기 위해 YOLOv4가 선택되었습니다. 이 논문에서 저자는 여러 가지 타겟 탐지 방법을 비교했습니다.RCNN, 빠른 RCNN, 더 빠른 RCNN, SSD, YOLO 데이터 세트에서 PASCAL Visual Object Classes(VOC) 및 MS COCO .에서 테스트되었습니다.


타겟 탐지 시 인식 정확도와 속도를 측정하는 데 사용됩니다.mAP(평균 정밀도) 및 FPS(초당 프레임)평가를 실시합니다.

마지막으로 YOLOv4가 타겟 검출 방법으로 선택되었습니다.

주류 객체 감지 방법의 mAP 테스트 결과
주류 타겟 탐지 방식의 FPS 테스트 결과

보행자 추적: 정렬

DeepSOCIAL의 보행자 추적에서는 SORT(Simple Online and Real-time) 알고리즘이 선택되었습니다.

인원 감지, ID 할당, 추적 및 이동 궤적 표시 효과

주로 사용되는 것들칼만 필터는 헝가리 알고리즘과 결합되어 동작 예측 및 데이터 연결 문제를 해결합니다.

보행자 거리 추정: IPM 역원근법 매핑

DeepSOCIAL 프로젝트는 단안 시야를 사용하지만, 단일 카메라를 사용하여 3차원 세계 장면을 2차원 원근법 이미지 평면에 투사하므로 객체 간 픽셀 거리가 쉽게 왜곡됩니다.

IPM을 적용하면 2D 픽셀 포인트(u, v)가 해당 3D 세계 장면 좌표 포인트(Xw, Yw, Zw)에 매핑됩니다.

3D 공간에서 각 상자의 중심 또는 참조점은 세 개의 매개변수(x, y, z)와 연관되는 반면, 카메라에서 수신한 이미지에서는 원래 3D 공간이 2D(x, y)로 축소되고 깊이 매개변수(z)를 사용할 수 없습니다.


보정된 IPM(Inverse Perspective Mapping) 전환을 적용하려면 먼저 깊이 매개변수 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의 Python 인터페이스 사용

# 导入 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. 결과 표시


보행자 타겟 감지 및 ID 할당

보행자 추적 및 거리 측정
군중 모이는 열 지도
6&7의 코드는 비교적 깁니다.원본 튜토리얼을 방문하세요