pixelNeRF: Neural Radiance Fields from One or Few Images ======================================================== * Authors: Alex Yu, Vickie Ye, Matthew Tancik, Angjoo Kanazawa * Affiliations: UC Berkeley * CVPR, 2021 * Links: `project `_ Summary ------- Existing approaches invole optimizing the representation to every scene independently, requiring many calibrated view and significantly compute time. In this work, the authors proposed pixelNeRF, a learning framework that predicts a continuous neural scene representation conditioned on one or few input images. Experiments on ShapeNet and DTU datasets show that pixelNeRF outperforms current state-of-the-art baselines for novel view synthesis and single image 3D reconstruction. Key Ideas --------- **Standard NeRF.** In a standard NeRF :math:`f`, given a 3D point :math:`\mathbf{x} \in \mathbb{R}^3` and viewing direction :math:`\mathbf{d} \in \mathbb{R}^3`, :math:`f` returns a differential density :math:`\sigma` and RGB color :math:`\mathbf{c}`: :math:`f(\mathbf{x}, \mathbf{c}) = (\sigma, \mathbf{c})`. The volumetric radiance field can then be rendered into a 2D image via: .. math:: \hat{\mathbf{C}} = \int_{t_n}^{t_f} T(t)\sigma(t)\mathbf{c}(t)dt where :math:`T(t) = \exp(-\int_{t_n}^t \sigma(s) ds)` handles occlusion. **Image-conditioned NeRF.** Given a input image :math:`I` of a scene, we extract a feature volume :math:`W = E(I)`. For a point on a camera ray :math:`x`, we retrieve the image feature by projecting :math:`x` onto thte image plane and obtain the feature vector :math:`W(\pi(x))` with bilinear interpolation. Then the image features are passed into the NeRF network as .. math:: f(\gamma(x), d; W(\pi(x))) = (\sigma, c) The image features are incorporated as a residual at each layer. The pipeline is depicted below. .. figure:: figures/pixelnerf-1.png :height: 180px Figure 1: Overview of pixelNeRF. Technical Details ----------------- **Incorporating multiple view.** The model can be extended to allow for an arbitrary number of views at test time. Let the :math:`i` input image be :math:`I^{(i)}` and the associated camera transform from the world space to its view space be :math:`P^{(i)} = [R^{(i)}, t^{(i)}]`. Let the initial layers in the NeRF network be :math:`f_1` and the final layers be :math:`f_2`. We obtain intermediate vectors from the initial layers and then aggregate with average pooling operator :math:`\phi`: .. math:: \begin{align*} V^{(i)} & = f_1 \left( \gamma(x^{(i)}), d^{(i)}; W^{(i)} (\pi(x^{(i)})) \right) \\ (\gamma, c) & = f_2 (\phi(V^{(i)}, \dots, V^{(n)})) \end{align*} **Image encoder.** To capture both local and global information, a feature pyramid is extracted. Then the image features are added as a residual at the beginning of each ResNet block. **Category-agnostic single-view reconstruction.** .. figure:: figures/pixelnerf-2.png :height: 180px Figure 2: Quantitative results on category-agnostic single-view reconstruction. Notes ----- References ---------- [1] A. Yu, V. Ye, M. Tancik, A. Kanazawa. `"pixelNeRF: Neural radiance fields from one or few images." `_. In *CVPR*, 2021.