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

Python----目标检测(Ultralytics安装和YOLO-V8快速上手)

一、Ultralytics安装

网址:主页 -Ultralytics YOLO 文档

        Ultralytics提供了各种安装方法,包括pip、conda和Docker。通过 ultralytics pip包安装最新稳定版本的YOLOv8,或克隆Ultralytics GitHub 存储库以获取最新版本。可以使用Docker在隔离的容器中执行包,避免本 地安装。

pip install ultralytics==8.2.28 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/ultralytics/ultralytics.git@main

注意:ultralytics需要PyTorch支持。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

二、使用YOLOV8

2.1、使用Ultralytics实现YOLOV8

        Python接口使用户能够快速实现对象检测、分割和分类等功能。

from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8n.pt") # 使用YOLOV8n模型
# 对图片列表进行批量推理
results = model(['./bus.jpg'])
#处理结果列表
for result in results:boxes = result.boxes # Boxes对象,用于存储边界框输出masks=result.masks #Masks对象,用于存储分割掩模输出keypoints = result.keypoints # Keypoints对象,用于存储姿态关键点输出probs=result.probs #Probs对象,用于存储分类概率输出result.show() #显示结果到屏幕上result.save(filename='result.jpg') #保存结果

2.2、使用Ultralytics实现YOLOV8流式预测

import cv2
from ultralytics import YOLO
#加载YOLOV8模型
model=YOLO("yolov8n.pt")
# 打开视频文件
video_path = 'WH038.mp4'
# cap = cv2.VideoCapture(0)#调用摄像头
cap = cv2.VideoCapture(video_path)
# 遍历视频帧
while cap.isOpened():# 从视频中读取一帧success, frame= cap.read()if success:# 在帧上运行YOLOV8推理results = model(frame)# 在帧上可视化推理结果annotated_frame = results[0].plot()# 显示标注后的帧cv2.imshow("YOLOV8推理结果", annotated_frame)# 如果按下'q'键则退出循环if cv2.waitKey(1) & 0xFF == ord("q"):breakelse:# 如果视频播放完毕,则退出循环break
# 释放视频捕获对象并关闭显示窗口
cap.release()
cv2.destroyWindow()

三、了解YOLOV8

3.1、检测 (COCO)

        有关在 COCO 上训练的这些模型的使用示例,请参阅检测文档,其中包括 80 个预训练类。

