Ultralytics YOLO27: Join the waitlist.
Get Started

Models Supported by Ultralytics#

Ultralytics supports a wide range of models, each tailored to specific tasks such as object detection, instance segmentation, semantic segmentation, depth estimation, image classification, pose estimation, and oriented bounding boxes.

Ultralytics YOLO26 Comparison Plots

Start with YOLO26 for a new project: it is the latest Ultralytics release and the only one covering all seven tasks. YOLO11 is the mature alternative, with pretrained checkpoints for each of its five tasks. Pick a specialized family only when you need promptable segmentation (SAM 3), open-vocabulary detection (YOLOE, YOLO-World), or a transformer detector (RT-DETR).

YOLO27 — Coming Soon

YOLO27 is undergoing final R&D for an anticipated launch later this year, with no set launch date. Preview its architecture, seven planned tasks, and preliminary benchmarks. Model weights and package support are not yet available; use YOLO26 for current projects.

The table lists released models and architecture references with their tasks, supported train, val, predict and export modes, and recommended use cases. Track is not listed separately: it runs on top of predict for Detect, Segment, Pose and OBB models, while SAM 2 and SAM 3 track through their own video predictors. Benchmark is not listed either, because it wraps export and val across formats rather than adding support of its own.

ModelTasksModesChoose it for
YOLO26 🚀 NEWDetect, Segment, Semantic, Depth, Classify, Pose, OBBTrain, Val, Predict, ExportNew projects: optional NMS-free inference, edge-optimized deployment, and the widest task coverage
YOLO12Detect, Segment, Classify, Pose, OBBTrain, Val, Predict, ExportBenchmarking the attention-centric community release; pretrained weights cover detection only
YOLO11Detect, Segment, Classify, Pose, OBBTrain, Val, Predict, ExportStable production workloads, with pretrained checkpoints for every task it supports
YOLOv10DetectTrain, Val, Predict, ExportNMS-free detection research from Tsinghua University
YOLOv9Detect, SegmentTrain, Val, Predict, ExportProgrammable Gradient Information (PGI), implemented on the Ultralytics YOLOv5 codebase
YOLOv8Detect, Segment, Classify, Pose, OBBTrain, Val, Predict, ExportExisting YOLOv8 pipelines and established third-party integrations
YOLOv7DetectPredictRunning an upstream-trained YOLOv7 export: the package predicts from a compatible ONNX or TensorRT model, never from the native checkpoint
YOLOv6DetectTrain, Val, Predict, ExportTraining Meituan's architecture from its YAML; Ultralytics hosts no YOLOv6 .pt checkpoints
YOLOv5DetectTrain, Val, Predict, ExportLegacy Ultralytics projects; current releases load the updated YOLOv5u checkpoints
YOLOv4NoneNoneArchitecture reference only: Alexey Bochkovskiy's Darknet-native model is not supported by the package
YOLOv3DetectTrain, Val, Predict, ExportLegacy projects on Joseph Redmon's original architecture; current releases load the updated YOLOv3u checkpoints
SAM 3 🚀 NEWSegmentPredictMeta's promptable concept segmentation in images and video, from text or image exemplars; sam3.pt and SAM 3.1 sam3.1_multiplex.pt (images) require access approval on Hugging Face
SAM 2SegmentPredictMeta's promptable segmentation, tracking objects across video frames
SAMSegmentPredictMeta's original promptable segmentation, including auto-annotation
MobileSAMSegmentPredictPromptable segmentation on mobile and other resource-constrained devices (Kyung Hee University)
FastSAMSegmentVal, Predict, ExportCNN-based promptable segmentation when SAM latency is the bottleneck (Chinese Academy of Sciences)
YOLO-NASDetectVal, Predict, ExportDeci's NAS-optimized detectors, kept for inference and export; Deci no longer maintains them after the NVIDIA acquisition
RT-DETRDetectTrain, Val, Predict, ExportBaidu's real-time DETR detector: a convolutional backbone with a hybrid transformer encoder
YOLO-WorldDetectTrain, Val, Predict, ExportOpen-vocabulary detection from text prompts (Tencent AI Lab); export requires the -worldv2 checkpoints
YOLOEDetect, SegmentTrain, Val, Predict, ExportOpen-vocabulary detection and segmentation with text, visual, or prompt-free inference
Large Language Models

