Git Product home page Git Product logo

kysucix / gipuma Goto Github PK

View Code? Open in Web Editor NEW
345.0 24.0 104.0 147 KB

Massively Parallel Multiview Stereopsis by Surface Normal Diffusion

License: GNU General Public License v3.0

CMake 0.77% C++ 45.75% C 17.54% Shell 4.71% OpenEdge ABL 8.44% Cuda 22.80%
photogrammetry stereo-algorithms multi-view-geometry multi-view-stereo computer-vision parallel-computing surface-reconstruction reconstruction

gipuma's Introduction

Silvano Galliani

Portfolio Badge Gmail Badge Twitter Badge

gipuma's People

Contributors

kysucix avatar lasinger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gipuma's Issues

Binary Masks/Silhouette management

Hello,
First of all, congrats for this valuable paper and also for making the source code available.

Everything compiled fine and I am able to reproduce paper's results. I am now trying to run it on a 68 cameras dataset with a green background, (background segmentation is available). This uniform background is causing me troubles as it creates a lot of unwanted noise, did you implement / is there a simple way I could use silhouette information as input to prevent wrong reconstructions?

Also, if I replaced background with random noise, it wouldn't be coherent between cameras, and points would not be reconstructed... could this work?

Thanks for your help,

Vincent

gipuma not respecting command-line min and max depth range when bundler file not present

The values reported for the min and max depth don't agree with the ones passed in on the command line in my case:

$ gipuma --pmvs_folder data/foo/ --camera_idx=00000000 --depth_min=.12 --depth_max=0.2
Using pmvs information inside directory data/foo/
Using image .png as reference camera
Input files are: .png 00000000.png 00000001.png 00000002.png 00000003.png 
...
Using bundler file data/foo//bundle.rd.out to obtain depth range

I didn't use bundler to calibrate my cameras, so I don't even have a bundler file.

Undefined symbol lookup

./gipuma: symbol lookup error: ./gipuma: undefined symbol: _ZN2cv6imreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi
For all images when running the dinoSparse.
I compiled openCV on my own machine, where I am now running gipuma. Any advice would be appreciated.

no kernel image is available for execution on the device

OS: win10
Platform: VS2015
CUDA: 9.0
GPU: GTX 950M(compute capacity 5.0)
Driver version: 388.73
I compiled and generated this code well with CMake. However, when running this on templeSparseRing data or other test data, I had the "no kernel image is available for execution on the device" error, then I repalced the string "-gencode arch=compute_30,code=sm_30 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_61,code=sm_61" with "-gencode arch=compute_50,code=sm_50" in CMakeLists.txt, I also change the code generation value to compute_50, sm_50 on the project property page in VS, but neither seems to work.
Any advices are welcome:)
Output:
./gipuma templeSR0001.png templeSR0002.png templeSR0003.png templeSR0004.png templeSR0005.png -images_folder data/templeSparseRing/ -krt_file data/templeSparseRing/templeSR_par.txt -output_folder results/templeSparseRing/ -no_display --cam_scale=1 --iterations=8 --blocksize=11 --cost_gamma=10 --cost_comb=best_n --n_best=2 --depth_max=0.8 --depth_min=0.3 --min_angle=5 --max_angle=70
Command-line parameter warning: unknown option -no_display
Input files are: templeSR0001.png templeSR0002.png templeSR0003.png templeSR0004.png templeSR0005.png
Detected 1 devices!
Detected gipuma compatible device: GeForce GTX 950M
Accepting intersection angle of central rays from 5.000000 to 70.000000 degrees, use --min_angle= and --max_angle= to modify them
Total number of images used: 1
Selected views: 1,
Range of Minimum/Maximum depth is: 1026.27 2736.72, change it with --depth_min= and --depth_max=
Device memory used: 642.822998MB
Blocksize is 11x11
Number of iterations is 8
Iteration 1 2 3 4 5 6 7 8
Total time needed for computation: 0.002229 seconds
Error: no kernel image is available for execution on the device
Saving output depthmap in results/templeSparseRing//20190305_092740_templeSR0001/3d_model0.ply
Total runtime including disk i/o: 0.479357sec

