Ultralytics YOLO27: 加入候补名单。
开始使用

Ultralytics 支持的模型#

Ultralytics 支持多种模型,每种模型都针对特定任务进行了优化,例如目标检测、实例分割、语义分割、深度估计、图像分类、姿态估计和有向边界框。

Ultralytics YOLO26 对比图

新项目可以从 YOLO26 开始:这是 Ultralytics 的最新版本,也是唯一覆盖全部七种任务的模型。YOLO11 是成熟的替代方案,五种任务均有预训练检查点。只有在需要可提示分割(SAM 3)、开放词汇检测(YOLOE、YOLO-World)或 Transformer 检测器(RT-DETR)时,才选择专用模型系列。

YOLO27 — 即将推出

YOLO27 正在进行最后阶段的 R&D,预计将于今年晚些时候推出,但尚未确定发布日期。预览其架构、计划支持的七种任务和初步基准测试结果。模型权重和软件包支持尚未开放;当前项目请使用 YOLO26。

此表列出了已发布的模型和架构参考资料,以及它们支持的任务、支持的 train、val、predict 和 export 模式和推荐用例。Track 未单独列出:它基于 Detect、Segment、Pose 和 OBB 模型的 predict 运行,而 SAM 2 和 SAM 3 则通过各自的视频预测器进行跟踪。Benchmark 也未单独列出,因为它会对多种格式执行 export 和 val,而不会新增自身支持的功能。

模型任务模式适用场景
YOLO26 🚀 新品检测、分割、语义分割、深度估计、分类、姿态估计、OBB训练、验证、预测、导出新项目:可选的无 NMS 推理、针对边缘设备优化的部署,以及最广泛的任务覆盖
YOLO12检测、分割、分类、姿态估计、OBB训练、验证、预测、导出用于基准测试的注意力机制社区版本;预训练权重仅覆盖检测
YOLO11检测、分割、分类、姿态估计、OBB训练、验证、预测、导出适用于稳定的生产工作负载,支持的每种任务都有预训练检查点
YOLOv10检测训练、验证、预测、导出清华大学开展的无 NMS 检测研究
YOLOv9检测、分割训练、验证、预测、导出可编程梯度信息(PGI),基于 Ultralytics YOLOv5 代码库实现
YOLOv8检测、分割、分类、姿态估计、OBB训练、验证、预测、导出现有 YOLOv8 流程和成熟的第三方集成
YOLOv7检测预测运行上游训练的 YOLOv7 导出模型:该软件包可使用兼容的 ONNX 或 TensorRT 模型进行预测,但无法使用原生检查点进行预测
YOLOv6检测训练、验证、预测、导出根据 YAML 训练 美团 的架构;Ultralytics 未托管 YOLOv6 .pt 检查点
YOLOv5检测训练、验证、预测、导出适用于旧版 Ultralytics 项目;当前版本会加载更新后的 YOLOv5u 检查点
YOLOv4无无仅供参考的架构:Alexey Bochkovskiy 基于 Darknet 的原生模型不受该软件包支持
YOLOv3检测训练、验证、预测、导出基于 Joseph Redmon 原始架构的旧版项目;当前版本会加载更新后的 YOLOv3u 检查点
SAM 3 🚀 新品分割预测Meta 推出的可提示概念分割模型,可依据文本或图像示例对图像和视频进行分割;sam3.pt 和 SAM 3.1 sam3.1_multiplex.pt(图像)需要获得 Hugging Face 访问批准
SAM 2分割预测Meta 推出的可提示分割模型,可跨视频帧跟踪物体
SAM分割预测Meta 推出的原始可提示分割模型,支持自动标注
MobileSAM分割预测适用于移动设备和其他资源受限设备的可提示分割模型(庆熙大学)
FastSAM分割验证、预测、导出当 SAM 的延迟成为瓶颈时,可使用基于 CNN 的可提示分割模型(中国科学院)
YOLO-NAS检测验证、预测、导出Deci 的 NAS 优化型检测器,保留用于推理和导出;被 NVIDIA 收购后,Deci 不再维护这些模型
RT-DETR检测训练、验证、预测、导出百度的实时 DETR 检测器:采用卷积骨干网络和混合式 Transformer 编码器
YOLO-World检测训练、验证、预测、导出根据文本提示进行开放词汇检测(腾讯 AI 实验室);导出需要 -worldv2 检查点
YOLOE检测、分割训练、验证、预测、导出通过文本、视觉提示或无提示推理进行开放词汇检测和分割
大型语言模型

