From 76faf1d5bd5df81f13042961e8052b41e4b7522a Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:03:27 +0200 Subject: [PATCH 1/8] [feature] default constructor for ImageDescriber --- src/aliceVision/feature/ImageDescriber.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aliceVision/feature/ImageDescriber.hpp b/src/aliceVision/feature/ImageDescriber.hpp index 4c18c1892d..22838e3b3c 100644 --- a/src/aliceVision/feature/ImageDescriber.hpp +++ b/src/aliceVision/feature/ImageDescriber.hpp @@ -67,7 +67,7 @@ std::istream& operator>>(std::istream& in, EImageDescriberPreset& p); class ImageDescriber { public: - ImageDescriber() {} + ImageDescriber() = default; virtual ~ImageDescriber() {} From 352ed54c587f66ee4ef2b4e8a6e74ed88fca2f54 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:03:50 +0200 Subject: [PATCH 2/8] [feature] default destructor image describer --- src/aliceVision/feature/ImageDescriber.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aliceVision/feature/ImageDescriber.hpp b/src/aliceVision/feature/ImageDescriber.hpp index 22838e3b3c..615d3bb0d8 100644 --- a/src/aliceVision/feature/ImageDescriber.hpp +++ b/src/aliceVision/feature/ImageDescriber.hpp @@ -69,7 +69,7 @@ class ImageDescriber public: ImageDescriber() = default; - virtual ~ImageDescriber() {} + virtual ~ImageDescriber() = default; /** * @brief Check if the image describer use CUDA From 7ccb39e8754a789979c21d6f192c75566d71d397 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:06:01 +0200 Subject: [PATCH 3/8] [feature] popSIFT instance counter to free resources fixes a bug appearing after alicevision/popsift/pull/71 --- .../sift/ImageDescriber_SIFT_popSIFT.cpp | 21 +++++++++++++++++++ .../sift/ImageDescriber_SIFT_popSIFT.hpp | 12 ++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp index d9963a91cc..6236ce5ca0 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp @@ -14,10 +14,13 @@ #include #include +#include + namespace aliceVision { namespace feature { std::unique_ptr ImageDescriber_SIFT_popSIFT::_popSift = nullptr; +std::atomic ImageDescriber_SIFT_popSIFT::_instanceCounter{0}; void ImageDescriber_SIFT_popSIFT::setConfigurationPreset(EImageDescriberPreset preset) { @@ -95,5 +98,23 @@ void ImageDescriber_SIFT_popSIFT::resetConfiguration() _popSift.reset(new PopSift(config, popsift::Config::ExtractingMode, PopSift::FloatImages)); } +ImageDescriber_SIFT_popSIFT::ImageDescriber_SIFT_popSIFT(const SiftParams& params, bool isOriented) + : ImageDescriber() + , _params(params) + , _isOriented(isOriented) +{ + _instanceCounter++; +} + +ImageDescriber_SIFT_popSIFT::~ImageDescriber_SIFT_popSIFT() +{ + _instanceCounter--; + + if(_instanceCounter.load() == 0) + { + _popSift.reset(nullptr); + } +} + } // namespace feature } // namespace aliceVision diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp index 526df2a840..c82b4db569 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp @@ -26,11 +26,7 @@ namespace feature { class ImageDescriber_SIFT_popSIFT : public ImageDescriber { public: - ImageDescriber_SIFT_popSIFT(const SiftParams& params = SiftParams(), bool isOriented = true) - : ImageDescriber() - , _params(params) - , _isOriented(isOriented) - {} + explicit ImageDescriber_SIFT_popSIFT(const SiftParams& params = SiftParams(), bool isOriented = true); /** * @brief Check if the image describer use CUDA @@ -109,6 +105,11 @@ class ImageDescriber_SIFT_popSIFT : public ImageDescriber regions.reset(new SIFT_Regions); } + /** + * @brief Destructor + */ + ~ImageDescriber_SIFT_popSIFT() override; + private: void resetConfiguration(); @@ -116,6 +117,7 @@ class ImageDescriber_SIFT_popSIFT : public ImageDescriber SiftParams _params; bool _isOriented = true; static std::unique_ptr _popSift; + static std::atomic _instanceCounter; }; } // namespace feature From 98ad758820c2c5fcbd198c0c2d9f5a6983eccef6 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:06:24 +0200 Subject: [PATCH 4/8] [feature] nullptr --- src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp index c82b4db569..cd67df5a46 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.hpp @@ -94,7 +94,7 @@ class ImageDescriber_SIFT_popSIFT : public ImageDescriber */ bool describe(const image::Image& image, std::unique_ptr& regions, - const image::Image* mask = NULL) override; + const image::Image* mask = nullptr) override; /** * @brief Allocate Regions type depending of the ImageDescriber From 84de2fc0488c9bb47d9a93818a03b004c2bdef5e Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:06:36 +0200 Subject: [PATCH 5/8] [feature] typo --- src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp index 6236ce5ca0..b136cccefb 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_popSIFT.cpp @@ -81,7 +81,7 @@ void ImageDescriber_SIFT_popSIFT::resetConfiguration() cudaDeviceReset(); popsift::cuda::device_prop_t deviceInfo; - deviceInfo.set(0, true); // use only the first device & print informations + deviceInfo.set(0, true); // use only the first device & print information // reset configuration popsift::Config config; From 74b84511814af9721709e1b6ceb497ac51e60656 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:19:31 +0200 Subject: [PATCH 6/8] [feature] explicit constr and default destructor --- src/aliceVision/feature/akaze/ImageDescriber_AKAZE.hpp | 4 +++- src/aliceVision/feature/cctag/ImageDescriber_CCTAG.cpp | 7 ------- src/aliceVision/feature/cctag/ImageDescriber_CCTAG.hpp | 10 ++++++---- .../feature/openCV/ImageDescriber_AKAZE_OCV.hpp | 4 ++++ src/aliceVision/feature/sift/ImageDescriber_SIFT.hpp | 4 +++- .../feature/sift/ImageDescriber_SIFT_vlfeat.hpp | 4 ++-- .../feature/sift/ImageDescriber_SIFT_vlfeatFloat.hpp | 4 ++-- 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/aliceVision/feature/akaze/ImageDescriber_AKAZE.hpp b/src/aliceVision/feature/akaze/ImageDescriber_AKAZE.hpp index 0e1dcc1498..31f463f181 100644 --- a/src/aliceVision/feature/akaze/ImageDescriber_AKAZE.hpp +++ b/src/aliceVision/feature/akaze/ImageDescriber_AKAZE.hpp @@ -41,7 +41,7 @@ struct AKAZEParams class ImageDescriber_AKAZE : public ImageDescriber { public: - ImageDescriber_AKAZE(const AKAZEParams& params = AKAZEParams(), bool isOriented = true) + explicit ImageDescriber_AKAZE(const AKAZEParams& params = AKAZEParams(), bool isOriented = true) : ImageDescriber() , _params(params) , _isOriented(isOriented) @@ -176,6 +176,8 @@ class ImageDescriber_AKAZE : public ImageDescriber } } + ~ImageDescriber_AKAZE() override = default; + private: AKAZEParams _params; bool _isOriented = true; diff --git a/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.cpp b/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.cpp index 37a126e36a..8f78a2e0e6 100644 --- a/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.cpp +++ b/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.cpp @@ -29,10 +29,6 @@ ImageDescriber_CCTAG::CCTagParameters::CCTagParameters(size_t nRings) #endif } -ImageDescriber_CCTAG::CCTagParameters::~CCTagParameters() -{ -} - bool ImageDescriber_CCTAG::CCTagParameters::setPreset(EImageDescriberPreset preset) { switch(preset) @@ -60,9 +56,6 @@ ImageDescriber_CCTAG::ImageDescriber_CCTAG(const std::size_t nRings) , _params(nRings) {} -ImageDescriber_CCTAG::~ImageDescriber_CCTAG() -{ -} bool ImageDescriber_CCTAG::useCuda() const { diff --git a/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.hpp b/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.hpp index f8441d3f36..8a80230ac1 100644 --- a/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.hpp +++ b/src/aliceVision/feature/cctag/ImageDescriber_CCTAG.hpp @@ -28,8 +28,9 @@ namespace feature { class ImageDescriber_CCTAG : public ImageDescriber { public: - ImageDescriber_CCTAG(const std::size_t nRings = 3); - ~ImageDescriber_CCTAG(); + explicit ImageDescriber_CCTAG(const std::size_t nRings = 3); + + ~ImageDescriber_CCTAG() override = default; /** * @brief Check if the image describer use CUDA @@ -106,8 +107,9 @@ class ImageDescriber_CCTAG : public ImageDescriber struct CCTagParameters { - CCTagParameters(size_t nRings); - ~CCTagParameters(); + explicit CCTagParameters(size_t nRings); + + ~CCTagParameters() = default; bool setPreset(EImageDescriberPreset preset); diff --git a/src/aliceVision/feature/openCV/ImageDescriber_AKAZE_OCV.hpp b/src/aliceVision/feature/openCV/ImageDescriber_AKAZE_OCV.hpp index 9612506088..572420d96c 100644 --- a/src/aliceVision/feature/openCV/ImageDescriber_AKAZE_OCV.hpp +++ b/src/aliceVision/feature/openCV/ImageDescriber_AKAZE_OCV.hpp @@ -32,6 +32,8 @@ class ImageDescriber_AKAZE_OCV : public ImageDescriber { public: + ImageDescriber_AKAZE_OCV() = default; + /** * @brief Check if the image describer use CUDA * @return True if the image describer use CUDA @@ -103,6 +105,8 @@ class ImageDescriber_AKAZE_OCV : public ImageDescriber regions.reset( new AKAZE_Float_Regions ); } + ~ImageDescriber_AKAZE_OCV() override = default; + }; } //namespace feature diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT.hpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT.hpp index 3613b09ea5..c1b78ae922 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT.hpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT.hpp @@ -27,7 +27,7 @@ namespace feature { class ImageDescriber_SIFT : public ImageDescriber { public: - ImageDescriber_SIFT(const SiftParams& params = SiftParams(), bool isOriented = true) + explicit ImageDescriber_SIFT(const SiftParams& params = SiftParams(), bool isOriented = true) : _params(params) , _isOriented(isOriented) { @@ -166,6 +166,8 @@ class ImageDescriber_SIFT : public ImageDescriber _imageDescriberImpl->allocate(regions); } + ~ImageDescriber_SIFT() override = default; + private: SiftParams _params; std::unique_ptr _imageDescriberImpl = nullptr; diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeat.hpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeat.hpp index 2efd1e656c..2cceee5bb1 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeat.hpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeat.hpp @@ -28,7 +28,7 @@ namespace feature { class ImageDescriber_SIFT_vlfeat : public ImageDescriber { public: - ImageDescriber_SIFT_vlfeat(const SiftParams& params = SiftParams(), bool isOriented = true) + explicit ImageDescriber_SIFT_vlfeat(const SiftParams& params = SiftParams(), bool isOriented = true) : ImageDescriber() , _params(params) , _isOriented(isOriented) @@ -37,7 +37,7 @@ class ImageDescriber_SIFT_vlfeat : public ImageDescriber VLFeatInstance::initialize(); } - ~ImageDescriber_SIFT_vlfeat() + ~ImageDescriber_SIFT_vlfeat() override { VLFeatInstance::destroy(); } diff --git a/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeatFloat.hpp b/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeatFloat.hpp index b947ac2ab4..c381ea33d1 100644 --- a/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeatFloat.hpp +++ b/src/aliceVision/feature/sift/ImageDescriber_SIFT_vlfeatFloat.hpp @@ -28,7 +28,7 @@ namespace feature { class ImageDescriber_SIFT_vlfeatFloat : public ImageDescriber { public: - ImageDescriber_SIFT_vlfeatFloat(const SiftParams& params = SiftParams(), bool isOriented = true) + explicit ImageDescriber_SIFT_vlfeatFloat(const SiftParams& params = SiftParams(), bool isOriented = true) : ImageDescriber() , _params(params) , _isOriented(isOriented) @@ -37,7 +37,7 @@ class ImageDescriber_SIFT_vlfeatFloat : public ImageDescriber VLFeatInstance::initialize(); } - ~ImageDescriber_SIFT_vlfeatFloat() + ~ImageDescriber_SIFT_vlfeatFloat() override { VLFeatInstance::destroy(); } From 6c4bc2d94b560e7fa33a5db2463c853308ae3dc0 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:20:01 +0200 Subject: [PATCH 7/8] [software] range const --- src/software/pipeline/main_featureExtraction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/software/pipeline/main_featureExtraction.cpp b/src/software/pipeline/main_featureExtraction.cpp index e935461824..3d10336042 100644 --- a/src/software/pipeline/main_featureExtraction.cpp +++ b/src/software/pipeline/main_featureExtraction.cpp @@ -215,7 +215,7 @@ class FeatureExtractor const auto imageDescriberIndexes = useGPU ? job.gpuImageDescriberIndexes : job.cpuImageDescriberIndexes; - for(auto& imageDescriberIndex : imageDescriberIndexes) + for(const auto & imageDescriberIndex : imageDescriberIndexes) { const auto& imageDescriber = _imageDescribers.at(imageDescriberIndex); const feature::EImageDescriberType imageDescriberType = imageDescriber->getDescriberType(); From 0e10bd6d057826e264818702bed11de846cfc524 Mon Sep 17 00:00:00 2001 From: Simone Gasparini Date: Tue, 9 Jun 2020 23:20:31 +0200 Subject: [PATCH 8/8] [software] missing default destructor --- src/software/pipeline/main_featureExtraction.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/software/pipeline/main_featureExtraction.cpp b/src/software/pipeline/main_featureExtraction.cpp index 3d10336042..3bc7f6f700 100644 --- a/src/software/pipeline/main_featureExtraction.cpp +++ b/src/software/pipeline/main_featureExtraction.cpp @@ -61,6 +61,8 @@ class FeatureExtractor , outputBasename(fs::path(fs::path(outputFolder) / fs::path(std::to_string(view.getViewId()))).string()) {} + ~ViewJob() = default; + bool useGPU() const { return !gpuImageDescriberIndexes.empty(); @@ -204,6 +206,8 @@ class FeatureExtractor } } + ~FeatureExtractor() = default; + private: void computeViewJob(const ViewJob& job, bool useGPU = false)