You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用YOLOv8仅检测人物类别并裁剪首个人物至分类模型

使用YOLOv8实现指定人物检测+首目标裁剪+分类模型输入

步骤1:加载YOLOv8并限定仅检测人物类别

YOLOv8基于COCO数据集训练,其中人物对应的类别ID为0,推理时通过classes参数即可限定检测范围。

示例代码:

from ultralytics import YOLO

# 加载预训练YOLOv8检测模型(可选n/s/m/l/x版本)
det_model = YOLO('yolov8n.pt')

# 对目标图像推理,仅保留person类别的检测结果
infer_results = det_model('target_image.jpg', classes=0)

步骤2:提取首个人物检测框并裁剪图像

从推理结果中取出第一个有效检测框,基于坐标对原图进行裁剪操作。

示例代码:

import cv2

# 读取原图并转换颜色通道(适配YOLO的RGB格式)
raw_img = cv2.imread('target_image.jpg')
raw_img = cv2.cvtColor(raw_img, cv2.COLOR_BGR2RGB)

# 检查是否检测到人物
if len(infer_results[0].boxes) > 0:
    # 提取第一个检测框的坐标(x1, y1, x2, y2)并转为整数
    first_box = infer_results[0].boxes[0]
    x1, y1, x2, y2 = map(int, first_box.xyxy[0])
    # 裁剪出人物区域
    cropped_person = raw_img[y1:y2, x1:x2]
else:
    print("未检测到人物目标")

步骤3:将裁剪图像输入分类模型

将裁剪后的人物图像预处理后直接输入分类模型即可,以下以YOLOv8分类模型为例:

示例代码:

# 加载YOLOv8分类模型
cls_model = YOLO('yolov8n-cls.pt')

# 对裁剪后的人物图像执行分类推理
cls_results = cls_model(cropped_person)
# 输出Top5分类结果及对应置信度
print("分类结果:", cls_results[0].probs.top5)

补充说明

  • 若处理视频流,只需将单帧图像替换为视频的逐帧输入,逻辑完全一致。
  • 若分类模型对输入尺寸有要求,可通过cv2.resize(cropped_person, (target_w, target_h))调整裁剪图尺寸。
  • 检测框坐标也可通过boxes.xywh获取中心坐标+宽高格式,按需转换即可。

内容的提问来源于stack exchange,提问作者Dheeraj Reddy Balasani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:12:52