MVSNet depthfusion配置流程

原文内容

R/MVSNet itself only produces per-view depth maps. To generate the 3D point cloud, we need to apply depth map filter/fusion for post-processing. As our implementation of this part is depended on the Altizure internal library, currently we could not provide the corresponding code.
Fortunately, depth map filter/fusion is a general step in MVS reconstruction, and there are similar implementations in other open-source MVS algorithms. We provide the script depthfusion.py to utilize fusibile for post-processing (thank Silvano Galliani for the excellent code!).

To run the post-processing:

  • Check out the modified version fusibile git clone https://github.com/YoYo000/fusibile
  • Install fusibile by cmake . and make, which will generate the executable at FUSIBILE_EXE_PATH
  • Run post-processing (–prob_threshold 0.8 if using 3DCNNs): python depthfusion.py --dense_folder TEST_DATA_FOLDER --fusibile_exe_path FUSIBILE_EXE_PATH --prob_threshold 0.3
  • The final point cloud is stored in TEST_DATA_FOLDER/points_mvsnet/consistencyCheck-TIME/final3d_model.ply.

使用Origin Fusible代码融合出来的点云颜色是没有的,这里YaoYao通过修改了代码使得Gipuma融合出来的点云是由颜色的, 下面是YaoYao给出的代码: click here

CMakeList配置需求

cmake_minimum_required (VERSION 3.9)
project (fusibile)# Enable C++11 globally
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)# Support IDEs: https://cliutils.gitlab.io/modern-cmake/chapters/features/ides.html
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "cmake-default-targets")find_package(OpenCV REQUIRED )
find_package(CUDA 6.0 REQUIRED ) # For Cuda Managed Memory and c++11if(NOT DEFINED CMAKE_CUDA_STANDARD)set(CMAKE_CUDA_STANDARD 11)set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(.)# from https://en.wikipedia.org/wiki/CUDA#GPUs_supported
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 --use_fast_math --ptxas-options=-v --compiler-options -Wall -gencode arch=compute_30,code=sm_30 -gencode arch=compute_32,code=sm_32 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75)
#set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 --use_fast_math --ptxas-options=-v -std=c++11 --compiler-options -Wall -gencode arch=compute_52,code=sm_52)if(CMAKE_COMPILER_IS_GNUCXX)add_definitions(-std=c++11)add_definitions(-Wall)add_definitions(-Wextra)add_definitions(-pedantic)add_definitions(-Wno-unused-function)set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -ffast-math -march=native") # extend release-profile with fast-math#add_definitions(-march=native)
endif()# for YouCompleteMe
set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )# For compilation ...
# Specify target & source files to compile it from
cuda_add_executable(fusibilecameraGeometryUtils.hvector_operations.hcamera.hglobalstate.halgorithmparameters.hcameraparameters.hlinestate.hdisplayUtils.hmathUtils.hfileIoUtils.hfusibile.cumain.cpp)
# https://cliutils.gitlab.io/modern-cmake/chapters/packages/OpenMP.html
find_package(OpenMP)# For linking ...
# Specify target & libraries to link it with
target_link_libraries(fusibile${OpenCV_LIBS}OpenMP::OpenMP_CXX)include(FeatureSummary)
feature_summary(WHAT ALL)

针对CMakeList.txt文件修改

官方文件由于是14年的文件,那时候还不支持2080ti等算力的显卡。我通过cmake .make 编译得到的fusibile程序,运行报no kernel image is available for execution on the device的错误,因此为了兼容我的显卡以及多种其他算力不同cuda版本的显卡,我修改了CMAKELIST.txt文件。

将下面内容注释掉:

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 --use_fast_math --ptxas-options=-v -std=c++11 --compiler-options -Wall -gencode arch=compute_52,code=sm_52)

替换为了如下内容:

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3 --use_fast_math --ptxas-options=-v --compiler-options -Wall -gencode arch=compute_30,code=sm_30 -gencode arch=compute_32,code=sm_32 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75)

目前好像还不支持3090等30系显卡,但是20系显卡都支持了,后续的需要进行修改就好了.

