ultralytics / ultralytics

NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
https://docs.ultralytics.com
GNU Affero General Public License v3.0
23.76k stars 4.74k forks source link

yolov8 yaml文件的anchors 有详细的修改说明文档吗? #11659

Open zouwen198317 opened 1 week ago

zouwen198317 commented 1 week ago

Search before asking

Question

yolov8 yaml文件的anchors 有详细的修改说明文档吗? 我的场景有大目标,也有小目标,训练下来,小目标可以识别,但大目标漏识别了很多,对比同样的数据集,用yolov4来训练,检出效果,大目标很好,虽然v4小目标检出不好.yolov8是否可以通过修改anchors来达到大小目标都能很好检出,还是说anchors是自动计算分配的? Is there a detailed documentation on how to modify the anchors in the yolov8 yaml file? In my scenario, there are both large and small targets. After training, small targets can be recognized, but many large targets are missed. Compared with the same dataset trained with yolov4, the detection effect for large targets is good, although yolov4 does not perform well on small targets. Can yolov8 achieve good detection results for both large and small targets by modifying the anchors, or are the anchors automatically calculated and assigned?

Additional

no

github-actions[bot] commented 1 week ago

👋 Hello @zouwen198317, thank you for your interest in Ultralytics YOLOv8 🚀! We recommend a visit to the Docs for new users where you can find many Python and CLI usage examples and where many of the most common questions may already be answered.

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.

Join the vibrant Ultralytics Discord 🎧 community for real-time conversations and collaborations. This platform offers a perfect space to inquire, showcase your work, and connect with fellow Ultralytics users.

Install

Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.

pip install ultralytics

Environments

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

Status

Ultralytics CI

If this badge is green, all Ultralytics CI tests are currently passing. CI tests verify correct operation of all YOLOv8 Modes and Tasks on macOS, Windows, and Ubuntu every 24 hours and on every commit.

glenn-jocher commented 1 week ago

Hello! 😊 In YOLOv8, the anchors can indeed be optimized for your specific scenario, especially if your detection performance varies significantly between large and small objects. You can manually adjust the anchors in the YAML configuration file.

Here’s an example snippet of how you might set your anchors:

anchors:
  - [10,13, 16,30, 33,23]  # Small objects
  - [30,61, 62,45, 59,119]  # Medium objects
  - [116,90, 156,198, 373,326]  # Large objects

Ensure that the number and scale of anchors match the distribution of your object sizes. Smaller anchors are generally used for smaller objects, and larger anchors for larger objects.

If manual tuning seems complex, you can also re-calculate these automatically based on your dataset by using the autoanchor feature during training which examines your dataset and adapts the anchors accordingly:

yolo train --data your_data.yaml --cfg your_model.yaml --img-size 640 autoanchor 

Feel free to experiment with different anchor sizes to find what gives the best results for both large and small objects on your data. 🚀

Wangfeng2394 commented 1 week ago

hi! I am also very interested in this issue The autoanchor effect is relatively poor on my dataset. so, How should I cancel autoanchor .

I tried set my anchors as your suggestion, but it can't cancel autoanchor .

glenn-jocher commented 1 week ago

Hello! 👋

To disable the autoanchor feature in YOLOv8, you can simply omit the autoanchor flag from your training command. If you've set your anchors manually in the YAML file, they should be used as specified unless overridden by the autoanchor recalibration.

Here's an example of how to train without using autoanchor:

yolo train --data your_data.yaml --cfg your_model.yaml --img-size 640

Just ensure that your your_model.yaml configuration file has the anchors explicitly defined as you want them. That should do the trick! If you encounter any more issues, feel free to ask. Happy training! 🚀