Comments (12)
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.
Thank you for your prompt reply, but I would like to know the evaluation metrics for GeoTrans+MAC.
from 3d-registration-with-maximal-cliques.
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_logs
to test 3DMatch 5000.
The output will be like this:
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.
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", >mat(0, 0), >mat(0, 1), >mat(0, 2), >mat(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", >mat(1, 0), >mat(1, 1), >mat(1, 2), >mat(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", >mat(2, 0), >mat(2, 1), >mat(2, 2), >mat(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", >mat(3, 0), >mat(3, 1), >mat(3, 2), >mat(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.
@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.
Thanks,that helps me a lot
from 3d-registration-with-maximal-cliques.
hi,thanks for your reply, I would like to know how to evaluate GeoTrans+MAC.
from 3d-registration-with-maximal-cliques.
Follow the instructions above. The registration recall is calculated as (total num - failed num)/total num.
from 3d-registration-with-maximal-cliques.
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.
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.
I have the same question.
from 3d-registration-with-maximal-cliques.
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)
- About README
- bad_alloc() HOT 2
- Dataset Query HOT 2
- error report in python version HOT 9
- How to run this code?
- Linux version compiling error HOT 14
- RE < 15 and TE < 30? HOT 1
- About U3M dataset HOT 4
- Out of memory when testing 3DMatch Dataset with FPFH descriptors. HOT 4
- 数据集链接似乎失效了 HOT 2
- 请求提供更多的实验结果
- 请求提供geotransformer处理的3dmatch/3dlomatch数据集处理结果
- Parameter Conversion Errors: when Running C++ Code with igraph, PCL on Windows HOT 1
- 关于版本MSVC =2022 x64
- 您好,关于demo运行时间问题 HOT 1
- python调用c++版本mac出现segmentation falut
- 你好,关于在Linux中编译时igraph中出现了类型错误 HOT 4
- Problems with reproduction of registration results FPFH+MAC from the paper HOT 2
- 作者您好,我在结合FCGF和MAC在3DMatch数据集上测试了一下发现将体素大小设置为0.05的情况,部分最大团数量过多(2000万以上),这情况不知道您是否遇到,然后我将体素大小设为0.08,测试完和性能远不如原论文的性能,作者您当时是怎么解决这个问题的 HOT 7
- Wrong registration results. What can I do? HOT 3
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 3d-registration-with-maximal-cliques.