基于yolov5的目标追踪(非yolov5+deepsort版)(代码片段)

荣仔!最靓的仔! 荣仔!最靓的仔!     2023-02-05     444

关键词:

目录

1 效果演示

2 实现细节

2.1 获取预测目标框坐标位置信息

2.2 计算两框的 IoU

2.3 实现视频画面暂停播放

2.4 实现在暂停视频画面后对目标框选

2.5 OpenCV画线、画框、画点等

3 源码地址


1 效果演示

基于yolov5的目标跟踪(非yolov5+deepsort版)

:目标跟踪,全网都用的是 。仅用  可以实现吗?可以。该视频效果实现的是手动暂停正在播放的视频,在画面中对待跟踪目标进行矩形框选,再让视频播放时即可对目标进行跟踪(包括目标框定位和轨迹划线等) 

2 实现细节

2.1 获取预测目标框坐标位置信息

# 前向推理
pred = model(img, augment=False)[0]

# NMS去除多余的框
pred = non_max_suppression(pred, conf_thres, iou_thres, agnostic=False)

# 开始预测
for i, det in enumerate(pred):
    if det is not None and len(det):
        # 将框从img大小重新缩放为im0大小
        det[:, :4] = scale_coords(img.shape[2:], det[:, :4], showimg.shape).round()

        for *xyxy, conf, cls in reversed(det):
            str_xyxy = (torch.tensor(xyxy).tolist())
            print('获得的目标框位置信息:', str_xyxy)

2.2 计算两框的 IoU

# 第一个矩形框面积
parea = (pxmax - pxmin) * (pymax - pymin)
# 第二个矩形框面积
garea = (gxmax - gxmin) * (gymax - gymin)
# 相交处矩形框四角位置坐标
xmin = max(pxmin, gxmin)
ymin = max(pymin, gymin)
xmax = min(pxmax, gxmax)
ymax = min(pymax, gymax)
# 相交处矩形框长和宽
w = xmax - xmin
h = ymax - ymin
# 若没有交集,则IoU值为0
if w < 0 or h < 0:
    print('IoU值为:0')
# 否则进行IoU值的运算,并将结果返回输出
area = w * h
print('IoU值为:', area / (parea + garea - area))

2.3 实现视频画面暂停播放

import cv2

capture = cv2.VideoCapture(0)
while True:
    ret, frame = capture.read()
    cv2.imshow('Video', frame)
    k = cv2.waitKey(1)
    if k == 32:           # 按下空格键即可无限次实现暂停/播放画面效果
        cv2.waitKey(0)

2.4 实现在暂停视频画面后对目标框选

import cv2

# 获取鼠标位置
def draw_circle(event, x, y, flags, param):
    global xmin, ymin, xmax, ymax
    if event == cv2.EVENT_LBUTTONDOWN:
        print(x, y)
        xmin, ymin = x, y
    elif event == cv2.EVENT_LBUTTONUP:
        print(x, y)
        xmax, ymax = x, y

xmin, ymin, xmax, ymax = 0, 0, 0, 0
cv2.namedWindow('img')
cv2.setMouseCallback('img', draw_circle)

capture = cv2.VideoCapture(0)
while True:
    ret, frame = capture.read()
    cv2.imshow('Video', frame)
    k = cv2.waitKey(1)
    if k == 32:        # 按下空格暂停,画框后再按下空格,目标框即可出现
        cv2.imshow('img', frame)
        frame_rect = frame.copy()
        cv2.rectangle(frame_rect, (xmin, ymin), (xmax, ymax), (0, 255, 0), 1)
        cv2.imshow('img', frame_rect)
        cv2.waitKey(0)

2.5 OpenCV画线、画框、画点等

画圆/点 

cv2.circle(image, center_coordinates, radius, color, thickness)
  • image:它是要在其上绘制圆的图像。
  • center_coordinates:它是圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
  • radius:它是圆的半径。
  • color:它是要绘制的圆的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
  • thickness:它是圆边界线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。

画框

cv2.rectangle(image, start_point, end_point, color, thickness)
  • image:它是要在其上绘制矩形的图像。
  • start_point:它是矩形的起始坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
  • end_point:它是矩形的结束坐标。坐标表示为两个值的元组,即(X坐标值ÿ坐标值)。
  • color:它是要绘制的矩形的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
  • thickness:它是矩形边框线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。 

画线

cv2.line(image, start_point, end_point, color, thickness)
  • image:它是要在其上绘制线段的图像。
  • start_point:它是线段的起始坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
  • end_point:它是线段的结束坐标。坐标表示为两个值的元组,即(X坐标值ÿ坐标值)。
  • color:它是要绘制的线段的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
  • thickness:它是设定线段的粗细像素。

3 源码地址

https://github.com/zhao302014/Classic_model_examples/tree/main/2021_Yolov5_CountAndTrackhttps://github.com/zhao302014/Classic_model_examples/tree/main/2021_Yolov5_CountAndTrack


 END 

yolov5+gsconv:基于yolov5gsconv得小目标检测算法训练

目标检测是计算机视觉中一项艰巨的下游任务。对于车载边缘计算平台,大模型很难达到实时检测的要求。而且,由大量深度可分离卷积层构建的轻量级模型无法达到足够的准确性。因此本文引入了一种新方法GSConv来减轻模型的... 查看详情

yolov5详细解读(代码片段)

YOLOV5检测算法详解学习前言本文主要是对基于深度学习的目标检测算法进行细节解读,以YOLOV5为例;基于深度学习的目标检测整体流程基于深度学习的目标检测主要包括训练和测试两个部分。训练阶段训练的目的是利用... 查看详情

