基于yolov8目标跟踪+数量统计(源码)

最近项目中需要有一个高效的目标检测工具及统计各个标签通过视频中的数量,首先高效的目标检测工具当然首选是最新的yolov8,然后统计数量这个也好办,不就是目标跟踪加上一个变量来存储目标跟踪的id不就可以了吗?然而是我把问题想简单了,这个需求中需要统计不同类别标签各自的数量。最开始想不到解决方法,于是面向cdsn编程,然而,找了一圈没有找到相关的方法思路,甚至都没有找到与yolov8改进相关的文章,毕竟yolov8是新面世开源的,得!自己想呗。

最后想到一个最简单的解决方法,在目标跟踪模块增加一个2*n(n代表标签的数量)的二维数组,列标存储是哪个类别,数组的第一行存储目标跟踪得到该类别的id数,第二行存储该类数量。如此简单,直接上代码:

在这个函数中,加上数组totol_num

 接着在循环

for d in reversed(det):

中的

if self.args.save or self.args.save_crop or self.args.show:  # Add bbox to image

加入

if d.id.item() > totol_num[0][c]:   # c是类别的下标,判断这个目标是不是已经统计过了
     totol_num[0][c] = d.id.item()
     totol_num[1][c] = totol_num[1][c] + 1

接着在

magic function中增加

self.totol_num = []
   for i in range(2):
       self.totol_num.append([])
       for j in range(80):
            self.totol_num[i].append(0)

用于初始化二维数组

然后在202行调用predict.py的write_results函数中修改变量

最后在

totol_num = (predictor.totol_num).copy()
for i in range(80):
    if totol_num[1][int(i)] != 0:
    print('class: ' + str(predictor.model.names[i]) + '  num: ' + str(totol_num[1][int(i)]))

 最后是随便新建一个main函数,我们就可以快乐的跑代码啦

from ultralytics import YOLO
model = YOLO(“yolov8x.pt”)
model.track(source=”test.mp4”, tracker=”botsort.yaml”, save=True)

最后是跑出来的效果:

这是显示的内容(每一帧图片后都会显示)

 不过我用的是官方的训练参数,所以应对我们具体的场景可能识别成功率不算太高,另外还有的问题就是这个验证的速度太慢,达不到实时性的要求,用2080ti都能跑出这么拉跨的速度......

一个大二的学生,正在学习深度学习,觉得我的文章有用请关注哦~~~~

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
基于YOLOv8的各种瓶子识别检测系统源码(部署教程+训练好的模型+各项评估指标曲线).zip 平均准确率:0.95 类别:bottle 【资源介绍】 1、ultralytics-main ultralytics-main为YOLOv8源代码,里面涵盖基于yolov8分类、目标检测额、姿态估计、图像分割四部分代码,我们使用的是detect部分,也就是目标检测代码 2、搭建环境 安装anaconda 和 pycharm windows系统、mac系统、Linux系统都适配 在anaconda中新建一个新的envs虚拟空间(可以参考博客来),命令窗口执行:conda create -n YOLOv8 python==3.8 创建完YOLOv8-GUI虚拟空间后,命令窗口执行:source activate YOLOv8 激活虚拟空间 然后就在YOLOv8虚拟空间内安装requirements.txt中的所有安装包,命令窗口执行:pip install -r requirements.txt 使用清华源安装更快 3、训练模型过程 进入到\ultralytics-main\ultralytics\yolo\v8\detect\文件夹下,datasets即为我们需要准备好的数据集,训练其他模型同理。 data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自行车检测模型时创建,训练其他模型,可自行创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238行,修改为data = cfg.data or './bicycle.yaml' # or yolo.ClassificationDataset("mnist") 237行修改自己使用的预训练模型 若自己有显卡,修改239行,如我有四张显卡,即改成args = dict(model=model, data=data, device=”0,1,2,3“) 以上配置完成后运行train.py开始训练模型,训练完毕后会在runs/detect/文件夹下生成train*文件夹,里面包含模型和评估指标等 4、推理测试 训练好模型,打开predict.py,修改87行,model = cfg.model or 'yolov8n.pt',把yolov8n.pt换成我们刚才训练完生成的模型路径(在\ultralytics-main\ultralytics\yolo\v8\detect\runs\detect文件夹下),待测试的图片或者视频存放于ultralytics\ultralytics\assets文件夹, 运行predict.py即可,检测结果会在runs/detect/train文件夹下生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值