Linux setup

Hello,
first, thank you to make this software Open Source ! It's not so very common we can test State of the Art algorythms without reimplementing them.

Here is my problem :
I'm running Ubuntu 14.04 with CUDA 7.5 and GCC 4.8, OpenCV 3. I have experienced many segfault (for example, the last one just after the "GlobalState constructor" message). I have fixed some of them, but I'm not a c++ expert... so before I go deeper in fixing issues, I wonder if have you tested your code on Linux. If yes could provide an overview of your setup (compiler, cuda version etc).
thanks a lot.
Romain

Debug mode in Visual studio 2015

If I create a visual studio 2015 solution using CMake and compile it, it will run in release mode well. However, the following error occurs in debug mode.
Error Code D8016 '/RTC1' and '/O2' command-line options are incompatible.

Slow Compilation

The entire program (aside from some command line parsing) is implemented in one file. Splitting up the program into multiple compilation units should speed up the build.

Memory Exploding on large dataset

I am trying to run gipuma on 295 images(24MP each). But I seems to run out of memory very easily with nearly no cpu usage. I found out that it load all images in memory first.Can you tell me How can I make it run on Large dataset? Thanks

  • Running on Ryzen 1700x, GTX 1060 6GB, 32 GB Ram
    image

Sparse depth/points input

Dear contributors/authors,

Is it possible to initialise with a set of sparse points provided by SFM procedure, such as OpenMVG? The code is working beautifully on Middlebury and DTU, but I can't get the it to work on rectified images in uncontrolled environment.

Cuda error occurred

CUDA error at main.cpp 652 code=1 (cudaErrorInvalidValue)"cudaCreateTextureObject(&(Texas[i]),&resDesc,&texDesc,NULL)"

Compiling error

error listed below:

[ 33%] Building NVCC (Device) object CMakeFiles/gipuma.dir/gipuma_generated_gipuma.cu.o
nvcc fatal   : '-DNVCC' is not in 'keyword=value' format
CMake Error at gipuma_generated_gipuma.cu.o.cmake:207 (message):
  Error generating
  /home/ujovanovic/Downloads/gipuma-master/CMakeFiles/gipuma.dir//./gipuma_generated_gipuma.cu.o


