Ultralytics YOLO27: Join the waitlist.
Get Started

Ultralytics YOLOv5#

Overview#

YOLOv5u is an updated version of Ultralytics YOLOv5 for object detection. Built on the architecture of the YOLOv5 model developed by Ultralytics, YOLOv5u integrates the anchor-free, objectness-free split head first introduced in the YOLOv8 models. This change improves the accuracy-speed tradeoff, making YOLOv5u an efficient option for both research and practical applications.

YOLOv5 object detection model architecture and performance

Models trained with the original YOLOv5 repo are not compatible with the Ultralytics library

Ultralytics provides an anchor-free variant of the YOLOv5 model. Models trained with the ultralytics/yolov5 repo cannot be loaded with the ultralytics/ultralytics library. To use YOLOv5 here, train a new model from an Ultralytics YOLOv5u checkpoint (e.g. yolov5su.pt).

Try on Ultralytics Platform

Explore and run YOLOv5 models directly on Ultralytics Platform.

Key Features#

  • Anchor-free Split Ultralytics Head: Traditional object detection models rely on predefined anchor boxes to predict object locations. YOLOv5u instead uses an anchor-free split Ultralytics head, which provides a more flexible detection mechanism and improves performance across diverse scenarios.

  • Optimized Accuracy-Speed Tradeoff: YOLOv5u balances speed and accuracy, delivering real-time detections with competitive accuracy. This is valuable for applications that demand fast responses, such as autonomous vehicles, robotics, and real-time video analytics.

  • Variety of Pretrained Models: YOLOv5u provides COCO-pretrained models in five sizes (n, s, m, l, x) at 640 input resolution, plus P6 variants for 1280 input, so you can choose the speed-accuracy point that fits your hardware and fine-tune it on your own data.

Supported Tasks and Modes#

The YOLOv5u models, with various pretrained weights, support object detection and every mode needed from development to deployment.

Model TypePretrained WeightsTaskTrainingValidationInferenceExport
YOLOv5uyolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6uObject Detection✅✅✅✅

This table summarizes the YOLOv5u model variants and their support for the Training, Validation, Inference, and Export modes.

Performance Metrics#

Performance

See Detection Docs for usage examples with these models trained on COCO, which include 80 pretrained classes.

ModelYAMLsize
(pixels)
mAPval50-95Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
yolov5nu.ptyolov5n.yaml64034.373.61.062.67.7
yolov5su.ptyolov5s.yaml64043.0120.71.279.124.0
yolov5mu.ptyolov5m.yaml64049.0233.91.8625.164.2
yolov5lu.ptyolov5l.yaml64052.2408.42.5053.2135.0
yolov5xu.ptyolov5x.yaml64053.2763.23.8197.2246.4
yolov5n6u.ptyolov5n6.yaml128042.1211.01.834.331.3
yolov5s6u.ptyolov5s6.yaml128048.6422.62.3415.397.6
yolov5m6u.ptyolov5m6.yaml128053.6810.94.3641.2261.3
yolov5l6u.ptyolov5l6.yaml128055.71470.95.4786.1549.4
yolov5x6u.ptyolov5x6.yaml128056.82436.58.98155.51002.8

Usage Examples#

This example provides simple YOLOv5 training and inference examples.

Example

