wenbowen123 / BundleTrack

[IROS 2021] BundleTrack: 6D Pose Tracking for Novel Objects without Instance or Category-Level 3D Models
Other
612 stars 66 forks source link

About feature detection FAIL #77

Closed ZijianCHEN-infodeliver closed 1 year ago

ZijianCHEN-infodeliver commented 1 year ago

X%_J `5 BP(CX9VJ~G_RZC9

ZijianCHEN-infodeliver commented 1 year ago

@wenbowen123 Hi,I followed your steps and tried the NOCS and YCBInEOAT datasets respectively, but there was a problem of feature detection fail. Do you know where the problem is?

wenbowen123 commented 1 year ago

Can you make sure your depth image is in the right format? You can enable higher debug level to dump the point cloud and viz them.

ZijianCHEN-infodeliver commented 1 year ago

image image

The depth file is obtained from bleach0. There are 663 images, I think it should be right.

wenbowen123 commented 1 year ago

https://github.com/wenbowen123/BundleTrack/blob/5f87ddf7133f2f86bdae6a08c926ed80a70003ec/src/Bundler.cpp#L118 Before finding feature correspondence, can you check if the depth image values are normal? I remember there were some similar issues previously and it was because of the depth are all zeros.

ZijianCHEN-infodeliver commented 1 year ago

@wenbowen123 Hi, thank you for your help, I have already solve the problem about feature detection FAIL. I update CUDA version from 9.0 to 11.3.

But now, there are some other problems, about FindNN too few match. I refer to previous answers, but it doesn't seem to solve my problem.

ad3ebb48baec0fb2811239f2095c5bf

About the depth image values,like this: 491a9f06f3d0475a52401f1d2b87553

My server is two 3090, CUDA version is 11.3.

I also modified

add_definitions(-DNO_OPENCV_CUDA=1),

but it has no effect.

ZijianCHEN-infodeliver commented 1 year ago

@wenbowen123

According to the current results, it seems that the values of ptA.z and ptB.z are too large, causing all of them to be filtered out. I don't know why.

wenbowen123 commented 1 year ago

can you check if the depth is like this at the beginning (after read), or is it changed to such somewhere?

ZijianCHEN-infodeliver commented 1 year ago

@wenbowen123 Hi, image In this function:SiftManager::pruneMatches (FeatureManager.cpp) 1691232255077 We can find that ptA.z and ptB.z are larger than 0.1. But they will still be judged as less than 0.1, which is very strange.

ZijianCHEN-infodeliver commented 1 year ago

1691233276352 1691233292699 The depth value becomes 0 at this place

ZijianCHEN-infodeliver commented 1 year ago

a8654e82bf723dff868cc65b5972aa6 1efedee9458553ad8b426bc79daacbd

wenbowen123 commented 1 year ago

your printing format is not right. Can you replace your %d by %f and retry?

ZijianCHEN-infodeliver commented 1 year ago

Thanks for your correction! The result is as follows: 1691334704942 1691334753121

wenbowen123 commented 1 year ago

it seems like the depth is already 0 at the line you printed. Can you trace back where it happened like I said?

can you check if the depth is like this at the beginning (after read), or is it changed to such somewhere?

ZijianCHEN-infodeliver commented 1 year ago

@wenbowen123

I have solved all the problems. Thanks for your help !

My GPU is 3090,

I would like to offer a possible solution to this problem:

Modify the CMakeLists.txt file:

From: set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler;-fPIC;-gencode arch=compute_61,code=sm_61;-gencode arch=compute_75,code=sm_75;-O3;-std=c++11;-use_fast_math;--default-stream per-thread)

To: set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler;-fPIC;-gencode arch=compute_61,code=sm_61;-gencode arch=compute_75,code=sm_75;-gencode arch=compute_86,code=sm_86;-O3;-std=c++11;-use_fast_math;--default-stream per-thread)