CMakeFiles/gipuma.dir/build.make:63: recipe for target 'CMakeFiles/gipuma.dir/gipuma_generated_gipuma.cu.o' failed
make[2]: *** [CMakeFiles/gipuma.dir/gipuma_generated_gipuma.cu.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/gipuma.dir/all' failed
make[1]: *** [CMakeFiles/gipuma.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

CUDA_SDK_ROOT_DIR-NOTFOUND

I installed cuda via

cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb

on an Unbuntu 14.04 machine.

In CMake I'm getting CUDA_SDK_ROOT_DIR-NOTFOUND for one of the variables.

Is this a problem? The gipuma binary seemed to build, but I don't know how to run it yet.

GTX980 or GTX980 Ti?

I have an opportunity to spend some more time on trying out gipuma! I would like to match your dev environment as closely as possible.

Thanks for already posting what gpu you're using, but Nvidia's stupid branding re-used the GTX980 model number.

Can you please confirm that gipuma was developed on a GTX980 and not a GTX980 Ti?

Thanks!

Using Gipuma

I don't understand this explanation.

The easiest way is to point gipuma to the output of VisualSFM for pmvs. Images will be taken from /visualize and cameras from /txt/ Additionally 3d points in /bundle.rd.out

I have VisualSFM installed and have produced a .nvm.cmvs output which is created by cmvs/pmvs. However, I still don't understand how to get load it into gipuma for processing. Can someone please explain in simplest terms (as if explaining to a dog or a small child).

dtu dataset not working

I tried to run the DTU dataset, and it failed when running fusible.
Please note that data/dtu/calib/ does not exist, although it is hardcoded in the dtu_fast.sh script

../fusibile/fusibile -input_folder results/dtu_fast_1// -p_folder data/dtu/calib/ -images_folder data/dtu/SampleSet/MVS Data/Rectified/scan1/ --cam_scale=1 --depth_min=300 --depth_max=800 --disp_thresh=0.1 --normal_thresh=30 --num_consistent=3
Command-line parameter error: unknown option -input_folder
input folder is results/dtu_fast_1//
image folder is data/dtu/SampleSet/MVS Data/Rectified/scan1/
p folder is data/dtu/calib/
pmvs folder is
numImages is 49
img_filenames is 49
Device memory used: 674.643982MB
Device memory used: 702.955505MB
P folder is data/dtu/calib/
numCameras is 49
Camera size is 49
Accepted intersection angle of central rays is 10.000000 to 30.000000 degrees
Selected views: 49
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
Reading normals and depth from disk
Size consideredIds is 49
Reading normal 0
Reading disp 0
Reading normal 1
Reading disp 1
(...)
Reading normal 48
Reading disp 48
Resizing globalstate to 49
CUDA error at /home/bmmo/playground/mvs/fusibile/main.cpp:469 code=2(cudaErrorMemoryAllocation) "cudaMallocArray(&cuArray, &channelDesc, cols, rows)"

Segmentation fault (core dump)

First thank you for sharing the state of the art code.

I got segmentation fault errors when running on my Ubuntu 14.04-64bit with 8GB RAM, GeForce 840M with 2GB memory and Cuda 7.5.
./scripts/dino.sh: line 28: 3970 Segmentation fault (core dumped) $cmd 10 ...
I ran some other Cuda test and it worked. So not sure what is the source of error when running GIPUMA.

Many thanks.

Broken logic in main when using KRT files.

The KRT file code path looks like it is broken in main; the list of input files is not ever populated. For me this was causing a segfault, so I at least converted that to an exception (see pull request).

segmentation fault for test data

I tried all of the test data, but got the same segmentation fault.

Input files are: dinoSR0001.png dinoSR0002.png dinoSR0003.png dinoSR0004.png dinoSR0005.png dinoSR0006.png dinoSR0007.png dinoSR0008.png dinoSR0009.png dinoSR
0010.png dinoSR0011.png dinoSR0012.png dinoSR0013.png dinoSR0014.png dinoSR0015.png dinoSR0016.png
Detected 1 devices!
Detected gipuma compatible device: GeForce GTX 860M
Accepting intersection angle of central rays from 5.000000 to 70.000000 degrees, use --min_angle=<angle> and --max_angle=<angle> to modify them
Total number of images used: 6
Selected views: 1, 2, 3, 13, 14, 15,
Range of Minimum/Maximum depth is: 2234.52 5958.72, change it with --depth_min=<value> and  --depth_max=<value>

Program received signal SIGSEGV, Segmentation fault.
gipuma<float> (gs=...) at /home/super/program/gipuma/gipuma.cu:1846


(gdb) bt
#0  gipuma<float> (gs=...) at /home/super/program/gipuma/gipuma.cu:1846
#1  0x0000000000434d83 in runcuda (gs=...) at /home/super/program/gipuma/gipuma.cu:1968
#2  0x0000000000424fd7 in runGipuma (inputFiles=..., outputFiles=..., algParams=..., gtParameters=..., results=...) at /home/super/program/gipuma/main.cpp:972
#3  0x0000000000427da7 in main (argc=41, argv=0x7fffffffdcc8) at /home/super/program/gipuma/main.cpp:1220

Then i locating the error at "#ifndef shared_hardcoded...#else" :

1843│ #ifndef SHARED_HARDCODED
1844│     int blocksize_w = gs.params->box_hsize + 1; // +1 for the gradient computation
1845│     int blocksize_h = gs.params->box_vsize + 1; // +1 for the gradient computation
1846├>    WIN_RADIUS_W = (blocksize_w) / (2);
1847│     WIN_RADIUS_H = (blocksize_h) / (2);
1848│
1849│     int BLOCK_W = 32;
1850│     int BLOCK_H = (BLOCK_W/2);
1851│     TILE_W = BLOCK_W;
1852│     TILE_H = BLOCK_H * 2;
1853│     SHARED_SIZE_W_m  = (TILE_W + WIN_RADIUS_W * 2);
1854│     SHARED_SIZE_H = (TILE_H + WIN_RADIUS_H * 2);
1855│     SHARED_SIZE = (SHARED_SIZE_W_m * SHARED_SIZE_H);
1856│     cudaMemcpyToSymbol (SHARED_SIZE_W, &SHARED_SIZE_W_m, sizeof(SHARED_SIZE_W_m));
1857│     //SHARED_SIZE_W_host = SHARED_SIZE_W_m;
1858│ #else

I'm so confusing about this error. I would appreciate for that if anybody could help me.

Warp Out-of-range Address on GT720

Note: This bug report is against a version including my frontend bugfix patches:
4263aae

I am getting the following error (in cuda-gdb) on a GT720:

Using pmvs information inside directory .
Using image 00000000.png as reference camera
Input files are: 00000000.png 00000001.png 00000002.png 00000003.png 
Detected 1 devices!
Detected gipuma compatible device: GeForce GT 720
[New Thread 0x7fffe18e3700 (LWP 4977)]
[New Thread 0x7fffd9fff700 (LWP 4978)]
Selected views: 0, 1, 2, 3, 
Range of Minimum/Maximum depth is: 0.12 0.2, change it with --depth_min=<value> and  --depth_max=<value>
Device memory used: 150.376450MB
Blocksize is 19x19
Number of iterations is 8

CUDA Exception: Warp Out-of-range Address

Program received signal CUDA_EXCEPTION_5, Warp Out-of-range Address.
[Switching focus to CUDA kernel 6, grid 11, block (0,0,0), thread (0,6,0), device 0, sm 0, warp 2, lane 0]
0x0000000000c8c6a0 in void gipuma_init_cu2<float>(GlobalState&)<<<(80,64,1),(16,16,1)>>> ()

Incorrect results for DTU on Tesla K80

Hi!

First I would like to thank you for making your code publicly accessible.

I could compile and run your code with the DTU dataset on my local machine that has a single GTX 960 with 1995MB memory and everything seemed fine. Then I tried the same on our server with multiple Tesla K80 with each 11519MB memory. There the results for the individual keyviews appear incomplete and incorrect. The depth map as well as the dist.png seem to include only the first 50 image columns and they appear to be incorrect or at least include additional noise.

Results on server with Tesla K80:
dist.png
3d_model0.ply-0
3d_model0.ply-1
3d_model0.ply-2

The final model that was produced on the server looks as if it is acceptable though.
final-server

I always restricted the code to run on one card only (although not always the same) and called

> CUDA_VISIBLE_DEVICES=0 ./gipuma/scripts/dtu_fast.sh 1

The Cuda compilation tools are at release 7.5, V7.5.17 on both systems. The relative paths to the data are equal as well. In both cases I used the checked in calibration files in gipuma/data/dtu/calib/.

I am currently working on my masters thesis and would like to include and build on your work. Sadly my local GPU (GTX 960) lacks the memory necessary for the fuse step so I cannot reproduce the published results.

Sincerely,
Nikolaus Heran

Artifacts for the dinoSparseRing example

Hello,

I am running the included dinoSparseRing example:

./scripts/dinoSparseRing.sh

and I get the following artifact far from the object:

snapshot00

I observed this behavior even prior to the recently committed changes to the parameters in the example shell scripts; I just hadn't reported it yet.

Documentation for how to specify camera parameters?

I have parameters, including intrinsics, extrinsics, and a radial distortion model, for my camera array. The camera calibration was done in HALCON, so I'm expecting to have to write a config file of some sort for gipuma.

How do you specify camera parameters for your camera array to gipuma?

I don't see any radial distortion related stuff in CameraGeometryUtils.h. Does this mean gipuma only takes pre-warped images?

Thanks!

How to run the code with a new data set

Can anyone explain how to run a new data set using Gipuma. I have tried using the cmd line to look at a folder of images. I have tried getting gipuma to run a pmvs folder. I have tried editing an example bash file and pointing it an image folder.

So far nothing I have done is working.

Settings for running on Outdoor Imagery

I am attempting to run gipuma on a set of aerial imagery using the .P file input format. I am struggling to get reasonable results. Can you provide any advice for the arguments I should provide to make this type of dataset give optimal results?
Screenshot from 2020-02-04 17-27-13
Screenshot from 2020-02-04 17-26-56
Screenshot from 2020-02-04 17-26-34
I have attached screenshots from passes where I provide min and max depth, and also where I let Gipuma guess ( the latter is in the image where there are very few points in the map).
Screenshot from 2020-02-06 14-11-32

numValidPixels

Hi
In main.cpp L1039, you initialize numValidPixels.
But, you don't change its value.
And L1076 you use it, it stays at 0 all the time.
And you push it in result file.
What is this for?
Thank you

results on TUM dataset are really bad

I'd like to use gipuma on TUM or some other SLAM dataset to get depthmap. But it got really bad results.
c1
the normal image is :
normals

I used these parameters:

Cost function: PatchMatch Cost
Kernel size: 19 x 19
Number of iterations: 8
Max. disparity: 256
Depth min: 0.4
Depth max: 3
gamma: 10
alpha: 0.9
tauCol: 10
tauGrad: 2
border value: -1
disparity tolerance (occ check): 1
normal tolerance (occ check): 0.1
census epsilon: 2.5
self-similarity n: 50
cost good truncation factor: 1.5
cost combination: BEST_N (n=3)
color processing: yes
view selection: yes
GT disparity tolerance: 0.5

gipuma output

Hi, thank you for providing this amazing work 🥇 🥇

I want to test gipuma with my dataset, I compiled it perfectly and I was able to get good results with dinoSparseRing data set
dinosparsering
I prepared my data set images , camera poses and camera matrix to be exactly the same as dinoSparseRing , these are sample images of my data set

0
1
2
3
4

when I try gipuma with my dataset I get this output

mydata3
mydata1
mydata2

  • my question is
    what is the problem ?, what are the parameters I need to adjust ?

Build issue

Hi,

I am currently trying to build your software and I have the following error.

OpenCV static library was compiled with CUDA 9.0 support. Please, use the
same version or rebuild OpenCV with CUDA 7.5

My computer setup is the following:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial

The following is my CUDA setup.

Fri May 29 11:52:09 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| 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 GTX TIT... Off | 00000000:03:00.0 On | N/A |
| 25% 64C P2 71W / 250W | 1640MiB / 12207MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX TIT... Off | 00000000:04:00.0 Off | N/A |
| 22% 56C P8 18W / 250W | 12MiB / 12212MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1222 G /usr/lib/xorg/Xorg 355MiB |
| 0 2617 G compiz 193MiB |
| 0 3674 G /usr/lib/firefox/firefox 2MiB |
| 0 9576 G /usr/lib/firefox/firefox 2MiB |
| 0 9794 C+G ./VisualSFM 1074MiB |
| 0 15378 G /usr/lib/firefox/firefox 2MiB |
+-----------------------------------------------------------------------------+

Several things I should highlight, 1) I didn't setup the GPUs on this computer so guidance where possible detailed towards someone who is a complete novice with GPUs 2) I am not a C++ programmer. More C at the moment. However, I am looking to use your software as part of a pipeline to complete an MSc project. Any guidance you can provide would be really appreciated.

Best regards,

Dale

No selected views on my Dataset

I'm having an issue where no images are being used and no views are being selected when running gipuma on my dataset. Using the image_name.jpeg.P format with verified camera positions.

Automatically guessed depth was far off for me.

Gipuma's guess for the min and max depth was far off for my setup:

Range of Minimum/Maximum depth is: 0.226481 2.3346, change it with --depth_min= and --depth_max=

The actual range I care about is more like 0.12 - 0.2 m, which doesn't even intersect the guessed volume. My setup has four cameras converging on a point about 170 mm from the cameras. PMVS2 got it right; maybe there is some useful heuristic in there...

For my application, setting the depth range manually is actually better anyway, but I thought I'd post in case someone else runs into it who doesn't have that luxury.

Thanks!

project generate failed

hi,
while I compile the project using cmake, I got a error message as following:
"Building NVCC (Device) object CMakeFiles/gipuma.dir/Release/gipuma_generated_gipuma.cu.obj
nvcc fatal : Unsupported gpu architecture 'compute_52'
CMake Error at gipuma_generated_gipuma.cu.obj.cmake:207 (message):
Error generating
F:/GitHub/gipuma/build/CMakeFiles/gipuma.dir//Release/gipuma_generated_gipuma.cu.obj
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: “cmd.exe” "

It seems something wrong with my graphics card, but I don't know how to fix it.
the cmake configured fine and can generate successfully, but the VS2013 just can not generated the project, did I missed any thing? the following is the environment I used to configure the project: GPU: GTX 650 (seems meet the requirements of compute capability 3.0) OS: Windows 7, IDE: VS2013, CUDA Toolkit 6.5, opencv 3.0 , cmake 3.4.
And thanks for sharing your code :)

