添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 性能: 专为实时、高速处理而设计,同时不影响 精度
  • 易用性: 直观的Python 和CLI 界面,便于快速部署和测试。
  • 高度可定制: 各种设置和参数可根据您的具体要求调整模型的推理行为。
  • 预测模式的主要功能

    YOLO11预测模式的设计坚固耐用、用途广泛,具有以下特点:

  • 兼容多种数据源: 无论您的数据是单个图像、图像集合、视频文件还是实时视频流,预测模式都能满足您的需求。
  • 流媒体模式: 使用流功能生成内存效率高的 Results 对象。通过设置 stream=True 在预测器的调用方法中。
  • 批处理: 能够批量处理多个图像或视频帧,进一步加快推理时间。
  • 易于集成: 凭借灵活的应用程序接口,可轻松与现有数据管道和其他软件组件集成。
  • Ultralytics YOLO 模型返回Python Results 对象,或一个内存效率高的Python Results stream=True 会在推理过程中传递给模型:

    from ultralytics import YOLO
    # Load a model
    model = YOLO("yolo11n.pt")  # pretrained YOLO11n model
    # Run batched inference on a list of images
    results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects
    # Process results list
    for result in results:
        boxes = result.boxes  # Boxes object for bounding box outputs
        masks = result.masks  # Masks object for segmentation masks outputs
        keypoints = result.keypoints  # Keypoints object for pose outputs
        probs = result.probs  # Probs object for classification outputs
        obb = result.obb  # Oriented boxes object for OBB outputs
        result.show()  # display to screen
        result.save(filename="result.jpg")  # save to disk
    
    from ultralytics import YOLO
    # Load a model
    model = YOLO("yolo11n.pt")  # pretrained YOLO11n model
    # Run batched inference on a list of images
    results = model(["image1.jpg", "image2.jpg"], stream=True)  # return a generator of Results objects
    # Process results generator
    for result in results:
        boxes = result.boxes  # Boxes object for bounding box outputs
        masks = result.masks  # Masks object for segmentation masks outputs
        keypoints = result.keypoints  # Keypoints object for pose outputs
        probs = result.probs  # Probs object for classification outputs
        obb = result.obb  # Oriented boxes object for OBB outputs
        result.show()  # display to screen
        result.save(filename="result.jpg")  # save to disk
    

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

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

    model = YOLO("yolo11n.pt") # Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8 source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8") # Run inference on the source results = model(source) # list of Results objects

    对表示为 PyTorchtensor.

    import torch
    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
    source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
    # Run inference on the source
    results = model(source)  # list of Results objects
    

    对 CSV 文件中列出的一系列图像、URL、视频和目录进行推理。

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Define a path to a CSV file with images, URLs, videos and directories
    source = "path/to/file.csv"
    # Run inference on the source
    results = model(source)  # list of Results objects
    

    对视频文件进行推理通过使用 stream=True您可以创建一个结果对象生成器,以减少内存使用量。

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Define path to video file
    source = "path/to/video.mp4"
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    对目录中的所有图像和视频进行推理。要同时捕获子目录中的图像和视频,请使用 glob 模式,即 path/to/dir/**/*.

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Define path to directory containing images and videos for inference
    source = "path/to/dir"
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    对所有匹配 glob 表达式的图像和视频进行推理,并使用 * 人物

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Define a glob search for all JPG files in a directory
    source = "path/to/dir/*.jpg"
    # OR define a recursive glob search for all JPG files including subdirectories
    source = "path/to/dir/**/*.jpg"
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    对 YouTube 视频进行推理通过使用 stream=True此外,您还可以创建一个结果对象生成器,以减少长视频的内存使用量。

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Define source as YouTube video URL
    source = "https://youtu.be/LNwODJXcvt4"
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    使用流模式可在使用 RTSP、RTMP、TCP 或 IP 地址协议的实时视频流上运行推理。如果提供的是单一视频流,则模型在运行推理时会使用 批量大小 为 1。 .streams 文本文件可用于执行批处理推理,批处理大小由提供的数据流数量决定(例如,8 个数据流的批处理大小为 8)。

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Single stream with batch-size 1 inference
    source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    对于单数据流使用,批量大小默认设置为 1,这样就可以高效地实时处理视频馈送。

    要同时处理多个视频流,请使用 .streams 文本文件,其中包含流源。模型将运行批量推理,批量大小等于流的数量。这种设置可以高效地同时处理多个数据源。

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
    source = "path/to/list.streams"  # *.streams text file with one streaming address per line
    # Run inference on the source
    results = model(source, stream=True)  # generator of Results objects
    

    示例 .streams 文本文件:

    rtsp://example.com/media1.mp4
    rtsp://example.com/media2.mp4
    rtmp://example2.com/live
    tcp://192.168.1.100:554
    

    文件中的每一行都代表一个流媒体源,让您可以同时监控多个视频流并进行推理。

    通过将特定摄像机的索引传递给 source.

    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Run inference on the source
    results = model(source=0, stream=True)  # generator of Results objects
    # Run inference on 'bus.jpg' with arguments
    model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)
    

    推理论据:

    'ultralytics/assets' 指定推理的数据源。可以是图像路径、视频文件、目录、URL 或用于实时馈送的设备 ID。支持多种格式和来源,可灵活应用于
    不同类型的输入float 设置检测的最小置信度阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整该值有助于减少误报。 float 非最大抑制 (NMS) 的交叉重叠(IoU) 阈值。较低的数值可以消除重叠的方框,从而减少检测次数,这对减少重复检测非常有用。 imgsz int or tuple 定义用于推理的图像大小。可以是一个整数 640 或一个(高度、宽度)元组。适当调整大小可以提高检测效率 精确度 和处理速度。 False 启用精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低。 device 指定用于推理的设备(例如:......)、 cpu, cuda:00).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。 batch 指定推理的批量大小(仅当来源为 目录、视频文件或 .txt 文件).更大的批次规模可以提供更高的吞吐量,缩短推理所需的总时间。 max_det 每幅图像允许的最大检测次数。限制模型在单次推理中可以检测到的物体总数,防止在密集场景中产生过多的输出。 vid_stride 视频输入的帧间距。允许跳过视频中的帧,以加快处理速度,但会牺牲时间分辨率。数值为 1 时会处理每一帧,数值越大越跳帧。 stream_buffer False 决定是否对接收到的视频流帧进行排队。如果 False,旧帧会被丢弃,以容纳新帧(针对实时应用进行了优化)。如果为 "真",则在缓冲区中排队等待新帧,确保不会跳过任何帧,但如果推理的 FPS 低于流的 FPS,则会造成延迟。 visualize False 在推理过程中激活模型特征的可视化,从而深入了解模型 "看到 "了什么。这对调试和模型解释非常有用。 augment False 可对预测进行测试时间增强(TTA),从而在牺牲推理速度的情况下提高检测的鲁棒性。 agnostic_nms False 启用与类别无关的非最大抑制 (NMS),可合并不同类别的重叠方框。这在多类检测场景中非常有用,因为在这种场景中,类的重叠很常见。 classes list[int] 根据一组类别 ID 过滤预测结果。只有属于指定类别的检测结果才会返回。这对于在多类检测任务中集中检测相关对象非常有用。 retina_masks False 返回高分辨率分割掩码。返回的掩码 (masks.data) 如果启用,将与原始图像大小相匹配。如果禁用,它们将与推理过程中使用的图像大小一致。 embed list[int] 指定从中提取特征向量或嵌入的层。这对聚类或相似性搜索等下游任务非常有用。 project 保存预测结果的项目目录名称,如果 save 已启用。 预测运行的名称。用于在项目文件夹内创建一个子目录,在下列情况下存储预测输出结果 save 已启用。

    可视化参数:

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

    图像和视频格式

    YOLO11 支持ultralytics/data/utils .py 中指定的各种图像和视频格式。有关有效后缀和预测命令示例,请参见下表。

    下表包含有效的Ultralytics 图像格式。

    HEIC 图像仅支持推理,不支持训练。

    # Run inference on an image results = model("bus.jpg") # list of 1 Results object results = model(["bus.jpg", "zidane.jpg"]) # list of 2 Results objects

    Results 对象具有以下属性

    # View results for r in results: print(r.boxes) # print the Boxes object containing the detection bounding boxes

    下面是一张表格 Boxes 类方法和属性,包括名称、类型和说明:

    # View results for r in results: print(r.masks) # print the Masks object containing the detected instance masks

    下面是一张表格 Masks 类方法和属性,包括名称、类型和说明:

    # View results for r in results: print(r.keypoints) # print the Keypoints object containing the detected keypoints

    下面是一张表格 Keypoints 类方法和属性,包括名称、类型和说明:

    # View results for r in results: print(r.probs) # print the Probs object containing the detected class probabilities

    下面的表格总结了 Probs 类:

    # View results for r in results: print(r.obb) # print the OBB object containing the oriented detection bounding boxes

    下面是一张表格 OBB 类方法和属性,包括名称、类型和说明:

    更多详情,请参阅 OBB 类文档.

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

    from PIL import Image
    from ultralytics import YOLO
    # Load a pretrained YOLO11n model
    model = YOLO("yolo11n.pt")
    # Run inference on 'bus.jpg'
    results = model(["bus.jpg", "zidane.jpg"])  # results list
    # Visualize the results
    for i, r in enumerate(results):
        # Plot results image
        im_bgr = r.plot()  # BGR-order numpy array
        im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image
        # Show results to screen (in supported environments)
        r.show()
        # Save results to disk
        r.save(filename=f"results{i}.jpg")
    

    plot() 方法参数

    "(《世界人权宣言》) plot() 方法支持各种参数来定制输出:

    线程安全推理

    在不同线程并行运行多个YOLO 模型时,确保推理过程中的线程安全至关重要。线程安全推理可确保每个线程的预测都是独立的,不会相互干扰,从而避免出现竞赛条件,并确保输出结果的一致性和可靠性。

    在多线程应用程序中使用YOLO 模型时,必须为每个线程实例化单独的模型对象,或使用线程本地存储以防止冲突:

    线程安全推理

    在每个线程内实例化一个模型,以实现线程安全推理:

    from threading import Thread
    from ultralytics import YOLO
    def thread_safe_predict(model, image_path):
        """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
        model = YOLO(model)
        results = model.predict(image_path)
        # Process results
    # Starting threads that each have their own model instance
    Thread(target=thread_safe_predict, args=("yolo11n.pt", "image1.jpg")).start()
    Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
    

    如需深入了解YOLO 模型的线程安全推断以及分步说明,请参阅我们的YOLO 线程安全推断指南。本指南将为您提供所有必要信息,以避免常见陷阱,确保您的多线程推理顺利进行。

    流媒体源 for-循环

    Python 下面是一个使用 OpenCV (cv2)和YOLO 对视频帧进行推理。本脚本假定您已经安装了必要的软件包 (opencv-pythonultralytics).

    流式 for 循环

    import cv2
    from ultralytics import YOLO
    # Load the YOLO model
    model = YOLO("yolo11n.pt")
    # Open the video file
    video_path = "path/to/your/video/file.mp4"
    cap = cv2.VideoCapture(video_path)
    # Loop through the video frames
    while cap.isOpened():
        # Read a frame from the video
        success, frame = cap.read()
        if success:
            # Run YOLO inference on the frame
            results = model(frame)
            # Visualize the results on the frame
            annotated_frame = results[0].plot()
            # Display the annotated frame
            cv2.imshow("YOLO Inference", 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()
    

    该脚本将对视频的每一帧进行预测,将结果可视化并显示在窗口中。按 "q "键可退出循环。

    什么是Ultralytics YOLO 及其用于实时推理的预测模式?

    Ultralytics YOLO 是一种用于实时对象检测、分割和分类的先进模型。其预测模式允许用户对图像、视频和实时流等各种数据源进行高速推理。它还提供批处理和流模式,专为高性能和多功能而设计。有关其功能的更多详情,请查看Ultralytics YOLO 预测模式

    如何使用Ultralytics YOLO 在不同数据源上运行推理?

    Ultralytics YOLO 可以处理多种数据源,包括单个图像、视频、目录、URL 和数据流。您可以在 model.predict() 调用。例如,使用 'image.jpg' 本地图像或 'https://ultralytics.com/images/bus.jpg' 的 URL。查看详细示例,了解各种 推理源 在文档中。

    如何优化YOLO 的推理速度和内存使用率?

    要优化推理速度并有效管理内存,可以通过设置 stream=True 在预测器的调用方法中。流模式会生成一个具有内存效率的 Results 对象,而不是将所有帧加载到内存中。对于处理长视频或大型数据集,流模式尤其有用。了解更多 流媒体模式.

    Ultralytics YOLO 支持哪些推论论据?

    "(《世界人权宣言》) model.predict() YOLO 中的 conf, iou, imgsz, device等参数。通过这些参数,您可以自定义推理过程,设置置信度阈值、图像大小和计算设备等参数。有关这些参数的详细说明,请参阅 推理论据 节。

    如何可视化并保存YOLO 预测结果?

    使用YOLO 运行推理后, Results 对象包含用于显示和保存注释图像的方法。您可以使用以下方法 result.show()result.save(filename="result.jpg") 来可视化和保存结果。有关这些方法的完整列表,请参阅 工作成果 节。

    📅创建于 1 年前 ✏️已更新 1 个月前