如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?

这篇具有很好参考价值的文章主要介绍了如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://github.com/mikel-brostrom/yolov8_tracking

项目名:Real-time multi-object tracking and segmentation using Yolov8

(1)它的识别和分割是YOLO8完成的。它的多目标追踪是由后面四种算法实现的(botsort,bytetrack,ocsort,strongsort)

(2)它这个是实时的Real-time,识别、跟踪、分割的速度很快

这个代码是是23年2月11号发布的

如果你想了解YOLOv8的模型细节和里面每个流程,可以阅读这篇博客https://blog.csdn.net/Albert233333/article/details/130044349

如果这篇博客对你有帮助,希望你 点赞、收藏、关注、评论,您的认可将是我创作下去最大的动力!

环境配置

torch要求1.7,我满足
要求安装ultralytics==8.0.20(但是这个是错的,你必须安装最新版本的ultralytics,否则会报错)
# 我这一边用的环境的名字是(py380tc170) 

# 下面这些包需要安装,否则无法运行
pip install psutil
pip install thop

特别提示,非常重要,一定要安装ultralytics最新版本(2023-02-23这个时间点,是'8.0.40'这个版本),否则会遇到下面这样的报错

"/yolov8_tracking/yolov8/ultralytics/nn/a utobackend.py", line 19, in <module>from ultralytics.yolo.utils.downloads import attempt_download_asset, is_url

ImportError: cannot import name 'attempt_download_asset' from 'ultralytics.yolo.utils.downloads' (/home/anaconda3/envs/py380tc170/lib/python3.8/site-packages/ultralytics/yolo/utils/ downloads.py)

以及这样的报错

/yolov8_tracking/yolov8/ultralytics/ yolo/data/build.py", line 12, in <module> from ultralytics.yolo.data.dataloaders.stream_loaders import ( LOADERS, LoadImages, LoadPilAndNumpy, LoadScreenshots,

ImportError: cannot import name 'LOADERS' from 'ultralytics.yolo.data.dataloaders.stream_loaders' (/home/anaconda3/envs/py380tc170/lib/python3.8/site-packages/ultralytics/yolo/data/dataloaders/ stream_loaders.py)

因此

pip install ultralytics==8.0.40

在tracking.py line359注释掉这个函数的执行

因为如果你不注释这一行。一旦你运行这个trackiung.py的代码,就会自动按照requirement.txt里面写好的这些东西逐一排查是否符合要求,不符合要求的会重新安装。比如这个ultralytics现在的版本是8.0.40,但是requirements.txt里面必须是8.0.20所以给你重装回了8.0.20,再次引发报错。

check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop'))

运行代码

作者这个默认的是用分割的YOLOv8模型,这个模型在在我这里报错。因此我换成了仅仅做识别的YOLOv8模型

这个地方,找模型文件

https://github.com/ultralytics/assets/releases

https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt

如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?
如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?

然后在tracking.py line316这个位置修改,将识别过程调用的模型,从“yolov8s-seg.pt”,更改为'yolov8n.pt

parser.add_argument('--yolo-weights', nargs='+', type=Path, default=WEIGHTS / 'yolov8n.pt', help='model.pt path(s)')

如果你不换成纯识别的模型,而是继续沿用 带分割的模型,会有下面这样的报错,说你矩阵维度不匹配

Traceback (most recent call last):
  File "track.py", line 371, in <module>
    main(opt)
  File "track.py", line 366, in main
    run(**vars(opt))
  File "/home/albert/anaconda3/envs/py380tc170/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 26, in decorate_context
    return func(*args, **kwargs)
  File "track.py", line 216, in run
    masks.append(process_mask(proto[i], det[:, 6:], det[:, :4], im.shape[2:], upsample=True))  # HWC
  File "/media/F:/FILES_OF_ALBERT/IT_paid_class/graduation_thesis/model_innov/yolov8_tracking/yolov8/ultralytics/yolo/utils/ops.py", line 595, in process_mask
    masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw)  # CHW
RuntimeError: mat1 dim 1 must match mat2 dim 0
terminate called without an active exception

tracking.py line 165,这句话,将最后一个参数去掉

# p = non_max_suppression(preds[0], conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det, nm=32)

# p = non_max_suppression(preds[0], conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)

如果你不去掉,就会报这样的错

  File "track.py", line 165, in run
    p = non_max_suppression(preds[0], conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det, nm=32)
TypeError: non_max_suppression() got an unexpected keyword argument 'nm'

运行代码,识别的过程,显示出来,tracking.py的 line355这样修改

# line355
# 原来的
# parser.add_argument('--show-vid', action='store_true', help='display tracking video results')
# 更改以后
parser.add_argument('--show-vid', default=True,action='store_true', help='display tracking video results')

把识别后的录像保存下来,tracking.py的 line367这样修改

这样修改以后,识别的录像保存在了这个位置“runs/track/exp8”,这个录像上有全部的识别框

# line367
# 修改前
# parser.add_argument('--save-vid', action='store_true', help='save video tracking results')
# 修改后
parser.add_argument('--save-vid', default=True,action='store_true', help='save video tracking results')

电脑摄像头识别

python track.py --source 0
如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?

图片识别+计数

python track.py --source ./val_data/bus.jpg
# 结果:val_data/bus.jpg: 640x480 3 persons, 1 bus, 11.0ms
# 数出了图中的人数,3个人,一辆车


