* Fixing empty descriptors on bad signatures (#1714), (bug from #1698)
* PyDetector: dont assert (just error) if descriptors/keypoints don't match. SuperPoint approaches: try re-initializing superpoint detection on the provided image if descriptors could not be fetched the first time (auto recover).
* PyDetector: adding check if returned descriptors are empty (addressing #1714)
* Throwing error instead of asserting if keypoints and descriptors mistmatch
* ading error instead of warning
* lets do warnings instead (could be possible that images are blanck)
* CudaSIFT: filter doubles
* removed fixed threshold
* SSC can be used with multicameras. Refactored CudaSIFT to support SSC. Add new parameter SIFT/MaxGaussianThreshold. DbViewer: show negative features with gray color (so that we can know which features are in the vocabulary)
* Added SIFT/MaxGaussianThreshold parameter
* Updated parameter description
* limit max features internally inside pydetector and superpoint_rpautrat to limit keypoint/desc data size and improve performance
* avoid full reset when max features is changed to work around the memory temprorary param update logic
* remove leftover comment
* try using image roi instead
* revert and regenerate
* unintended change
* fixing issue with pydetector, adding mask filtering
---------
Co-authored-by: Felix Toft <[email protected]>
* initial python implementation of superpoint rpautrat
* working python implementation of superpoint
* small tweaks to try and work around the GIL issue
* fix missing os import
* begging cpp impl of superpoint python model
* finishing cpp superpoint impl using the same SPDetector interface
* finalizing superpoint cpp impl, working with cpu but needs to be cleaned
* fixing feature matching by reworking nms and filtering logic
* speeding up nms with batched operations and cleaning up
* updating conversion script
* adding args for image dimensions and cuda usage to model tracer
* wiring up UI to parse superpoint params
* adding label to superpoint rpautrat ui
* reverting some unintended ui changes
* typo
* oneline revert
* removing nms and threshold filtering from cpp, this is handled internally by the superpoint model
* using python interface to run the superpoint _to_torchscript.py script at runtime
* generate and load model file on the first incoming frame
* reverting unintented change
* ui changes appear mysteriously again, reverting
* remove topk from model to prevent issue when number of detected keypoints is lower then the k value (scripting fails in this case)
* cleaning up for review
* change dest for model file and remove debug logs
* bump patch and add version comment
* rm unucessary comment
* use resources to load file to ensure it works when rtabmap isn't built from source
* execute with pybind runpy instead of system call
* only build superpoint rpautrat if we have torch and python support
* changing param to accept a path to the weights .pth file directly
* parse the default working directory to save the model file in
* rm extraneous change
* rm setters and re-initialize the detector whenever params change. We cannot support changing params after the model is constructed
* update UI text
* only enable superpoint rpautrat when built with python and torch
* more build information regarding superpoint rpautrat
* generate temporary python script in the working dir
* rm unecessary changes to rtabmap_superpoint.py
* fix comment and only add repo root to sys.path
* introduce a new parameter for the superpoint python model definition
* execute script from string instead of writing to a file
* wrap parse params in a single compiler directive
* remove descriptor spatial matching logic and rely on upstream RTAB-Map processes to take the top-K desc and kpts
* only add python script to resources if built with superpoint rpautrat support. supress warning with type casting
* isolate pybind11 setup so it can't affect any other modules or potential regnerations of the model file
* update about dialog to show superpoint rpautrat
* remove debug logs
---------
Co-authored-by: Felix Toft <[email protected]>
* Adding GFTT and SIFT Cuda support
* Working CudaSift
* Disable cudasift option when not available
* Added check to avoid re-allocating gpu memory everytime parseParameters is called. Added workaround of to detect/ignore invalid descriptors
* Added SIFT/PreciseUpscale and SIFT/Upscale parameters. Adjusted max octave to behave more like opencv
* Refactored how maximum features are thresholded, to be more similar to OpenCV version
* Updated loop closure benchmark scripts
* Cuda optical flow tmp commit
* Added Stereo/Gpu Vis/CorFlowGpu parameters (optical flow gpu integration for F2F odom and stereo correspondences)
* Fixed build without opencv cuda
* Fixed build with Opencv 4.10
* ZED: updated parameters to match zed sdk 4
* MRPT requires C++17
* updated max octave limit CudaSift
* Integrated OpenGV
* Fixed build without opengv
* Cmake: moved OpenGV dependency status under solvers group
* Added multi-stereocamera models support
* Fixed OpenGV 0 sample error when one of the camera doesn't have features. Fixed g2o BA id offset with multi-camera.
* Fixed multicam 3d points generated from stereo correspondences
* db: Fixed multi stereo models not loaded correctly
* gui: fixed stereo rectification option, RegVis: fixed projection error with old databases (image size not set in calibration)
* OdomF2M: Fixed map.at error when bundle adjustment is not used
* depthai: added imu firmware update option for convenience
* Fixed various refactor errors
* Moved "large number stereo correspondences rejected" warning outside computeCorrespondences function for multicam
* Added error log if ba correspondences are computed with empty signatures
* fixed compilation errors with latest opencv
Co-authored-by: mathieu86 <[email protected]>