DeepSort行人车辆识别系统(实现目标检测+跟踪+统计)

本文主要是介绍DeepSort行人车辆识别系统(实现目标检测+跟踪+统计),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、前言
  • 2、源项目实现功能
  • 3、运行环境
  • 4、如何运行
  • 5、运行结果
  • 6、遇到问题
  • 7、使用框架
  • 8、目标检测系列文章

1、前言

1、本文基于YOLOv5+DeepSort的行人车辆的检测,跟踪和计数。

2、该项目是基于github的黄老师傅,黄老师傅的项目输入视频后,直接当场利用cv2.imshow(),查看识别的结果, 无法当场保存检测完视频,而且无法在服务器上跑,本文实现保存视频的结果已经命令行修改视频。

2、源项目实现功能

  1. 实现了 出/入 分别计数。
  2. 显示检测类别。
  3. 默认是 南/北 方向检测,若要检测不同位置和方向,可在 main.py 文件第13行和21行,修改2个polygon的点。
  4. 默认检测类别:行人、自行车、小汽车、摩托车、公交车、卡车。
  5. 检测类别可在 detector.py 文件第60行修改。

本项目实现功能

  1. 保存识别视频
  2. 提供命令行修改视频

3、运行环境

  1. python 3.6+,pip 20+
  2. pip install -r requirements.txt

4、如何运行

  1. 下载代码

    git clone https://github.com/wisdom-zhe/yolov5-deepsort-counting.git
    

    因此repo包含weights及mp4等文件,若 git clone 速度慢,直接点击这里下载zip文件

  2. 进入目录

    cd yolov5-deepsort-counting
    
  3. 创建 python 虚拟环境

    python3 -m venv venv
    
  4. 激活虚拟环境

    source venv/bin/activate
    
  5. 升级pip

    python -m pip install --upgrade pip
    
  6. 安装pytorch

    根据你的操作系统、安装工具以及CUDA版本,在 https://pytorch.org/get-started/locally/ 找到对应的安装命令。我的环境是 ubuntu 18.04.5、pip、CUDA 11.0。

    $ pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
    
  7. 安装软件包

    $ pip install -r requirements.txt
    
  8. 在 detect-car.py 文件中第262行,设置要检测的视频文件路径,默认为default= ‘./video/test.mp4’

    140MB的测试视频可以在这里下载:https://pan.baidu.com/s/1qHNGGpX1QD6zHyNTqWvg1w 提取码: 8ufq

    parser.add_argument('--input_video_path', type=str, default='./video/test02.mp4',help='source video path.')
    
  9. 运行程序

    # 本项目运行方式
    python detect-car.py
    # 黄老师傅运行方式
    python main.py
    

5、运行结果

在这里插入图片描述

6、遇到问题

问题:视频并未出现两条撞线。
原因:在图片拼接时候,大小不一致。
即cv2.add图像运算方式需要输出的图像–必须与输入的图像具有相同的大小、类型和通道数。即两张图片大小一致。

import numpy as np
import cv2# cv2.add图像运算方式需要输出的图像–必须与输入的图像具有相同的大小、类型和通道数。即两张图片大小一致。
# 查看大小:image.shape
# 背景图
mask_image_temp = np.zeros((1080, 1920), dtype = np.uint8)# 初始化2个撞线polygon
list_pts_blue = [[204, 305], [227, 431], [605, 522], [1101, 464], [1900, 601], [1902, 495], [1125, 379], [604, 437],[299, 375], [267, 289]]
ndarray_pts_blue = np.array(list_pts_blue, np.int32)
polygon_blue_value_1 = cv2.fillPoly(mask_image_temp, [ndarray_pts_blue], color = 1)
polygon_blue_value_1 = polygon_blue_value_1[:, :, np.newaxis]
polygon_mask_blue_and_yellow = cv2.resize(polygon_blue_value_1, (960, 540))# 蓝 色盘 b,g,r
blue_color_plate = [255, 0, 0]
# 蓝 polygon图片
blue_image = np.array(polygon_blue_value_1 * blue_color_plate, np.uint8)
blue_image=cv2.resize(blue_image,(960,540))# 输出背景图片形状
print(f'blue_image_shape:{blue_image.shape}')
# 读取图片
output_image_frame = cv2.imread('./5.jpg')
print(f'output_image_frame_shape:{output_image_frame.shape}')
output_image_frame=cv2.resize(output_image_frame,(960,540))
print(f'output_image_frame_960_540:{output_image_frame.shape}')output_image_frame = cv2.add(output_image_frame, blue_image)text_draw='down---up'
draw_text_postion = (int(960 * 0.01), int(540 * 0.05))
font_draw_number = cv2.FONT_HERSHEY_SIMPLEX
output_image_frame = cv2.putText(img = output_image_frame, text = text_draw,org = draw_text_postion,fontFace = font_draw_number,fontScale = 1, color = (255, 255, 255), thickness = 2)# 显示图像
cv2.imshow('img', output_image_frame)
# cv2.imshow('img', blue_image)
cv2.waitKey(0)
cv2.destroyAllWindows()'''
输出:
blue_image_shape:(540, 960, 3)
output_image_frame_shape:(480, 640, 3)
output_image_frame_960_540:(540, 960, 3)
'''

