[Rendering] Pytorch3D rendering
3D annotation을 구하기 어렵다. 따라서 2D로 render한 이미지에서 loss를 구하여 2D supervision으로 3D render한 결과를 학습시킨다.
2D에서 3D로 backpropagate하도록 만들어줍니다.
그러면 rendering pipeline을 이해해야합니다.
-
첫번째로, shading 단계는 종종 자연스럽게 미분 가능하게 되는데, 이는 face의 내부에서 vertex data를 보간하기 위해 barycentric interpolation과 같은 방법을 포함하기 때문입니다. 이러한 계산은 미분 가능하며, normal과 position of lights를 포함한 다양한 유형의 lighting 계산도 자연스럽게 미분 가능합니다. 이러한 모든 종류의 계산은 기본적으로 미분 가능하며, back propagating을 통해 문제 없이 처리할 수 있습니다.
-
하지만 rasterization 단계는 boundary effects와 occlusion effects로 인해 미분 가능성에 문제가 발생합니다. Boundary effects는 경계 부분에서의 비연속성을 의미하며, occlusion effects는 객체가 다른 객체에 의해 가려지는 현상을 의미합니다. 이 두 가지 효과는 미분 가능성을 방해하여, 역전파 과정에서 어려움을 초래할 수 있습니다.
- rasterization 단계에서 non-differentiable한 것을 해결하는 방법은 blur를 하는 것입니다.
SoftRasterizer와 비교했을 때, Pytorch3D에서 달라진점
Unsupervised Shape Prediction
Textured Mesh Rendering (Flat shading, Phong shading, Gouraud shading)
Pytorch3D는 differentiable mesh renderer 뿐만 아니라 differentiable point cloud renderer도 제공합니다.
Single Image View Synthesis
Point cloud의 depth를 예측합니다.
Leave a comment