Giter Site home page Giter Site logo

Comments (12)

Pterosaur-Yao avatar Pterosaur-Yao commented on June 21, 2024 17

The results of GeoTrans in Table 3 are same as the results in their original paper, and GeoTrans uses RMSE < 0.2m and computes scene average recall. Your registration recall are computed by pair avearge recall and use RE < 15 and TE < 30?

from 3d-registration-with-maximal-cliques.

Pterosaur-Yao avatar Pterosaur-Yao commented on June 21, 2024 3

Thank you for your prompt reply, but I would like to know the evaluation metrics for GeoTrans+MAC.

from 3d-registration-with-maximal-cliques.

zhangxy0517 avatar zhangxy0517 commented on June 21, 2024

You can run the experiments on your own to verify the results.

Test files of GeoTransformer can be downloaded here

To run the test:
1、Download the latest files, replace registration.cpp with the attached file below, and compile.
registration_replace.zip
2、Put the decompressed folder GeoTrans in the same directory as the generated executable file MAC.
3、Run the command ./MAC --output_path ./test_Geo_3dmatch --input_path ./GeoTrans/3DMatch/5000 --dataset_name 3dmatch --descriptor predator --start_index 0 --no_logsto test 3DMatch 5000.

The output will be like this:

截图 2023-06-29 21-23-21

To test under different numbers of correspondences, you should change the value in line 129 of PCR.cpp and recompile:

5000 2500 1000 500 250
3DMatch 0.999 0.995 0.99 0.95 0.9
3DLoMatch 0.99 0.99 0.95 0.9 0.9

Also, the command needs to be changed.

If the process is interrupted, you need to record the number of failed pairs up to the interruption. Assuming that Pair i is processed last when the termination happens, you need to rerun the command with --start_index i-1 to continue.

I will respond to questions as promptly as possible.

from 3d-registration-with-maximal-cliques.

weiya-89 avatar weiya-89 commented on June 21, 2024

hi,when i replace the registration.cpp file and make ,there is a bug

[ 14%] Building CXX object CMakeFiles/MAC.dir/registration.cpp.o
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp: In function ‘bool registration(const string&, std::string, std::string, const string&, const string&, const string&, const string&, const string&, double&, double&, double&, double&, double&, double&, double&, const string&, std::vector&)’:
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:117:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
117 | fscanf(ov, "%lf\n", &value);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:153:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
153 | fscanf(fp, "%lf %lf %lf %lf\n", &GTmat(0, 0), &GTmat(0, 1), &GTmat(0, 2), &GTmat(0, 3));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:154:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
154 | fscanf(fp, "%lf %lf %lf %lf\n", &GTmat(1, 0), &GTmat(1, 1), &GTmat(1, 2), &GTmat(1, 3));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:155:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
155 | fscanf(fp, "%lf %lf %lf %lf\n", &GTmat(2, 0), &GTmat(2, 1), &GTmat(2, 2), &GTmat(2, 3));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:156:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
156 | fscanf(fp, "%lf %lf %lf %lf\n", &GTmat(3, 0), &GTmat(3, 1), &GTmat(3, 2), &GTmat(3, 3));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:172:19: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
172 | fscanf(corr, "%f %f %f %f %f %f\n", &src.x, &src.y, &src.z, &des.x, &des.y, &des.z);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:200:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
200 | fscanf(corr, "%f %f %f %f %f %f\n", &src.x, &src.y, &src.z, &des.x, &des.y, &des.z);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:227:11: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
227 | fscanf(corr, "%f %f %f %f %f %f\n", &src.x, &src.y, &src.z, &des.x, &des.y, &des.z);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:281:12: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
281 | fscanf(corr, "%f %f %f %f %f %f\n", &src.x, &src.y, &src.z, &des.x, &des.y, &des.z);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:330:12: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
330 | fscanf(corr, "%f %f %f %f %f %f\n", &src.x, &src.y, &src.z, &des.x, &des.y, &des.z);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vision/work/lzw/3D-Registration-with-Maximal-Cliques-main/Linux/registration.cpp:357:9: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
357 | fscanf(gt, "%d\n", &value);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~
[ 28%] Linking CXX executable MAC
/usr/bin/ld: CMakeFiles/MAC.dir/main.cpp.o: in function analyse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_ofstream<char, std::char_traits<char> >&, int, int)': main.cpp:(.text+0x1bbf): undefined reference to registration(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, double&, double&, double&, double&, double&, double&, double&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::vector<double, std::allocator >&)'
/usr/bin/ld: CMakeFiles/MAC.dir/main.cpp.o: in function main': main.cpp:(.text.startup+0xe4e): undefined reference to registration(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, double&, double&, double&, double&, double&, double&, double&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::vector<double, std::allocator >&)'
/usr/bin/ld: main.cpp:(.text.startup+0x464b): undefined reference to registration(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double&, double&, double&, double&, double&, double&, double&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<double, std::allocator<double> >&)' /usr/bin/ld: main.cpp:(.text.startup+0x553e): undefined reference to registration(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, double&, double&, double&, double&, double&, double&, double&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::vector<double, std::allocator >&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/MAC.dir/build.make:288: MAC] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/MAC.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

from 3d-registration-with-maximal-cliques.

zhangxy0517 avatar zhangxy0517 commented on June 21, 2024

@weiya-89 Thanks for your feedback. I have changed the function declaration of registration in Eva.h. Download the latest Eva.h and replace.

from 3d-registration-with-maximal-cliques.

weiya-89 avatar weiya-89 commented on June 21, 2024

Thanks,that helps me a lot

from 3d-registration-with-maximal-cliques.

weiya-89 avatar weiya-89 commented on June 21, 2024

hi,thanks for your reply, I would like to know how to evaluate GeoTrans+MAC.

from 3d-registration-with-maximal-cliques.

zhangxy0517 avatar zhangxy0517 commented on June 21, 2024

Follow the instructions above. The registration recall is calculated as (total num - failed num)/total num.

from 3d-registration-with-maximal-cliques.

weiya-89 avatar weiya-89 commented on June 21, 2024

i think it's a bit different from the metrics of GeoTransformer,which first computes the registration recall of each scene, then computes the mean registration recall of the 8 scenes, i would like to know whether the evluation metrics of the results reported in the paper are same as GeoTransformer.

from 3d-registration-with-maximal-cliques.

zhangxy0517 avatar zhangxy0517 commented on June 21, 2024

All the results reported in Table 3 refer to the registration recall on all pairs.
All the methods are evaluated equally.

from 3d-registration-with-maximal-cliques.

chalth avatar chalth commented on June 21, 2024

I have the same question.

from 3d-registration-with-maximal-cliques.

twowwj avatar twowwj commented on June 21, 2024

The results of GeoTrans in Table 3 are same as the results in their original paper, and GeoTrans uses RMSE < 0.2m and computes scene average recall. Your registration recall are computed by pair avearge recall and use RE < 15 and TE < 30?

It seems the comparison is a bit unfair, isn't it?

from 3d-registration-with-maximal-cliques.

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.