YOLOV8模型使用-检测-物体追踪

这个最新的物体检测模型,很厉害的样子,还有物体追踪的功能。

有官方的Python代码,直接上手试试就好,至于理论,有想研究在看论文了╮(╯_╰)╭


简单介绍

YOLOv8 中可用的模型

YOLOv8 模型的每个类别中有五个模型用于检测、分割和分类。YOLOv8 Nano 是最快和最小的,而 YOLOv8 Extra Large (YOLOv8x) 是其中最准确但最慢的。用来实际使用的时候选权重模型。

| YOLOv8n | YOLOv8s | YOLOv8m | YOLOv8l | YOLOv8x |

其他介绍,就不用管了,上手玩一下要紧。看一下几个官方介绍图片就懂了:


这里可以看到,有物体检测识别,检测,分类,轨迹,姿态的功能,下面就上手试试。


部署-简单使用【超简单】

前提安装好Python,版本需要Python>=3.8 我的是 Python 3.11.3

视频图片识别

  1. 首先,先下载官方的代码。官网代码

  2. 执行安装与检测:【执行位置是在项目目录下】

shell 复制代码
pip install -r requirements.txt
pip install ultralytics

# 执行这个,会自动下载模型
# Downloading https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt to 'yolov8n.pt'...
# source 替换成需要检测的本地图片即可
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

# 也可以如下对视频进行检测
yolo task=detect mode=predict model=yolov8n.pt source=C:\Users\Administrator\Desktop\sssss-1.mp4  show=True

#实例分割
yolo task=segment  mode=predict model=yolov8n-seg.pt source=C:\Users\Administrator\Desktop\sssss-1.mp4  show=True
  1. 看看这个检测出来的效果:

  2. 是不是灰常的简单,[]( ̄▽ ̄)*

  3. 就酱紫,后面在试试其他功能。


视频流,摄像头识别

这个处理只需要把来源替换成0即可,就像这样

shell 复制代码
yolo task=detect mode=predict model=yolov8n.pt source=0 show=True

视频追踪-绘制随时间变化的轨迹【这个有意思】

可以用于视频追踪的模型是:YOLOv8n, YOLOv8n-seg and YOLOv8n-pose 【以8n举例子】

shell 复制代码
yolo track model=yolov8n.pt source=0 show=True 

这个追踪的效果就是,在识别里面多了一个ID表示固定的物体。

以下是官方代码改了一下,绘制随时间变化的轨迹

效果是这样的:

这个车流比较多感觉轨迹画的不怎么好看。

哈哈,这个卡车还识别错了 。。╮(╯▽╰)╭

不过这里可以绘制轨迹,就也可以统计这个ID物体在视频中存在的时间什么的。如果放在门店咖啡厅的摄像头里面,就可以看到顾客的停留时间。

这个轨迹变化绘制+物体追踪代码如下:

python 复制代码
# 绘制随时间变化的轨迹
from collections import defaultdict

import cv2
import numpy as np

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Open the video file
# video_path = "C:\\Users\\Administrator\\Desktop\\1.ts" 
video_path = 0
cap = cv2.VideoCapture(video_path)

# Store the track history
track_history = defaultdict(lambda: [])

# 用于保存图像
# fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# out_cat = cv2.VideoWriter("C:\\Users\\Administrator\\Desktop\\save.mp4", fourcc, 24, (352, 288), True)  # 保存位置/格式

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 tracking on the frame, persisting tracks between frames
        results = model.track(frame, persist=True)

        # Get the boxes and track IDs
        boxes = results[0].boxes.xywh.cpu()
        if results[0].boxes.id is not None:
            track_ids = results[0].boxes.id.int().cpu().tolist()

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Plot the tracks
        if results[0].boxes.id is not None:
            for box, track_id in zip(boxes, track_ids):
                x, y, w, h = box
                track = track_history[track_id]
                track.append((float(x), float(y)))  # x, y center point
                if len(track) > 30:  # retain 90 tracks for 90 frames
                    track.pop(0)

                # Draw the tracking lines
                points = np.hstack(track).astype(np.int32).reshape((-1, 1, 2))
                cv2.polylines(annotated_frame, [points], isClosed=False, color=(track_id*10%255, 100, 255), thickness=2)

        # Display the annotated frame
        cv2.imshow("YOLOv8 Tracking", annotated_frame)


        # out_cat.write(annotated_frame)  # 保存视频

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

参考资料:


相关推荐
哈__42 分钟前
CANN加速3D目标检测推理:点云处理与特征金字塔优化
目标检测·3d·目标跟踪
王锋(oxwangfeng)1 小时前
YOLOWorld 实现开集障碍物检测
yolo
喵叔哟2 小时前
02-YOLO-v8-v9-v10工程差异对比
人工智能·yolo·机器学习
白日做梦Q2 小时前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
渡我白衣7 小时前
信而有征——模型评估、验证与可信部署的完整体系
人工智能·深度学习·神经网络·目标检测·机器学习·计算机视觉·自然语言处理
2501_9413331017 小时前
数字识别与检测_YOLOv3_C3k2改进模型解析
人工智能·yolo·目标跟踪
OpenBayes19 小时前
教程上新|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
人工智能·深度学习·目标检测·机器学习·大模型·ocr·gpu算力
Together_CZ19 小时前
ultralytics.nn.modules.head——head.py子模块代码详读
目标检测·ultralytics·yoloe·nn.modules.head·检测头·分割头·姿态估计头
xsc-xyc21 小时前
RuntimeError: Dataset ‘/data.yaml‘ error ❌ ‘_lz
人工智能·深度学习·yolo·计算机视觉·视觉检测
张3蜂1 天前
我希望做的是识别身份证正反面,我需要标注多少张图片?
yolo