模型尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(毫秒)
速度
A100 TensorRT
(毫秒)
params
(M)
FLOPs
(B)
YOLOv8n64037.380.40.993.28.7
YOLOv8s64044.9128.41.2011.228.6
YOLOv8m64050.2234.71.8325.978.9
YOLOv8l64052.9375.22.3943.7165.2
YOLOv8x64053.9479.13.5368.2257.8

    注意:

            FLOPs (B) 表示 "Floating Point Operations per second in Billion",即每秒十亿次浮点运算。这个指标通常用于衡量一个模型在进行 推断或训练时的计算性能。浮点运算是指包括加法、减法、乘法、除法等 在内的基本数学运算,它们在深度学习模型中是非常常见的操作。

            YOLOV8n 模型的 FLOPs (B) 值为 8.7,意味着在进行推断或训练时,该模 型每秒大约执行 8.7 亿次浮点数运算。

    3.2、分割(COCO)

    模型尺寸
    (像素)
    mAPbox
    50-95
    mAPmask
    50-95
    速度
    CPU ONNX
    (毫秒)
    速度
    A100 TensorRT
    (毫秒)
    params
    (M)
    FLOPs
    (B)
    YOLOv8n-seg64036.730.596.11.213.412.6
    YOLOv8s-seg64044.636.8155.71.4711.842.6
    YOLOv8m-seg64049.940.8317.02.1827.3110.2
    YOLOv8l-seg64052.342.6572.42.7946.0220.5
    YOLOv8x-seg64053.443.4712.14.0271.8344.1

    3.3、姿势 (COCO)

    模型尺寸
    (像素)

    50-95
    mAPpose
    50
    速度
    CPU ONNX
    (毫秒)
    速度
    A100 TensorRT
    (毫秒)
    params
    (M)
    FLOPs
    (B)
    YOLOv8n-姿势64050.480.1131.81.183.39.2
    YOLOv8s-姿势64060.086.2233.21.4211.630.2
    YOLOv8m-姿势64065.088.8456.32.0026.481.0
    YOLOv8l-姿势64067.690.0784.52.5944.4168.6
    YOLOv8x-姿势64069.290.21607.13.7369.4263.2
    YOLOv8x-pose-p6128071.691.24088.710.0499.11066.4

    3.4、OBB (DOTAv1)

    模型尺寸
    (像素)
    mAPtest
    50
    速度
    CPU ONNX
    (毫秒)
    速度
    A100 TensorRT
    (毫秒)
    params
    (M)
    FLOPs
    (B)
    YOLOv8n-obb102478.0204.773.573.123.3
    YOLOv8s-obb102479.5424.884.0711.476.3
    YOLOv8m-obb102480.5763.487.6126.4208.6
    YOLOv8l-obb102480.71278.4211.8344.5433.8
    YOLOv8x-obb102481.361759.1013.2369.5676.7

    3.5、分类 (ImageNet)

    模型尺寸
    (像素)
    acc
    top1
    acc
    top5
    速度
    CPU ONNX
    (毫秒)
    速度
    A100 TensorRT
    (毫秒)
    params
    (M)
    FLOPs
    (B) at 224
    YOLOv8n-cls22469.088.312.90.312.70.5
    YOLOv8s-cls22473.891.723.40.356.41.7
    YOLOv8m-cls22476.893.585.40.6217.05.3
    YOLOv8l-cls22476.893.5163.00.8737.512.3
    YOLOv8x-cls22479.094.6232.01.0157.419.0

    四、推理源

            YOLOv8 可以处理不同类型的输入源进行推理,如下表所示。输入源包括 静态图像、视频流和各种数据格式。表中还标明了每种输入源是否可以在 流模式下使用参数 stream=True ✅.流模式有利于处理视频或实时流,因 为它会创建一个结果生成器,而不是将所有帧加载到内存中。

            使用 stream=True 用于处理长视频或大型数据集,以有效管理内存。当 stream=False在这种情况下,所有帧或数据点的结果都会存储在内存中, 这可能会迅速累加,并导致大量输入出现内存不足错误。与此形成鲜明对 比的是 stream=True 利用生成器,它只将当前帧或数据点的结果保存在内 存中,从而大大减少了内存消耗并防止出现内存不足的问题

    资料来源论据类型说明
    图像'image.jpg'str或Path单个图像文件。
    网址'https://ultralytics.com/images/bus.jpg'str图片的URL。
    截图'screen'str截图
    PILImage.open('im.jpg')PIL.Image具有RGB通道的HWC格式。
    OpenCVcv2.imread('im.jpg')np.ndarray带有BGR频道的HWC 格式 uint8 (0-255)。
    numpynp.zeros((640,1280,3))np.ndarray带有 BGR 频道的 HWC 格式 uint8 (0-255)。
    torchtorch.zeros(16,3,320,640)torch.Tensor带RGB通道的BCHW格式 float32 (0.0-1.0)。
    CSV'sources.csv'str或Path包含图像、视频或目录路径的CSV文件。
    视频'video.mp4'str或PathMP4和AVI等格式的视频文件
    目录'path/'str或Path包含图像或视频的目录路径。
    球体'path/*.jpg'str全局模式来匹配多个文件。使用*字符作为通配符。
    YouTube'https://youtu.be/LNWODJXcvt4'strYouTube 视频的URL。
    'rtsp://example.com/media.mp4'str流媒体协议(如RTSP、RTMP、TCP)的URL或IP地址。
    多流'list.streams'str或Path*.streams文本文件,每行一个流URL,即8个流将以8的批处理大小运行。

    4.1、在图像文件上运行推理

    from ultralytics import YOLO  # 从 ultralytics 库中导入 YOLO 类# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")  # 使用 "yolov8n.pt" 文件初始化 YOLO 模型。# 这将加载预先训练好的权重。# 定义图像文件的路径
    source = "bus.jpg"  # 指定要进行推理的图像文件名为 "bus.jpg"。# 在指定的图像源上运行推理
    results = model(source)  # 将图像传递给模型进行推理。#  model(source) 返回一个 Results 对象列表,#  其中包含了模型对图像中目标的预测结果。

    4.2、通过 URL 对远程托管的图像或视频进行推理

    from ultralytics import YOLO  # 从 ultralytics 库中导入 YOLO 类# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")  # 使用 "yolov8n.pt" 文件初始化 YOLO 模型。# 这将加载预先训练好的权重。# 定义图像文件的路径
    source = "https://ultralytics.com/images/bus.jpg"  # 在输入网址图片。# 在指定的图像源上运行推理
    results = model(source)  # 将图像传递给模型进行推理。#  model(source) 返回一个 Results 对象列表,#  其中包含了模型对图像中目标的预测结果。

     4.3、在使用Python Imaging Library (PIL) 打开 的图像上运行推理

    from PIL import Image
    from ultralytics import YOLO  # 从 ultralytics 库中导入 YOLO 类# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")  # 使用 "yolov8n.pt" 文件初始化 YOLO 模型。# 这将加载预先训练好的权重。# 定义图像文件的路径
    source = Image.open("bus.jpg")# 在指定的图像源上运行推理
    results = model(source)  # 将图像传递给模型进行推理。#  model(source) 返回一个 Results 对象列表,#  其中包含了模型对图像中目标的预测结果。

    4.4、在使用 OpenCV 读取的图像上运行推理

    import cv2
    from ultralytics import YOLO  # 从 ultralytics 库中导入 YOLO 类# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")  # 使用 "yolov8n.pt" 文件初始化 YOLO 模型。# 这将加载预先训练好的权重。# 定义图像文件的路径
    source = cv2.imread('bus.jpg')# 在指定的图像源上运行推理
    results = model(source)  # 将图像传递给模型进行推理。#  model(source) 返回一个 Results 对象列表,#  其中包含了模型对图像中目标的预测结果。

    4.5、使用 RTSP、RTMP、TCP 和 IP 地址协议对远程流媒体源进行推理

            如果在一个 *.streams 文本文件,则将运行批处理推理,即 8 个数据流将 以 8 的批处理大小运行,否则单个数据流将以 1 的批处理大小运行。

    from ultralytics import YOLO  # 从 ultralytics 库中导入 YOLO 类# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")  # 使用 "yolov8n.pt" 文件初始化 YOLO 模型。# 这将加载预先训练好的权重。# 定义图像文件的路径
    source = "rtsp://example.com/media.mp4"
    source = "path/to/list.streams" # 在指定的图像源上运行推理
    results = model(source)  # 将图像传递给模型进行推理。#  model(source) 返回一个 Results 对象列表,#  其中包含了模型对图像中目标的预测结果。

    五、推理论据

            model.predict() 接受多个参数,这些参数可以在推理时传递,以覆盖默 认值:

    论据类型默认值说明
    sourcestr'ultralytics/assets'指定推理数据源。可以是图像路径、视频文件、目录 URL 或用于实时馈送的设备 ID。支持多种格式和来源,以灵活应用于不同类型的输入。
    conffloat0.25设置检测最小置信阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整此值有助于减少误报。
    ioufloat0.7非最大抑制 (NMS) 的 IoU(交并比)阈值。较高的数值可消除重叠方框,从而减少检测数量,这对于减少重复检测非常有用。
    imgszint 或 tuple640定义用于处理的图像大小。可以是一个整数 (640) 或一个 (height, width) 元组。适当调整大小可以提高检测精度和处理速度。
    halfboolFalse启用半精度 (FP16) 推理,可加快支持的 GPU 上的模型处理速度,同时将对精度的影响降至最低。
    devicestrNone指定用于推理的设备(例如 'cpu' 或 'cuda:0')。允许用户选择 CPU、特定 GPU 或其他计算设备来执行模型。
    max_detint300每幅图像允许的最大检测次数。限制模型在单次推理中检测到的物体总数,以防止在密集场景中产生过多输出。
    vid_strideint1视频输入帧间距。允许跳过视频中的帧,以加快处理速度,但会牺牲时间分辨率。值为 1 时处理每一帧,值越大跳帧越多。
    stream_bufferboolFalse确定在处理视频流时,是否对所有帧进行缓冲 (True),或者模型是否应该返回最近的帧 (False)。用于实时应用。
    visualizeboolFalse在推理过程中激活模型特征的可视化,从而深入了解模型“看到”了什么。这对于调试和模型解释非常有用。
    augmentboolFalse可对预测进行测试时增强 (TTA),从而在牺牲推理速度的情况下提高检测的鲁棒性。
    agnostic_nmsboolFalse启用与类别无关的非最大抑制 (NMS),可合并不同类别的重叠框。这在多类检测场景中非常有用,因为在这种场景中,类的重叠很常见。
    classeslist[int]None根据一组类别 ID 过滤检测结果。只返回属于指定类别的检测结果。在多类检测任务中,该功能有助于专注于检测相关对象。
    retina_masksboolFalse如果模型存在高分辨率的分割掩膜,则使用高分辨率分割掩膜。这可以提高分割任务的掩膜质量,提供更精确的细节。
    embedlist[int]None指定从中提取特征向量或嵌入的层。这对于聚类或相似搜索等下游任务非常有用。
    showboolFalse如果为 True,在一个窗口中显示带注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。

    可视化参数:

    论据类型默认值说明
    saveboolFalse可将注释的图像或视频保存到文件中。这有助于记录、进一步分析或共享结果。
    save_framesboolFalse处理视频时,将单个帧保存为图像。这对提取特定帧或逐帧进行详细分析非常有用。
    save_txtboolFalse将检测结果保存在文本文件中,格式如下:[class] [x_center] [y_center] [width] [height] [confidence]。有助于与其他分析工具集成。
    save_confboolFalse在保存的文本文件中包含置信度分数。增强了后期处理和分析的细节。
    save_cropboolFalse保存经过裁剪的检测图像。可用于数据集扩充、分析或创建特定物体的重点数据集。
    show_labelsboolTrue在可视输出中显示每次检测的标签。让用户立即了解检测到的物体。
    show_confboolTrue在标签旁显示每次检测的置信度得分。让人了解模型对每次检测的确定性。
    show_boxesboolTrue在检测到的物体周围绘制边框。对于图像或视频帧中物体的视觉识别和定位至关重要。
    line_widthNone 或 intNone指定边界框的线宽。如果为 None,则根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。

    六、图像和视频格式

    6.1、图像

    图像后缀预测命令示例参考资料
    .bmpyolo predict source=image.bmp微软 BMP 文件格式
    .dngyolo predict source=image.dngAdobe DNG
    .jpegyolo predict source=image.jpegJPEG
    .jpgyolo predict source=image.jpgJPEG
    .mpoyolo predict source=image.mpo多画面对象
    .pngyolo predict source=image.png便携式网络图形
    .tifyolo predict source=image.tif标签图像文件格式
    .tiffyolo predict source=image.tiff标签图像文件格式
    .webpyolo predict source=image.webpWebP
    .pfmyolo predict source=image.pfm便携式浮图

    6.2、视频格式

    视频后缀预测命令示例参考资料
    .asfyolo predict source=video.asf高级系统格式
    .aviyolo predict source=video.avi音频视频交错
    .gifyolo predict source=video.gif图形交换格式
    .m4vyolo predict source=video.m4vMPEG-4 第 14 部分
    .mkvyolo predict source=video.mkv马特罗斯卡
    .movyolo predict source=video.movQuickTime 文件格式
    .mp4yolo predict source=video.mp4MPEG-4 第 14 部分 - 维基百科
    .mpegyolo predict source=video.mpegMPEG-1 第 2 部分
    .mpgyolo predict source=video.mpgMPEG-1 第 2 部分
    .tsyolo predict source=video.tsMPEG 传输流
    .wmvyolo predict source=video.wmvWindows 媒体视频
    .webmyolo predict source=video.webmWebM 项目

    七、返回值

            predict() 调用将返回一个 Results 。

    from ultralytics import YOLO# 加载一个预训练的 YOLOv8n 模型
    model = YOLO("yolov8n.pt")# 对单张图片 "bus.jpg" 进行推理
    results = model("bus.jpg")  # 返回一个 Results 对象的列表,因为只处理了一张图片,所以列表中只有一个元素# 对图片列表 ["bus.jpg", "zidane.jpg"] 进行批量推理
    results = model(["bus.jpg", "zidane.jpg"])  # 返回一个 Results 对象的列表,列表中包含每个图片的推理结果
    boxes: ultralytics.engine.results.Boxes object
    keypoints: None
    masks: None
    names: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}
    obb: None
    orig_img: array([[[122, 148, 172],[120, 146, 170],[125, 153, 177],...,[157, 170, 184],[158, 171, 185],[158, 171, 185]],[[127, 153, 177],[124, 150, 174],[127, 155, 179],...,[158, 171, 185],[159, 172, 186],[159, 172, 186]],[[128, 154, 178],[126, 152, 176],[126, 154, 178],...,[158, 171, 185],[158, 171, 185],[158, 171, 185]],...,[[185, 185, 191],[182, 182, 188],[179, 179, 185],...,[114, 107, 112],[115, 105, 111],[116, 106, 112]],[[157, 157, 163],[180, 180, 186],[185, 186, 190],...,[107,  97, 103],[102,  92,  98],[108,  98, 104]],[[112, 112, 118],[160, 160, 166],[169, 170, 174],...,[ 99,  89,  95],[ 96,  86,  92],[102,  92,  98]]], dtype=uint8)
    orig_shape: (1080, 810)
    path: 'D:\\目标检测\\bus.jpg'
    probs: None
    save_dir: 'runs\\detect\\predict3'
    speed: {'preprocess': 6.001710891723633, 'inference': 35.00771522521973, 'postprocess': 5.001306533813477}]
    

    Results 对象具有以下属性:  

    属性类型说明
    orig_imgnumpy.ndarray原始图像的 numpy 数组。
    orig_shapetuple原始图像的形状,格式为(高、宽)。
    boxesBoxes, optional包含检测边界框的方框对象。
    masksMasks, optional包含检测掩码的掩码对象。
    probsProbs, optionalProbs 对象,包含分类任务中每个类别的概率。
    keypointsKeypoints, optional关键点对象,包含每个对象的检测关键点。
    obbOBB, optional包含定向包围盒的 OBB 对象。
    speeddict每幅图像的预处理、推理和后处理速度字典,单位为毫秒。
    namesdict类名字典。
    pathstr图像文件的路径。

    Results 对象的方法:  

    方法返回类型说明
    update()None更新结果对象的方框、掩码和 probs 属性。
    cpu()Results返回包含 CPU 内存中所有张量的结果对象副本。
    numpy()Results返回结果对象的副本,其中所有张量均为 numpy 数组。
    cuda()Results返回包含 GPU 内存中所有张量的 Results 对象副本。
    to()Results返回带有指定设备和 dtype 上张量的 Results 对象副本。
    new()Results返回一个具有相同图像、路径和名称的新结果对象。
    plot()numpy.ndarray绘制检测结果。返回注释图像的 numpy 数组。
    show()None在屏幕上显示带注释的结果。
    save()None将注释结果保存到文件中。
    verbose()str返回每个任务的日志字符串。
    save_txt()None将预测结果保存到 txt 文件中。
    save_crop()None将裁剪后的预测保存到 save_dir/cls/file_name.jpg
    tojson()str将对象转换为 JSON 格式。

    7.1、Boxes

            Boxes 对象可用于索引、操作和将边界框转换为不同格式。

    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")results = model("bus.jpg")
    for i in results:print(i.boxes)
    
    cls: tensor([ 5.,  0.,  0.,  0., 11.,  0.], device='cuda:0')
    conf: tensor([0.8705, 0.8690, 0.8536, 0.8193, 0.3461, 0.3013], device='cuda:0')
    data: tensor([[1.7286e+01, 2.3059e+02, 8.0152e+02, 7.6841e+02, 8.7054e-01, 5.0000e+00],[4.8739e+01, 3.9926e+02, 2.4450e+02, 9.0250e+02, 8.6898e-01, 0.0000e+00],[6.7027e+02, 3.8028e+02, 8.0986e+02, 8.7569e+02, 8.5360e-01, 0.0000e+00],[2.2139e+02, 4.0579e+02, 3.4472e+02, 8.5739e+02, 8.1931e-01, 0.0000e+00],[6.4347e-02, 2.5464e+02, 3.2288e+01, 3.2504e+02, 3.4607e-01, 1.1000e+01],[0.0000e+00, 5.5101e+02, 6.7105e+01, 8.7394e+02, 3.0129e-01, 0.0000e+00]], device='cuda:0')
    id: None
    is_track: False
    orig_shape: (1080, 810)
    shape: torch.Size([6, 6])
    xywh: tensor([[409.4020, 499.4991, 784.2324, 537.8136],[146.6206, 650.8826, 195.7623, 503.2372],[740.0637, 627.9874, 139.5888, 495.4068],[283.0555, 631.5919, 123.3235, 451.6003],[ 16.1764, 289.8419,  32.2241,  70.3949],[ 33.5525, 712.4718,  67.1049, 322.9278]], device='cuda:0')
    xywhn: tensor([[0.5054, 0.4625, 0.9682, 0.4980],[0.1810, 0.6027, 0.2417, 0.4660],[0.9137, 0.5815, 0.1723, 0.4587],[0.3495, 0.5848, 0.1523, 0.4181],[0.0200, 0.2684, 0.0398, 0.0652],[0.0414, 0.6597, 0.0828, 0.2990]], device='cuda:0')
    xyxy: tensor([[1.7286e+01, 2.3059e+02, 8.0152e+02, 7.6841e+02],[4.8739e+01, 3.9926e+02, 2.4450e+02, 9.0250e+02],[6.7027e+02, 3.8028e+02, 8.0986e+02, 8.7569e+02],[2.2139e+02, 4.0579e+02, 3.4472e+02, 8.5739e+02],[6.4347e-02, 2.5464e+02, 3.2288e+01, 3.2504e+02],[0.0000e+00, 5.5101e+02, 6.7105e+01, 8.7394e+02]], device='cuda:0')
    xyxyn: tensor([[2.1340e-02, 2.1351e-01, 9.8953e-01, 7.1149e-01],[6.0172e-02, 3.6969e-01, 3.0185e-01, 8.3565e-01],[8.2749e-01, 3.5211e-01, 9.9982e-01, 8.1082e-01],[2.7333e-01, 3.7573e-01, 4.2558e-01, 7.9388e-01],[7.9441e-05, 2.3578e-01, 3.9862e-02, 3.0096e-01],[0.0000e+00, 5.1019e-01, 8.2846e-02, 8.0920e-01]], device='cuda:0')
    名称类型说明
    cpu()方法将对象移动到 CPU 内存。
    numpy()方法将对象转换为 numpy 数组。
    cuda()方法将对象移动到 CUDA 内存。
    to()方法将对象移动到指定设备。
    xyxyProperty (torch.Tensor)以 xyxy 格式返回方框。
    confProperty (torch.Tensor)返回方框的置信度值。
    clsProperty (torch.Tensor)返回方框的类值。
    idProperty (torch.Tensor)返回盒子的跟踪 ID(如果有)。
    xywhProperty (torch.Tensor)以 xywh 格式返回方框。
    xyxynProperty (torch.Tensor)以 xyxy 格式返回按原始图像大小归一化的方框。
    xywhnProperty (torch.Tensor)以 xywh 格式返回按原始图像大小归一化的方框。
    xyxytorch.Tensor \numpy.ndarray
    conftorch.Tensor \numpy.ndarray
    clstorch.Tensor \numpy.ndarray
    idtorch.Tensor \numpy.ndarray,可选
    xywhtorch.Tensor \numpy.ndarray
    xyxyntorch.Tensor \numpy.ndarray
    xywhntorch.Tensor \numpy.ndarray

    xyxy (torch.Tensor | numpy.ndarray):格式为 [x1, y1, x2, y2] 的方 框。

    conf (torch.Tensor | numpy.ndarray):每个方框的置信度得分。

    cls (torch.Tensor | numpy.ndarray):每个方框的类标签:每个方框 的类标签。

    id (torch.Tensor | numpy.ndarray,可选):每个方框的跟踪 ID(如 果有)。

    xywh (torch.Tensor | numpy.ndarray):按要求计算的 [x, y, width, height] 格式的方框。

    xyxyn (torch.Tensor | numpy.ndarray):归一化 [x1, y1, x2, y2] 方 框,相对于 orig_shape .

    xywhn (torch.Tensor | numpy.ndarray):归一化的 [x、y、宽、高] 方框,相对于 orig_shape .

    7.2、Masks

            Masks 对象可用于索引、操作和将掩码转换为线段。

    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")results = model("bus.jpg")
    for i in results:print(i.masks)
    
    名称类型说明
    cpu()方法返回 CPU 内存中的掩码 tensor。
    numpy()方法以 numpy 数组形式返回掩码 tensor。
    cuda()方法返回 GPU 内存中的掩码 tensor。
    to()方法返回具有指定设备和 dtype 的掩码 tensor。
    xynProperty (torch.Tensor)以张量表示的标准化片段列表。
    xyProperty (torch.Tensor)以张量表示的像素坐标线段列表。

    7.3、Keypoints

            Keypoints 对象可用于索引、处理和归一化坐标。

    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")results = model("bus.jpg")
    for i in results:print(i.keypoints)
    
    名称类型说明
    cpu()方法返回 CPU 内存中的关键点 tensor。
    numpy()方法以 numpy 数组形式返回关键点 tensor。
    cuda()方法返回 GPU 内存中的关键点 tensor。
    to()方法返回指定设备和 dtype 的关键点 tensor。
    xynProperty (torch.Tensor)以张量表示的标准化关键点列表。
    xyProperty (torch.Tensor)以张量表示的像素坐标关键点列表。
    confProperty (torch.Tensor)返回关键点的置信度值(如果有),否则为空。

    7.4、Probs

            Probs 对象可用于索引、获取 top1 和 top5 分类指数和分数。

    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")results = model("bus.jpg")
    for i in results:print(i.probs)
    
    名称类型说明
    cpu()方法返回 CPU 内存中 probstensor 的副本。
    numpy()方法以 numpy 数组形式返回 probstensor 的副本。
    cuda()方法返回 GPU 内存中 probstensor 的副本。
    to()方法返回带有指定设备和 dtype 的 probstensor 的副本。
    top1Property (int)置信度第 1 的索引。
    top5Property (list[int])置信度前 5 的索引。
    top1confProperty (torch.Tensor)返回第 1 名的置信度。
    top5confProperty (torch.Tensor)返回前 5 名的置信度。

     7.5、OBB

             OBB 指的是 "Oriented Bounding Box",即定向边界框。它是一种包围物 体的矩形框,与传统的边界框不同,OBB 可以沿着物体的方向进行旋转, 以更好地适应物体的实际形状和方向。 OBB 对象可用于索引、操作和将定向边界框转换为不同格式。

    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")results = model("bus.jpg")
    for i in results:print(i.obb)
    
    名称类型说明
    cpu()方法将对象移至 CPU 内存。
    numpy()方法将对象转换为 numpy 数组。
    cuda()方法将对象移至 CUDA 内存。
    to()方法将对象移动到指定设备。
    confProperty (torch.Tensor)返回方框的置信度值。
    clsProperty (torch.Tensor)返回方框的类值。
    idProperty (torch.Tensor)返回盒子的轨道 ID(如果有)。
    xyxyProperty (torch.Tensor)以 xyxy 格式返回水平方框。
    xywhrProperty (torch.Tensor)以 xywhr 格式返回旋转后的方框。
    xyxyxyxyProperty (torch.Tensor)以 xyxyxyxy 格式返回旋转后的方框。
    xyxyxyxynProperty (torch.Tensor)以 xyxyxyxy 格式返回按图像大小归一化的旋转方框。

    八、绘制结果

            plot() 方法中的 Results 对象,将检测到的对象(如边界框、遮罩、关 键点和概率)叠加到原始图像上,从而实现预测的可视化。该方法以 NumPy 数组形式返回注释图像,便于显示或保存。

    from ultralytics import YOLO# 加载模型
    model = YOLO("yolov8n.pt") # 使用YOLOv8n模型# 对图片列表进行批量推理
    results = model(['./bus.jpg'])  # 返回结果对象的列表# 处理结果列表
    for result in results:result.show()  # 显示结果到屏幕上result.save(filename='result.jpg')  # 保存结果
    

            plot() 方法支持各种参数来定制输出

    参数类型说明默认值
    confbool包括检测置信度分数。True
    line_widthfloat边界框的线宽。根据图像大小缩放,如果为 NoneNone
    font_sizefloat文字字体大小。与图像大小一致,如果为 NoneNone
    fontstr文本注释的字体名称。'Arial.ttf'
    pilbool将图像作为 PIL 图像对象返回。False
    imgnumpy.ndarray用于绘图的替代图像。如果为 None,则使用原始图像。None
    im_gputorch.Tensor经过 GPU 加速的图像,可更快地绘制遮罩图。形状:(1,3,640,640)。None
    kpt_radiusint绘制关键点的半径。5
    kpt_linebool用线条连接关键点。True
    labelsbool在注释中包含类标签。True
    boxesbool在图像上叠加边界框。True
    masksbool在图像上叠加蒙版True
    probsbool包括分类概率。True
    showbool使用默认图像查看器直接显示注释图像。False
    savebool将注释的图像保存到由 filename 指定的文件。False
    filenamestr保存注释图像的文件路径和名称(如果有)。仅当 saveTrue 时使用。None

    相关文章:

  • 基于STM32控制直流电机加减速正反转设计
  • 自适应流量调度用于遥操作:面向时间敏感网络的通信与控制协同优化框架
  • OpenRouter使用指南
  • DeepSeek模型高级应用:提示工程与Few-shot学习实战指南
  • Origin将杂乱的分组散点图升级为美观的带颜色映射的气泡图
  • web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)
  • 配置刷新技术
  • DAY01:【ML 第三弹】基本概念和建模流程
  • JS手写代码篇---手写类型判断函数
  • Python中三种不同包读取csv文件数据的方式:numpy、pandas、csv
  • Shell
  • android binder(三)binder.c函数分析
  • hadoop伪分布式配置(单机)
  • Unity中的MonoSingleton<T>与Singleton<T>
  • 回测效率提升500%!khQuant打板策略回测性能深度剖析——基于miniQMT的回测系统深度优化【AI量化第29篇】
  • AI矢量软件|Illustrator 2025网盘下载与安装教程指南
  • PAT-甲级JAVA题解(更新中...)
  • 浅写弱口令与命令爆破
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 动中通天线跟踪性能指标的测试
  • 昆山建筑行业网站/app线下推广怎么做
  • 手机网站推荐哪些/厦门关键词排名提升
  • 没有域名可以先做网站吗/东莞疫情最新消息今天新增
  • 网站公司建设网站价格/今日热点新闻大事件
  • 建设个人网站用到的技术/百度竞价关键词
  • nas做视频网站/百度app登录