yolov4+deepsort(yolo目标检测+自适应卡尔曼滤波追踪+毕业设计代码)

简介: yolov4+deepsort(yolo目标检测+自适应卡尔曼滤波追踪+毕业设计代码)

项目介绍


该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv4 目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和跟踪。

https://ucc.alicdn.com/images/user-upload-01/295e8a4980c74bf9bb4c67a8e5ec966a.gif


YOLOv4 是一种高效的目标检测算法,它基于深度卷积神经网络,可以在实时性要求比较高的场景下进行目标检测。DeepSORT 是一种基于卡尔曼滤波器和匈牙利算法的目标跟踪算法,可以将视频帧中的目标在时间序列中进行跟踪,并且可以自适应地调整卡尔曼滤波器的参数,以提高跟踪的精度和鲁棒性。


主要功能


视频目标检测和跟踪:该项目可以读取本地或者云端的视频文件,对视频帧中的目标进行检测和跟踪,并且可以将跟踪结果保存为视频文件或者输出为实时视频流。


目标检测和跟踪参数的调整:该项目提供了一些参数可以调整,包括目标检测的置信度阈值、目标跟踪的匹配阈值、卡尔曼滤波器的参数等等,用户可以根据实际场景进行调整,同时也进行了自适应卡尔曼滤波。


相机标定:该项目还提供了相机标定的工具,可以对相机进行标定,以提高目标检测和跟踪的精度。


多目标跟踪:该项目支持同时跟踪多个目标,可以通过目标 ID 进行区分和跟踪。


面向对象


该项目的实现比较简单和易于理解,适合初学者和学习者使用。同时,该项目的代码也是开源的,用户可以根据自己的需要进行修改和扩展。需要注意的是,该项目的使用需要一定的计算资源和算法实现能力,同时也需要一些深度学习和目标跟踪的基本知识。

在这里插入图片描述


YOLOv4-DeepSort项目实战


依赖项


  • Python 3.x
  • TensorFlow 2.x
  • OpenCV 4.x
  • NumPy
  • SciPy
  • Matplotlib


安装


克隆本项目:

git clone my_project.git 或者联系我获取压缩包------qq1309399183-------


安装依赖项:

pip install -r requirements.txt


  1. 下载 YOLOv4 / yolov4.weights权重文件:
  • 下载 yolov4.weights 文件。链接权重
  • yolov4.weights 文件保存在 data 目录下。


运行


运行 object_tracker.py 文件:

python object_tracker.py --video ./data/video/test.mp4 --output ./outputs/output.avi


image.png


  • --video 参数指定要处理的视频文件路径。
  • --output 参数指定要保存的输出视频文件路径。如果不指定该参数,则会将跟踪结果输出为实时视频流。


运行相机标定工具:

python tools/camera_calibration.py


该工具会自动读取 data/camera_calib/sample.mp4 视频文件,并进行相机标定。标定结果会保存在 data/camera_calib/calib.txt 文件中。


参数调整


可以通过修改 object_tracker.py 文件中的一些参数来调整目标检测和跟踪的效果。


  • 目标检测置信度阈值:confidence_threshold 参数,默认值为 0.5。
  • 目标跟踪匹配阈值:max_iou_distance 参数,默认值为 0.7。
  • 卡尔曼滤波器参数:kalman_filter 类中的 Q 和 R 矩阵。可以根据实际场景进行调整。


image.png



代码获取及结果


def save_tf():#------联系:qq1309399183----
  STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
  input_layer = tf.keras.layers.Input([FLAGS.input_size, FLAGS.input_size, 3])
  feature_maps = YOLO(input_layer, NUM_CLASS, FLAGS.model, FLAGS.tiny)
  bbox_tensors = []
  prob_tensors = []
  if FLAGS.tiny:
    for i, fm in enumerate(feature_maps):
      if i == 0:
        output_tensors = decode(fm, FLAGS.input_size // 16, NUM_CLASS, STRIDES, ANCHORS, i, XYSCALE, FLAGS.framework)
      else:
        output_tensors = decode(fm, FLAGS.input_size // 32, NUM_CLASS, STRIDES, ANCHORS, i, XYSCALE, FLAGS.framework)
      bbox_tensors.append(output_tensors[0])
      prob_tensors.append(output_tensors[1])
  else:
    for i, fm in enumerate(feature_maps):
      if i == 0:
        output_tensors = decode(fm, FLAGS.input_size // 8, NUM_CLASS, STRIDES, ANCHORS, i, XYSCALE, FLAGS.framework)
      elif i == 1:
        output_tensors = decode(fm, FLAGS.input_size // 16, NUM_CLASS, STRIDES, ANCHORS, i, XYSCALE, FLAGS.framework)
      else:
        output_tensors = decode(fm, FLAGS.input_size // 32, NUM_CLASS, STRIDES, ANCHORS, i, XYSCALE, FLAGS.framework)
      bbox_tensors.append(output_tensors[0])
      prob_tensors.append(output_tensors[1])
  pred_bbox = tf.concat(bbox_tensors, axis=1)
  pred_prob = tf.concat(prob_tensors, axis=1)
  if FLAGS.framework == 'tflite':
    pred = (pred_bbox, pred_prob)
  else:
    boxes, pred_conf = filter_boxes(pred_bbox, pred_prob, score_threshold=FLAGS.score_thres, input_shape=tf.constant([FLAGS.input_size, FLAGS.input_size]))
    pred = tf.concat([boxes, pred_conf], axis=-1)
  model = tf.keras.Model(input_layer, pred)
  utils.load_weights(model, FLAGS.weights, FLAGS.model, FLAGS.tiny)
  model.summary()
  model.save(FLAGS.output)
def main(_argv):
  save_tf()


在这里插入图片描述


相关文章
|
机器学习/深度学习 计算机视觉 网络架构
改进YOLOv8:添加CBAM注意力机制(涨点明显)
改进YOLOv8:添加CBAM注意力机制(涨点明显)
7597 1
|
消息中间件 负载均衡 流计算
gRPC ZeroMQ (ZMQ) D-Bus SOME/IP 通讯方式的比较
gRPC ZeroMQ (ZMQ) D-Bus SOME/IP 通讯方式的比较
855 3
|
机器学习/深度学习 算法 计算机视觉
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。
53363 0
|
数据采集 存储 监控
探索数据治理的实践路径:构建高效、合规的数据生态系统
在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一,它不仅驱动着业务决策,还塑造着企业的竞争优势。然而,随着数据量的爆炸性增长和来源的多样化,如何有效管理这些数据,确保其质量、安全性及合规性,成为了企业面临的重大挑战。数据治理作为一套指导数据管理和使用的框架,其重要性日益凸显。本文将探讨推动数据治理的实践路径,旨在帮助企业构建高效、合规的数据生态系统。
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
2739 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
机器学习/深度学习
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
868 0
|
机器学习/深度学习 监控 安全
火焰检测识别
火焰识别技术利用深度学习算法,实现在火灾监测、工业安全、智能家居等领域的自动化检测。通过卷积神经网络(CNN)等模型,该技术能有效识别火焰,提高响应速度和安全性。文章介绍了火焰识别的应用场景、技术挑战、实现框架及代码示例,帮助读者深入了解这一技术。
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
425 4
|
C++ Windows
第1个Qt项目:计算器
第1个Qt项目:计算器
265 1
第1个Qt项目:计算器
|
算法 安全 Java
深入解析ECC(椭圆曲线密码学)加解密算法
深入解析ECC(椭圆曲线密码学)加解密算法
深入解析ECC(椭圆曲线密码学)加解密算法