当前位置: 首页 > news >正文

YOLOV8的学习记录(二) yolo8的几个内置模型简介

        YOLOv8 是一个多功能的计算机视觉框架,支持多种任务,包括分类(Classify)、检测(Detect)、旋转目标检测(OBB)、姿态估计(Pose)、实例分割(Segment)。

1. Classify(图像分类)

        • 特点  图像分类任务是将整张图像归类到预定义的类别中。

        • 输出  类别标签和置信度分数。

        • 适用场合 适用于场景识别、物体类别判断等任务。

        • 用法:

from ultralytics import YOLO

# 加载预训练的分类模型
model = YOLO('yolov8n-cls.pt')

# 进行推理
results = model('path/to/image.jpg')

        • 返回值内容
        probs:一个形状为 (num_classes,) 的张量,包含了输入图像属于每个类别的概率。
        names:一个字典,将类别索引映射到类别名称。

for result in results:
    probs = result.probs
    names = result.names
    predicted_class_index = probs.argmax()
    predicted_class_name = names[predicted_class_index]
    confidence = probs[predicted_class_index].item()
    print(f"Predicted class: {predicted_class_name}, Confidence: {confidence:.2f}")

        • 特点
        任务单一:专注于将输入图像分类到预定义的类别中,输出一个类别标签和对应的置信度。
        轻量级设计:模型结构相对简单,推理速度快,适合对大量图像进行快速分类。

2. Detect(目标检测)

        • 特点  检测图像中的物体,并返回每个物体的边界框、类别标签和置信度。

        • 适用场合 安防监控、自动驾驶等场景。

        • 用法:

from ultralytics import YOLO

# 加载预训练的目标检测模型
model = YOLO('yolov8n.pt')

# 对单张图像进行目标检测
results = model('path/to/image.jpg')

# 对视频文件进行目标检测
results = model('path/to/video.mp4')

        • 返回值内容
        boxes:一个 Boxes 对象,包含以下属性:
        xyxy:形状为 (num_detections, 4) 的张量,每个检测框的坐标 (x1, y1, x2, y2),表示左上角和右下角的坐标。
        cls:形状为 (num_detections,) 的张量,每个检测框的类别索引。
        conf:形状为 (num_detections,) 的张量,每个检测框的置信度。
        names:一个字典,将类别索引映射到类别名称。

for result in results:
    boxes = result.boxes
    names = result.names
    for box in boxes:
        xyxy = box.xyxy[0].cpu().numpy()
        cls = int(box.cls.item())
        conf = box.conf.item()
        class_name = names[cls]
        print(f"Class: {class_name}, Confidence: {conf:.2f}, Bbox: {xyxy}")

3. OBB(旋转目标检测

        • 特点  检测图像中的旋转目标,并返回旋转后的边界框。

        • 适用场合 适用于航空图像、卫星图像等场景,以及文字和特定标志检测,其中目标可能呈现旋转状态。

        • 用法:

from ultralytics import YOLO

# 加载预训练的旋转目标检测模型
model = YOLO('yolov8n-obb.pt')

# 进行推理
results = model('path/to/image.jpg')

        • 返回值内容  

        旋转边界框:  [x, y, w, h, angle]   格式,表示旋转后的边界框。

        类别标签:检测到的物体类别。

        置信度分数:模型对该检测的置信度。

4. Pose(姿态估计)

        • 特点   检测图像中物体的关键点位置。

        • 适用场合 常用于人体姿态估计、动物姿态分析等场景。

        用于检测图像或视频中人体的关键点位置,如关节、面部特征点等,可用于动作分析、姿态识别等领域。能够同时检测多个人体的姿态,并输出每个关键点的坐标。

        • 用法:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolov8n-pose.pt")  # 使用姿态估计模型

# 预测图像
results = model("path/to/image.jpg")

        • 预测返回值

        关键点坐标:  [x, y]   格式,表示关键点的位置。

        置信度分数:模型对每个关键点的置信度。

for result in results:
    keypoints = result.keypoints
    boxes = result.boxes
    names = result.names
    for i in range(len(boxes)):
        person_keypoints = keypoints.xy[i].cpu().numpy()
        person_conf = keypoints.conf[i].cpu().numpy()
        print(f"Person {i} keypoints: {person_keypoints}")
        print(f"Person {i} keypoints confidence: {person_conf}")

5. Segment(实例分割)

        • 特点   检测图像中的物体,并为每个物体生成分割掩码。不仅能够检测目标的边界框和类别,还能够区分同一类别中的不同实例,精确地分割出每个目标的像素级掩码,,如医学图像分析、自动驾驶等。还

        • 适用场合  适用于需要对目标进行精细分割的场景,如医学图像分割、自动驾驶中的道路分割等场景。

        • 用法:

from ultralytics import YOLO

# 加载预训练的实例分割模型
model = YOLO('yolov8n-seg.pt')

# 进行推理
results = model('path/to/image.jpg')

        • 预测返回值

        boxes:一个 Boxes 对象,包含每个检测框的坐标、类别索引和置信度。
        masks:一个 Masks 对象,包含以下属性:
        data:形状为 (num_detections, height, width) 的张量,每个检测实例的二进制掩码。
        xy:每个掩码的多边形坐标。
        names:一个字典,将类别索引映射到类别名称。

for result in results:
    boxes = result.boxes
    masks = result.masks
    names = result.names
    for i in range(len(boxes)):
        cls = int(boxes.cls[i].item())
        conf = boxes.conf[i].item()
        mask = masks.data[i].cpu().numpy()
        class_name = names[cls]
        print(f"Class: {class_name}, Confidence: {conf:.2f}")

相关文章:

  • RabbitMQ介绍以及基本使用
  • 小米平板怎么和电脑共享屏幕
  • c++--静态联编--动态联编
  • 动态库与静态库:深入解析与应用
  • CAS单点登录(第7版)12.密码管理
  • CANopen 基础
  • 13 责任链(Chain of Responsibility)模式
  • 数据结构与算法-哈希表
  • resultMap 标签
  • 变相提高大模型上下文长度-RAG文档压缩-2.带早停机制的map-refine
  • pgsql用户和权限管理
  • 安卓基础(持续更新的笔记)
  • Kotlin Lambda
  • 2025年,如何选择IT监控平台
  • CEF132 编译指南 Linux 篇 - CEF 编译实战:构建 CEF(六)
  • 【Redis】下载安装Redis和Redis图形化界面工具教程(2024最新版本,史上最详细)
  • 石子合并
  • windows编译使用gtest
  • SpringBoot3 快速启动框架
  • VS2022中.Net Api + Vue 从创建到发布到IIS
  • 四问当前旱情:还会持续多久
  • 五月A股怎么买?券商金股电子权重第一,格力电器最热
  • 言短意长|党政主官如何塑造流量城市?
  • 五一假期上海接待游客1650万人次,全要素旅游交易总额超200亿元
  • G40迎来返程大车流,今明两日预计超13万辆车经长江隧桥进沪
  • 巴菲特首次明确批评贸易战,“投资界春晚”有哪些看点?一文速览