Comments (4)
Hi, @JJangD
In this case, both the IoU value and its gradient are zero.
That is actually the problem if IoU is used directly as a loss: if there is no intersection, there is no gradient and the learnable parameters would not be updated. And that's why people use generalized IoU loss (G-IoU loss) or distance IoU loss (D-IoU loss). Basically, these loss functions take more information into account (the area of the minimal enclosing box of the two boxes or the distance between the centers of the boxes) to make sure the gradient is non-zero even no intersection exists.
from rotated_iou.
@lilanxiao
Thanks for your reply.
I understood that the there will be no gradient updates to the box parameters such as x,y,w,h,th.
But I'm confused.
For example, let's say simply S = w x h and w = 0 , h = 5.
In this case, it would be S = 0. But gradient dS/dw = 5
Although, I think it would be fine to let the gradient be zero might be ok when using G-IOU or D-IOU.
from rotated_iou.
In your case, backpropagation still works.
I think you meant this situation: w
and h
is the width and height of the intersection part. Because we want to maximize the IoU, we must use - S
instead of S
as a loss function (because people always minimize the loss function).
The gradient w.r.t w
is
g = d(loss)/dw = -dS/dw = -5
If we use SGD to update w
. We do:
w_new = w - g * lr = 0 + 5 * lr
As you can see, the the value of w
is now greater than zero as long as the learning rate is positive. Thus, the two boxes have intersection after this update, which is what we want.
For IoU calculation, the two boxes have three kinds of relationships.
a) with the intersection. Both edges of the intersection area are non-zero. Backprop works. (left in the figure)
b) without intersection. Both edges are zero. Backprop doesn't work. (right in the figure)
c) the transition between a) and b) (middle in the figure)
The example you gave is actually the last relationship: the area is zero, but one edge of the intersection is still non-zero. In such case, backpropagation still works.
from rotated_iou.
Thanks for detailed explanation!!! I understood.
from rotated_iou.
Related Issues (20)
- box_intersection_2d 中的box1_in_box2存在bug, box1_in_box2(box1,box1), 在特定数据下返回的不是[true,true,true,true] HOT 1
- 在做批量的旋转iou计算时,计算的inter_area会出现nan值,导致loss变为nan,但是在把计算为nan的两个box的x,y,w,h,angle提出来单个计算的话就会出现正常的inter_area。请问这是什么原因导致的呢,还请解答 HOT 7
- is this result correct? HOT 2
- Inaccurate IoU in some cases HOT 8
- Wrong IoU calculation when corners are smaller than 0 HOT 6
- Yolact
- About the 2D coordinates (x, y, w, h, alpha) HOT 2
- 请教大佬代码实现问题 HOT 2
- Please Help HOT 1
- warning: missing return statement at end of non-void function "compare_vertices" HOT 6
- debug版本报错 HOT 3
- a problem when using 3d-giou for regression training HOT 2
- 大佬,求助,CUDA out of memory HOT 12
- inf bbox loss when using cal_giou_3d ( but the iou is right)
- Batch computation for IoU Loss HOT 1
- debug版本和老的版本计算结果不一致
- 为什么input shape是 B,N,4,2?
- Segmentation fault
- `np.bool` was a deprecated alias for the builtin `bool`.
- problems with the import of sort_vertices HOT 1
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 rotated_iou.