重点区域人员徘徊识别监测基于yolo5模型对画面中重要区域进行实时检测分析。首先使用yolov5m模型进行物体检测,筛选出行人,卡车和汽车。考虑到运行效 率和使用背景,只进行三个行人,一辆卡车和一辆汽车的徘徊判定。如果行人过多,就发出人员密集的提示信息。
使用deep_sort进行目标跟踪。在实现过程中,发现跟踪算法对视频中连续的物体移动跟踪效果很不错,但对物体(或者身体一部分)移动到视频外,会发生ID跳变,识别并不准确,需要使用行人重识别进行track_id的更正。
每50帧进行一次轨迹判断,计算物体移动的路程和位移,若路程和位移相差30,记为警告一次,如果发生警告2次,即发出警告提示(发出警报),并开始保存并绘画运动轨迹,每50帧修正一次运动轨迹。考虑到警告提示发出后,在边防背景下,会立刻安排人进行处理,如果没有响应,可能就会默认接受,因此警告提示会持续100帧,100帧后会自行消失。在整个徘徊检测过程中,五个物体是独立进行检测的,互不干扰
import os
from torch.utils.data import Dataset
from utils import *
from torchvision import transforms
transform = transforms.Compose([
transforms.ToTensor()
])
class MyDataset(Dataset):
def __init__(self, path):
self.path = path
self.name = os.listdir(os.path.join(path, 'notedata'))
def __len__(self):
return len(self.name)
def __getitem__(self, index):
segment_name = self.name[index] #XX.png
segment_path = os.path.join(self.path, 'notedata', segment_name)