python track.py --source ./val_data/15_persons.PNG
# 结果:PNG: 256x640 11 persons, 2 bicycles
# 12个人数出11个,(这是一个参数最少的模型,情有可原),之前的yolo5只数出7个人,比YOLOv5进步很大了

视频识别

python track.py --source ./val_data/Traffic.mp4

可以运行数出来的是每一帧图中汽车的数量,有三辆,有四辆,有两辆

如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?
3 cars, 9.7ms
4 cars, 9.3ms
(no detections), 7.8ms
1 car, 8.3ms

视频识别结果,在这里看./runs/track/exp文章来源地址https://www.toymoban.com/news/detail-430413.html

如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?

到了这里,关于如何运行代码mikel-brostrom/yolov8_tracking实现目标识别和跟踪?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手机上如何运行python代码,手机运行python程序图形

    大家好,本文将围绕手机上如何运行python代码展开说明,手机如何运行python代码是一个很多人都想弄明白的事情,想搞清楚手机运行python程序图形需要先了解以下几个事情。 一、QPython 3H 1.下载与安装 进入手机“应用市场”,搜索“QPython 3H”,单击“安装”。 2.安装之后在桌

    2024年02月08日
    浏览(53)
  • python代码编写规范有哪些,Python如何编写代码运行

    大家好,小编来为大家解答以下问题,编写高质量python代码的59个有效方法,python代码编写规范有哪些,今天让我们一起来看看吧! 大家好,本文将围绕python程序编程代码大全展开说明,python编程游戏代码是一个很多人都想弄明白的事情,想搞清楚python代码大全简单需要先了

    2024年01月19日
    浏览(50)
  • 如何在vscode里面快速运行html代码(包含如何在vscode里面编写html代码)

    读者手册(必读)_云边的快乐猫的博客-CSDN博客 前言: 1. 如何在 vscode 编写 html 代码在我的另一篇文章当中有详细教程,这是超链接。  2. 很多小伙伴编写了html代码后,在vscode里面右键找不到如何去运行代码,或者运行代码的方式很不方便。那么就要在vscode里面下载一个插

    2024年02月03日
    浏览(55)
  • 如何将写好的Python代码,封装运行?

    要把Python代码封装成可执行的程序可以通过以下步骤完成: 首先将代码保存为.py文件 然后在代码中添加适当的命令行参数解析器(如argparse),使得代码可以通过命令行接受输入参数 之后再在代码的开头添加#!/usr/bin/env python,这将允许脚本在Unix/Linux/Mac系统中以可执行文件的

    2024年02月08日
    浏览(46)
  • 如何控制Flink代码运行时控制日志级别

    在Flink程序中,可以通过设置日志级别来控制控制台输出的信息。要让控制台只打印结果信息,可以将日志级别设置为 ERROR 。这样,只有错误信息和 print() 方法输出的结果会显示在控制台上。 要设置日志级别,请在Flink项目的 resources 目录下创建一个名为 log4j.properties 的文件

    2024年02月06日
    浏览(32)
  • 如何在IDEA上运行Fess源代码

    说明 本文讲述的是如何将Fess源码在IDEA上运行起来,方便我们的研究 前提, 你已经在GitHub上下载了源码包 并且已经下载完了Maven的相关依赖 与Fess版本匹配的ES节点也已经启动了,并且做好了与Fess连接的适配 第三点可以参考我的另一篇博文elasticsearch节点需要做哪些工作才能

    2023年04月26日
    浏览(49)
  • 如何在Ubuntu系统里面运行python的代码

    在Ubuntu系统中,你可以通过以下几个步骤来运行Python代码: 打开终端。在Ubuntu系统中,你可以使用快捷键“Ctrl + Alt + T”来打开终端。 确认Python已经安装。在终端中输入以下命令: 如果你已经安装了Python,则会显示出Python的版本号。 编写Python代码。在终端中输入以下命令:

    2023年04月16日
    浏览(33)
  • 如何在Web浏览器中运行JavaScript代码

    为大家介绍如何在Web浏览器中运行JavaScript代码。 首先,让我们来了解一下JavaScript是什么。JavaScript是一种编程语言,它广泛用于Web开发中,可以让我们在网页上添加动态效果、交互性和动画等等。如果你想在Web浏览器中运行JavaScript代码,你需要先在浏览器中安装JavaScript引擎

    2024年02月16日
    浏览(39)
  • chatgpt赋能python:如何同时运行两个Python代码

    Python是一种广泛使用的高级编程语言,广泛应用于数据科学、人工智能、网络开发等领域。在学习和使用Python时,我们经常需要同时运行多个代码文件。本文将介绍如何使用Python同时运行两个代码文件。 简单的方法是使用终端运行Python脚本。我们可以打开两个终端,运行两个

    2024年02月12日
    浏览(48)
  • vs如何运行不安全的代码/不安全代码只会在使用 /unsafe 编译的情况下出现

    🔑 作者:@哈桑c(CSDN平台) 🐛 专栏:Bug解决记录 Visual Studio 报错: CS0227: 不安全代码只会在使用 /unsafe 编译的情况下出现。 在 Visual Studio 中右击报错的项目选择属性,找到生成里面的 允许使用“unsafe\\\"编译的代码 ,勾选即可。 图示步骤: 完成上述步骤之后,就可

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包