查看 Markdown

Python API

LibreYOLO 的公开 Python 接口就是 libreyolo/__init__.py 里的 __all__ 列表。这个页面上的所有名字都能用 from libreyolo import <name> 导入;不在那个列表里的都是内部实现。

入口

有五个可调用对象负责加载模型。它们按调用约定划分,而不是按架构划分。

工厂函数加载什么调用时的提示需要的额外依赖(extra)
LibreYOLO无提示家族,靠嗅探检查点(checkpoint)或文件后缀
LibreSAM可提示的分割器,按尺寸别名点、检测框或概念文本sam
LibreVLM生成式视觉语言检测器,按别名类别词表或自由形式的提示vlm
LibreOpenVocab以文本为条件的检测器,按别名类别词表openvocab
LibreEnsemble两个或更多检测器,融合成一个接口

五个入口
from libreyolo import LibreYOLO, LibreEnsemble # 面向无提示家族的权重嗅探工厂函数detector = LibreYOLO("LibreYOLO9t.pt") # 两个或更多检测器,共用一个预测接口ens = LibreEnsemble(["LibreYOLO9t.pt", "LibreYOLO9s.pt"]) # 另外三个工厂函数需要安装额外依赖:#   pip install 'libreyolo[sam]'        -> from libreyolo import LibreSAM#   pip install 'libreyolo[vlm]'        -> from libreyolo import LibreVLM#   pip install 'libreyolo[openvocab]'  -> from libreyolo import LibreOpenVocabprint(type(detector).__name__, ens.fusion)

LibreYOLO 是唯一读取文件的那个。另外三个接受一个字符串别名,并把它解析成一个 Hugging Face 仓库,所以那个参数是模型名而不是路径。

python
LibreYOLO(
    model_path: str,
    size: str | None = None,
    reg_max: int = 16,
    nb_classes: int | None = None,
    device: str = "auto",
    task: str | None = None,
    compute_units: str = "all",
)

model_path 接受 .pt 检查点、ONNX 的 .onnx 文件、ExecuTorch 的 .pte、 MNN 的 .mnn、TensorRT 的 .engine、OpenVINO、Paddle 或 ncnn 目录,也接受 Triton 的 HTTP 或 HTTPS 模型 URL。省略时,sizenb_classes 从检查点里读取。 compute_units 只在加载 CoreML .mlpackage 时才会读取,取值是 allcpu_onlycpu_and_gpucpu_and_ne 之一。task 接受 libreyolo.tasks.TASKS 里的任意规范任务名。

用一个工厂函数加载任何模型
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") # 单张图像的源返回一个 Results;列表或目录# 返回由它们组成的列表result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)print(result.names)
直接导入家族类
from libreyolo import LibreYOLO9, SAMPLE_IMAGE model = LibreYOLO9("LibreYOLO9t.pt", size="t")result = model(SAMPLE_IMAGE) print(len(result))

家族类

工厂函数能返回的每个家族也都按名字导出,所以提前知道检查点是哪个时,可以直接构造 对应的类。构造函数遵循 BaseModel.__init__

python
Family(model_path, size, nb_classes=80, device="auto", task=None, **kwargs)

在家族类上 size 没有默认值,这就是它和工厂函数的区别。YOLO9 及其变体在 size 之后插入 reg_max: int = 16

检测与多任务家族:LibreYOLO9LibreYOLO9E2ELibreYOLO9P2LibreYOLONASLibreYOLOXLibreYOLO7LibreYOLO4LibreYOLO3LibreYOLO2LibreYOLO1LibreRTDETRLibreRTDETRv2LibreRTDETRv4LibreRFDETRLibreDFINELibreDOMEDETRLibreDEIMLibreDEIMv2LibreDETRLibreDeformableDETRLibreDINODETRLibreLWDETRLibreMaskRCNNLibreFCOSLibreFasterRCNNLibreRetinaNetLibreSSDLibreCenterNetLibreEfficientDetLibreECLibrePICODETLibreRTMDetLibreFOMO

稠密预测家族:LibreMiDaSLibreDepthAnythingV2LibreDepthAnything3LibreZipDepthLibreMoGe2LibreTEEDLibreDexiNedLibreNAFNetLibreRealESRGANLibreSwinIRLibreBiRefNetLibreFeyNobgLibreFCNLibreEoMTLibreDeepLabv3LibrePIDNetLibreSegformerLibreLingBotVision