具体配置

  • 将https://github.com/YoYo000/fusibile的代码clone下来
  • 前提是配置好下面所需要的配置:CMAKE、OPenCV和CUDA
  • 通过cmake.和make来安装fusible
    • 进入fusible文件夹
    • 输入cmake ., 得到如下数据
-- The following OPTIONAL packages have been found:* OpenMP-- The following REQUIRED packages have been found:* OpenCV* Threads* CUDA (required version >= 6.0)-- Configuring done
-- Generating done
-- Build files have been written to: /file/sync_files/MVSNet/fusible
  • 输入make, 编译完成之后文件夹会出现一个fusible文件没有后缀,表示成功了。
  • 如果需要的话,需要使用如下命令来清除缓存
rm -rf CMakeCache.txt

Linux安装CMAKE

  1. 通过如下命令查看Linux位数
getconf LONG_BIT
  1. 获取cmake源码包,先创了一个文件夹来存储cmake, 根据官方配置需求文件,得到我们需要一个CMAKE版本大于3.9
mkdir appcd app

然后要去CMAKE官网去获取对应的CMAKE链接, 使用如下命令下载:

wget install https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz

这里我下载的是3.21版本的CMAKE.

  1. 解压源码
tar xzvf cmake-3.21.2.tar.gz
  1. 安装gcc(Ubuntu使用apt-get安装,Linux使用yum安装)
# Ubuntu
apt-get install gcc# Linux
yum install gcc-c++
  1. 安装cmake,先进入解压后的cmake的目录
cd cmake-3.21.2./bootstrap

如果编译出现如下信息:

 Could NOT find OpenSSL

Ubuntu系统可以执行如下命令安装相关依赖:

apt-get update
apt-get install libssl-dev

安装完成之后再重新编译就好了。

  1. 在当前目录执行如下命令安装make
make install
  1. 完成之后使用如下命令查看cmake版本
cmake --version

Linux安装OpenCV

  1. 按照之前的步骤安装完cmake
  2. 安装依赖环境
apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-devapt-get install libgtk2.0-devapt-get install pkg-config
  1. 去OpenCV官网下载源码,这里我是将源码下载下来,然后在上传到服务器上的,可以使用wget来进行源码的下载,命令如下:
wget install https://github.com/opencv/opencv/archive/4.5.3.zip
  1. 解压完文件
unzip -n opencv-4.5.3.zip
  1. 解压完文件之后,进入目录,创建build目录
cd opencv-4.5.3mkdir build
  1. 使用如下命令清除CMakeCache缓存
rm -rf CMakeCache.txt

这个方法是进入到build文件夹之后,使用cmake出现如下错误时使用:

CMake Error: The source directory "/file/app/opencv-4.5.3/build" does not appear to contain CMakeLists.txt.
  1. 进入build文件夹,使用cmake命令
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

如果安装了Anaconda建议使用如下命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..

切记不能在cmake配置下面的环境变量,否则会报错!!!
类似下面这种

  Some of these libraries may not be found correctly. Call Stack (most recent call first):   cmake/OpenCVModule.cmake:1273 (ocv_add_executable)   modules/highgui/CMakeLists.txt:272 (ocv_add_accuracy_tests)
  1. 执行结束之后,在使用make进行编译
make -j8
  1. 使用如下命令进行安装
make install
  1. 配置环境,使用vim打开/etc/ld.so.conf,在最后一行加上/usr/local/lib
vim /etc/ld.so.confinclude /usr/local/lib

然后运行如下命令生效:

ldconfig
  1. 修改bash.bashrc文件
vim /etc/bash.bashrc

在文件末尾添加上如下内容:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

然后在命令输入如下命令生效:

source /etc/bash.bashrc
  1. 检查是否生效
cd /usr/local/lib
ls

问题

报错GL/gl.h: No such file or directory

使用如下命令安装:

sudo apt-get install mesa-common-dev
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

