Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Training YoloV5n on a custom dataset, best.pt is bigger than yolov5n official size #12956

Closed
1 task done
GabrielRMx opened this issue Apr 23, 2024 · 5 comments
Closed
1 task done
Labels
question Further information is requested Stale

Comments

@GabrielRMx
Copy link

GabrielRMx commented Apr 23, 2024

Search before asking

Question

i have trained yolov5n for a custom dataset, but when the training is over the final file "best.pt" is 14.7mb, not 4mb corresponding to the official yolov5n size, it appears to be yolov5s as well, but i want to train my model using yolov5n pretrained model. Whats the problem?

Additional

!python train.py --img 640 --batch 64 --epochs 300 --data {dataset.location}/data.yaml --cfg ./models/custom_yolov5n.yaml --hyp hyp.scratch-low.yaml --weights yolov5n.pt --name yolov5n_results --cache

300 epochs completed in 9.288 hours.
Optimizer stripped from runs/train/yolov5n_results/weights/last.pt, 14.9MB
Optimizer stripped from runs/train/yolov5n_results/weights/best.pt, 14.9MB

Validating runs/train/yolov5n_results/weights/best.pt...
Fusing layers...
custom_YOLOv5n summary: 182 layers, 7249215 parameters, 0 gradients
Class Images Instances P R mAP50 mAP50-95: 100% 52/52 [00:18<00:00, 2.86it/s]
all 1643 3096 0.792 0.723 0.746 0.489
placa 1643 1207 0.957 0.95 0.972 0.686
vehiculo 1643 1889 0.627 0.496 0.521 0.292
Results saved to runs/train/yolov5n_results
CPU times: user 5min 15s, sys: 47.1 s, total: 6min 3s
Wall time: 9h 18min 23s

@GabrielRMx GabrielRMx added the question Further information is requested label Apr 23, 2024
Copy link
Contributor

👋 Hello @GabrielRMx, 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
Copy link
Member

Hello! 😊

It looks like your concern revolves around the size of the best.pt model file after training YOLOv5n on your custom dataset. The increase in size compared to the official YOLOv5n model size is likely due to the inclusion of optimizer states in your trained model file.

When you train a model, additional information besides the model weights, such as optimizer states and potentially extra layers tailored to your specific dataset, can be included in the .pt file. This is a common reason for the file size increase.

Given that your training command seems properly configured for a YOLOv5n training, to reduce the size of your best.pt file closer to the official size, you might consider using the --save-weights-only flag in your training command. This way, only the model weights are saved, excluding optimizer information, which can significantly reduce the file size.

However, the stripped best.pt model file you referenced is actually at 14.9MB, which suggests the optimizer has already been stripped out. So, the size difference is likely due to the model adapting to your custom dataset, which might result in a slightly larger file due to the customization process.

For further optimization options and detailed insights into managing model sizes, feel free to refer to the Ultralytics documentation: Ultralytics Docs.

Keep up the good work with your YOLOv5n project! If you have more questions, we're here to help.

@GabrielRMx
Copy link
Author

GabrielRMx commented Apr 24, 2024

Thank you for your quick response. The information has been very useful to me, but i got another question. Exactly what should I take into account when preparing my custom dataset to obtain good results and good inference times like those of the official yolov5n model? My goal is actually to achieve the performance of official yolov5n model with my custom dataset, but what I get when training is a model with more size and slower

@glenn-jocher
Copy link
Member

@GabrielRMx hello! 😊 I'm glad to hear the information was helpful! Achieving good results and fast inference times with your custom dataset, similar to the official YOLOv5n model, involves optimizing a few key aspects:

  1. Dataset Quality: Ensure your images are of good quality and the annotations are accurate. The variance in the dataset should represent the real-world scenarios where the model will be deployed.

  2. Image Size: Training with the same image resolution as the official YOLOv5n model can help match its inference speed. Adjusting the --img-size parameter to match the YOLOv5n's default (usually 640) can be a good starting point.

  3. Model Complexity: Stay with simpler models (like yolov5n) for faster inference. Customizing network architecture might increase the model size and reduce inference speed.

  4. Batch Size and Epochs: A larger batch size and more epochs could potentially increase model size due to overfitting. Use early stopping or monitor your validation loss to avoid overfitting.

  5. Pruning and Quantization: After training, you can look into model pruning and quantization techniques to reduce the model size and speed up inference, though this might require additional tools or frameworks.

  6. Optimization Flags: When training, use optimization flags like --cache or --weights yolov5n.pt to start from pretrained weights.

Remember, achieving balance between speed, size, and accuracy often requires experimentation and fine-tuning. Each dataset is unique, and slight modifications might be needed to match the performance of the official models closely.

Here is an example adjustment to consider in your training command for maintaining the balance:

!python train.py --img 640 --batch 32 --epochs 100 --data your_dataset.yaml --cfg yolov5n.yaml --weights yolov5n.pt --cache

Adjust --batch and --epochs based on your dataset size and training capabilities for a start. Keep iterating! You're on the right path.

Copy link
Contributor

👋 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 ⭐

@github-actions github-actions bot added the Stale label May 25, 2024
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jun 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested Stale
Projects
None yet
Development

No branches or pull requests

2 participants