分类与嵌入向量家族:LibreViTLibreMobileNetV4LibreConvNeXtLibreDeiTLibreSwinLibreEfficientNetV2LibreVGGLibreResNetLibreAlexNetLibreCLIPLibreSigLIP2LibreDINOv2

其他任务:LibreHRNet(pose)、LibreL2CS(gaze)、LibrePPOCR(ocr)、 LibreFaceEmbedder(embed)。

兄弟层级也导出各自的家族类:LibreSAM1LibreSAM2LibreSAM3LibreEdgeTAMLibreMobileSAMLibrePicoSAM3LibreGroundingDINOLibreOWLv2LibreOMDetTurboLibreLFM2VLLibreQwen3VLLibreSmolVLM2LibreInternVL3LibreFlorence2LibreKosmos2LibreLocateAnythingLibreMODUS(也写作 LibreModus)。

预测接口

调用模型就会跑推理。predict__call__ 的别名,两者可以互换。

python
model(
    source=None,
    *,
    conf=0.25,
    iou=0.45,
    imgsz=None,
    device=None,
    classes=None,
    max_det=300,
    augment=False,
    save=False,
    batch=1,
    stream=False,
    stream_buffer=False,
    vid_stride=1,
    show=False,
    output_path=None,
    color_format="auto",
    tiling=False,
    overlap_ratio=0.2,
    output_file_format=None,
    cuda_graph=False,
    **kwargs,
)

单张图像的源返回一个 Results。列表、元组或目录返回由它们组成的列表,而 stream=True 返回一个生成器。模型对象上的其他方法记录在模型 API 页面

Results 载荷

Results 和它的十八个载荷类都在包层面导出: ResultsBoxesMasksKeypointsPointsProbsOBBGazeSemanticMaskPanopticSegmentationDepthMapEdgeMapNormalMapRestoredImageMatteMeshesOCRRegionsEmbeddingsIdentities。 每一个都在 Results 类型里有说明。

后端

导出的产物通过 LibreYOLO() 按文件后缀加载,所以后端类很少需要手工构造。把它们 导出来,是为了应对必须显式选择后端的场合:OnnxBackendOpenVINOBackendPaddleBackendTensorRTBackendTritonBackendNcnnBackendCoreMLBackend,外加 create_triton_configBaseExportermodel.export() 背后的导出器注册表(registry)。

验证器

model.val() 按任务分发到对应的验证器,所以这些类导出出来供直接使用和继承: DetectionValidatorSegmentationValidatorPoseValidatorSemanticValidatorPanopticValidatorDepthValidatorNormalValidatorEdgeValidator,以及 共用的 ValidationConfig

跟踪

model.track() 按名字选择跟踪器。跟踪器类和它们的配置 dataclass 也都导出了: ByteTrackerTrackConfigBoTSortTrackerBoTSortConfigOCSortTrackerOCSortConfig

数据辅助函数

DATASETS_DIR 是解析后的数据集根目录,load_data_config 读取数据集 YAML, check_dataset 验证一份数据集。数据集格式里 点名的那些任务专用加载器住在 libreyolo.data,而不在包层面。

底库与蒸馏

GalleryFaceGalleryembed 任务保存注册进来的身份向量,构成底库 (gallery),并产出 Identities 载荷。Distillerget_distill_config 驱动 师生训练。

资源

SAMPLE_IMAGE 是随包附带的一张图像的绝对路径,所以这份文档里的每个代码片段都不用 先下载图片就能跑。

延迟导入与改名的类

大多数兄弟层级的名字、后端、验证器和数据辅助函数都通过模块级的 __getattr__ 解析,所以 import libreyolo 不会导入它们的依赖。缺少所需的额外依赖时,导入仍然 会带着清晰的报错信息失败。

有两个类改了名,旧写法仍然可以解析,但会带一条 DeprecationWarningLibreYOLORTDETR 现在叫 LibreRTDETRLibreYOLORFDETR 现在叫 LibreRFDETR

名字与签名读取自 v1.5.0 的 libreyolo/__init__.py、libreyolo/models/__init__.py、libreyolo/models/base/model.py、libreyolo/models/base/inference.py、libreyolo/models/sam/model.py、libreyolo/models/vlm/__init__.py、libreyolo/models/openvocab/__init__.py 和 libreyolo/ensemble/model.py。