参考连接:https://blog.youkuaiyun.com/ffcjjhv/article/details/89151382
文章目录
1. 预备
Dataset下载
百度云下载链接提取码:25s1
下载后放置到dynamicfusion-master文件夹中,运行
mkdir -p data/umbrella/depth
mkdir -p data/umbrella/color
mv umbrella_data.zip data/umbrella
cd data/umbrella
unzip umbrella_data.zip
rm *.txt
mv *color*.png color/
mv *depth*.png depth/
rm umbrella_data.zip
CUDA8.0下载并安装
安装cuda8.0
sudo chmod 777 cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run
执行后会先出现一个声明,需要阅读到100%才会开始安装,直接ctr+c跳过
按照提示输入回答就行,位置全部选择默认,注:第二个选择是否安装nvidia驱动时,一定要选择否
安装完依赖后,如果仍然提示
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Missing recommended library: libXmu.so
不用管
添加环境变量
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
重启后,输入nvcc --version
测试是否安装成功
2 .配置环境
(1)apt-get install 依赖安装
sudo apt-get install cmake libvtk5-dev libsuitesparse-dev liblapack-dev --fix-missing
sudo apt-get install libblas-dev libgtk2.0-dev pkg-config libopenni-dev --fix-missing
sudo apt-get install libusb-1.0-0-dev wget zip clang --fix-missing
(2)安装gflags、glog、Eigen、Ceres
进入dynamicfusion-master
文件夹的上一目录
安装gflags、glog、Eigen
安装 gflags
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir -p build/ && cd build
cmake .. && make
cd ../../
安装 glog
git clone https://github.com/google/glog.git
cd glog
mkdir -p build/ && cd build/
cmake .. && make
cd ../../
安装 Eigen 3.3.4
wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz
tar -xf 3.3.4.tar.gz
cd eigen-eigen-5a0156e40feb
mkdir -p build && cd build
cmake ..
sudo make install
cd ../../
配置ceres-solver
下载ceres-solver到dynamicfusion-master文件夹的上一目录
:
git clone https://github.com/ceres-solver/ceres-solver
将ceres-solver-master重命名为ceres-solver
配置 Ceres
cd ceres-solver
mkdir -p build/ && cd build/
cmake ..
make -j4
sudo make install
cd ../../
(3)安装OpenCV 2.4.13
注:opencv的下载过程非常非常慢,建议前天晚上下载,第二天再接着配置
git clone https://github.com/opencv/opencv
cd opencv/
git checkout 2.4.13.3
mkdir -p build && cd build
cmake -DWITH_VTK=ON -DBUILD_opencv_calib3d=ON -DBUILD_opencv_imgproc=ON -DWITH_CUDA=OFF ..
make -j4
sudo make install
cd ../../
(4)安装Boost
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
tar -xf boost_1_64_0.tar.gz
cd boost_1_64_0
sudo ./bootstrap.sh
./b2
sudo ./b2 install
cd ..
删除掉无用的压缩包,最终目录如图
3. 代码修改
(1)配置deps/terra
cd dynamicfusion-master/deps
wget https://github.com/zdevito/terra/releases/download/release-2016-03-25/terra-Linux-x86_64-332a506.zip
unzip terra-Linux-x86_64-332a506.zip
rm terra-Linux-x86_64-332a506.zip
mv terra-Linux-x86_64-332a506 terra
(2)配置deps/Opt
下载Opt:
git clone https://github.com/niessner/Opt/tree/c6012e7e4c67fa3bea96161ba24fe88a2b79deed
并解压到deps,重命名为Opt。再编译
cd Opt/API/
make -j4
(3)修改kfusion/src/warp_field.cpp
为了解决之后运行代码会出现的报错
.../dynamicfusion/kfusion/src/warp_field.cpp:158:10: error: ‘struct ceres::Solver::Options’ has no member named ‘num_threads_used’
options.num_threads_used = 8;
将第157行options.num_linear_solver_threads = 8;
注释掉
4. 运行与结果
(1)编译
进入dynamicfusion-master文件夹,运行
mkdir -p build && cd build
cmake -DOpenCV_DIR=~/opencv/build -DBOOST_ROOT=~/boost_1_64_0/ -DOPENNI_INCLUDE_DIR=/usr/include/ni -DOpenCV_FOUND=TRUE ..
make -j4
(2)运行与报错
进入dynamicfusion-master文件夹,运行
./build/bin/dynamicfusion data/umbrella
运行后报错 llvm: No such file or directory
,查看这里:https://github.com/mihaibujanca/dynamicfusion/issues/54
升级cuda7.5到8.0能够解决
(3)结果
以下为终端结果:
wya@wya:~/Project/DF/dynamicfusion$ ./build/bin/dynamicfusion data/umbrella
Using Opt v0.2.2
No unknownwise residuals for ispaces(s) D. Creating zero-valued stand-ins.
nUnknowns = 289038
nResiduals = 0 + (@parametersSym).DataG.N * 3 + 48173 * 1
nnz = 0 + (@parametersSym).DataG.N * 24 + 48173 * 0
compile time: 1.8949518203735
problem plan complete
GPU memory usage: used = 908.500000, free = 1088.062500 MB, total = 1996.562500 MB
17351.477539062
ITERATION0 (Opt(LM)) ///
cost=221.951691
model_cost=209.799591
model_cost_change=12.152100
cost=209.799530
model_cost=208.982788
model_cost_change=0.816742
zeta=-0.00516877882182598114, breaking at iteration: 100
cost=208.982834
model_cost=208.906982
model_cost_change=0.075851
cost=208.907059
model_cost=208.878204
model_cost_change=0.028854
cost=208.878296
model_cost=208.875076
model_cost_change=0.003220
final cost=208.875046
--------------------------------------------------------
Kernel | Count | Total | Average
----------------------+----------+-----------+----------
----------------------+----------+-----------+----------
overall | 1 | 65068.980ms| 65068.9805ms
----------------------+----------+-----------+----------
computeCost_D | 6 | 0.795ms| 0.1325ms
----------------------+----------+-----------+----------
computeCost_Graph_DataG | 6 | 53.166ms| 8.8611ms
----------------------+----------+-----------+----------
PCGInit1_D | 5 | 4.904ms| 0.9807ms
----------------------+----------+-----------+----------
PCGInit1_Graph_DataG | 5 | 803.065ms| 160.6130ms
----------------------+----------+-----------+----------
PCGInit1_Finish_D | 5 | 2.864ms| 0.5729ms
----------------------+----------+-----------+----------
PCGSaveSSq_D | 1 | 0.737ms| 0.7372ms
----------------------+----------+-----------+----------
PCGComputeCtC_D | 5 | 5.176ms| 1.0351ms
----------------------+----------+-----------+----------
PCGComputeCtC_Graph_DataG | 5 | 659.266ms| 131.8533ms
----------------------+----------+-----------+----------
PCGFinalizeDiagonal_D | 5 | 14.790ms| 2.9580ms
----------------------+----------+-----------+----------
PCGStep1_D | 500 | 525.099ms| 1.0502ms
----------------------+----------+-----------+----------
PCGStep1_Graph_DataG | 500 | 55452.184ms| 110.9044ms
----------------------+----------+-----------+----------
PCGStep2_D | 450 | 1083.362ms| 2.4075ms
----------------------+----------+-----------+----------
PCGStep3_D | 500 | 237.108ms| 0.4742ms
----------------------+----------+-----------+----------
PCGStep2_1stHalf_D | 50 | 49.922ms| 0.9984ms
----------------------+----------+-----------+----------
computeAdelta_D | 50 | 21.615ms| 0.4323ms
----------------------+----------+-----------+----------
computeAdelta_Graph_DataG | 50 | 5902.342ms| 118.0468ms
----------------------+----------+-----------+----------
PCGStep2_2ndHalf_D | 50 | 62.856ms| 1.2571ms
----------------------+----------+-----------+----------
computeModelCost_D | 5 | 4.286ms| 0.8573ms
----------------------+----------+-----------+----------
computeModelCost_Graph_DataG | 5 | 58.531ms| 11.7063ms
----------------------+----------+-----------+----------
savePreviousUnknowns_D | 5 | 2.358ms| 0.4717ms
----------------------+----------+-----------+----------
PCGLinearUpdate_D | 5 | 2.286ms| 0.4572ms
--------------------------------------------------------
TIMING 65068.980469 4.903712 803.064880 2.864352 525.098816 55452.183594
Per-iter times ms (nonlinear,linear): 1557.5272 56214.3906
===Robust Mesh Deformation===
**Final Costs**
Opt GN,Opt LM,CERES
,2.08875045776367187500e+02,
ITERATION0 (Opt(LM)) ///
zeta=-0.000764104421250522137, breaking at iteration: 81
cost=309.546417
model_cost=297.105835
model_cost_change=12.440582
cost=297.105469
model_cost=295.469604
model_cost_change=1.635864
cost=295.469574
model_cost=294.755707
model_cost_change=0.713867
cost=294.755524
model_cost=294.440399
model_cost_change=0.315125
cost=294.440369
model_cost=294.345428
model_cost_change=0.094940
final cost=294.345367
--------------------------------------------------------
Kernel | Count | Total | Average
----------------------+----------+-----------+----------
----------------------+----------+-----------+----------
overall | 1 | 43057.883ms| 43057.8828ms
----------------------+----------+-----------+----------
computeCost_D | 6 | 0.458ms| 0.0763ms
----------------------+----------+-----------+----------
computeCost_Graph_DataG | 6 | 46.990ms| 7.8317ms
----------------------+----------+-----------+----------
PCGInit1_D | 5 | 4.314ms| 0.8628ms
----------------------+----------+-----------+----------
PCGInit1_Graph_DataG | 5 | 533.020ms| 106.6040ms
----------------------+----------+-----------+----------
PCGInit1_Finish_D | 5 | 2.917ms| 0.5835ms
----------------------+----------+-----------+----------
PCGSaveSSq_D | 1 | 0.334ms| 0.3337ms
----------------------+----------+-----------+----------
PCGComputeCtC_D | 5 | 1.274ms| 0.2548ms
----------------------+----------+-----------+----------
PCGComputeCtC_Graph_DataG | 5 | 389.239ms| 77.8477ms
----------------------+----------+-----------+----------
PCGFinalizeDiagonal_D | 5 | 6.222ms| 1.2444ms
----------------------+----------+-----------+----------
PCGStep1_D | 481 | 295.044ms| 0.6134ms
----------------------+----------+-----------+----------
PCGStep1_Graph_DataG | 481 | 36988.441ms| 76.8990ms
----------------------+----------+-----------+----------
PCGStep2_D | 433 | 595.695ms| 1.3757ms
----------------------+----------+-----------+----------
PCGStep3_D | 481 | 217.198ms| 0.4516ms
----------------------+----------+-----------+----------
PCGStep2_1stHalf_D | 48 | 30.610ms| 0.6377ms
----------------------+----------+-----------+----------
computeAdelta_D | 48 | 20.922ms| 0.4359ms
----------------------+----------+-----------+----------
computeAdelta_Graph_DataG | 48 | 3701.486ms| 77.1143ms
----------------------+----------+-----------+----------
PCGStep2_2ndHalf_D | 48 | 39.580ms| 0.8246ms
----------------------+----------+-----------+----------
computeModelCost_D | 5 | 0.191ms| 0.0383ms
----------------------+----------+-----------+----------
computeModelCost_Graph_DataG | 5 | 38.792ms| 7.7585ms
----------------------+----------+-----------+----------
savePreviousUnknowns_D | 5 | 1.789ms| 0.3579ms
----------------------+----------+-----------+----------
PCGLinearUpdate_D | 5 | 2.234ms| 0.4468ms
--------------------------------------------------------
TIMING 43057.882812 4.314144 533.019775 2.917344 295.044373 36988.441406
Per-iter times ms (nonlinear,linear): 979.9932 37500.6836
===Robust Mesh Deformation===
**Final Costs**