Ultralytics 还提供 LLM,这是一个兼容 OpenAI 的接口,可用于大型语言模型和视觉语言模型,以理解文本和图像。LLM 没有自己的任务或模式,因此未列在上表中,但它可以与任何 YOLO 流水线配合使用,并连接 OpenAI 和其他云服务提供商,或完全本地部署的服务器。



观看: 只需几行代码即可运行 Ultralytics YOLO 模型。

入门:用法示例#

以下示例展示了简单的 YOLO 训练和推理。

以下示例使用基于 COCO 预训练的 YOLO26n 模型进行目标检测,并在示例数据集 COCO8 上训练该模型。相同的 API 也适用于上文列出的 Segment、Semantic、Depth、Classify、Pose 和 OBB 任务。

示例

PyTorch 预训练的 *.pt 模型可传递给 YOLO()、SAM()、NAS() 和 RTDETR() 类,以便在 Python 中创建模型实例(YOLO() 和 RTDETR() 也接受 *.yaml 配置文件):

from ultralytics import YOLO

# 加载经过 COCO 预训练的 YOLO26n 模型
model = YOLO("yolo26n.pt")

# 显示模型信息(可选)
model.info()

# 使用 COCO8 示例数据集训练模型 100 个 epoch
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# 使用 YOLO26n 模型对“bus.jpg”图像进行推理
results = model("path/to/bus.jpg")

贡献新模型#

Ultralytics 欢迎贡献新模型。要添加模型:

  1. Fork 仓库:首先,Fork Ultralytics GitHub 仓库。

  2. 克隆你的 Fork:将你的 Fork 克隆到本地计算机,并创建一个新分支进行开发。

  3. 实现你的模型:按照贡献指南中的编码标准和指南添加模型。

  4. 充分测试:分别单独测试模型,并将模型作为完整流水线的一部分进行测试。

  5. 创建拉取请求:对模型感到满意后,向主仓库提交拉取请求以供审核。

  6. 代码审查与合并:审查后,如果模型符合我们的标准,就会合并到主仓库。

常见问题#

  • 最新发布的 Ultralytics YOLO 模型是 YOLO26,于 2026 年 1 月发布。YOLO26 支持可选的无 NMS 端到端推理,针对边缘部署进行了优化,并支持检测、实例分割、语义分割、深度估计、分类、姿态估计、OBB 以及开放词汇版本。对于稳定的生产工作负载,YOLO26 和 YOLO11 都是推荐选择。

    YOLO27 是即将推出的模型系列,目前正处于最后阶段的 R&D。它尚未开放使用,也没有确定发布日期。

  • 只需几行 Python 代码或一条 CLI 命令,即可使用自定义数据训练 YOLO 模型:

    示例
    from ultralytics import YOLO
    
    # 加载 YOLO 模型
    model = YOLO("yolo26n.pt")  # 或任何其他 YOLO 模型
    
    # 使用自定义数据集训练模型
    results = model.train(data="custom_data.yaml", epochs=100, imgsz=640)

    如需更详细的说明,请访问 Train 文档页面。

  • Ultralytics 原生支持 YOLOv3、YOLOv5、YOLOv6、YOLOv8、YOLOv9、YOLOv10、YOLO11、YOLO12 和 YOLO26,以及 SAM 系列(SAM 3、SAM 2、SAM、MobileSAM 和 FastSAM)、YOLO-NAS、RT-DETR、YOLO-World 和 YOLOE。该软件包不提供 YOLOv4 或 YOLOv7 的权重或 YAML 文件:YOLOv4 仅作为架构参考进行文档说明,而 YOLOv7 则以导出的 ONNX 或 TensorRT 模型运行。请参阅精选模型,了解每种模型支持的任务和模式。

  • Ultralytics Platform 是一个无需编写代码的端到端环境,可用于标注数据集,以及训练、部署和管理 YOLO 机器学习模型。它提供云端训练、数据集管理功能,以及适合初学者和经验丰富开发者的界面。

  • Ultralytics YOLO 模型可执行任务,包括目标检测、实例分割、语义分割、深度估计、分类、姿态估计和有向目标检测(OBB)。最新模型 YOLO26 支持全部七项任务,还支持开放词汇检测。