Reproduce paper results

First I want to say this is a valuable paper, and also thank you for sharing the code.

The code compiles fine (and seems to work fine also, though not very clear how to use it), but I have trouble reproducing the paper results. Could you please share with us an example script that reproduces one of the paper results?

For example, how to use the executable with the DTU object so that we get the result displayed in figure 1?

Command-line parameter error about "input_folder" and "-remove_black_background"

Thanks for providing your excellent work!

Well, I have some questions about the bash commands in scripts folder
As we can see in the every last two lines of the code:
echo warping -input_folder $output_dir ...
$warping -input_folder $output_dir ...

The program error message says:
Command-line parameter error: unknown option -input_folder
Command-line parameter error: unknown option -remove_black_background

Can anyone help me with this? :D

Undocumented parameters

I am looking in gipuma/scripts/dinoSpareRing.sh.

It looks like you had to manually tune a bunch of undocumented parameters to make the reconstruction work. Is that true? Or is there just a bunch of DRY violation in the shell scripts you used to glue gipuma/fusibile together? I am worried about whether gipuma is capable at all of running on generic data.

fuse problem

When i execute the temple example, it can not fuse to a pointcloud
图片
and when i use the fusibile with no -remove_black_background, it can get the result but it gets the terrible results like this
图片

Gipuma reloads and decodes source image files repeatedly

