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

@hojat-ardi hello! Thank you for your interest in YOLOv5 and your question about using Resnet50 as the backbone. #11893

Closed
hojat-ardi opened this issue Jul 23, 2023 · 8 comments
Labels

Comments

@hojat-ardi
Copy link

          @hojat-ardi hello! Thank you for your interest in YOLOv5 and your question about using Resnet50 as the backbone.

To use Resnet50 as the backbone in YOLOv5, you need to make modifications to the YOLOv5 code. Here are the general steps:

  1. Locate the models\models.py file in the YOLOv5 repository.
  2. In this file, you will find a section that defines the backbone architecture. Look for the CSPDarknet or CSPResNet class, depending on the YOLOv5 version you are using.
  3. Replace the existing backbone with the Resnet50 architecture. You can use the torchvision implementation of Resnet50 or any other implementation that suits your needs. Make sure the input and output shapes of the backbone match the expected input and output shapes of the YOLOv5 model.
  4. Update the forward() method of the model to account for the changes. Adjust the forward pass to include the necessary connections between the backbone and the head of the YOLOv5 model.

Keep in mind that making such changes may require additional modifications to ensure the compatibility of the model. You might need to adjust the shape/stride constraints and handle any errors or inconsistencies that arise.

Please note that while this approach can be used as a starting point, it requires careful consideration and testing to ensure that the modified model functions correctly.

I hope this helps! If you have any further questions, please let me know.

Originally posted by @glenn-jocher in #6003 (comment)

@github-actions
Copy link
Contributor

👋 Hello @hojat-ardi, 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.7.0 with all requirements.txt installed including PyTorch>=1.7. 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

@hojat-ardi to use Resnet50 as the backbone in YOLOv5, you need to make modifications to the YOLOv5 code. Here are the general steps:

  1. Locate the models\models.py file in the YOLOv5 repository.
  2. In this file, you will find a section that defines the backbone architecture. Look for the CSPDarknet or CSPResNet class, depending on the YOLOv5 version you are using.
  3. Replace the existing backbone with the Resnet50 architecture. You can use the torchvision implementation of Resnet50 or any other implementation that suits your needs. Make sure the input and output shapes of the backbone match the expected input and output shapes of the YOLOv5 model.
  4. Update the forward() method of the model to account for the changes. Adjust the forward pass to include the necessary connections between the backbone and the head of the YOLOv5 model.

Keep in mind that making such changes may require additional modifications to ensure the compatibility of the model. You might need to adjust the shape/stride constraints and handle any errors or inconsistencies that arise.

Please note that while this approach can be used as a starting point, it requires careful consideration and testing to ensure that the modified model functions correctly.

I hope this helps! If you have any further questions, please let me know.

@github-actions
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 Aug 23, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 3, 2023
@hojat-ardi
Copy link
Author

thank you so much

@glenn-jocher
Copy link
Member

@hojat-ardi you're welcome! If you have any more questions or need further assistance, feel free to reach out. Happy coding! 😊👍

@Shikusora
Copy link

hello @glenn-jocher , i am a beginner and i would like to ask on which specific lines do i need to replace so that it would be possible to use resnet50 on yolov5? thank you so much and have a great day ahead

@glenn-jocher
Copy link
Member

Hello! 😊 To integrate Resnet50 as the backbone for YOLOv5, you won't be replacing specific lines but rather adjusting parts of the model definition in models\models.py.

Primarily, you'll work on modifying the backbone architecture defined in the model class. This involves:

  1. Substituting the CSPDarknet or similar class with your Resnet50 implementation.

  2. Ensuring the Resnet50 backbone outputs are correctly integrated with the YOLOv5 head – adjusting the forward() function as necessary.

Since implementations can vary, I can't point to specific lines to replace. The key is ensuring the input/output dimensions of Resnet50 match what YOLOv5 expects for seamless integration. It's a bit of a custom job, so diving into the code and understanding the model architecture will be crucial.

Remember, such modifications require testing and fine-tuning. Don't hesitate to ask if you need further clarification!

Have a wonderful day too!

@omkar-chaubal-45
Copy link

@hojat-ardi to use Resnet50 as the backbone in YOLOv5, you need to make modifications to the YOLOv5 code. Here are the general steps:

  1. Locate the models\models.py file in the YOLOv5 repository.
  2. In this file, you will find a section that defines the backbone architecture. Look for the CSPDarknet or CSPResNet class, depending on the YOLOv5 version you are using.
  3. Replace the existing backbone with the Resnet50 architecture. You can use the torchvision implementation of Resnet50 or any other implementation that suits your needs. Make sure the input and output shapes of the backbone match the expected input and output shapes of the YOLOv5 model.
  4. Update the forward() method of the model to account for the changes. Adjust the forward pass to include the necessary connections between the backbone and the head of the YOLOv5 model.

Keep in mind that making such changes may require additional modifications to ensure the compatibility of the model. You might need to adjust the shape/stride constraints and handle any errors or inconsistencies that arise.

Please note that while this approach can be used as a starting point, it requires careful consideration and testing to ensure that the modified model functions correctly.

I hope this helps! If you have any further questions, please let me know.

Hi there! I followed this. However, it throws an error: AttributeError: 'DetectionModel' object has no attribute 'stride' .
How to solve this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants