前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[保姆级]腾讯云服务器上实操NeROIC

[保姆级]腾讯云服务器上实操NeROIC

原创
作者头像
buzzfrog
修改2023-10-20 14:46:25
1.9K4
修改2023-10-20 14:46:25
举报
文章被收录于专栏:云上修行云上修行

综述

南加州大学华人博士提出的新模型NeROIC,可以从图像创建 3D 模型,这引领着图形学领域的创新浪潮。这项前沿技术能够将普通照片转化为高度逼真的3D模型,为我们带来了突破性的创作和设计可能性。在深度学习的推动下,NeROIC以其卓越的易用性和卓越的真实感,为图形学领域开启了新的篇章。

将照片转化为3D模型一直是图形学领域的重大挑战。不同的光线、相机型号以及环境因素会对生成效果产生深远影响,限制了模型的实际应用。然而,NeROIC通过引入新的模型架构和算法,成功地克服了这些挑战,实现了高度准确和逼真的3D模型生成。

神经渲染技术的引入为图形学领域带来了全新的机遇。借助深度神经网络,我们能够自动合成图像,从而节省时间和精力。NeROIC作为神经渲染技术的杰出代表,能够将几张二维照片转化为完整的、逼真的三维模型,无需人工干预。

本文主要描述在腾讯云服务器上部署、安装NeROIC,以及运行NeROIC示例。这项工作为什么重要?是因为在论文发布的近两年之后,AI技术发展迅猛,导致NeROIC在新的环境下无法运行。本文提供了一个在腾讯云CVM云主机之上一定能运行的方案。

购买腾讯云服务器

我是在新加坡地域(国内区域我试了,也是可以的,但对于github要绑定hosts)购买的GN7.2XLARGE32,操作系统是 Ubuntu Server 20.04 LTS 64位,镜像ID是 img-22trbn9x,后台自动安装GPU驱动版本见下图(GPU驱动版本 450.102.04,CUDA版本 10.2.89, cuDNN版本 7.6.5),这一步非常关键,NeROIC的兼容性是很差的。选错了后面就非常折腾,甚至就搞不定。

你要hands on来解决,就需要修改https://github.com/snap-research/NeROIC/blob/master/environment.yaml这个文件中的pytorch=1.7.1=py3.8_cuda10.2.89_cudnn7.6.5_0配合你选的服务器、python版本、GPU驱动、CUDA版本和cuDNN版本。然后就可能有一系列的配置和代码要改,不值当。

购买成功后,等待十几分钟(因为有后台自动安装GPU驱动的过程,相对于CPU的服务器,可以登陆的时间会晚一些),就可以ssh登陆服务器来执行后续步骤了。

安装配置

初始化

本地电脑使用ssh ubuntu@【腾讯云CVM IP地址】,鉴权后登陆。示例如下:

代码语言:txt
复制
sudo apt-get update
sudo apt update

安装Conda

代码语言:txt
复制
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh
sh Anaconda3-2023.03-Linux-x86_64.sh

安装完成后,需要exit登出后再ssh登陆进来。

安装NeROIC

代码语言:txt
复制
git clone https://github.com/snap-research/NeROIC.git

cd NeROIC

conda env create -f environment.yaml
conda activate neroic
sudo apt-get install graphicsmagick-imagemagick-compat

写到这里,其实大家就已经可以按照https://github.com/snap-research/NeROIC/blob/master/README.md中的步骤运行NeROIC了。后面我主要记录一下我的实操过程。

运行example

首先下载README.md中链接的milkbox_dataset数据集,非常关键的一步是将数据集中的图片全部转为png格式的,否则跑不过。

然后将数据集打包上传到上述服务器的/home/ubuntu/NeROIC/data目录(需要使用mkdir data创建)中,并解压成如下图所示:

代码语言:txt
复制
(base) ubuntu@VM-0-11-ubuntu:~/NeROIC/data/milkbox_dataset$ ls
image_names.pkl  images  images_mask  poses_bounds.npy  pts.pkl  test_img_id.txt

运行优化几何网络的训练example

然后,就可以在~/NeROIC目录下运行优化几何网络的example:

代码语言:txt
复制
python train.py --config configs/milkbox_geometry.yaml --datadir ./data/milkbox_dataset

这个脚本缺省会运行30个epochs,而在我选择的服务器上,运行一个epochs就需要4936.6秒,则全部30个epochs跑下来就是一天多时间。如果仅仅希望快速尝试,则可以修改/home/ubuntu/NeROIC/configs/milkbox_geometry.yaml文件中num_epochs=1。

如果还是觉得运行时间很长,可以使用nohup后台运行