MVSNet depthfusion配置流程相关推荐

  1. mysql主从配置流程

    一.mysql主从配置原理 1.master将操作记录写到二进制日志中(binary log)中: 2.slave IO 线程将master的binary log events读写到它的中继日志(re ...

  2. mysql的bean配置_jsp+tomcat+mysql+sevlet+javabean配置流程

    jsp+tomcat+mysql+sevlet+javabean配置流程 2010-5-9文字大小:大中小 作者:2007年跨越鸿沟.网址:http://blog.csdn.net/stupidwu/ ...

  3. Linux下svn搭建配置流程

    Linux下svn搭建配置流程     一.    源文件编译安装.源文件共两个,为: 1.   下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...

  4. Phonegap win7下环境配置流程

    2019独角兽企业重金招聘Python工程师标准>>> Phonegap  win7下环境配置流程 注意:phonegap的配置有很多种,我这个只是其中一种. 一.准备工作: 1.A ...

  5. mysql+phpmyadmin配置流程

    mysql+phpmyadmin配置流程:   环境:Apache+php5+mysql5   下载包:phpMyAdmin-2.11.9.4-all-languages-utf-8-only.tar ...

  6. oracle rac war配置,Oracle RAC安装配置流程

    系统部分 1.建立用户 2.设定IP 3.每个节点的IP解析 4.SSH的配置 为用户等效性配置SSH(在所有节点上执行) 在安装Oracle RAC 10g期间,OUI需要把文件复制到集群中的其他主 ...

  7. Gitorious基本配置流程

    一. GitHub.Gitorious对比: Gitorious与GitHub二者主要功能一样,都是git的版本管理仓库. 区别: 1. Gitorious比GitHub更早诞生: 2. Gitori ...

  8. Linux下svn 安装搭建配置流程

    Linux下svn搭建配置流程     一.    源文件编译安装.源文件共两个,为: 1.   下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...

  9. webpack基本打包配置流程

    项目搭建以及webpack打包配置流程 创建文件夹EC(文件夹和文件名根据需求自定义) 在EC文件夹下新建文件夹APP 在APP文件夹下新建入口文件index.js 和运行该入口文件的index.ht ...

最新文章

  1. setuid和setgid
  2. 美国 . PacBio
  3. MySQL与OLAP:分析型SQL查询最佳实践探索
  4. Matlab计算机视觉/图像处理工具箱(待续)
  5. Linux内核学习编译流程
  6. Actionscript 3.0 迁移指南
  7. 在vuex的mutations中使用vue的小技巧
  8. java 编译单个文件_单独Java文件的通用快速编译方法
  9. python aiml开发文档,带有Python的AIML文件
  10. 登录客户端显示不能连接服务器,客户端不能连接服务器,无法登陆
  11. spring调用webservice
  12. 基于HuTool工具实现Excel复杂表头生成、单元格合并绘制对角线(计算N叉树的最大深度和最大宽度)
  13. 大三计算机组成原理深度学习——机器字长、存储单元、存储字长、存储容量,存储体的概念
  14. 招聘面试技巧(转载)
  15. c语言——常见占位符(格式说明)
  16. 怎样在几何画板中查看课件制作过程
  17. PostgreSQL密码重置方法
  18. 波段操作是什么 波段操作技巧
  19. 计算机技术+智能化水电站,济南研祥嵌入式技术在水库信息智能化系统中的应用———济南研祥嵌入式技术在水库信息...
  20. 置信度传播算法(Belief Propagation)

热门文章

  1. 探秘海底捕参者:每月收入最少3万 满身是伤病
  2. 驱动流程提升价值-杭州信雅达软件事业部曹海强主题演讲
  3. JavaScript 三元表达式
  4. Java小记-集合类(超级无敌认真好用,万字收藏篇!!!!)
  5. Doze中的adb命令大全
  6. 搬砖的开始 HFSS入门 T型波导的内场分析
  7. 【百度地图】路书轨迹显示
  8. 解析机器人编程相对应的等级制度
  9. xyolo?几行Python代码轻松完成yolo3目标检测
  10. 迷宫逃离的问题-CoCube