> 技术文档 > Python----目标检测(Ultralytics安装和YOLO-V8快速上手)_from ultralytics import yolo

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


一、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 cv2from 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\"): break else: # 如果视频播放完毕,则退出循环 break# 释放视频捕获对象并关闭显示窗口cap.release()cv2.destroyWindow()

三、了解YOLOV8

3.1、检测 (COCO)

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

模型 尺寸
(像素) mAPval
50-95 速度
CPU ONNX
(毫秒) 速度
A100 TensorRT
(毫秒) params
(M) FLOPs
(B) YOLOv8n 640 37.3 80.4 0.99 3.2 8.7 YOLOv8s 640 44.9 128.4 1.20 11.2 28.6 YOLOv8m 640 50.2 234.7 1.83 25.9 78.9 YOLOv8l 640 52.9 375.2 2.39 43.7 165.2 YOLOv8x 640 53.9 479.1 3.53 68.2 257.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-seg 640 36.7 30.5 96.1 1.21 3.4 12.6 YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6 YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2 YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5 YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1

    3.3、姿势 (COCO)

    模型 尺寸
    (像素) 50-95 mAPpose
    50 速度
    CPU ONNX
    (毫秒) 速度
    A100 TensorRT
    (毫秒) params
    (M) FLOPs
    (B) YOLOv8n-姿势 640 50.4 80.1 131.8 1.18 3.3 9.2 YOLOv8s-姿势 640 60.0 86.2 233.2 1.42 11.6 30.2 YOLOv8m-姿势 640 65.0 88.8 456.3 2.00 26.4 81.0 YOLOv8l-姿势 640 67.6 90.0 784.5 2.59 44.4 168.6 YOLOv8x-姿势 640 69.2 90.2 1607.1 3.73 69.4 263.2 YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4

    3.4、OBB (DOTAv1)

    模型 尺寸
    (像素) mAPtest
    50 速度
    CPU ONNX
    (毫秒) 速度
    A100 TensorRT
    (毫秒) params
    (M) FLOPs
    (B) YOLOv8n-obb 1024 78.0 204.77 3.57 3.1 23.3 YOLOv8s-obb 1024 79.5 424.88 4.07 11.4 76.3 YOLOv8m-obb 1024 80.5 763.48 7.61 26.4 208.6 YOLOv8l-obb 1024 80.7 1278.42 11.83 44.5 433.8 YOLOv8x-obb 1024 81.36 1759.10 13.23 69.5 676.7

    3.5、分类 (ImageNet)

    模型 尺寸
    (像素) acc
    top1 acc
    top5 速度
    CPU ONNX
    (毫秒) 速度
    A100 TensorRT
    (毫秒) params
    (M) FLOPs
    (B) at 224 YOLOv8n-cls 224 69.0 88.3 12.9 0.31 2.7 0.5 YOLOv8s-cls 224 73.8 91.7 23.4 0.35 6.4 1.7 YOLOv8m-cls 224 76.8 93.5 85.4 0.62 17.0 5.3 YOLOv8l-cls 224 76.8 93.5 163.0 0.87 37.5 12.3 YOLOv8x-cls 224 79.0 94.6 232.0 1.01 57.4 19.0

    四、推理源

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

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

    资料来源 论据 类型 说明 图像 \'image.jpg\' str或Path 单个图像文件。 网址 \'https://ultralytics.com/images/bus.jpg\' str 图片的URL。 截图 \'screen\' str 截图 PIL Image.open(\'im.jpg\') PIL.Image 具有RGB通道的HWC格式。 OpenCV cv2.imread(\'im.jpg\') np.ndarray 带有BGR频道的HWC 格式 uint8 (0-255)。 numpy np.zeros((640,1280,3)) np.ndarray 带有 BGR 频道的 HWC 格式 uint8 (0-255)。 torch torch.zeros(16,3,320,640) torch.Tensor 带RGB通道的BCHW格式 float32 (0.0-1.0)。 CSV \'sources.csv\' str或Path 包含图像、视频或目录路径的CSV文件。 视频 \'video.mp4\' str或Path MP4和AVI等格式的视频文件 目录 \'path/\' str或Path 包含图像或视频的目录路径。 球体 \'path/*.jpg\' str 全局模式来匹配多个文件。使用*字符作为通配符。 YouTube \'https://youtu.be/LNWODJXcvt4\' str YouTube 视频的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 Imagefrom 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 cv2from 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() 接受多个参数,这些参数可以在推理时传递,以覆盖默 认值:

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

    可视化参数:

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

    六、图像和视频格式

    6.1、图像

    图像后缀 预测命令示例 参考资料 .bmp yolo predict source=image.bmp 微软 BMP 文件格式 .dng yolo predict source=image.dng Adobe DNG .jpeg yolo predict source=image.jpeg JPEG .jpg yolo predict source=image.jpg JPEG .mpo yolo predict source=image.mpo 多画面对象 .png yolo predict source=image.png 便携式网络图形 .tif yolo predict source=image.tif 标签图像文件格式 .tiff yolo predict source=image.tiff 标签图像文件格式 .webp yolo predict source=image.webp WebP .pfm yolo predict source=image.pfm 便携式浮图

    6.2、视频格式

    视频后缀 预测命令示例 参考资料 .asf yolo predict source=video.asf 高级系统格式 .avi yolo predict source=video.avi 音频视频交错 .gif yolo predict source=video.gif 图形交换格式 .m4v yolo predict source=video.m4v MPEG-4 第 14 部分 .mkv yolo predict source=video.mkv 马特罗斯卡 .mov yolo predict source=video.mov QuickTime 文件格式 .mp4 yolo predict source=video.mp4 MPEG-4 第 14 部分 - 维基百科 .mpeg yolo predict source=video.mpeg MPEG-1 第 2 部分 .mpg yolo predict source=video.mpg MPEG-1 第 2 部分 .ts yolo predict source=video.ts MPEG 传输流 .wmv yolo predict source=video.wmv Windows 媒体视频 .webm yolo predict source=video.webm WebM 项目

    七、返回值

            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 objectkeypoints: Nonemasks: Nonenames: {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: Noneorig_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: Nonesave_dir: \'runs\\\\detect\\\\predict3\'speed: {\'preprocess\': 6.001710891723633, \'inference\': 35.00771522521973, \'postprocess\': 5.001306533813477}]

    Results 对象具有以下属性:  

    属性 类型 说明 orig_img numpy.ndarray 原始图像的 numpy 数组。 orig_shape tuple 原始图像的形状,格式为(高、宽)。 boxes Boxes, optional 包含检测边界框的方框对象。 masks Masks, optional 包含检测掩码的掩码对象。 probs Probs, optional Probs 对象,包含分类任务中每个类别的概率。 keypoints Keypoints, optional 关键点对象,包含每个对象的检测关键点。 obb OBB, optional 包含定向包围盒的 OBB 对象。 speed dict 每幅图像的预处理、推理和后处理速度字典,单位为毫秒。 names dict 类名字典。 path str 图像文件的路径。

    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.jpgtojson() str 将对象转换为 JSON 格式。

    7.1、Boxes

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

    from ultralytics import YOLOmodel = 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: Noneis_track: Falseorig_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() 方法 将对象移动到指定设备。 xyxy Property (torch.Tensor) 以 xyxy 格式返回方框。 conf Property (torch.Tensor) 返回方框的置信度值。 cls Property (torch.Tensor) 返回方框的类值。 id Property (torch.Tensor) 返回盒子的跟踪 ID(如果有)。 xywh Property (torch.Tensor) 以 xywh 格式返回方框。 xyxyn Property (torch.Tensor) 以 xyxy 格式返回按原始图像大小归一化的方框。 xywhn Property (torch.Tensor) 以 xywh 格式返回按原始图像大小归一化的方框。 xyxy torch.Tensor \\ numpy.ndarray conf torch.Tensor \\ numpy.ndarray cls torch.Tensor \\ numpy.ndarray id torch.Tensor \\ numpy.ndarray,可选 xywh torch.Tensor \\ numpy.ndarray xyxyn torch.Tensor \\ numpy.ndarray xywhn torch.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 YOLOmodel = 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。 xyn Property (torch.Tensor) 以张量表示的标准化片段列表。 xy Property (torch.Tensor) 以张量表示的像素坐标线段列表。

    7.3、Keypoints

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

    from ultralytics import YOLOmodel = 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。 xyn Property (torch.Tensor) 以张量表示的标准化关键点列表。 xy Property (torch.Tensor) 以张量表示的像素坐标关键点列表。 conf Property (torch.Tensor) 返回关键点的置信度值(如果有),否则为空。

    7.4、Probs

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

    from ultralytics import YOLOmodel = 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 的副本。 top1 Property (int) 置信度第 1 的索引。 top5 Property (list[int]) 置信度前 5 的索引。 top1conf Property (torch.Tensor) 返回第 1 名的置信度。 top5conf Property (torch.Tensor) 返回前 5 名的置信度。

     7.5、OBB

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

    from ultralytics import YOLOmodel = YOLO(\"yolov8n.pt\")results = model(\"bus.jpg\")for i in results: print(i.obb)
    名称 类型 说明 cpu() 方法 将对象移至 CPU 内存。 numpy() 方法 将对象转换为 numpy 数组。 cuda() 方法 将对象移至 CUDA 内存。 to() 方法 将对象移动到指定设备。 conf Property (torch.Tensor) 返回方框的置信度值。 cls Property (torch.Tensor) 返回方框的类值。 id Property (torch.Tensor) 返回盒子的轨道 ID(如果有)。 xyxy Property (torch.Tensor) 以 xyxy 格式返回水平方框。 xywhr Property (torch.Tensor) 以 xywhr 格式返回旋转后的方框。 xyxyxyxy Property (torch.Tensor) 以 xyxyxyxy 格式返回旋转后的方框。 xyxyxyxyn Property (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() 方法支持各种参数来定制输出

    参数 类型 说明 默认值 conf bool 包括检测置信度分数。 True line_width float 边界框的线宽。根据图像大小缩放,如果为 NoneNone font_size float 文字字体大小。与图像大小一致,如果为 NoneNone font str 文本注释的字体名称。 \'Arial.ttf\' pil bool 将图像作为 PIL 图像对象返回。 False img numpy.ndarray 用于绘图的替代图像。如果为 None,则使用原始图像。 None im_gpu torch.Tensor 经过 GPU 加速的图像,可更快地绘制遮罩图。形状:(1,3,640,640)。 None kpt_radius int 绘制关键点的半径。 5 kpt_line bool 用线条连接关键点。 True labels bool 在注释中包含类标签。 True boxes bool 在图像上叠加边界框。 True masks bool 在图像上叠加蒙版 True probs bool 包括分类概率。 True show bool 使用默认图像查看器直接显示注释图像。 False save bool 将注释的图像保存到由 filename 指定的文件。 False filename str 保存注释图像的文件路径和名称(如果有)。仅当 saveTrue 时使用。 None