基于yolov5的水下海洋目标检测

...海洋资源开发、海洋生物学研究等领域。本文提出了一种基于YOLOv5的水下海洋目标检测方法,使用数据增强方法进行了大量实验,并与其他方法进行了对比,实现了在检测各种不同的海洋环境和水下目标中都取得较高... 查看详情

视频实时行为检测——基于yolov5+deepsort+slowfast算法(代码片段)

文章目录前言一、核心功能设计二、核心实现步骤1.yolov5实现目标检测2.deepsort实现目标跟踪3.slowfast动作识别三、核心代码解析1.参数2.主函数3.将结果保存成视频总结前言前段时间打算做一个目标行为检测的项目,翻阅了大量... 查看详情

视频实时行为检测——基于yolov5+deepsort+slowfast算法(代码片段)

文章目录前言一、核心功能设计二、核心实现步骤1.yolov5实现目标检测2.deepsort实现目标跟踪3.slowfast动作识别三、核心代码解析1.参数2.主函数3.将结果保存成视频总结前言前段时间打算做一个目标行为检测的项目,翻阅了大量... 查看详情

yolov5目标检测

前言YOLOv5官方发布的代码中,检测网络共有四个版本,依次为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。其中YOLOv5s是“深度”和“特征图宽度”均最小的网络,另外三种可以认为是在其基础上,进行了加深、加宽。看一下YOLOv5各个版本,在C... 查看详情

深度学习目标检测:yolov5实现红绿灯检测(含红绿灯数据集+训练代码)(代码片段)

...练代码)1.前言本篇博客,我们将手把手教你搭建一个基于YOLOv5的红绿灯目标检测项目。目前,基于YOLOv5s的红绿灯检测精度平均值mAP_0.5=0.93919,mAP_0.5:0.95=0.63967,基本满足业务的性能需求。另外&#x 查看详情

深度学习目标检测:yolov5实现红绿灯检测(含红绿灯数据集+训练代码)(代码片段)

...练代码)1.前言本篇博客,我们将手把手教你搭建一个基于YOLOv5的红绿灯目标检测项目。目前,基于YOLOv5s的红绿灯检测精度平均值mAP_0.5=0.93919,mAP_0.5:0.95=0.63967,基本满足业务的性能需求。另外&#x 查看详情

基于yolov5的多应用实现《obj-detection》正式开源

...xff1a;https://github.com/linjie98/obj-detection前言《obj-detection》是基于yolov5实现了多版本应用问题解决方案,包含社交距离、网页端实现、浏览器端摄像头目标跟踪。github地址:https://github.com/linjie98/obj-detection一、简介yolov5_distince... 查看详情

基于yolov5的多应用实现《obj-detection》正式开源

...xff1a;https://github.com/linjie98/obj-detection前言《obj-detection》是基于yolov5实现了多版本应用问题解决方案,包含社交距离、网页端实现、浏览器端摄像头目标跟踪。github地址:https://github.com/linjie98/obj-detection一、简介yolov5_distince... 查看详情

yolov5目标检测(代码片段)

前言YOLOv5官方发布的代码中,检测网络共有四个版本,依次为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。其中YOLOv5s是“深度”和“特征图宽度”均最小的网络,另外三种可以认为是在其基础上,进行了加深、加宽。看一下YOLOv... 查看详情

python基于融合spd-conv改进yolov5与原生yolov5模型实践路面裂痕裂缝检测

...一定程度提升模型的检测效果,今天正好有时间就想基于SPD融合yolov5s模型来开发路面裂痕裂缝检测模型,同时与原生的yolov5s模型进行对比分析,首先看下效果图。接下来看下数据情况。标注文件如下:原生yolov5s... 查看详情

基于yolov5的手势识别系统(含手势识别数据集+训练代码)(代码片段)

基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)目录基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)1.前言2.手势识别的方法(1)基于多目标检测的手势识别方法(2)基于手部检测+手势分类... 查看详情

基于yolov5的手势识别系统(含手势识别数据集+训练代码)(代码片段)

基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)目录基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)1.前言2.手势识别的方法(1)基于多目标检测的手势识别方法(2)基于手部检测+手势分类... 查看详情

基于yolov5的手势识别系统(含手势识别数据集+训练代码)(代码片段)

基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)目录基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)1.前言2.手势识别的方法(1)基于多目标检测的手势识别方法(2)基于手部检测+手势分类... 查看详情

目标检测yolov5:模型构建解析(代码片段)

...在看一些目标检测的最新论文和代码,大多数都是在YOLOv5的基础上进行魔改。改的最多的基本是原版本的网络结构,这篇博文就从源码角度来解析YOLOv5中,模型是如何构建出来的。本文使用的是YOLOv5-5.0版本。模型的... 查看详情

用yolov5+deepsort,打造实时多目标跟踪模型

作者:神经三羊来源:HyperAI超神经内容概要目标跟踪作为一个非常有前景的研究方向,常常因为场景复杂导致目标跟丢的情况发生。本文按照跟踪目标数量的差异,分别介绍了单目标跟踪及多目标跟踪。关键词&#x... 查看详情

睿智的目标检测56——pytorch搭建yolov5目标检测平台(代码片段)

睿智的目标检测56——Pytorch搭建YoloV5目标检测平台学习前言源码下载YoloV5改进的部分(不完全)YoloV5实现思路一、整体结构解析二、网络结构解析1、主干网络Backbone介绍2、构建FPN特征金字塔进行加强特征提取3、利用YoloHe... 查看详情