7、使用框架

  • https://github.com/Sharpiless/Yolov5-deepsort-inference
  • https://github.com/ultralytics/yolov5/
  • https://github.com/ZQPei/deep_sort_pytorch
  • 黄老师傅

8、目标检测系列文章

  1. YOLOv5s网络模型讲解(一看就会)
  2. 生活垃圾数据集(YOLO版)
  3. YOLOv5如何训练自己的数据集
  4. 双向控制舵机(树莓派版)
  5. 树莓派部署YOLOv5目标检测(详细篇)
  6. YOLO_Tracking 实践 (环境搭建 & 案例测试)
  7. 目标检测:数据集划分 & XML数据集转YOLO标签
  8. YOLOv5改进–轻量化YOLOv5s模型

这篇关于DeepSort行人车辆识别系统(实现目标检测+跟踪+统计)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882261

相关文章

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

基于深度学习的轮廓检测

基于深度学习的轮廓检测 轮廓检测是计算机视觉中的一项关键任务,旨在识别图像中物体的边界或轮廓。传统的轮廓检测方法如Canny边缘检测和Sobel算子依赖于梯度计算和阈值分割。而基于深度学习的方法通过训练神经网络来自动学习图像中的轮廓特征,能够在复杂背景和噪声条件下实现更精确和鲁棒的检测效果。 深度学习在轮廓检测中的优势 自动特征提取:深度学习模型能够自动从数据中学习多层次的特征表示,而不需要

自动驾驶---Perception之Lidar点云3D检测

1 背景         Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人等领域发挥越来越重要的作用。         目前全球范围内纯视觉方案的车企主要包括特斯拉和集越,在达到同等性能的前提下,纯视觉方

统计是一门艺术(点估计)

1 点估计 1.1 点估计理解(point estimate) 总体,样本属于参数空间 一般未知,要由样本对作一个估计,或对作一个估计,这种估计称为点估计 通常用记为的一个点估计。 1.2 点估计的方法 (1)矩估计: 就是用样本矩来代替总体矩,当然有好有坏 设为总体的一个简单随机样本,, 分别称, 为k阶样本原点矩和k阶样本中心矩. 记 为什么能用矩估计?

YOLOv9摄像头或视频实时检测

1、下载yolov9的项目 地址:YOLOv9 2、使用下面代码进行检测 import torchimport cv2from models.experimental import attempt_loadfrom utils.general import non_max_suppression, scale_boxesfrom utils.plots import plot_o

基于动力学的六自由度机器人阻抗恒力跟踪控制

1.整个代码的控制流程图如下: 2.正逆运动学计算 略 3.动力学模型 采用拉格朗日法计算机械臂的动力学模型,其输入的是机械臂的关节角度、角速度和角加速度;其中M、C、G本别是计算的惯性力、科式力和重力项,相关部分如下: 4.RBF神经网络自适应参数调节 采用RBF自适应调节阻抗控制器参数,末端每个方向单独进行参数的调整,其中rbf的输入的是力和位置,输出的是阻抗控制器的参数,rb

Java内存泄漏检测和分析介绍

在Java中,内存泄漏检测和分析是一个重要的任务,可以通过以下几种方式进行:   1. 使用VisualVM VisualVM是一个可视化工具,可以监控、分析Java应用程序的内存消耗。它可以显示堆内存、垃圾收集、线程等信息,并且可以对内存泄漏进行分析。 2. 使用Eclipse Memory Analyzer Eclipse Memory Analyzer(MAT)是一个强大的工具,可

金蝶盘点机PDA进行工序汇报扫描,工时工资统计使用说明书

使用盘点机PDA扫描商品条码(序列号)进行工序汇报,自动生成电脑里的【工序汇报单】,自动计算工时,工资。这样就不用去电脑上人工手工一行行录单,大大提高工作效率和数据准确性。 操作时,只需要商品条码(序列号)即可实现快速,准确的工序汇报。从而防止电脑进行工序汇报耗时,费事,不准确的问题。 注意商品条码规则:产品代码+钢管长度+炉号+管号+合同号+序列号 下面我们看下【工序汇报单】的操作步骤

基于CDMA的多用户水下无线光通信(3)——解相关多用户检测

继续上一篇博文,本文将介绍基于解相关的多用户检测算法。解相关检测器的优点是因不需要估计各个用户的接收信号幅值而具有抗远近效应的能力。常规的解相关检测器有运算量大和实时性差的缺点,本文针对异步CDMA的MAI主要来自干扰用户的相邻三个比特周期的特点,给出了基于相邻三个匹配滤波器输出数据的截断解相关检测算法。(我不知道怎么改公式里的字体,有的字母在公式中重复使用了,请根据上下文判断字母含义) 1