Ultralytics also ships LLM, an OpenAI-compatible interface to large language and vision language models for text and image understanding. It has no tasks or modes of its own, so it is not in the table above, but it pairs with any YOLO pipeline and runs against OpenAI and other cloud providers or a fully local on-prem server.



Watch: Run Ultralytics YOLO models in just a few lines of code.

Getting Started: Usage Examples#

The examples below show simple YOLO training and inference.

The example below uses the COCO-pretrained YOLO26n model for object detection and trains it on the COCO8 example dataset. The same API applies to the Segment, Semantic, Depth, Classify, Pose and OBB tasks listed above.

Example

PyTorch pretrained *.pt models can be passed to the YOLO(), SAM(), NAS() and RTDETR() classes to create a model instance in Python (YOLO() and RTDETR() also accept *.yaml configuration files):

from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLO26n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Contributing New Models#

Ultralytics welcomes new model contributions. To add a model:

  1. Fork the Repository: Start by forking the Ultralytics GitHub repository.

  2. Clone Your Fork: Clone your fork to your local machine and create a new branch to work on.

  3. Implement Your Model: Add your model following the coding standards and guidelines provided in our Contributing Guide.

  4. Test Thoroughly: Test your model both in isolation and as part of the full pipeline.

  5. Create a Pull Request: Once you're satisfied with your model, create a pull request to the main repository for review.

  6. Code Review & Merging: After review, if your model meets our criteria, it will be merged into the main repository.

FAQ#

  • The latest released Ultralytics YOLO model is YOLO26, released in January 2026. YOLO26 features optional NMS-free end-to-end inference, optimized edge deployment, and supports detection, instance segmentation, semantic segmentation, depth estimation, classification, pose estimation, and OBB, plus open-vocabulary versions. For stable production workloads, both YOLO26 and YOLO11 are recommended choices.

    YOLO27 is the upcoming family, currently in final R&D. It is not yet available and has no set launch date.

  • Train a YOLO model on custom data with a few lines of Python or a single CLI command:

    Example
    from ultralytics import YOLO
    
    # Load a YOLO model
    model = YOLO("yolo26n.pt")  # or any other YOLO model
    
    # Train the model on custom dataset
    results = model.train(data="custom_data.yaml", epochs=100, imgsz=640)

    For more detailed instructions, visit the Train documentation page.

  • Ultralytics natively supports YOLOv3, YOLOv5, YOLOv6, YOLOv8, YOLOv9, YOLOv10, YOLO11, YOLO12, and YOLO26, along with the SAM family (SAM 3, SAM 2, SAM, MobileSAM and FastSAM), YOLO-NAS, RT-DETR, YOLO-World, and YOLOE. The package publishes no weights or YAMLs for YOLOv4 or YOLOv7: YOLOv4 is documented as an architecture reference only, while YOLOv7 runs as an exported ONNX or TensorRT model. See Featured Models for the tasks and modes available for each.

  • Ultralytics Platform is a no-code, end-to-end environment for annotating datasets and training, deploying, and managing YOLO machine learning models. It offers cloud training, dataset management, and an interface that suits both beginners and experienced developers.

  • Ultralytics YOLO models can perform tasks including object detection, instance segmentation, semantic segmentation, depth estimation, classification, pose estimation, and oriented object detection (OBB). The latest model, YOLO26, supports all seven tasks plus open-vocabulary detection.

Comments44

Ask a question, share your results, or help someone else.

  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(edited)

      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(edited)

      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(edited)

      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(edited)

      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(edited)

      @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(edited)

      @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.