代码语言:txt
复制
nohup python train.py --config configs/milkbox_geometry.yaml --datadir ./data/milkbox_dataset &

然后可以在/home/ubuntu/NeROIC/nohup.out中看到进度。例如:

代码语言:txt
复制
tail -f /home/ubuntu/NeROIC/nohup.out

训练完成后,在~/NeROIC/logs目录中获得:

代码语言:txt
复制
(neroic) ubuntu@VM-0-11-ubuntu:~/NeROIC/logs/milkbox_geometry/version_0$ ls
args.txt  config.txt  events.out.tfevents.1697757775.VM-0-11-ubuntu.243830.0  hparams.yaml  milkbox_geometry_000000

多次训练,version_后面跟着的数字会增加。其中milkbox_geometry_000000目录的内容为:

运行从学习的几何中提取法线的example

从学习的几何中提取法线。

代码语言:txt
复制
python generate_normal.py \
--config configs/milkbox_geometry.yaml \
--ft_path logs/milkbox_geometry/epoch=0.ckpt \
--datadir data/milkbox_dataset

这里epoch=0.ckpt而不是epoch=29.ckpt,因为我们之前的num_epochs设置为1,而不是30。

生成完成后,~/NeROIC目录下会多一个results目录。里面有:

代码语言:txt
复制
(neroic) ubuntu@VM-0-11-ubuntu:~/NeROIC/results/cached_rays/milkbox_geometry$ ls
0_normal.png   12_normal.png  15_normal.png  19_normal.png  22_normal.png  26_normal.png  29_normal.png  31_normal.png  35_normal.png  38_normal.png  40_normal.png  5_normal.png  8_normal.png  version_1
10_normal.png  13_normal.png  16_normal.png  20_normal.png  23_normal.png  27_normal.png  2_normal.png   32_normal.png  36_normal.png  39_normal.png  42_normal.png  6_normal.png  rays.pkl
11_normal.png  14_normal.png  18_normal.png  21_normal.png  24_normal.png  28_normal.png  30_normal.png  34_normal.png  37_normal.png  3_normal.png   4_normal.png   7_normal.png  version_0

优化渲染网络

修改配置/home/ubuntu/NeROIC/configs/milkbox_rendering.yaml中的num_epochs为1,示例如下:

代码语言:txt
复制
python train.py \
--config configs/milkbox_rendering.yaml \
--ft_path logs/milkbox_geometry/epoch=0.ckpt \
--datadir data/milkbox_dataset

同理,这里epoch=0.ckpt。

训练完成后,在~/NeROIC/logs目录中会多一个milkbox_rendering目录,内容有:

其中,milkbox_rendering_spiral_000000_rgb_map_coarse.mp4为效果视频。

总结

NeROIC的应用领域广泛而多样。无论是手办收藏者还是游戏从业者,都能从这项技术中获益匪浅。传统的手办建模方式需要耗费大量时间和精力,然而借助NeROIC,只需几张照片,即可快速生成一个完整的3D模型。游戏制作也能从NeROIC技术中受益,通过简单拍摄物体照片,合成逼真的3D模型,为游戏场景带来完美的视觉效果。

NeROIC不仅仅追求准确的模型形状,更注重提升生成模型的真实感。传统模型在新环境中常常显得格格不入,而NeROIC通过引入新的模型架构,成功解决了从图像中创建虚拟物体所带来的照明和真实性问题。这一突破性创新使得NeROIC生成的模型在各种光照条件下都能呈现出逼真的效果,增强了模型的真实感。

NeROIC模型的设计独具匠心。它将物体的渲染与输入图像中的环境照明分开,通过多阶段的处理,实现对模型的精准控制。首先,几何网络通过结合输入图像、分割遮罩和相机参数估计,建立一个辐射场,获取物体的几何形状。其次,NeROIC通过从学习到的密度场中估计表面法线,找到物体对光线的反应,进一步提升真实感。当然,这种方式问题也有,就是慢。生成结果上,就算只有1次epoch,整体下来也有几个小时的时间。比我预想的要慢。

NeROIC是一项引人注目的前沿技术,能够将图像转化为高度逼真的3D模型。它不仅具备卓越的易用性,还能显著提升生成模型的真实感。随着NeROIC的不断发展和创新,我们可以期待更多令人惊叹的应用场景和创作成果的实现。现在就跟随NeROIC的脚步,开启图形学领域的新篇章吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 综述
  • 购买腾讯云服务器
  • 安装配置
    • 初始化
      • 安装Conda
        • 安装NeROIC
        • 运行example
          • 运行优化几何网络的训练example
            • 运行从学习的几何中提取法线的example
              • 优化渲染网络
              • 总结
              相关产品与服务
              云服务器
              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档