alicevision / popsift Goto Github PK
View Code? Open in Web Editor NEWPopSift is an implementation of the SIFT algorithm in CUDA.
Home Page: https://popsift.readthedocs.io
License: Mozilla Public License 2.0
PopSift is an implementation of the SIFT algorithm in CUDA.
Home Page: https://popsift.readthedocs.io
License: Mozilla Public License 2.0
I want to get the coordinate of feature points after match. So I add cout << lFeatures->getFeatures()[0].xpos << endl;
to src/application/match.cpp. Then the program broke. It shows Segmentation fault (core dumped).
But I did the same thing to src/application/main.cpp, added cout << feature_list->_ext[0].xpos << endl;
to void read_job( SiftJob* job, bool really_write )
, it worked well.
I noticed that the class of lFeatures is popsift::FeaturesDev, and the feature_list's is popsift::Features. So why I cannot get the infomation of feature from popsift::FeaturesDev? What should I do? THANKS!
Describe the problem
The acknowledgements section of the root README.md contains a hyperlink that redirects to a NSFW advertising website. May I suggest modifying the URL to something more relevant?
Runtime failure on MacBook Pro from 2013; Confirmed on a Linux machine with GTX 710.
Strange; "relative" mode uses textures to save a multiplication in Gauss filtering. Texture use is no problem elsewhere in the code.
Cuda 11 has dropped the support for sm_30 and sm_32 architecture.
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features
Also, it deprecates other older architectures:
Support for Kepler sm_30 and sm_32 architecture based products is dropped.
Support for the following compute capabilities are deprecated in the CUDA Toolkit:
sm_35 (Kepler)
sm_37 (Kepler)
sm_50 (Maxwell)
To reflect this, the script for choosing the CC should be updated as follows:
set(CUDA_MIN_CC 20)
set(CUDA_MAX_CC 75)
if(CUDA_VERSION_MAJOR GREATER_EQUAL 11) #new
set(CUDA_MIN_CC 35) #new
elseif(CUDA_VERSION_MAJOR GREATER_EQUAL 10)
set(CUDA_MIN_CC 30)
elseif(CUDA_VERSION_MAJOR GREATER_EQUAL 9)
set(CUDA_MIN_CC 30)
set(CUDA_MAX_CC 72)
@griwodz Am I correct?
Describe the bug
When I run popsift for one image crash,The default parameters are used
my email: [email protected]
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Log
If applicable, copy paste the relevant log output (please embed the text in a markdown code tag "```" )
Desktop (please complete the following and other pertinent information):
Additional context
Add any other context about the problem here.
I have a Nvidia GTX 1050 with 2GB memory. In my case PopSift works without problems for images up to 1920x1080
resolution (with default parameters). If the image resolution is any bigger, than i get the following error (sometimes i also get some other errors, but always memory related) :
Could not allocate 3D DoG array: out of memory
In order to work with bigger images i tried tweaking some parameters. I set _max_extrema
parameter to 20000
(description says it changes memory requirements). I also changed octaves
to 3
. The problem is that these tweaks did not really change the memory requirements. For example i cannot get it to work for 2048x1536
no matter how low I set these two parameters.
So my question is if there is any way to reduce the memory requirements by setting some other parameters for example, or maybe even do some simple modifications to the code. I know 2GB of memory is not a lot, but to me it seems it should be enough to just extract features from a single image.
I am trying to do a feature matching across a small sequence of frames - basically a keypoint tracking. In the end, I'd like to get a list of positions for each keypoint in each frame. The frames are from a video sequence with small movements.
I managed to integrate the keypoint extraction sucessfuly, but I don't really understand how feature matching works - it seems to me that the only functionality is provided in FeaturesDev::match (as per the match example), which simply calls the show_distance function, without any way of extracting the data.
Am I missing something? Is there any additional functionality in the library that I am missing?
I want to use popsift on windows machine.
I have got the following error:
D:\CommonSDK\boost-sdk\boost/config/compiler/nvcc.hpp(23): fatal error C1017: invalid integer constant expression
Could be gpu or cpu but is mandatory for AliceVision integration.
Use Xenial for linux ci testing.
The advantage: we can test against cuda 8, 9, 9.2, 10, 10.2
The downside: we lose the test for 7 and 7.5
Otherwise keeping the current trusty version, we can add 10 and 10.1 (no 9.x)
Ubuntu Bionic 18.04 is also available but only the 10 family is supported (at least for the moment)
What do you think? @fabiencastan @griwodz
New issue: when the second input image size is smaller than the first one, feature extracted numbers are different.
[First trial]
[Logo Image]:/root/wufangyin/dataset/test/logo2.png
[Logo Size]:[224 x 71]
[Logo Area]:15904
Feature number: 580
[Logo Image]:/root/wufangyin/dataset/test/logo1.png
[Logo Size]:[408 x 96]
[Logo Area]:39168
Feature number: 476
but
[Second trial]
[Logo Image]:/root/wufangyin/dataset/test/logo1.png
[Logo Size]:[408 x 96]
[Logo Area]:39168
Feature number: 476
[Logo Image]:/root/wufangyin/dataset/test/logo2.png
[Logo Size]:[224 x 71]
[Logo Area]:15904
Feature number: 1096
Shouldn't this check bi inside of ModeFunctions<Config::OpenCV>::refine
function?
popsift/src/popsift/s_extrema.cu
Line 447 in fafcad9
There is already a comment in place suggesting this:
popsift/src/popsift/s_extrema.cu
Line 160 in fafcad9
Hope I'm not nitpicking here :) Just trying to make code be more readable. I'm also aware this should probably just be PR but I don't really have time to test and verify this claim.
With appveyor.
Cuda can be installed following this https://github.com/willyd/appveyor-cuda-test
I wish to run popsift on a Nvidia tx2, The first method i thought of was:
Here i am tried creating the libpopsift.a file using cmake and a tool chain file. The libposift was generated successfully, but not the popsift-demo executable.
My host is a traditional ubuntu system (18.04). I wonder why that happened.
I linked my application code with the relevant libpopsift(compiled with the above method ) and made a binary that I eventually ran on the jetson.
But in the jetson, my application responds with a error:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument
Any idea what this error indicates??
Describe the problem
From the PopSIFT paper, specifically section 7 (conclusion):
"[...] extracts 10000 descriptors from non-upscaled 1080p videos at 100fps or better"
I am trying to reproduce this in my own application. I am using a much more powerful graphics card than the one used in the paper, so I assume I should be able to at least achieve the same results. Specifically, I am using an RTX 2080 while the paper uses an older GTX 1080.
Here are the settings I use to configure PopSIFT:
config.setFilterMaxExtrema
)config.setNormMode(popsift::Config::NormMode::RootSift)
)I then initialize a PopSIFT instance using:
PopSift PopSift(config, popsift::Config::ExtractingMode, PopSift::ByteImages);
Then I use enqueue
to process 8 images concurrently (i.e. I call enqueue
on the first 8 images). Then for each SiftJob
, I call get
and time how long it takes. This is how I am timing PopSIFT:
auto start = std::chrono::steady_clock::now();
popsift::Features* feature_list = job->get();
auto end = std::chrono::steady_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << "popsift took " << duration << " ms to finish" << std::endl;
The first 4 images have already been processed and therefore take 0 milliseconds. The 5th image takes 45 milliseconds, the 6th image takes 332 milliseconds, then every image after that takes ~500 milliseconds to process, which I believe is how long its taking PopSift to process each image on my GPU.
500 milliseconds per image gives me ~2 frames per second, which is quite far off from the paper's 100 frames per second, despite using images of roughly the same size and using more performant hardware.
Am I using PopSIFT incorrectly? Is there a configuration value that I should have set or set incorrectly? Any help in making my usage of PopSIFT faster would be greatly appreciated.
Thank you for your help, and for all your effort on this amazing project!
I've included additional information below that might help. Please let me know if you need anything in particular and I will be glad to assist.
Log
popsift took 0 ms to finish
Processed file [1/28]
Name: 1_1_2_1_1_-30_-10.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 2469
bitmap width = 1920, height = 1280
popsift took 0 ms to finish
Processed file [2/28]
Name: 1_1_2_1_1_-30_-30.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 1072
bitmap width = 1920, height = 1280
popsift took 0 ms to finish
Processed file [3/28]
Name: 1_1_2_1_1_-30_-50.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 709
bitmap width = 1920, height = 1280
popsift took 0 ms to finish
Processed file [4/28]
Name: 1_1_2_1_1_0_-10.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 4243
bitmap width = 1920, height = 1280
popsift took 45 ms to finish
Processed file [5/28]
Name: 1_1_2_1_1_0_-30.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 1103
bitmap width = 1920, height = 1280
popsift took 332 ms to finish
Processed file [6/28]
Name: 1_1_2_1_1_0_-50.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 1983
bitmap width = 1920, height = 1280
popsift took 558 ms to finish
Processed file [7/28]
Name: 1_1_2_1_1_30_-10.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 4556
bitmap width = 1920, height = 1280
popsift took 524 ms to finish
Processed file [8/28]
Name: 1_1_2_1_1_30_-30.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 2378
bitmap width = 1920, height = 1280
popsift took 510 ms to finish
Processed file [9/28]
Name: 1_1_2_1_1_30_-50.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 1582
bitmap width = 1920, height = 1280
popsift took 485 ms to finish
Processed file [10/28]
Name: 1_1_2_1_1_30_-70.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 170
bitmap width = 1920, height = 1280
popsift took 529 ms to finish
Processed file [11/28]
Name: 2_1_2_1_1_-30_-10.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 2813
bitmap width = 1920, height = 1280
popsift took 503 ms to finish
Processed file [12/28]
Name: 2_1_2_1_1_-30_-30.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 1003
bitmap width = 1920, height = 1280
popsift took 499 ms to finish
Processed file [13/28]
Name: 2_1_2_1_1_-30_-50.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 843
bitmap width = 1920, height = 1280
popsift took 519 ms to finish
Processed file [14/28]
Name: 2_1_2_1_1_-30_0.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 2155
bitmap width = 1920, height = 1280
popsift took 495 ms to finish
Processed file [15/28]
Name: 2_1_2_1_1_0_-10.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 588
bitmap width = 1920, height = 1280
popsift took 492 ms to finish
Processed file [16/28]
Name: 2_1_2_1_1_0_-30.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 472
bitmap width = 1920, height = 1280
popsift took 497 ms to finish
Processed file [17/28]
Name: 2_1_2_1_1_0_-50.png
Dimensions: 4872 x 3248
Camera: #1 - SIMPLE_RADIAL
Focal Length: 5846.40px
Features: 733
Desktop (please complete the following and other pertinent information):
$ uname -a
Linux khaled 5.4.0-31-generic #35-Ubuntu SMP Thu May 7 20:20:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
$ nvidia-smi
Thu May 28 14:07:18 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:01:00.0 On | N/A |
| 30% 43C P5 21W / 250W | 1584MiB / 7948MiB | 12% Default |
+-------------------------------+----------------------+----------------------+
$ git log
commit 7fc809b73ff0313320013465e2f8b1af4f9d63a8 (HEAD -> develop, origin/develop, origin/HEAD)
Merge: b4aee06 f60ef34
Author: Carsten Griwodz <[email protected]>
Date: Thu May 7 10:54:31 2020 +0200
Merge pull request #89 from alicevision/dev/sizecheck
test whether image fits into CUDA textures
[17:41:52.100709][info] CUDA-Enabled GPU.
Device information:
- id: 0
- name: Quadro K4000
- compute capability: 3.0
- total device memory: 3071 MB
- device memory available: 1303 MB
- per-block shared memory: 49152
- warp size: 32
- max threads per block: 1024
- max threads per SM(X): 2048
- max block sizes: {1024,1024,64}
- max grid sizes: {2147483647,65535,65535}
- max 2D array texture: {65536,65536}
- max 3D array texture: {4096,4096,4096}
- max 2D linear texture: {65000,65000,1048544}
- max 2D layered texture: {16384,16384,2048}
- number of SM(x)s: 4
- registers per SM(x): 65536
- registers per block: 65536
- concurrent kernels: yes
- mapping host memory: yes
- unified addressing: yes
- texture alignment: 512 byte
- pitch alignment: 32 byte
[17:41:52.176080][info] Supported CUDA-Enabled GPU detected.
[17:41:53.197578][info] Extracting sift features from view '/xxxx/footage/LionWood/IMG_3678.JPG' [gpu]
Choosing device 0: Quadro K4000
/xxxx/popsift/develop/repo/src/popsift/gauss_filter.cu:245
cudaMemcpyToSymbol failed for Gauss kernel initialization: unknown error
Does anyone have any idea where this error cames from?
Describe the problem
When calling FeaturesDev->match(FeatureDev), how can i retrieve the matches ? Is it by using getReverseMap( ) ? Your sample code show the matches using the match_matrix, but it is delete at the end of the function.
Thank you !
according to get features from job, the xpos and ypos are not on the input image, then xpos and ypos divided by pow(2, config.getUpscaleFactor()), but the xpos and ypos are still not correct on the input image. Beacause matching two images and getting good points and findHomography and warpPerspective don't get the correct transform matrix and image
When building popsift latest version on ubuntu 20.04
s_filtergrid.cu misses a header and cannot find host_vector
Please add to header
#include <thrust/host_vector.h>
When running popsift-demo.exe on an 20Mpixels PGM image (5456x3632), I ran into an out of memory error. The code is compiled on window10 with VC++2019, I use CUDA 10.2 and a GeForce RTX 2080 with 8 GB of RAM.
Do you have a limitation on the size of the image ?
Thanks
popsift-demo.exe --print-dev-info -i 2.pgm
PopSift version: 1.0.0
2.pgm
Choosing device 0: GeForce RTX 2080 with Max-Q Design
Device information:
Name: GeForce RTX 2080 with Max-Q Design
Compute Capability: 7.5
Total device mem: 8589934592 B 8388608 kB 8192 MB
Per-block shared mem: 49152
Warp size: 32
Max threads per block: 1024
Max threads per SM(X): 1024
Max block sizes: {1024,1024,64}
Max grid sizes: {2147483647,65535,65535}
Number of SM(x)s: 46
Concurrent kernels: yes
Mapping host memory: yes
Unified addressing: yes
sift_octave.cu:286
Could not allocate Intermediate layered array: out of memory
1>------ Build started: Project: popsift-demo, Configuration: Release x64 ------
2>------ Build started: Project: popsift-match, Configuration: Release x64 ------
2> Creating library D:/Dev/xlibs/popsift/build/src/application/Release/popsift-match.lib and object D:/Dev/xlibs/popsift/build/src/application/Release/popsift-match.exp
1> Creating library D:/Dev/xlibs/popsift/build/src/application/Release/popsift-demo.lib and object D:/Dev/xlibs/popsift/build/src/application/Release/popsift-demo.exp
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutRenderer referenced in function "public: static void __cdecl ilOgl::Init(void)" (?Init@ilOgl@@SAXXZ)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGLBindTexImage referenced in function "public: static unsigned int __cdecl ilOgl::BindTex(class ilImage &)" (?BindTex@ilOgl@@SAIAEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGLBuildMipmaps referenced in function "public: static unsigned int __cdecl ilOgl::Mipmap(class ilImage &)" (?Mipmap@ilOgl@@SAIAEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGLScreen referenced in function "public: static unsigned char __cdecl ilOgl::Screen(void)" (?Screen@ilOgl@@SAEXZ)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGLScreenie referenced in function "public: static unsigned char __cdecl ilOgl::Screenie(void)" (?Screenie@ilOgl@@SAEXZ)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGLTexImage referenced in function "public: static unsigned char __cdecl ilOgl::Upload(class ilImage &,unsigned int)" (?Upload@ilOgl@@SAEAEAVilImage@@I@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutConvertToHBitmap referenced in function "public: static struct HBITMAP__ * __cdecl ilWin32::Convert(class ilImage &)" (?Convert@ilWin32@@SAPEAUHBITMAP__@@AEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGetBmpInfo referenced in function "public: static void __cdecl ilWin32::GetInfo(class ilImage &,struct tagBITMAPINFO *)" (?GetInfo@ilWin32@@SAXAEAVilImage@@PEAUtagBITMAPINFO@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGetHPal referenced in function "public: static struct HPALETTE__ * __cdecl ilWin32::GetPal(class ilImage &)" (?GetPal@ilWin32@@SAPEAUHPALETTE__@@AEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGetPaddedData referenced in function "public: static unsigned char * __cdecl ilWin32::GetPadData(class ilImage &)" (?GetPadData@ilWin32@@SAPEAEAEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutGetWinClipboard referenced in function "public: static unsigned char __cdecl ilWin32::GetClipboard(class ilImage &)" (?GetClipboard@ilWin32@@SAEAEAVilImage@@@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutLoadResource referenced in function "public: static unsigned char __cdecl ilWin32::GetResource(class ilImage &,struct HINSTANCE__ *,int,char *)" (?GetResource@ilWin32@@SAEAEAVilImage@@PEAUHINSTANCE__@@HPEAD@Z)
2>match.obj : error LNK2019: unresolved external symbol __imp_ilutSetWinClipboard referenced in function "public: static unsigned char __cdecl ilWin32::SetClipboard(class ilImage &)" (?SetClipboard@ilWin32@@SAEAEAVilImage@@@Z)
2>D:\Dev\xlibs\popsift\build\Release\popsift-match.exe : fatal error LNK1120: 13 unresolved externals
2>Done building project "popsift-match.vcxproj" -- FAILED.
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutRenderer referenced in function "public: static void __cdecl ilOgl::Init(void)" (?Init@ilOgl@@SAXXZ)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGLBindTexImage referenced in function "public: static unsigned int __cdecl ilOgl::BindTex(class ilImage &)" (?BindTex@ilOgl@@SAIAEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGLBuildMipmaps referenced in function "public: static unsigned int __cdecl ilOgl::Mipmap(class ilImage &)" (?Mipmap@ilOgl@@SAIAEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGLScreen referenced in function "public: static unsigned char __cdecl ilOgl::Screen(void)" (?Screen@ilOgl@@SAEXZ)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGLScreenie referenced in function "public: static unsigned char __cdecl ilOgl::Screenie(void)" (?Screenie@ilOgl@@SAEXZ)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGLTexImage referenced in function "public: static unsigned char __cdecl ilOgl::Upload(class ilImage &,unsigned int)" (?Upload@ilOgl@@SAEAEAVilImage@@I@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutConvertToHBitmap referenced in function "public: static struct HBITMAP__ * __cdecl ilWin32::Convert(class ilImage &)" (?Convert@ilWin32@@SAPEAUHBITMAP__@@AEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGetBmpInfo referenced in function "public: static void __cdecl ilWin32::GetInfo(class ilImage &,struct tagBITMAPINFO *)" (?GetInfo@ilWin32@@SAXAEAVilImage@@PEAUtagBITMAPINFO@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGetHPal referenced in function "public: static struct HPALETTE__ * __cdecl ilWin32::GetPal(class ilImage &)" (?GetPal@ilWin32@@SAPEAUHPALETTE__@@AEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGetPaddedData referenced in function "public: static unsigned char * __cdecl ilWin32::GetPadData(class ilImage &)" (?GetPadData@ilWin32@@SAPEAEAEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutGetWinClipboard referenced in function "public: static unsigned char __cdecl ilWin32::GetClipboard(class ilImage &)" (?GetClipboard@ilWin32@@SAEAEAVilImage@@@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutLoadResource referenced in function "public: static unsigned char __cdecl ilWin32::GetResource(class ilImage &,struct HINSTANCE__ *,int,char *)" (?GetResource@ilWin32@@SAEAEAVilImage@@PEAUHINSTANCE__@@HPEAD@Z)
1>main.obj : error LNK2019: unresolved external symbol __imp_ilutSetWinClipboard referenced in function "public: static unsigned char __cdecl ilWin32::SetClipboard(class ilImage &)" (?SetClipboard@ilWin32@@SAEAEAVilImage@@@Z)
1>D:\Dev\xlibs\popsift\build\Release\popsift-demo.exe : fatal error LNK1120: 13 unresolved externals
1>Done building project "popsift-demo.vcxproj" -- FAILED.
3>------ Build started: Project: INSTALL, Configuration: Release x64 ------
3>-- Install configuration: "Release"
3>CMake Error at src/cmake_install.cmake:39 (file):
3> file cannot create directory: C:/Program Files (x86)/PopSift/lib. Maybe
3> need administrative privileges.
3>Call Stack (most recent call first):
3> cmake_install.cmake:37 (include)
3>
3>
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: The command "setlocal
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: D:\Dev\CMake\bin\cmake.exe -DBUILD_TYPE=Release -P cmake_install.cmake
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :cmEnd
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :cmErrorLevel
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: exit /b %1
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :cmDone
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd
3>D:\dev\msvs2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :VCEnd" exited with code 1.
3>Done building project "INSTALL.vcxproj" -- FAILED.
========== Build: 0 succeeded, 3 failed, 3 up-to-date, 0 skipped ==========
deviceInfo.set( 0, false );
sift_config.setThreshold(0.04);
sift_config.setEdgeLimit(10);
sift_config.setNormMode(popsift::Config::Classic);
sift_config.setFilterSorting(popsift::Config::SmallestScaleFirst);//RandomScale
sift_config.setGaussMode(popsift::Config::OpenCV_Compute);
sift_config.setMode(popsift::Config::OpenCV);
sift_config.setDownsampling(0);
sift_config.setOctaves(4);
sift_config.setLevels(3);
sift_config.setSigma(1.6);
This is my config, I used popsift to calculate the sift features,and used opencv to do the next steps, include knnmatch, findHomography and warpPerspective, but the result is different every times. How can I reduce the error?
Hi,
Is there any way of seeing the images after matching, where one can see the correspondences between 2 images.
I wish to visualize the data after popsift-match.
I am trying to use opencv but currently, thats turing out to be little tricky. Is it possible to download the accepted matches to the CPU directly. Then i can plot them. If there is any other alternative or popsift function that I am missing here. Kindly let me know
Caught by rpmlint:
popsift.x86_64: W: position-independent-executable-suggested /usr/bin/popsift-demo
This executable should be position independent (all binaries should). Check
that it is built with -fPIE/-fpie in compiler flags and -pie in linker flags.
This happens despite enabling PopSift_USE_POSITION_INDEPENDENT_CODE
.
CMake 3.11.4.
I running the following command to extract sift features,
popsift-demo -i oht_cfrp_00.tiff --print-time-info
but the program only return this without time info.
oht_cfrp_00.tiff
Loading 400 x 1040 image oht_cfrp_00.tiff
Number of feature points: 9145 number of feature descriptors: 11711
Getting an error of Segmentation fault (core dumped)
on running the popsift-demo.
like : popsift-demo -i /home/kunal/Downloads/input_1.png
I am using the popsift provided here https://github.com/acmmmsys/2018-PopSift
Others: CUDA 11
I am using boost 1.70
cmake 3.13
Ubuntu: 16.04
It was working inititally, but a day later I started getting this error. I tried rebuilding the popsift-demo file, but I got the same result.
Kindly let me know if somebody is facing the same issue. Do let me know how i can improve my question.
When testing Meshroom with popsift in FeatureExtraction using huge images (12000x9000px)
popsift fails with:
popsift/src/popsift/s_image.cu
Line 292 in 3e624d2
I assume this is due to the huge image size that my exceeds the limit. If that is the case, a more informative error message would be useful.
I tried to use popsift on nvidia Jetson TX2 which is arm64 architecture. But the function cudaHostRegister() is not available on arm64 platform.
I consulted the CUDA TOOLKIT DOCUMENTATION and found that it said
"Since the memory can be accessed directly by the device, it can be read or written with much higher bandwidth than pageable memory that has not been registered."
So is it right that the program might be slower without this operation, but will still work correctly? Or is there any other methods could be used instead of the cudaHostRegister?
Thanks a lot!
Describe the bug
Ambiguous compilation error when compiling on Ubuntu 20.04 with CUDA 10.2.
To Reproduce
Steps to reproduce the behavior:
cd popsift && mkdir build && cd build
cmake ..
make -j8
Cmake output
cmake ..
-- Build type not set, building in Release configuration
-- BUILD_SHARED_LIBS ON
-- CUDA Version is 10.1
-- Setting gencode flags: -gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_75,code=compute_75
-- Found DevIL: /usr/lib/x86_64-linux-gnu/libIL.so
-- DevIL found
******************************************
Building configuration:
-- PopSift version: 1.0.0
-- Build type: Release
-- Build Shared libs: ON
-- Build examples: ON
-- Generate position independent code: ON
-- Use CUDA NVTX for profiling: OFF
-- Synchronize and check CUDA error after every kernel: OFF
-- Grid filtering: ON
-- Testing step: OFF
-- Link with static Boost libraries: OFF
-- Additional warning for CUDA nvcc: OFF
-- Compiling for CUDA CCs: 30;35;50;52;60;61;70;75
-- Install path: /usr/local
******************************************
-- Configuring done
-- Generating done
-- Build files have been written to: /home/khaled/Repositories/popsift/build
Error
make -j8
[ 2%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/common/popsift_generated_device_prop.cu.o
[ 8%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_gauss_filter.cu.o
[ 8%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_features.cu.o
[ 11%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_pyramid.cu.o
[ 13%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_constants.cu.o
[ 16%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_conf.cu.o
[ 19%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_s_image.cu.o
[ 22%] Building NVCC (Device) object src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_octave.cu.o
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
1 error detected in the compilation of "/tmp/tmpxft_0000468b_00000000-13_sift_constants.compute_75.cpp1.ii".
CMake Error at popsift_generated_sift_constants.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_constants.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:72: src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_constants.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
1 error detected in the compilation of "/tmp/tmpxft_0000469a_00000000-13_sift_conf.compute_75.cpp1.ii".
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
CMake Error at popsift_generated_sift_conf.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_conf.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:79: src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_conf.cu.o] Error 1
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
1 error detected in the compilation of "/tmp/tmpxft_000046c2_00000000-13_gauss_filter.compute_75.cpp1.ii".
CMake Error at popsift_generated_gauss_filter.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_gauss_filter.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:86: src/CMakeFiles/popsift.dir/popsift/popsift_generated_gauss_filter.cu.o] Error 1
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
1 error detected in the compilation of "/tmp/tmpxft_0000469b_00000000-13_device_prop.compute_75.cpp1.ii".
/usr/include/c++/8/utility(307): error: pack expansion does not make use of any argument packs
1 error detected in the compilation of "/tmp/tmpxft_000046b1_00000000-13_s_image.compute_75.cpp1.ii".
CMake Error at popsift_generated_device_prop.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_device_prop.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:247: src/CMakeFiles/popsift.dir/popsift/common/popsift_generated_device_prop.cu.o] Error 1
CMake Error at popsift_generated_s_image.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_image.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:93: src/CMakeFiles/popsift.dir/popsift/popsift_generated_s_image.cu.o] Error 1
1 error detected in the compilation of "/tmp/tmpxft_000046dd_00000000-13_features.compute_75.cpp1.ii".
CMake Error at popsift_generated_features.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_features.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:65: src/CMakeFiles/popsift.dir/popsift/popsift_generated_features.cu.o] Error 1
1 error detected in the compilation of "/tmp/tmpxft_000046ca_00000000-13_sift_octave.compute_75.cpp1.ii".
CMake Error at popsift_generated_sift_octave.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_octave.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:107: src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_octave.cu.o] Error 1
1 error detected in the compilation of "/tmp/tmpxft_000046d5_00000000-13_sift_pyramid.compute_75.cpp1.ii".
CMake Error at popsift_generated_sift_pyramid.cu.o.Release.cmake:280 (message):
Error generating file
/home/khaled/Repositories/popsift/build/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_pyramid.cu.o
make[2]: *** [src/CMakeFiles/popsift.dir/build.make:100: src/CMakeFiles/popsift.dir/popsift/popsift_generated_sift_pyramid.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:143: src/CMakeFiles/popsift.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
Desktop
Popsift commit 7fc809b
branch develop
$ uname -a
Linux khaled 5.4.0-29-generic #33-Ubuntu SMP Wed Apr 29 14:32:27 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ nvidia-smi
Wed May 13 10:34:38 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
$ cmake --version
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ gcc --version
gcc (Ubuntu 7.5.0-6ubuntu2) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++ --version
g++ (Ubuntu 7.5.0-6ubuntu2) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
hi:
In your program, data is exchanged through global variables, such as:
Now I have a machine with four GPUs and want to calculate four images at the same time (each image is on a card), so I set it up:
and MAX_GPU_GRAD = 4;
But when I exchange data between CPU and GPU, I will report an error. Can you help me?
So far the release of the resources taken by the class PopSift
relies on an explicit call to the uninit()
method (mostly for the Pipe
object contained within).
This is helpful when the object instantiated from PopSift has a broad scope and resources need to be freed explicitly without waiting for the object to go out of scope.
On the other hand, it would be nice that the object is able to automatically release the resources when it goes out of scope, i.e. the destructor is called. (Single responsibility principle)
One possibility is then to have a boolean attribute in the class, _isInit
, that keeps track of the status of the object so that in the destructor the uninit method can be called if the object is still initialized.
Describe the bug
Debug Multithread runtime library in debug (/MDd) mode replaced by the release one (/MD) which result in a link error.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
When building in debug mode, warnings inform that the Multithread runtime library in debug mode (/MDd) is substituted by the realase one (/MD). This results in a link error LNK2038 avoiding to build popsift in debug mode.
In Visual Studio, by forcing /MD in the project settings (C/C++- Code generation) in debug mode, the project builds.
Log
warning message:
2>cl  : Ligne de commande warning D9025 : substitution de '/MDd' par '/MD'
error message:
2>popsift_generated_features.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_features.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_constants.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_constants.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_conf.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_conf.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_gauss_filter.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_gauss_filter.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_image.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_image.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_pyramid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_pyramid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_octave.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_octave.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_aa.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_aa.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_ai.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_ai.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_build_ra.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_build_ra.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_pyramid_fixed.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_pyramid_fixed.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_extremum.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_extremum.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_extrema.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_extrema.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_orientation.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_orientation.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_filtergrid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_filtergrid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_sift_desc.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_sift_desc.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_loop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_loop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_iloop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_iloop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_grid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_grid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_igrid.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_igrid.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_s_desc_notile.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_s_desc_notile.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_assist.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_assist.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_plane_2d.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_plane_2d.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_write_plane_2d.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_write_plane_2d.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_debug_macros.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_debug_macros.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2>popsift_generated_device_prop.cu.obj : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL' : la valeur '0' ne correspond pas à la valeur '2' in popsift.obj
2>popsift_generated_device_prop.cu.obj : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MD_DynamicRelease' ne correspond pas à la valeur 'MDd_DynamicDebug' in popsift.obj
2> Création de la bibliothèque C:/Dev/popsift/build/src/Debug/popsiftd.lib et de l'objet C:/Dev/popsift/build/src/Debug/popsiftd.exp
2>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
2>C:\Dev\popsift\build\Windows-AMD64\Debug\popsiftd.dll : fatal error LNK1319: 54 discordances détectées
Desktop
I'm trying to execute get
method of multiple SiftJob object pointers in parallel (with openmp). The following error occurs:
/home/ubuntu/dev/popsift/src/popsift/features.cu:97 Runtime warning:
Failed to register descriptor memory in CUDA.
Descriptors count: 0
Memory size requested: 0
invalid argument
/home/ubuntu/dev/popsift/src/popsift/sift_pyramid.cu:313
Size in memcpy async is null.
/home/ubuntu/dev/popsift/src/popsift/sift_desc.cu:83
cudaEventRecord failed: driver shutting down
terminate called recursively
So I wonder what's the right way to use popsift in multi-thread mode.
I wish to use popsift on the Nvidia tx2 dev kit. I am aware that popsift creates a libpopsift which can be linked to a application and used by called third party API's. However there is no information on using arm on say a popsift on a platform like the tx2(arm64). Is the popsift meant only for the traditional i386 architecture?
The second part of the question, is that if I have to use popsift on a arm board, I can do a cross compile on the entire popsift during installation but I don't know if this step works.
I am trying this method to see if it works. Also I need to know if I can directly work it out on the jetson instead of having a host and cross compiling?
I may have complicated it, but I am ready to answer any queries that can help in better understanding the nature of my problem.
Hi!
I have some faults on free of popsift::Features (Windows 64), seems to be freed of ori and ext should be called with aligned_free method.
Describe the bug
i can extract descriptors by using popsift-demo, but after i modified the code in line 302 of src/application/main.cpp (deviceInfo.set( 0, print_dev_info ) → deviceInfo.set( 1, print_dev_info ) ) , there is no descriptors extracted even i used the same image.
this is the error log:
Warning: no descriptors extracted
Number of feature points: 0 number of feature descriptors: 0
i also modified some other code in the main.cpp, this is the whole code which i modified:
std::cout << "PopSift version: " << POPSIFT_VERSION_STRING << std::endl;
//try {
// parseargs( argc, argv, config, inputFile ); // Parse command line
// std::cout << inputFile << std::endl;
//}
//catch (std::exception& e) {
// std::cout << e.what() << std::endl;
// return EXIT_FAILURE;
//}
//if( boost::filesystem::exists( inputFile ) ) {
// if( boost::filesystem::is_directory( inputFile ) ) {
// cout << "BOOST " << inputFile << " is directory" << endl;
// collectFilenames( inputFiles, inputFile );
// if( inputFiles.empty() ) {
// cerr << "No files in directory, nothing to do" << endl;
// return EXIT_SUCCESS;
// }
// } else if( boost::filesystem::is_regular_file( inputFile ) ) {
// inputFiles.push_back( inputFile );
// } else {
// cout << "Input file is neither regular file nor directory, nothing to do" << endl;
// return EXIT_FAILURE;
// }
//}
for (int i = 0; i < 300; ++i)
inputFiles.push_back("/data/dingjianbiao/popsift-develop/left_img2.pgm");
popsift::cuda::device_prop_t deviceInfo;
deviceInfo.set( 1, print_dev_info );
if( print_dev_info ) deviceInfo.print( );
is in function SiftJob::~SiftJob() undefined reference to __cxa_init_primary_exception. Undefined reference to std::__exception_ptr::exception_ptr::exception_ptr(void). the second error is in std::promisepopsift::FeaturesBase*::~promise(): undefined reference to __cxa_init_primary_exception and std::__exception_ptr::exception_ptr::exception_ptr(void)**
I am getting these errors when linking to libpopsift. Any solution will be highly appreciated.PROGRAM is written below:
#include <stdio.h>
#include <stdlib.h>
#include <popsift/popsift.h>
#include <popsift/features.h>
#include <popsift/sift_conf.h>
#include <popsift/common/device_prop.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
int main()
{
/*popsift::Config config;
config.setOctaves(-1);
config.setLevels(3);
config.setDownsampling(0);
config.setThreshold(0.04);
config.setEdgeLimit(10.0f);
config.setNormalizationMultiplier(0);
config.setNormMode(config.RootSift);
config.setFilterMaxExtrema(-1);
config.setFilterSorting(config.LargestScaleFirst);*/
cv::Mat image1=imread("/home/jetson/Desktop/3.jpg",cv::IMREAD_GRAYSCALE);
int h=image1.rows;
int w=image1.cols;
PopSift sift;
//SiftJob* job = sift.enqueue(w,h,image1.data);
//popsift::Features* popFeatures = job->get();
//std::cout << "Num of features" << popFeatures->getFeatureCount()<< std::endl;
//std::cout << "Num of descriptors" << popFeatures->getDescriptorCount()<< std::endl;
}
It seems that the debug build is broken for cuda >= 8
On cuda 8, a static debug build fails (ubuntu 14 on travis):
-- Generating /home/travis/build/alicevision/popsift/build_debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_debug_macros.cu.o
/usr/local/cuda/bin/nvcc /home/travis/build/alicevision/popsift/src/popsift/common/debug_macros.cu -dc -o /home/travis/build/alicevision/popsift/build_debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_debug_macros.cu.o -ccbin /usr/bin/gcc -m64 --std c++11 -Xcompiler ,\"-g\" -Xcompiler -rdynamic -lineinfo --keep --source-in-ptx -Xcompiler -fPIC -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_62,code=compute_62 --default-stream legacy -G -DNVCC -I/usr/include -I/home/travis/build/alicevision/popsift/build_debug/src/popsift -I/usr/local/cuda/include -I/usr/local/cuda/include
Generated /home/travis/build/alicevision/popsift/build_debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_debug_macros.cu.o successfully.
ptxas error : Entry function '_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerIjNS2_3tagENS_11use_defaultESN_EEEElSP_NS_4plusIjEENS_9null_typeESS_SS_SS_SS_EEEEEEEEvT0_' with max regcount of 64 calls function '_ZN6thrust6system4cuda6detail5bulk_6detail11scan_detail16scan_with_bufferILb1ELm512ELm3ENS_6detail15normal_iteratorINS_7pointerIjNS2_3tagENS_11use_defaultESB_EEEESD_jNS_4plusIjEEEEvRNS3_16concurrent_groupINS3_5agentIXT1_EEEXT0_EEET2_SL_T3_T4_T5_RNS5_11scan_bufferIXT0_EXT1_ESL_SM_SO_EE' with regcount of 78
ptxas error : Entry function '_ZN6thrust6system4cuda6detail5bulk_6detail15launch_by_valueILj512ENS4_9cuda_taskINS3_14parallel_groupINS3_16concurrent_groupINS3_5agentILm3EEELm512EEELm0EEENS4_7closureINS2_11scan_detail16inclusive_scan_nENS_5tupleINS4_6cursorILj1EEENS_6detail15normal_iteratorINS_7pointerIlNS2_3tagENS_11use_defaultESN_EEEElSP_NS_4plusIlEENS_9null_typeESS_SS_SS_SS_EEEEEEEEvT0_' with max regcount of 64 calls function '_ZN6thrust6system4cuda6detail5bulk_6detail11scan_detail16scan_with_bufferILb1ELm512ELm3ENS_6detail15normal_iteratorINS_7pointerIlNS2_3tagENS_11use_defaultESB_EEEESD_lNS_4plusIlEEEEvRNS3_16concurrent_groupINS3_5agentIXT1_EEEXT0_EEET2_SL_T3_T4_T5_RNS5_11scan_bufferIXT0_EXT1_ESL_SM_SO_EE' with regcount of 80
ptxas error : Entry function
On a cuda 10.2 dynamic debug build I get (ubuntu 18.04):
[ 2%] Building NVCC intermediate link file src/CMakeFiles/popsift.dir/popsift_intermediate_link.o
cd popsift/cmake-build-debug/src && /usr/local/cuda/bin/nvcc -Xcompiler -rdynamic -lineinfo --keep --source-in-ptx -Xcompiler -fPIC -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_62,code=compute_62 --default-stream legacy -G -m64 -ccbin /usr/bin/cc -dlink popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_features.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_constants.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_conf.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_gauss_filter.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_image.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_pyramid.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_octave.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_pyramid_build.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_pyramid_build_aa.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_pyramid_build_ai.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_pyramid_build_ra.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_pyramid_fixed.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_extremum.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_extrema.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_orientation.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_sift_desc.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_desc_loop.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_desc_iloop.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_desc_grid.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_desc_igrid.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_desc_notile.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_assist.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_plane_2d.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_write_plane_2d.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_debug_macros.cu.o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/common/./popsift_generated_device_prop.cu.o -o popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/./popsift_intermediate_link.o
nvcc warning : '--device-debug (-G)' overrides '--generate-line-info (-lineinfo)'
nvlink error : Undefined reference to 'cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaPeekAtLastError' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaGetParameterBuffer' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaDeviceSynchronize' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaLaunchDevice' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaGetErrorString' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaGetLastError' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaGetDevice' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
nvlink error : Undefined reference to 'cudaDeviceGetAttribute' in 'popsift/cmake-build-debug/src/CMakeFiles/popsift.dir/popsift/./popsift_generated_s_filtergrid.cu.o' (target: sm_62)
src/CMakeFiles/popsift.dir/build.make:8453: recipe for target 'src/CMakeFiles/popsift.dir/popsift_intermediate_link.o' failed
For the lattert seems like a linking missing but the only difference between release and debug command line is just the -G
and -O3
. And the calls to those functions are generated in both build types.
Any clue? @griwodz
Describe the bug
Segmentation error in step lFeatures->match(rFeatures);
To Reproduce
I am using nsight eclipse, i linked the libpopsift library with my application and it compiled successfully. My mode was changed to Matching mode as per the norm:
But the program crashes with segmentation fault on the matching step. Wonder why that is? Any leads will be appreciated.
Desktop (please complete the following and other pertinent information):
Can't run test script as wget reference.tgz
return error 403
- Forbiddent Access.
I'm hunting for a GPU accelerated version of SIFT that's comparable to existing CPU options. I'm looking at popsift
because it's marketed as creating similar features to OpenCV or VLFeat. After building develop
, I ran make prepare-test
and make run-test
. A snippet of the output is included below:
pyramid compare: /volatile/popsift-test2/build/reference/ubc/output-img2/dir-octave/pyramid-o-7-l-4.pgm and pyramid-o-7-l-4.pgm differ
...
DoG compare: /volatile/popsift-test2/build/reference/ubc/output-img2/dir-dog/d-pyramid-o-0-l-0.pgm and d-pyramid-o-0-l-0.pgm differ
...
Keypoints BAD. Descriptors BAD.
Compare leuven img6 with reference. Features BAD.
cmp /redacted/build/reference/leuven/output-img6/features.txt /redacted/build/oxford/leuven/output-img6/features.txt
I visually compared two PGM files and verified that they do appear slightly different:
Environment and build details:
Should I expect these tests to pass? Or, are slight variations expected?
Thank you for releasing this amazing project!
I've noticed that the code works with CUDA10 & GTX 1080Ti properly, whereas RTX 20 series seems to be incompatible.
Specifically, I tried RTX 2080 with CUDA9 and CUDA10 in the docker container, the program will get stuck at function "ori_par" (L.400 in s_orientation.cu) after calling cudaDeviceSynchronize() (L.427 in s_orientation.cu).
I have also tried to modify the CMakeLists.txt to add sm_75 support but the issue still exits.
Would to take a look to see if it can be resolved cheaply?
Is your feature request related to a problem? Please describe.
I want to use PopSift in a downstream project. The project does not depend CUDA directly and I would like to be able to build it without nvcc
. However, when I include "popsift/features.h", it transitively includes "popsift/sift_constants.h", which, in turn, has __device__
variables declared. This means that compilation with a "normal" compiler fails.
Describe the solution you'd like
I'd like public API headers of PopSift to be CUDA-free.
Describe alternatives you've considered
As a temporary workaround, I manually removed the lines containing __device__
from the installed header file. A proper solution would probably involve splitting the file into host/device code, or rethinking whether it needs to be included at all into "popsift/features.h".
hi,
When I use DCNv2 model and popsift at the same time,it happened to Could not get current device ID initialization error
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.