评论44

提出问题、分享结果,或帮助其他人。

  1. Sudharsanam-1Sudharsanam-1GitHub

    hello ! For detecting 31 Chinese symbols (16 true and 15 fake), how many classes should be used in the model? Is it more efficient to detect the true symbols using only true class , or should we also include the fake symbols as separate classes?

    1. Glenn JocherGlenn JocherUltralytics(已编辑)

      Use as many classes as you need to distinguish at inference: if you only care about authenticity, train a 2‑class detector (“true”, “fake”); if you need per‑symbol IDs, use 31 classes (one per symbol)—explicitly labeling “fake” typically reduces false positives versus leaving them unlabeled; you can start with YOLO26 detect and your dataset YAML as usual:

      yolo detect train data=symbols.yaml model=yolo26s.pt imgsz=960 epochs=100

      Model overview and task setup are in the YOLO26 models documentation and the Detection task guide.

  2. Rohith-John-kctRohith-John-kctGitHub

    Hi. Could you please suggest which YOLO model works best for both detecting and segmenting 15 Chinese symbols? Also, how many images would be ideal to include in the dataset?

    1. Glenn JocherGlenn JocherUltralytics(已编辑)

      Use a single Ultralytics YOLO26 Segment model—it outputs both boxes and masks—start with yolo26s-seg for a good speed/accuracy balance, and scale up to -m/-l if needed; for 15 symbols, begin with roughly 100–200 labeled images per class (2k–5k total instances) and increase until validation mAP stabilizes, and use a larger input size for small characters (e.g., imgsz=960–1280):

      yolo segment train data=your_symbols.yaml model=yolo26s-seg.pt imgsz=960 epochs=100

      Model details: see the YOLO26 overview in the YOLO26 models documentation; segmentation specifics and best practices are in the Instance Segmentation task guide.

  3. Ranjith3436Ranjith3436GitHub

    Hi Guys!, Could you please clarify how you select best.pt ? what is the parameter use for that? how early Stop works? sometime val/loss is going to high but earlystop doesn't stop training for classification?

    1. Glenn JocherGlenn JocherUltralytics(已编辑)

      best.pt is the epoch with the highest validation “fitness” metric; for detection it’s mAP50-95 (seg and pose add their mask/keypoint mAP50-95), for classification it’s the mean of top‑1 and top‑5 accuracy, and Early Stop watches the same fitness (not val_loss) and stops after patience epochs without improvement (set via patience). Rising val_loss won’t trigger stopping if that fitness is still improving; see how fitness/metrics are computed in the Insights on Model Evaluation and Fine-Tuning guide: https://docs.ultralytics.com/guides/model-evaluation-insights/.

    1. Glenn JocherGlenn JocherUltralytics(已编辑)

      Ultralytics supports the original RT-DETR models (rtdetr-l and rtdetr-x) for training, validation, prediction and export, but RT-DETRv2 weights and architecture are not integrated. See the RT-DETR documentation for supported models and usage; for new projects, also consider YOLO26.

  4. matteobonamatteobonaGitHub

    Hi, Is it possibile to use a yolo-pose model (with a custom dataset and training) to detect simultaneously a class of objects with keypoints inside and a different class with no keypoints?. For example I need to detect a football pitch with some keypoints inside of it and the football players as simple bounding boxes. Is there a way to use a unique model instead of using two separate models (yolo-pose + yolo-detect)? for example putting at 0 0 0 any keypoints related to the players (but I think that this solution may confuse the model during the training)

    1. Glenn JocherGlenn JocherUltralytics

      Yes, you can train a single YOLO-pose model to detect both classes. For objects without keypoints (players), simply set all keypoint coordinates to zero in your dataset annotations. The model will learn to ignore these zero-value keypoints while still detecting bounding boxes for both classes. For implementation details, see the Pose Estimation task documentation on handling mixed annotations.

      This approach is efficient and avoids the complexity of running two separate models, though we recommend thorough validation to ensure keypoint absence doesn't degrade detection performance for non-keypoint classes.

  5. hemanthmandava945hemanthmandava945GitHub

    @glenn-jocher @pderrenger Car Segmentation on Reflectivity Images

    What I'm doing:

    Running inference with a pretrained YOLOv8 model to segment cars in the LiDAR reflectivity domain. Detection performance (bounding boxes) looks good, but the segmentation masks aren’t very accurate. The problem:

    When I project these predicted masks onto the 3D point cloud, I see a lot of misclassified points (points that are not actually part of the car end up being labeled as car). These noisy masks reduce the accuracy of any downstream tasks that rely on correct 3D segmentation. Question:

    Has anyone else dealt with similar mask inaccuracy issues when segmenting LiDAR-based 2D images? Are there recommended strategies to improve segmentation masks on reflectivity images? (e.g., domain-specific data augmentation, fine-tuning from a LiDAR-focused checkpoint, multi-modal approaches, etc.)

    Pallet Detection on Reflectivity Images

    What I'm planning:

    Train YOLOv8 to detect pallets in LiDAR reflectivity images (again, 512×128, single channel). Pallets appear relatively small in these images. Potential multi-modal approach:

    Considering combining RGB camera images with LiDAR reflectivity data in the training set (even though the reflectivity images look more like grayscale). My concern: Will mixing these modalities confuse the model or help it? Pallets are already small in lidar images, and might be even harder to identify in reflectivity data. Questions:

    Is it advisable to train on both RGB and reflectivity images at once, or should I keep them separate? Does anyone have experience or tips on multi-modal YOLO training (camera + LiDAR reflectivity)? If combining them is possible, any best practices for merging different modalities (e.g., input channels, data augmentation techniques, etc.)?

    Additional No response

    1. Glenn JocherGlenn JocherUltralytics

      @hemanthmandava945 for segmentation mask inaccuracies in LiDAR reflectivity images, consider fine-tuning the pretrained YOLOv8 model on a domain-specific dataset with augmentations tailored for reflectivity images. For multi-modal training (RGB + reflectivity), it’s advisable to preprocess and align modalities carefully to avoid introducing noise. Experimenting with separate models or fusing features at specific layers during training can help. For more insights, refer to the YOLOv8 documentation. Let us know if you need further clarification!

    2. hemanthmandava945hemanthmandava945GitHub

      @glenn-jocher i guess further clarification will be greatly helpful as i am beginner in this field so that the information from you will be greatly helpful for my further research

    3. hemanthmandava945hemanthmandava945GitHub

      @glenn-jocher i want to train the model on to detect pallet in lidar reflectivity images.as the resolution of images is 512 * 128 and single channel(0 -255).my questions are? can is use pretrained model using transfer learning to train on custom data ? is it possible? 2.do i need to resize the image of my data set for training (640 * 640)? as i used to pretrained model to detect cars in lidar reflectivity images of resolution 1024 *128 it work perfectly fine. 3. for annotation in images as i only need to detect pallet is annotating pallet would enough?

    4. Glenn JocherGlenn JocherUltralytics
      1. Yes, you can use a pretrained YOLO model and fine-tune it on your custom dataset for pallet detection.
      2. Resizing your dataset to match the model's input size (e.g., 640x640) is recommended for consistent results.
      3. Annotating only the pallets is sufficient if pallet detection is your sole objective.

      For training details, refer to the Ultralytics Train documentation. Let me know if you need further assistance!

    5. hemanthmandava945hemanthmandava945GitHub

      @glenn-jocher i am using yolov8x for car segmentation on lidar 2d reflective data,i got the following results: 0: 128x1024 11 cars, 4127.8ms Speed: 1.6ms preprocess, 4127.8ms inference, 221.6ms postprocess per image at shape (1, 3, 128, 1024) which actually performs well on lidar 2d data. But catch is when i am validating the model, i made annotaion of 50 images where it consist of cats and persons but i am getting poor results: Ultralytics 8.3.28 🚀 Python-3.10.12 torch-2.5.1+cu124 CPU (Intel Core(TM) i5-8265U 1.60GHz) val: Scanning /home/mandava/myenv/share/traffic-2/valid/labels.cache... 50 images, 0 backgrounds, 0 corrupt: 100%|██████████| 50/50 [00:00<?, ?it/s] Class Images Instances Box(P R mAP50 mAP50-95) Mask(P R mAP50 mAP50-95): 100%|██████████| 4/4 [04:16 all 50 491 0.00184 0.0148 0.00104 0.000264 0.00524 0.0426 0.00275 0.000623 person 50 473 0.00367 0.0296 0.00208 0.000528 0.00367 0.0296 0.00189 0.000525 bicycle 18 18 0 0 0 0 0.0068 0.0556 0.0036 0.00072 Speed: 4.3ms preprocess, 5012.5ms inference, 0.0ms loss, 3.5ms postprocess per image Results saved to runs/segment/val4 map50-95:0.0002641973106310545 i want to evaluate the model on lidar data and inference speed it taking , can you explain why i am getting the validation metrics very poor as i am getting prediction was good. here my yaml file: names:

      • car

      • person nc: 2 roboflow:

        version: 2 workspace: hemanthmandava test: ../test/images train: ../train/images val: ./valid/images

    6. Glenn JocherGlenn JocherUltralytics

      Thank you for sharing these details. The poor validation metrics could stem from class mismatches (your YAML defines 2 classes but validation includes 'cats'), potential annotation format issues, or domain gap between training/validation data. For LiDAR-specific segmentation improvements, consider fine-tuning on domain-adapted data and verifying label consistency. More validation guidance can be found in our Val Mode documentation.

    7. hemanthmandava945hemanthmandava945GitHub(已编辑)

      @glenn-jocher could explain in more details, I am working with Ouster LiDAR reflectivity images and aiming to evaluate the inference speed and performance of pretrained YOLOv8, YOLOv9, and YOLOv11 models for instance segmentation. However, I am facing issues when using the YOLO validation function (val), even though the visual inspection of inference results looks good. note: the model or running on lidar video segmenting cars very well and tracking of masks also performs good

      My Understanding & Key Questions: Fine-Tuning vs. Direct Evaluation:

      I understand that fine-tuning means training a pretrained model on my dataset (LiDAR 2D images). However, my goal is to only validate the pretrained YOLO models without fine-tuning. Does the poor validation performance indicate a need for fine-tuning, or is it possible that the pretrained models just do not generalize well to my LiDAR images? Dataset & Annotation Format:

      I have 50 annotated images (no separate training set, only validation). The annotations are in YOLO format, where segmentation masks are represented as polygon coordinates normalized to image width and height. Example annotation: 0 0.478515625 0.4783950617283951 0.52734375 0.4783950617283951 0.52734375 0.6790123456790124 0.478515625 0.6790123456790124 Validation Issues:

      When I run YOLO inference, the visual results look reasonable, and the model seems to segment objects correctly. However, when using YOLO’s val function, the evaluation metrics are poor. What could be the reasons behind this discrepancy? Performance Metrics to Focus On:

      Since my goal is to compare YOLOv8, YOLOv9, and YOLOv11 on LiDAR reflectivity images in terms of inference speed and segmentation accuracy, what are the most relevant evaluation metrics I should consider? I am currently looking at: IoU (Intersection over Union) F1 score mAP (mean Average Precision) FPS (Frames Per Second) for inference speed Are there any specific metrics better suited for LiDAR-based segmentation? What strategies would you recommend for properly evaluating segmentation models on LiDAR images? Are there better methods to verify annotation alignment and ensure the YOLO val function produces meaningful results?

    8. Glenn JocherGlenn JocherUltralytics

      Hi there! 👋 Your observed discrepancy between visual results and validation metrics likely stems from a domain gap between COCO-pretrained models (RGB images) and LiDAR reflectivity data (single-channel). Here's a concise breakdown:

      1. Domain Adaptation: Pretrained models struggle with LiDAR's unique characteristics. Fine-tuning (even briefly) on LiDAR data is strongly recommended (YOLO Train Docs)
      2. Annotation Verification: Use yolo val with plots=True to visualize predictions vs. ground truth. Check mask alignment in LiDAR coordinates
      3. Key Metrics: Focus on mAP50-95(M) for segmentation quality and FPS for speed. LiDAR-specific metrics like point-wise IoU could add value
      4. Quick Fix: Try converting LiDAR to 3-channel (replicate single channel) to better match pretrained weights

      For direct evaluation without fine-tuning, consider benchmarking against manually verified samples rather than relying solely on automated metrics. Our COCO-Seg validation example might help as reference. Let us know how it goes! 🚀

    9. hemanthmandava945hemanthmandava945GitHub

      @glenn-jocher Issue: When using YOLOv8 for instance segmentation, I’ve noticed that the predicted masks extend slightly beyond the true object boundaries. This results in overlapping masks when objects are close together and inaccurate measurements of object sizes and shapes.

      Observations:

      Oversized Masks: The masks often include extra pixels along the edges, sometimes producing “flat” boundaries—similar to known issues where masks align too closely with the bounding box edges. Overlap with Adjacent Objects: Due to these extra pixels, masks of nearby objects tend to merge or overlap, which is problematic for applications requiring precise segmentation as i am projecting in 3d some of pixels segmented car points where projected on other objects . Architectural Artifact: The issue appears inherent to the current segmentation head in YOLOv8, where the approximated boundaries may not capture fine details, especially for smaller objects.

      is it possible to reduce the size of the mask like getting 90% of mask, as i don't require the mask till the edge of the car. i can get major pixels of car.

    10. Glenn JocherGlenn JocherUltralytics

      Thank you for sharing these details. For mask size reduction in YOLOv8 segmentation, you can post-process predictions by applying a mask confidence threshold and morphological erosion. Here's a minimal example to shrink masks:

      from ultralytics import YOLO
      import cv2
      
      model = YOLO('yolov8x-seg.pt')
      results = model(your_image)
      masks = results[0].masks.data.cpu().numpy()
      
      # Apply erosion to shrink masks
      kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))  # Adjust kernel size as needed
      eroded_masks = [cv2.erode(m, kernel) for m in masks]

      For better domain adaptation, consider fine-tuning the segmentation head on LiDAR data using our Train docs. The pretrained COCO weights may struggle with LiDAR's unique reflectance patterns.

  6. LiJiang97LiJiang97GitHub

    When using yolo11 for inference, what operations will the preprocessing process perform on the input image? Is it just scaling the image to 640? Which part is the operation file? Thank you

    1. Glenn JocherGlenn JocherUltralytics(已编辑)

      @LiJiang97 the preprocessing for YOLO11 typically involves resizing the input image to the specified imgsz (default 640) while maintaining aspect ratio by padding as needed. These operations are handled internally in the Ultralytics framework. The resizing is done by LetterBox in ultralytics/data/augment.py, and BasePredictor.preprocess in ultralytics/engine/predictor.py converts BGR to RGB and scales pixel values to 0-1. Let us know if you need further assistance!

  7. ZelyanneZelyanneGitHub

    Hello please, is there a way for making yolov11 to predict 2 class per detection so that when it fails to detect the first class , if the second class is detected it ll show it

    1. Glenn JocherGlenn JocherUltralytics

      @Zelyanne thank you for your question. YOLO models are designed to predict a single class per object detection, but multi-class labeling per detection isn't natively supported. You could implement a custom post-processing step to assign secondary classes based on your criteria or train the model with augmented multi-label datasets. For advanced use cases like this, consider modifying the model or leveraging additional resources to meet your requirements.