Code Monkey home page Code Monkey logo

Comments (4)

lilanxiao avatar lilanxiao commented on May 30, 2024

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.

JJangD avatar JJangD commented on May 30, 2024

@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.

lilanxiao avatar lilanxiao commented on May 30, 2024

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.
image

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.

JJangD avatar JJangD commented on May 30, 2024

Thanks for detailed explanation!!! I understood.

from rotated_iou.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.