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

现推出专栏项目:从图像处理(去雾/去雨)/目标检测/目标跟踪/单目测距/到人体姿态识别等视觉感知项目

--------------------更多视觉和自动驾驶项目请见--------------------------->>>>>>:

新手小白编程的Python人工智能之路_阿利同学的博客-CSDN博客

自动驾驶_阿利同学的博客-CSDN博客

# YOLOv4-DeepSort

本项目基于 YOLOv4 和 DeepSORT 实现了目标检测和跟踪,可以用于实现视频中的目标检测和跟踪。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加图片注释,不超过 140 字(可选)

## 功能

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

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

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

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

## 依赖项

- Python 3.x

- TensorFlow 2.x

- OpenCV 4.x

- NumPy

- SciPy

- Matplotlib

## 安装

\1. 克隆本项目:

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

\2. 安装依赖项:

   pip install -r requirements.txt

\3. 下载 YOLOv4 权重文件:

- 从 YOLOv4 官方仓库

下载 **yolov4.weights** 文件。

- yolov4.weights 文件保存在 data 目录下。

img

添加图片注释,不超过 140 字(可选)

## 代码复现

\1. 运行 object_tracker.py 文件:

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

​ - --video 参数指定要处理的视频文件路径。

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

\2. 运行相机标定工具:

   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 类中的 QR 矩阵。可以根据实际场景进行调整。

#代码获取和结果

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()

img

S.model, FLAGS.tiny)
model.summary()
model.save(FLAGS.output)

def main(_argv):
save_tf()


[外链图片转存中...(img-a4j2etht-1730724428159)]





添加图片注释,不超过 140 字(可选)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值