仙桃市建设局网站,房地产网站推广,泉州全网营销,公司部门分类3D Gaussian Splatting的使用 1 下载与安装2 准备场景样本2.1 准备场景照片2.1.1 采集图片2.1.2 生成相机位姿 3 训练4 展示 1 下载与安装
今年SIGGRAPH最佳论文#xff0c;学习了一下#xff0c;果然厉害#xff0c;具体论文原理就不说了#xff0c;一搜都有#xff0c;… 3D Gaussian Splatting的使用 1 下载与安装2 准备场景样本2.1 准备场景照片2.1.1 采集图片2.1.2 生成相机位姿 3 训练4 展示 1 下载与安装
今年SIGGRAPH最佳论文学习了一下果然厉害具体论文原理就不说了一搜都有主要是看看怎么用自己能不能把身边的场景快速建个模。
赶紧记录下好像这几天在这个基础上又有很多花样出来了…
我的系统是Ubuntu22.04。
开源作者已经都弄的很详细了也有教程。 首先拉项目 git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 然后要建conda环境而项目已经提供了配置文件包含了需要的各版本信息文件就是enviornment.ymal所以这么调用就建好环境并激活
conda env create --file environment.yml
#文件里给环境的名字固定叫 gaussian_splatting
conda activate gaussian_splatting此时呢虽然建好了但是呢也报错了仔细分析了error是因为安装项目里的submodules里的两个项目报错了类似这样的报错 /usr/include/c/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘…’: 435 | function(_Functor __f) | ^ /usr/include/c/11/bits/std_function.h:435:145: note: ‘_ArgTypes’ /usr/include/c/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘…’: 530 | operator(_Functor __f) | ^ /usr/include/c/11/bits/std_function.h:530:146: note: ‘_ArgTypes’ 查了半天以为是g版本不对有的说要将到版本10还有说要改c文件源码。我没敢改再找了下发现我的cuda版本是11.5而该项目要求的是11.8于是我就升级了一下具体怎么升级见我之前写的一篇 升级和切换CUDA版本 。
升级完CUDA就手动再安装这两个子模块
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn都没问题成功安装~
2 准备场景样本
准备拿会议室整个屋子做一次尝试看看能不能建出个模来。
2.1 准备场景照片
2.1.1 采集图片
根据原理吧就需要这个场景中所有位置所有角度的图像所以这个准备过程多仔细就能决定最终模型的效果。 我试了很多次觉得拍视频最好完了再抽帧。 因为训练的照片要分辨率统一相机参数、光照等看着都比较统一才好。 另外建议分辨率推荐1080p至少720p。再退一步至少保证宽或高有一个能到720 不然训练出来的效果不好这是我的个人经验。 拍视频的时候一定不要在一个位置转的拍要缓慢走动边走边转上下左右然后再走回来这个路线根据场景要设计好目的就是在任何位置上都有任何角度的照片。这只能尝试体会了。。。
然后有了视频就能通过抽帧拿到图片了想要效果可以我建议500张起多的话我只试到2000张再多我也没尝试。 怎么抽帧呢就用ffmpeg
比如先建一个data目录data目录里一定要建个input文件夹名字必须是这个。
ffmpeg -i room.mp4 -r 3 -f image2 input/%06d.jpg-i就是输入视频 -r就是帧率控制抽的图片数量 后面input/%60d.jpg 图片名字最终是 000001.jpg, 000002.jpg这样的格式。
最终在data/input下就有了一堆图片
2.1.2 生成相机位姿
首先呢系统里要先安装colmap使用源码装具体怎么装见我之前的文章 Colmap在Linux下的安装
装好了呢就在gaussian splatting 项目目录下运行convert.py
python convert.py -s data这里 -s 要传入数据目录一定写data这个目录级别input在这个目录下
这时用的是CPU跑的多等会儿最终就在data目录下生成一堆目录和文件包括相机位姿。
3 训练
前面都OK了就开始训练了。 注意如果训练图片比较多比如超过1000张了那要先给系统设置一下同时打开的文件数上限因为默认的数太小了会报错 OSError: [Errno 24] Too many open files: 所以先临时调大一下上限 ulimit -n 10000 1w一般就够了这个设置重启电脑后就失效了。想要永久有效搜一下就知道了。 然后运行
python train.py -s data -m data/output-s还是一样要写到data这个目录级别 -m 是输出文件夹就写data下的outputoutput目录会自动创建的
整个训练是30000步在7000步的时候会自动保存一个中间模型。
运行时间的话我举个我的测试例子
分辨率 1920x1080,939张照片convert.py的时间是二十几分钟train.py的时间一共是15分钟。 GPU显存占用22GB训练得到的ply文件 156MB。
4 展示
该项目也提供了展示的软件在SIBR_viewers目录里 进去要编译安装一下这个软件。 编译过程因为有东西下不下来会出错得想办法之后有空单独简单记录一下。 这个软件也要用GPU跑我就在Ubuntu上跑的最终安装的目录在SIBR_viewers/install/bin里所以就进目录里运行
install/bin/SIBR_gaussianViewer_app -m /home/xxxx/data/output-m 就是给上面训练后的output目录就行了。
有用的模型就一个就是30000步里的那个Ply文件。
我这会议室效果展示就不录屏了来几个角度的照片吧
我其实弄的也没那么仔细但是效果还挺厉害如果不动的话就和照片一样。 这个模型出来和传统模型其实不一样不好弄成obj fbx啥的就是它这算法直接渲染的。至于怎么在产品或者其他场景里用后面有空再说我已经尝试了一个在web里打开的demo了只是没那么流畅而已。