import jrender as jr
# create a mesh object from args.filename_input
mesh = jr.Mesh.from_obj(args.filename_input, load_texture=True, texture_res=5, texture_type='surface', dr_type='softras')
# create a softras using default parameters
renderer = jr.Renderer(dr_type='softras')
# set the position of eyes
renderer.transform.set_eyes_from_angles(2.732, 30, 0)
# render the given mesh to a rgb or silhouette image
rgb = renderer.render_mesh(mesh)
silhouettes = renderer.render_mesh(mesh, mode='silhouettes') # or mode = 'rgb'
@article{hu2020jittor,
title={Jittor: a novel deep learning framework with meta-operators and unified graph execution},
author={Hu, Shi-Min and Liang, Dun and Yang, Guo-Ye and Yang, Guo-Wei and Zhou, Wen-Yang},
journal={Science China Information Sciences},
volume={63},
number={222103},
pages={1--222103},
year={2020}
}
@InProceedings{kato2018renderer
title={Neural 3D Mesh Renderer},
author={Kato, Hiroharu and Ushiku, Yoshitaka and Harada, Tatsuya},
booktitle={The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2018}
}
@article{liu2019softras,
title={Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning},
author={Liu, Shichen and Li, Tianye and Chen, Weikai and Li, Hao},
journal={The IEEE International Conference on Computer Vision (ICCV)},
month = {Oct},
year={2019}
}
Jrender 2.0 (Jittor渲染库)
渲染结果一览
介绍
主要特性:
示例
基础教程
进阶教程
使用
使用JRender前需要安装好Jittor,Jittor安装方法在此处。
此外安装以下包:
接着使用下面的命令即可跑jrender的各种demo。
计图大赛Baseline
Jrender仓库的NeRF实现可直接用作计图大赛可微渲染新视角生成题目的Baseline,安装好jittor和上述其他依赖包后可按照以下命令运行:
本次比赛共包含5个测试场景,其中Easyship属于简单难度,Car、Coffee属于中等难度,Scar、Scarf属于高难度。请大家在Baseline的基础上做出自己的创新性改进。
我们使用单张NVIDIA TITAN RTX显卡,在以下环境测试configs/Easyship.txt时:
训练速度为7.4 iter/s,训练显存为6.3G,测试显存为4.2G。50000次迭代后测试结果为:
https://user-images.githubusercontent.com/20569510/164967694-f7866719-0343-4e60-8ab7-c80e5bc3fe8a.mp4
如果您的训练速度,占用显存或训练效果与我们的数据明显不符,请随时联系我们解决,我们的比赛QQ群号为:1018591346。
速度对比
我们对PyTorch和Jittor渲染一个带有纹理的奶牛以及球形变为飞机做了时间对比测试,测试环境如下。
测试结果:
渲染小模型(642顶点)速度对比(渲染1080次):
渲染大模型(11420顶点)速度对比(渲染1080次):
基础教程
基础教程1:渲染物体
该教程使用JRender渲染一个奶牛。
渲染的带有纹理的结果和轮廓图结果如下,参见详细代码。
基础教程2:优化模型几何
该教程利用可微渲染器将球形变为飞机。
下图是从球模型变成飞机模型的过程,参见详细代码。
基础教程3:渲染Specular材质
我们在Jrender渲染库中实现了Microfacet模型,可以支持Specular材质渲染。用户可以通过我们的API传入金属度贴图和粗糙度贴图来控制Specular材质的样式,获得具有不同光泽特性的渲染结果。
带有粗糙度和金属度贴图的渲染结果如下,参见详细代码。
基础教程4:优化纹理
下图是纹理的优化结果,从左到右分别是优化目标纹理图像和优化结果,参见详细代码。
基础教程5:优化金属度贴图
下图是金属度贴图的优化过程,从左到右分别是起始模型、优化目标图像和优化过程,参见详细代码。
基础教程6:优化粗糙度贴图
下图是粗糙度贴图的优化过程,从左到右分别是起始模型、优化目标图像和优化过程,参见详细代码。
进阶教程
进阶教程1:ShapeNet数据集三维重建
我们使用JRender对ShapeNet数据集进行了三维重建,模型的训练速度是PyTorch的1.22倍。参见详细代码。
进阶教程2:人脸重建
我们在JRender渲染库下复现了CVPR 2020 Best Paper,这篇paper利用可微渲染技术实现了无监督的人脸重建,我们的模型训练速度是PyTorch的1.31倍。参见详细代码。
进阶教程3:NERF
Jrender 2.0版本新推出了Volume Rendering功能,基于该新特性,我们复现了发表于ECCV 2020的NERF,该论文利用神经辐射场表示场景,对合成场景及真实场景都可恢复到真实感渲染级效果。
Jittor版本的NERF训练前需要下载数据集,下载后运行方法如下。
下图是NERF在合成场景下的渲染效果:
下图是NERF在真实场景下的渲染效果:
基于Jittor版本的NERF比Pytoch版本的NERF在速度上有明显优势,我们的训练速度是Pytorch-Nerf(bdb012e)版本的1.92-2.27倍。
Citation
如果您在自己的研究工作中使用了JRender,请引用Jittor的论文。
同时,本渲染器内置了N3MR和SoftRas两个可微渲染器,若您在研究中使用了渲染器,请您引用相应的论文。