.. _installation-label:
Installation
============
This repository is built upon the `nerfstudio `_
library. This library has a few requirements, with the most important being having access
to a CUDA compatible GPU. Furthermore, for full functionality, it needs `colmap `_,
`ffmpeg `_ and `tinycuda-nn `_.
Those requirements might be a bit tricky to install and the installation is system dependent.
The easiest way to install them is to follow the instructions `here `__
up to the point of actually installing nerfstudio.
For this approach, I extended the nerfstudio library. Therefore please install my fork of
nerfstudio available `here `__. This can be
done via:
.. code-block:: bash
    git clone https://github.com/acse-pms122/nerfstudio_dev.git
    cd nerfstudio_dev
    pip install -e .
Then, clone this repository and install it via:
.. code-block:: bash
    cd ..
    git clone https://github.com/ese-msc-2022/irp-pms122.git
    cd irp-pms122
    pip install -e .
Then, install the command line completion via:
.. code-block:: bash
    ns-install-cli
To check the installation, type:
.. code-block:: bash
    ns-train seathru-nerf --help
If you see the help message, you are good to go! 🚀🚀🚀
Requirements
************
This implementation requires a GPU with a CUDA copatible driver. There are two model configurations as summarised
in the following table:
.. list-table::
   :header-rows: 1
   :widths: 20 40 10 10
   * - Method
     - Description
     - Memory
     - Quality
   * - ``seathru-nerf``
     - Larger model, used to produced results in report
     - ~23 GB
     - Best
   * - ``seathru-nerf-lite``
     - Smaller model
     - ~7 GB
     - Good
I recommend to use the ``seathru-nerf`` method as it was used to experiment and produce the results presented in the paper.
The ``seathru-nerf-lite`` still produces good results, but has not been tested on all scenes. If you happen to run into a
``CUDA_OUT_MEMORY_ERROR`` it is a sign that the available VRAM on the GPU is not enough. You can either use the smaller
model, decrease the batch size, do both or upgrade to a better GPU.