PyTorch pretrained *.pt models as well as configuration *.yaml files can be passed to the YOLO() class to create a model instance in Python:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv5nu model
model = YOLO("yolov5nu.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 YOLOv5nu model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Citations and Acknowledgments#

Ultralytics YOLOv5 Publication

Ultralytics has not published a formal research paper for YOLOv5 due to the rapidly evolving nature of the models. We focus on advancing the technology and making it easier to use, rather than producing static documentation. For the most up-to-date information on YOLO architecture, features, and usage, please refer to our GitHub repository and documentation.

If you use YOLOv5 or YOLOv5u in your research, please cite the Ultralytics YOLOv5 repository as follows:

Citation
@software{yolov5,
  title = {Ultralytics YOLOv5},
  author = {Glenn Jocher},
  year = {2020},
  version = {7.0},
  license = {AGPL-3.0},
  url = {https://github.com/ultralytics/yolov5},
  doi = {10.5281/zenodo.3908559},
  orcid = {0000-0001-5950-6979}
}

Please note that YOLOv5 models are provided under AGPL-3.0 and Enterprise licenses.

FAQ#

  • Ultralytics YOLOv5u is an updated version of YOLOv5, integrating the anchor-free, objectness-free split head that enhances the accuracy-speed tradeoff for real-time object detection tasks. Unlike the traditional YOLOv5, YOLOv5u adopts an anchor-free detection mechanism, making it more flexible and adaptive in diverse scenarios.

  • The anchor-free Ultralytics head in YOLOv5u improves object detection performance by eliminating the dependency on predefined anchor boxes. This results in a more flexible and adaptive detection mechanism that can handle various object sizes and shapes with greater efficiency. This enhancement directly contributes to a balanced tradeoff between accuracy and speed, making YOLOv5u suitable for real-time applications. Learn more about its architecture in the Key Features section.

  • The performance metrics of YOLOv5u models vary depending on the platform and hardware used. For example, the YOLOv5nu model achieves 34.3 mAP on the COCO dataset with a speed of 73.6 ms on CPU (ONNX) and 1.06 ms on A100 TensorRT. Detailed metrics for every YOLOv5u model, including CPU ONNX and A100 TensorRT speeds, are in the Performance Metrics section.

  • You can train a YOLOv5u model by loading a pretrained model and running the training command with your dataset. Here's a quick example:

    Example
    from ultralytics import YOLO
    
    # Load a COCO-pretrained YOLOv5nu model
    model = YOLO("yolov5nu.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)

    For more detailed instructions, visit the Usage Examples section.

Comments30

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

  1. PriyaRanjanReddyPriyaRanjanReddyGitHub

    Hi can we use yolov5nu.pt for training on my own dataset and then use the trained model for commercial use where I can build an application over it

    1. Glenn JocherGlenn JocherUltralytics

      @PriyaRanjanReddy yes, you can use YOLOv5nu.pt for training on your dataset. For commercial use, you'll need an Ultralytics Enterprise License, which allows proprietary deployment without AGPL-3.0's open-source requirements. Visit https://ultralytics.com/license for licensing details.

    2. Glenn JocherGlenn JocherUltralytics(edited)

      @PriyaRanjanReddy Ultralytics models, including YOLOv5u, YOLOv8, YOLO11 and YOLO26, are released under AGPL-3.0. You can use them commercially if your application complies with AGPL-3.0 (including open-sourcing it); otherwise you need an Ultralytics Enterprise License. Pricing varies based on your project's needs, so please visit our licensing page to discuss details.

  2. donia444donia444GitHub

    hey ,i am trying to train yolov5nu on a custom dataset that is specifically for drone detection ,every time i train using this model ,i notice that my model overfits and gives a very very high unreal accuracy , but when i train on a different model like yolov5n that problem seem to not be found ,any idea why is that happening

    1. Glenn JocherGlenn JocherUltralytics

      @donia444 it seems that your YOLOv5nu model might be overfitting due to its more complex architecture compared to YOLOv5n, which is simpler and might generalize better on your dataset. Consider using techniques like data augmentation, dropout, or early stopping to mitigate overfitting. You can find additional strategies in the Ultralytics documentation to help address this issue.

  3. MadhavKrishna1MadhavKrishna1GitHub

    1.Does the kaggle dataset have a label file also? 2.How can i fine tune the model ,is there any built in library through which i could fine tune it.

    On Sun, 22 Sept 2024 at 13:12, Glenn Jocher @.***> wrote:

    @MadhavKrishna1 https://github.com/MadhavKrishna1 yOLOv5 models are indeed trained on the full COCO dataset, which includes 80 classes. For additional datasets similar to COCO, you might explore open-source repositories or platforms like Kaggle. Fine-tuning with your specific images should enhance performance on your target data.

    — Reply to this email directly, view it on GitHub https://github.com/orgs/ultralytics/discussions/10054#discussioncomment-10716632, or unsubscribe https://github.com/notifications/unsubscribe-auth/BCVBHHUR2WRPYUK46RYYFGTZXZYHRAVCNFSM6AAAAABGG3IMDCVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANZRGY3DGMQ . You are receiving this because you were mentioned.Message ID: @.*** com>

    1. Glenn JocherGlenn JocherUltralytics

      @MadhavKrishna1 1. Yes, Kaggle datasets often include label files, but it's best to check the specific dataset details on Kaggle. 2. You can fine-tune the model using the Ultralytics YOLO Python API, which provides built-in support for training and fine-tuning.

  4. MadhavKrishna1MadhavKrishna1GitHub

    I would like to know about the training process of the YOLOv5 model. Specifically, is it trained on the entire COCO dataset? I am planning to fine-tune a downloaded YOLOv5 model using additional images that are similar to those in the COCO dataset. These images have 80 classes and similar sizes to those in COCO Could you provide guidance on finding this additional dataset?

    Thank you!

    1. Glenn JocherGlenn JocherUltralytics

      @MadhavKrishna1 yOLOv5 models are indeed trained on the full COCO dataset, which includes 80 classes. For additional datasets similar to COCO, you might explore open-source repositories or platforms like Kaggle. Fine-tuning with your specific images should enhance performance on your target data.

  5. chef-SAbhinaychef-SAbhinayGitHub

    Can still use yolov5su.pt with YOLO from ultralytics pip package which is mentioned in the above docs?

    1. chef-SAbhinaychef-SAbhinayGitHub

      WARNING ⚠️ yolov5su.pt appears to require 'ultralytics.yolo', which is not in Ultralytics requirements.

    2. Glenn JocherGlenn JocherUltralytics(edited)

      @Abhinay-Sadineni yes, yolov5su.pt is an Ultralytics YOLOv5u checkpoint and loads directly with the YOLO class from the ultralytics package, so ensure you have the latest version installed. Checkpoints trained with the original ultralytics/yolov5 repo are the ones that cannot be loaded this way. For more details, visit the YOLOv5 documentation.

    3. chef-SAbhinaychef-SAbhinayGitHub

      is this yolov5su.pt(yolov5 model) compatible with latest ultralytics package ?

      my experiment setup doesn't allow the autoinstall 'ultralytics.yolo' (i mean external traffic is blocked)

      @glenn-jocher

      will the latest package also issue autoinstall warning?

    4. chef-SAbhinaychef-SAbhinayGitHub

      I believe torch.hub.load will also try to install model (which my experiment setup doesn't allow)

    5. Glenn JocherGlenn JocherUltralytics

      To use yolov5su.pt with the latest Ultralytics package, ensure you have the latest version installed. If your setup blocks external traffic, you can manually download the model and dependencies. The autoinstall warning may still appear if dependencies are missing. For a seamless experience, consider using the model with the Ultralytics YOLO class after ensuring all dependencies are locally available.

    6. kanagarajan0709kanagarajan0709GitHub

      I built a custom dataset from Ultralytics Hub platform using Yolov5su model type and downloaded the trained model. When I tried to load getting this error : "An error occurred: 'Detect' object has no attribute 'grid'. "

      This is how I load the model : yolov5path - points to latest yolov5 git repo. model path - refers to YOLOv5su model trained using Ultralytics Hub.

      yolo_model = torch.hub.load(yolov5path, 'custom', force_reload=True, path=model_path, source='local')

      YOLOv5 v7.0-338-gff063284 Python-3.12.4 torch-2.3.1+cpu CPU

      YOLOv5s summary (fused): 193 layers, 9,114,632 parameters, 0 gradients, 23.8 GFLOPs Adding AutoShape... An error occurred: 'Detect' object has no attribute 'grid'.

    7. Glenn JocherGlenn JocherUltralytics(edited)

      @kanagarajan0709 yolov5su.pt is an Ultralytics YOLOv5u checkpoint and loads with the YOLO class from the latest ultralytics package. The "Detect object has no attribute 'grid'" error appears when a checkpoint from the original ultralytics/yolov5 repo is loaded with ultralytics, or when yolov5su.pt is loaded with the old yolov5 repo code. Load yolov5su.pt with from ultralytics import YOLO, and use the yolov5 repo only for checkpoints trained there. See the YOLOv5 documentation.

    8. kanagarajan0709kanagarajan0709GitHub(edited)

      To resolve this, please ensure you are using the correct version of the YOLOv5 repository that supports the yolov5su.pt model. If the issue persists, consider using the torch.hub.load method with the appropriate YOLOv5 version.

      Yes , that's what I would be interested to know about. Could you please let me know which Yolov5 git hub repo that supports loading of yolov5su model.

      I am currently on latest git version of this - https://github.com/ultralytics/yolov5. Last commit e8a30cf820b273afbbf1c73a3f1088471a84fade (HEAD -> master, origin/master, origin/HEAD) Author: Glenn Jocher glenn.jocher@ultralytics.com

      Also I did use torch.hub.load method to load the model as below , yolo_model = torch.hub.load(yolov5path, 'custom', force_reload=True, path=model_path, source='local')

    9. Glenn JocherGlenn JocherUltralytics(edited)

      To load yolov5su.pt, use the YOLO class from the latest ultralytics package (YOLO("yolov5su.pt")). It is an Ultralytics YOLOv5u checkpoint and is not meant for the ultralytics/yolov5 repo, which loads checkpoints trained there.

  6. Halafz7Halafz7GitHub

    Good Content! I want to ask something. Is it possible to use yolov5u for Classification purposes?

    1. Paula DerrengerPaula DerrengerUltralytics(edited)

      @Halafz7 thank you for your kind words! 😊

      YOLOv5u is designed for object detection. For classification, use a classification model such as YOLO26, which supports it directly.

      Python Example

      from ultralytics import YOLO
      
      # Load a pretrained YOLO26 classification model
      model = YOLO("yolo26n-cls.pt")
      
      # Run inference on an image
      results = model("path/to/image.jpg")
      
      # Display the results
      results[0].show()

      CLI Example

      # Run inference with a YOLO26 classification model
      yolo predict model=yolo26n-cls.pt source=path/to/image.jpg

      For more details, see the Classify docs.

      If you have any more questions or need further assistance, feel free to ask! 🚀

  7. MikolajBaranskiMikolajBaranskiGitHub

    My questions (as of 12th April 2024) is whether there is any documentation regarding the Yolov5u model. The description on this page states that the Yolov5u incorporates the objectness-free split head into the Yolov5 architecture. Is there any further documentation on this model? The Yolov5 GitHub doesn't seem to present this model anywhere. While the page of v7.0 update only describes the introduction of segmentation. Is there any resource going into more detail into this specific release of the model?

    I see there is also documentation regarding the architecture of the Yolov5 v6.1/6.0 model (link below for reference). Is the Yolov5u an adaptations of that architecture? If so which part is changed?

    Github: https://github.com/ultralytics/yolov5 Architecture: https://docs.ultralytics.com/yolov5/tutorials/architecture_description/

    1. Paula DerrengerPaula DerrengerUltralytics

      Hey there! 😊 It looks like you're exploring the details of our YOLOv5u model. Indeed, YOLOv5u builds upon the YOLOv5 architecture, especially by incorporating an anchor-free, objectness-free split head, a feature inspired by advancements in YOLOv8. This enhancement is aimed at refining the model's ability to detect objects with a better accuracy-speed tradeoff.

      Although it seems there might not be detailed standalone documentation on the YOLOv5u model in the Ultralytics GitHub repo, the key updates and features you’re interested in are described in our Ultralytics YOLOv5 Overview. This page highlights the integration of the anchor-free split head into the model and its impact on performance and adaptability in various scenarios.

      Regarding your question on the architecture adaptation, yes, YOLOv5u adapts the YOLOv5 v6.1/6.0 architecture. The primary change lies in the detection head of the model, which has moved towards an anchor-free, objectness-free approach. This move enhances flexibility and detection efficiency, especially in complex scenarios where predefined anchor boxes might limit the detection capabilities.

      If you're looking for more technical specifics or examples, I'd recommend diving into the architecture description you mentioned. While it focuses on an earlier version, the core architectural principles remain relevant, with the YOLOv5u modifications centered around the detection head for improved performance.

      For direct experimentation or further exploration of the YOLOv5u's unique features, playing with the pre-trained models and reviewing their performance metrics might also offer valuable insights.

      I hope this clarifies your queries! If you have more questions or need further assistance, feel free to ask. Happy detecting! 🚀

    2. MikolajBaranskiMikolajBaranskiGitHub

      Thank you that is a very helpful answer! Just to make a final clarification. I am using the YOLOv5u in my Masters Thesis and I would like to appropriately record the model I have used. For the YOLOv5xu.pt (the pretrained model), should I refer to it as the extra large version of the YOLOv5u v1.0, or is it the YOLOv5 v7.0, or is there some other versioning that would correctly identify this specific release of the model?

    3. Paula DerrengerPaula DerrengerUltralytics

      Hey, thanks for reaching out with your question! 😊

      For your Masters Thesis, when documenting the model, it's best to refer to it as YOLOv5u, specifying the version as YOLOv5 v7.0 if that's the version you're utilizing, along with the specific variant you're using, for instance, yolov5xu.pt for the extra-large model. It's key to mention both the overall version (v7.0, as an example) and the specific model variant (xu) to provide clear context and specificity about the architecture and features employed in your work.

      Here's how you could cite it:

      "I utilized the YOLOv5u extra-large variant (yolov5xu.pt) from the YOLOv5 v7.0 release for object detection tasks in my project."

      This approach ensures that your documentation is clear, precise, and tracks back to the correct version of the model relevant to your study.

      Hope this helps, and all the best with your thesis! 🚀 If there's anything more you need, feel free to ask.