mirror of
https://github.com/graphdeco-inria/gaussian-splatting
synced 2025-04-02 00:34:58 +00:00
133 lines
3.5 KiB
Docker
133 lines
3.5 KiB
Docker
ARG CUDA_VERSION=11.8.0
|
|
ARG OS_VERSION=22.04
|
|
ARG USER_ID=1000
|
|
|
|
# Define base image.
|
|
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${OS_VERSION}
|
|
ARG CUDA_VERSION
|
|
ARG OS_VERSION
|
|
ARG USER_ID
|
|
|
|
# metainformation
|
|
LABEL org.opencontainers.image.version="0.1.18"
|
|
LABEL org.opencontainers.image.licenses="Apache License 2.0"
|
|
LABEL org.opencontainers.image.base.name="docker.io/library/nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${OS_VERSION}"
|
|
|
|
ARG CUDA_ARCHITECTURES=70
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV TZ=Europe/Berlin
|
|
ENV CUDA_HOME="/usr/local/cuda"
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
cmake \
|
|
curl \
|
|
ffmpeg \
|
|
git \
|
|
libatlas-base-dev \
|
|
libboost-filesystem-dev \
|
|
libboost-graph-dev \
|
|
libboost-program-options-dev \
|
|
libboost-system-dev \
|
|
libboost-test-dev \
|
|
libhdf5-dev \
|
|
libcgal-dev \
|
|
libeigen3-dev \
|
|
libflann-dev \
|
|
libfreeimage-dev \
|
|
libgflags-dev \
|
|
libglew-dev \
|
|
libgoogle-glog-dev \
|
|
libmetis-dev \
|
|
libprotobuf-dev \
|
|
libqt5opengl5-dev \
|
|
libsqlite3-dev \
|
|
libsuitesparse-dev \
|
|
nano \
|
|
protobuf-compiler \
|
|
python-is-python3 \
|
|
python3 \
|
|
python3-dev \
|
|
python3-distutils \
|
|
python3-pip \
|
|
qtbase5-dev \
|
|
sudo \
|
|
vim-tiny \
|
|
wget && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install GLOG (required by ceres).
|
|
RUN git clone --branch v0.6.0 https://github.com/google/glog.git --single-branch && \
|
|
cd glog && \
|
|
mkdir build && \
|
|
cd build && \
|
|
cmake .. && \
|
|
make -j "$(nproc)" && \
|
|
make install && \
|
|
cd ../.. && \
|
|
rm -rf glog
|
|
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
|
|
|
|
# Install Ceres-solver (required by colmap).
|
|
RUN git clone --branch 2.1.0 https://ceres-solver.googlesource.com/ceres-solver.git --single-branch && \
|
|
cd ceres-solver && \
|
|
git checkout "$(git describe --tags)" && \
|
|
mkdir build && \
|
|
cd build && \
|
|
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF && \
|
|
make -j "$(nproc)" && \
|
|
make install && \
|
|
cd ../.. && \
|
|
rm -rf ceres-solver
|
|
|
|
# Install colmap.
|
|
RUN git clone --branch 3.8 https://github.com/colmap/colmap.git --single-branch && \
|
|
cd colmap && \
|
|
mkdir build && \
|
|
cd build && \
|
|
cmake .. -DCUDA_ENABLED=ON \
|
|
-DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES} && \
|
|
make -j "$(nproc)" && \
|
|
make install && \
|
|
cd ../.. && \
|
|
rm -rf colmap
|
|
|
|
# Create non-root user and set up environment.
|
|
RUN useradd -m -d /home/user -g root -G sudo -u ${USER_ID} user
|
|
RUN usermod -aG sudo user
|
|
RUN echo "user:user" | chpasswd
|
|
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
|
|
|
USER ${USER_ID}
|
|
WORKDIR /home/user
|
|
|
|
ENV PATH="${PATH}:/home/user/.local/bin"
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
RUN python3 -m pip install --upgrade pip setuptools pathtools promise pybind11
|
|
|
|
USER root
|
|
RUN CUDA_VER=${CUDA_VERSION%.*} && CUDA_VER=${CUDA_VER//./} && python3 -m pip install \
|
|
torch==2.0.0+cu${CUDA_VER} \
|
|
torchvision==0.15.0+cu${CUDA_VER} \
|
|
--extra-index-url https://download.pytorch.org/whl/cu${CUDA_VER}
|
|
USER ${USER_ID}
|
|
|
|
RUN git clone --branch v0.4.0 --recursive https://github.com/colmap/pycolmap.git && \
|
|
cd pycolmap && \
|
|
python3 -m pip install . && \
|
|
cd ..
|
|
|
|
RUN git clone --branch master --recursive https://github.com/cvg/Hierarchical-Localization.git && \
|
|
cd Hierarchical-Localization && \
|
|
python3 -m pip install -e . && \
|
|
cd ..
|
|
|
|
RUN python3 -m pip install omegaconf
|
|
|
|
USER root
|
|
RUN chsh -s /bin/bash user
|
|
USER ${USER_ID} |