Coder Social home page Coder Social logo

Comments (10)

cersar avatar cersar commented on July 30, 2024

Hi,this piece of code comes from the reference repo in README.There,line[3] in kitti label file is the observation angle of object.Refence to https://blog.csdn.net/sum_nap/article/details/84858911, i think the gap between theta_loc and alpha is pi/2.This is meaning of the first line in the code.The rest, I guess, is just to make sure the alpha is between 0 and pi*2.

from 3d_detection.

jkstyle2 avatar jkstyle2 commented on July 30, 2024

Thanks for your comment, but still it doesn't make any sense to get the correct local orientation from that way. I consider we should add 3/(2*np.pi) to alpha to get the local orientation.
How do you think? Please help me understand..

from 3d_detection.

cersar avatar cersar commented on July 30, 2024

Sorry,I just can't grasp your idea of adding 3/(2*np.pi).Can you explain more detailed about that?Thanks

from 3d_detection.

jkstyle2 avatar jkstyle2 commented on July 30, 2024

Um.. it's very difficult to explain what my idea is.. it would be better if I could show you a drawing by uploading a file.

Let me try describing it in words.
As long as I know, alpha is the angle between "the direction of an object" and "the perpendicular direction of the ray from the object's center". So, the local angle can be made as 270[deg] + alpha[deg].
It can also be expressed as 360[deg] - (ray angle[deg] - rotation_y[deg]) , which is from here(https://github.com/shashwat14/Multibin/blob/master/data_prep.py), in line 49.
I'm not very sure though if I'm understanding it in a right way.
If you're thinking that your code is correct, can you please elaborate it? It's actually widely used in other similar projects.

from 3d_detection.

jkstyle2 avatar jkstyle2 commented on July 30, 2024

I just drew it. Please correct me if I'm wrong with it.
kakaotalk_20190123_225715779

from 3d_detection.

cersar avatar cersar commented on July 30, 2024

You are right!I have rethinked just now,and find the origin code has mistaked theta local by refering to the negative direction of ray from the object's center.So it is 180(deg) shifted to your answer.In the detection.py,I manually fixed it by pi/2-theta_loc.I think there will be no need to fix in the detection.py,if I fix the compution of theta_loc.Thank you very much for your advice,and it is really helpful to the project!I will fix it soon.

from 3d_detection.

jkstyle2 avatar jkstyle2 commented on July 30, 2024

Thanks for your quick response!
Of course, I checked the kitti's README.txt and I also misunderstood like what you said. But I realized that the saying "facing along the X-axis" means not looking at the x-axis, but it's going along the x-axis(parallel) . Think about the picture you uploaded, you will see that alpha is going to zero when the direction of the object become parallel with x-axis on the z-axis.

from 3d_detection.

jkstyle2 avatar jkstyle2 commented on July 30, 2024

Thanks for your help too! It's a very helpful project.
One thing now I'm concerning is, did the original code really mean it to get a local orientation?
In the original code, the new_alpha goes to the function 'compute_anchor()', and the anchors are returned.
As I'm not exactly sure of what the function does, I'm getting more confused now. Even other people who continue to implement the original code such as smallcorgi, scutan90 and etc, they all use the same code.
Are you certain that the original code really made a mistake?

Thanks for your help! Let's figure it out together.

from 3d_detection.

cersar avatar cersar commented on July 30, 2024

Hi,i have made some updates in this weekend.
About the new_alpha,i find that we should compute new_alpha by the equation -new_alpha+3*pi/2.There, using '-new_alpha' instead of 'new_alpha' because the kitti's alpha is the angle from" the direction of an object" to "the perpendicular direction of the ray from the object's center", whereas the local orientation equals to the angle from "the perpendicular direction of the ray from the object's center" to " the direction of an object" added by the angle from "the direction of the ray from the object's center" to "the perpendicular direction of the ray from the object's center" (270 deg).
The function 'compute_anchor()' split 360 deg to several small bins, and compute which bins the the local orientation angle is to fall into according the overlap rate.I'm not sure that the original code really made a mistake about new alpha, but according to the paper it is reasonable to use the real as the input to the function 'compute_anchor()'.
According to the fix of new_alpha, i have trained another model which has been updated in the README.Take it easy to download the new one.

from 3d_detection.

skhadem avatar skhadem commented on July 30, 2024

Hello, I am also working on this issue in my PyTorch implementation. I am pretty new to machine learning. If alpha and theta_l are just 270(deg) apart, why not train the net to just output alpha? Is there a reason with the multibin approach where it wouldn't work as well? The reason I say this is that in my algorithm to calculate the 3D constraints I use alpha to narrow down the possibilities, so I figured I should just try and regress alpha directly instead of theta_l. Is there any reason this wouldn't work as well? Thanks

from 3d_detection.

Related Issues (17)

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.