Comments (1)
@ekthaliz hello,
Thank you for your detailed questions regarding the OBB angles and their handling in the Ultralytics YOLO codebase. Let's address each of your queries:
-
Angle Definitions in Labels and Predictions:
The discrepancy in angle ranges between the labels (0 to 90 degrees) and predictions (45 to 135 degrees) is indeed intriguing. Your theories are insightful. Here's a clarification:- Theory 1: The conversion process between the label angles and prediction angles is not explicitly visible in the loss computation because the model's learning focuses on minimizing the difference between predicted and actual bounding box coordinates, rather than directly on the angles.
- Theory 2: The angle range in the labels (0 to 90 degrees) serves as a reference during the annotation phase. However, the model's prediction range (45 to 135 degrees) is designed to ensure a broader and more flexible representation of object orientations during inference.
The conversion from label angles to prediction angles likely happens implicitly within the model's architecture and training process, ensuring that the predicted angles are within a meaningful range for object detection tasks.
-
Relationship Between OBB Train Model Output and
pred_dist
:
Thepred_dist
tensor represents the predicted distances from anchor points to the bounding box edges. This is crucial for defining the bounding box coordinates during the decoding phase. The relationship between the OBB train model output andpred_dist
lies in how the model interprets these distances to construct the final bounding boxes. -
Different Definitions of
xy
inxyxyxyxy2xywhr
anddist2rbox
:
The difference in the definition ofxy
before and after the conversion is due to the different stages of the bounding box representation:- In
xyxyxyxy2xywhr
, the function converts the corner points of the bounding box to a center-based representation (cx, cy, w, h, rotation
). - In
dist2rbox
, the function decodes the predicted distances back into the corner points (xyxyxyxy
) for the final bounding box representation.
This dual representation ensures that the model can effectively learn and predict bounding boxes by leveraging both center-based and corner-based coordinates at different stages of the process.
- In
If you encounter any specific issues or need further clarification, please provide a minimum reproducible code example. This will help us investigate the problem more effectively. You can refer to our guide on creating a minimum reproducible example here.
Additionally, ensure you are using the latest versions of torch
and ultralytics
to avoid any compatibility issues.
Feel free to reach out if you have more questions or need further assistance. 😊
from ultralytics.
Related Issues (20)
- Hub classification custom dataset upload problems HOT 3
- TensorRT discrepancy between version 10 and 8.6.1(2?) HOT 2
- Keypoints Detection HOT 2
- Filter out other classes/detection in YOLOV8 OBB HOT 7
- Segmentation Result: Distant Thin Lane Are Jagged and Discontinuous HOT 2
- AttributeError: Can't get attribute 'v10DetectLoss' on <module 'ultralytics.utils.loss'> HOT 1
- I want to retrain the yolov8m model for my new classes, but when using resume=True an error appears HOT 14
- How can I perform a training with two different machines? HOT 1
- YOLOv8 bounding box detection HOT 1
- Read data in sequence HOT 6
- UserWarning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param's strides changed since DDP was constructed. This is not an error, but may impair performance. grad.sizes() = [2, 64, 1, 1], strides() = [64, 1, 64, 64] bucket_view.sizes() = [2, 64, 1, 1], strides() = [64, 1, 1, 1] (Triggered internally at ../torchrc/distributed/c10d/reducer.cpp:325.) Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass HOT 1
- Using Unity Sentis for Segmentation Model Only for Human HOT 2
- yolov8 for web-camera use to classification HOT 2
- Weights combining HOT 5
- I am getting error! Help Me to Fix it i am confused HOT 2
- export yolov8 format HOT 8
- RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing loss. You can enable unused parameter detection by passing the keyword argument `find_unused_parameters=True` to `torch.nn.parallel.DistributedDataParallel`, and by [rank0]: making sure all `forward` function outputs participate in calculating loss. HOT 2
- can not find the data correctly when use DDP train HOT 2
- Hybrid agnostic NMS HOT 6
- How do I correctly interpret and use the output from the OBB version of Yolov8 for 360º prediction? HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ultralytics.