Is there some non-historical reason why gipuma is called repeatedly from a shell script (and thus has to load everything from scratch)? Gipuma is loading and decoding the same N source images N times!

On our TITAN X with an i7 rig with SSD, the full dinoSparseRing takes 37s, much less than the 2 min 52 sec submitted to the middlebury stereo. TITAN X is only about 30% faster than a GTX 980, not 6X as fast... so the submitted number seems way off.

Is the result listed as "ECCV2016_104" just the current version of gipuma? That is closer in speed to what I'm seeing.

reduce the image loaded for computing to max_views

Is it for a historical reason that gipuma will load all the images for computing? Even if views are selected?

Because in computing the depth for a reference image, only the selected views are used, e.g. gipuma.cu, line 742 in the master version.

for ( int i = 0; i < camParams.viewSelectionSubsetNumber; i++ )
    int idxCurr = camParams.viewSelectionSubset[i];

`

However, even if only the selected views are processed, all the images are loaded into CPU and uploaded to GPU, as

 for ( size_t i = 0; i < numImages; i++ ) {
        img_grayscale[i] = imread ( ( inputFiles.images_folder + inputFiles.img_filenames[i] ), IMREAD_GRAYSCALE );
        if ( algParams.color_processing ) {
            img_color[i] = imread ( ( inputFiles.images_folder + inputFiles.img_filenames[i] ), IMREAD_COLOR );
        }

        if ( img_grayscale[i].rows == 0 ) {
            printf ( "Image seems to be invalid\n" );
            return -1;
        }
    }

and

    if (algParams.color_processing)
        addImageToTextureFloatColor (img_color_float_alpha, gs->imgs, gs->cuArray);
    else
        addImageToTextureFloatGray (img_grayscale_float, gs->imgs, gs->cuArray);

Is this problem able to be handled in gipuma and fusibile? Because in real datasets with off-the-shelf camera, e.g. cell phones with 12MP and mirrorless camera with 24MP, the memory will easily explode for a small datasets.

Thanks,

Han

segmentation fault (core dumped), run on Ubuntu 16.04

Thank you a lot to release this code. I successfully run this code on a Ubuntu 14.04 machine. However got the following segmentation fault, and I'm not sure the 16.04 version matters or not? Any suggestions please?

command: ./scripts/dtu_accurate.sh 11

printouts:
0
/home/mengqi/fileserver/datasets/DTU_MVS/Rectified/scan11/./gipuma rect_001_3_r5000.png rect_002_3_r5000.png rect_003_3_r5000.png rect_004_3_r5000.png rect_005_3_r5000.png rect_006_3_r5000.png rect_007_3_r5000.png rect_008_3_r5000.png rect_009_3_r5000.png rect_010_3_r5000.png rect_011_3_r5000.png rect_012_3_r5000.png rect_013_3_r5000.png rect_014_3_r5000.png rect_015_3_r5000.png rect_016_3_r5000.png rect_017_3_r5000.png rect_018_3_r5000.png rect_019_3_r5000.png rect_020_3_r5000.png rect_021_3_r5000.png rect_022_3_r5000.png rect_023_3_r5000.png rect_024_3_r5000.png rect_025_3_r5000.png rect_026_3_r5000.png rect_027_3_r5000.png rect_028_3_r5000.png rect_029_3_r5000.png rect_030_3_r5000.png rect_031_3_r5000.png rect_032_3_r5000.png rect_033_3_r5000.png rect_034_3_r5000.png rect_035_3_r5000.png rect_036_3_r5000.png rect_037_3_r5000.png rect_038_3_r5000.png rect_039_3_r5000.png rect_040_3_r5000.png rect_041_3_r5000.png rect_042_3_r5000.png rect_043_3_r5000.png rect_044_3_r5000.png rect_045_3_r5000.png rect_046_3_r5000.png rect_047_3_r5000.png rect_048_3_r5000.png rect_049_3_r5000.png -images_folder /home/mengqi/fileserver/datasets/DTU_MVS/Rectified/scan11/ -p_folder data/dtu/calib/ -output_folder // -no_display --algorithm=pm --ct_eps=2.5 --cam_scale=1 --iterations=8 --disp_tol=10 --norm_tol=0.2 --gtDepth_divisionFactor=1 -ng rect_049_3_r5000.png -images_folder /home/mengqi/fileserver/datasets/DTU_MVS/Rectified/scan11/ -p_folder data/dtu/calib/ -output_folder // -no_display --algorithm=pm --ct_eps=2.5 --cam_scale=1 --iterations=8 --disp_tol=10 --norm_tol=0.2 --gtDepth_divisionFactor=1 --gtDepth_tolerance=0.1 --gtDepth_tolerance2=0.02 --blocksize=25 --cost_gamma=10 --cost_comb=best_n --n_best=3 --depth_max=800 --depth_min=300 -view_selection --min_angle=10 --max_angle=30
Command-line parameter warning: unknown option -no_display
Input files are: rect_001_3_r5000.png rect_002_3_r5000.png rect_003_3_r5000.png rect_004_3_r5000.png rect_005_3_r5000.png rect_006_3_r5000.png rect_007_3_r5000.png rect_008_3_r5000.png rect_009_3_r5000.png rect_010_3_r5000.png rect_011_3_r5000.png rect_012_3_r5000.png
rect_013_3_r5000.png rect_014_3_r5000.png rect_015_3_r5000.png rect_016_3_r5000.png rect_017_3_r5000.png rect_018_3_r5000.png rect_019_3_r5000.png rect_020_3_r5000.png rect_021_3_r5000.png rect_022_3_r5000.png rect_023_3_r5000.png rect_024_3_r5000.png rect_025_3_r5000.png rect_026_3_r5000.png rect_027_3_r5000.png rect_028_3_r5000.png rect_029_3_r5000.png rect_030_3_r5000.png rect_031_3_r5000.png rect_032_3_r5000.png rect_033_3_r5000.png rect_034_3_r5000.png rect_035_3_r5000.png rect_036_3_r5000.png rect_037_3_r5000.png rect_038_3_r5000.png rect_039_3_r5000.png rect_040_3_r5000.png rect_041_3_r5000.png rect_042_3_r5000.png rect_043_3_r5000.png rect_044_3_r5000.png rect_045_3_r5000.png rect_046_3_r5000.png rect_047_3_r5000.png rect_048_3_r5000.png rect_049_3_r5000.png
Detected 4 devices!
Detected gipuma compatible device: Graphics Device
Accepting intersection angle of central rays from 10.000000 to 30.000000 degrees, use --min_angle= and --max_angle= to m
odify them
Total number of images used: 8
Selected views: 1, 2, 8, 9, 10, 11, 12, 13,
Range of Minimum/Maximum depth is: 1.95232 5.20619, change it with --depth_min= and --depth_max=
Device memory used: 795.017212MB
Blocksize is 25x25
Number of iterations is 8
Iteration 1 2 3 4 5 6 7 8
Total time needed for computation: 6.766714 seconds
./scripts/dtu_accurate.sh: line 29: 2333 Segmentation fault (core dumped) $prog ${image_list[@]} -images_folder "$inputdir" -p_folder $p_folder -output_folder $output_dir -no_display --algorithm=pm --ct_eps=2.5 --cam_scale=$scale --iterations=$iter --disp_tol=10 --norm_tol=0.2 --gtDepth_divisionFactor=1 --gtDepth_tolerance=0.1 --gtDepth_tolerance2=0.02 --blocksize=$blocksize --cost_gamma=$cost_gamma --cost_comb=best_n --n_best=$n_best --depth_max=$depth_max --depth_min=$depth_min -view_selection --min_angle=$min_angle --max_angle=$max_angle
1
/home/mengqi/fileserver/datasets/DTU_MVS/Rectified/scan11/./gipuma rect_002_3_r5000.png rect_001_3_r5000.png rect_003_3_r5000.png rect_004_3_r5000.png rect_005_3_r5000.png rect_006_3_r5000.png rect_007_3_r5000.png rect_008_3_r5000.png rect_009_3_r5000.png rect_010_3_r
5000.png rect_011_3_r5000.png rect_012_3_r5000.png rect_013_3_r5000.png rect_014_3_r5000.png rect_015_3_r5000.png rect_016_3_r5000.png rect_017_3_r5000.png rect_018_3_r5000.png rect_019_3_r5000.png rect_020_3_r5000.png rect_021_3_r5000.png rect_022_3_r5000.png rect_02
...

too many resources launched error

I got a "too many resources requested for launch" error in planeRefinement kernel.

My GPU is GTX1070, which has 10 GB memory. I am compiling with compute_61,sm_61

Do you have any idea how I could fix the problem?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.