ultralytics / yolov5

YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite
https://docs.ultralytics.com
GNU Affero General Public License v3.0
49.49k stars 16.08k forks source link

mAP of nano and small models for different image sizes #13185

Closed Avishek-Das-Gupta closed 3 weeks ago

Avishek-Das-Gupta commented 1 month ago

Search before asking

Question

I have trained and tested yolov5 models with my custom dataset considering different image sizes. For medium and large models the mAP increase with image sizes but for nano and small models, it decreases for higher image dimensions. Do nano and small models face difficulties to process the higher dimension images?

Additional

No response

github-actions[bot] commented 1 month ago

👋 Hello @Avishek-Das-Gupta, thank you for your interest in YOLOv5 🚀! Please visit our ⭐️ Tutorials to get started, where you can find quickstart guides for simple tasks like Custom Data Training all the way to advanced concepts like Hyperparameter Evolution.

If this is a 🐛 Bug Report, please provide a minimum reproducible example to help us debug it.

If this is a custom training ❓ Question, please provide as much information as possible, including dataset image examples and training logs, and verify you are following our Tips for Best Training Results.

Requirements

Python>=3.8.0 with all requirements.txt installed including PyTorch>=1.8. To get started:

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Environments

YOLOv5 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):

Status

YOLOv5 CI

If this badge is green, all YOLOv5 GitHub Actions Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv5 training, validation, inference, export and benchmarks on macOS, Windows, and Ubuntu every 24 hours and on every commit.

Introducing YOLOv8 🚀

We're excited to announce the launch of our latest state-of-the-art (SOTA) object detection model for 2023 - YOLOv8 🚀!

Designed to be fast, accurate, and easy to use, YOLOv8 is an ideal choice for a wide range of object detection, image segmentation and image classification tasks. With YOLOv8, you'll be able to quickly and accurately detect objects in real-time, streamline your workflows, and achieve new levels of accuracy in your projects.

Check out our YOLOv8 Docs for details and get started with:

pip install ultralytics
glenn-jocher commented 1 month ago

@Avishek-Das-Gupta hello,

Thank you for your question and for providing details about your training and testing process with different image sizes.

It's interesting to hear about your observations regarding the mAP performance of nano and small models at higher image dimensions. Generally, larger models like YOLOv5m, YOLOv5l, and YOLOv5x have more parameters and can leverage higher resolution images more effectively, leading to improved performance. However, smaller models like YOLOv5n and YOLOv5s are designed to be lightweight and efficient, often optimized for lower computational resources and faster inference times. This can sometimes result in a performance drop when processing higher resolution images due to their limited capacity to handle the increased complexity and detail.

Here are a few considerations that might help explain the behavior you're seeing:

  1. Model Capacity: Smaller models have fewer parameters and may not be able to capture the additional information provided by higher resolution images as effectively as larger models.

  2. Batch Size: Higher resolution images require more memory, which might force you to reduce the batch size. Smaller batch sizes can lead to poorer batch normalization statistics, which can negatively impact training.

  3. Overfitting: Smaller models might overfit more easily to high-resolution images, especially if the dataset is not sufficiently large or diverse.

  4. Training Settings: Ensure that you are using the largest batch size that your hardware can handle and consider training for more epochs if overfitting is not an issue. Also, verify that your hyperparameters are optimized for the specific model and dataset.

To further investigate, you might want to:

If you can share more details such as training plots (train losses, val losses, P, R, mAP), PR curves, confusion matrices, and dataset statistics images, it would help in providing more specific advice.

Feel free to reach out if you have any further questions or need additional assistance. Good luck with your training! 🚀

Avishek-Das-Gupta commented 1 month ago

@glenn-jocher Thanks a lot for the explanation.

glenn-jocher commented 1 month ago

@Avishek-Das-Gupta you're welcome! 😊 If you have any more questions or need further assistance, feel free to ask. The YOLO community and the Ultralytics team are always here to help.

If you encounter any issues or have specific concerns, providing a minimum reproducible code example can greatly assist us in diagnosing and resolving the problem. You can refer to our Minimum Reproducible Example guide for more details on how to create one.

Additionally, make sure you are using the latest versions of torch and the YOLOv5 repository from GitHub to ensure you have all the latest updates and bug fixes.

Good luck with your projects, and happy training! 🚀

github-actions[bot] commented 3 weeks ago

👋 Hello there! We wanted to give you a friendly reminder that this issue has not had any recent activity and may be closed soon, but don't worry - you can always reopen it if needed. If you still have any questions or concerns, please feel free to let us know how we can help.

For additional resources and information, please see the links below:

Feel free to inform us of any other issues you discover or feature requests that come to mind in the future. Pull Requests (PRs) are also always welcomed!

Thank you for your contributions to YOLO 🚀 and Vision AI ⭐