diff --git a/4DGaussians.ipynb b/4DGaussians.ipynb
new file mode 100644
index 0000000..a6bbc44
--- /dev/null
+++ b/4DGaussians.ipynb
@@ -0,0 +1,585 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "id": "VjYy0F2gZIPR",
+ "outputId": "129c4176-455a-42b0-e06a-b30ef7792aea",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "outputs": [
+ {
+ "metadata": {
+ "tags": null
+ },
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "/content\n",
+ "fatal: destination path '4DGaussians' already exists and is not an empty directory.\n",
+ "/content/4DGaussians\n",
+ "Submodule 'submodules/depth-diff-gaussian-rasterization' (https://github.com/ingra14m/depth-diff-gaussian-rasterization) registered for path 'submodules/depth-diff-gaussian-rasterization'\n",
+ "Submodule 'submodules/simple-knn' (https://gitlab.inria.fr/bkerbl/simple-knn.git) registered for path 'submodules/simple-knn'\n",
+ "Cloning into '/content/4DGaussians/submodules/depth-diff-gaussian-rasterization'...\n",
+ "Cloning into '/content/4DGaussians/submodules/simple-knn'...\n",
+ "Submodule path 'submodules/depth-diff-gaussian-rasterization': checked out 'f2d8fa9921ea9a6cb9ac1c33a34ebd1b11510657'\n",
+ "Submodule 'third_party/glm' (https://github.com/g-truc/glm.git) registered for path 'submodules/depth-diff-gaussian-rasterization/third_party/glm'\n",
+ "Cloning into '/content/4DGaussians/submodules/depth-diff-gaussian-rasterization/third_party/glm'...\n",
+ "Submodule path 'submodules/depth-diff-gaussian-rasterization/third_party/glm': checked out '5c46b9c07008ae65cb81ab79cd677ecc1934b903'\n",
+ "Submodule path 'submodules/simple-knn': checked out '44f764299fa305faf6ec5ebd99939e0508331503'\n",
+ "/bin/bash: line 1: conda: command not found\n",
+ "/bin/bash: line 1: conda: command not found\n",
+ "Collecting torch==1.13.1 (from -r requirements.txt (line 1))\n",
+ " Downloading torch-1.13.1-cp310-cp310-manylinux1_x86_64.whl (887.5 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m887.5/887.5 MB\u001b[0m \u001b[31m2.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting torchvision==0.14.1 (from -r requirements.txt (line 2))\n",
+ " Downloading torchvision-0.14.1-cp310-cp310-manylinux1_x86_64.whl (24.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.2/24.2 MB\u001b[0m \u001b[31m71.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting torchaudio==0.13.1 (from -r requirements.txt (line 3))\n",
+ " Downloading torchaudio-0.13.1-cp310-cp310-manylinux1_x86_64.whl (4.2 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m105.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting mmcv==1.6.0 (from -r requirements.txt (line 4))\n",
+ " Downloading mmcv-1.6.0.tar.gz (554 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m554.9/554.9 kB\u001b[0m \u001b[31m50.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from -r requirements.txt (line 5)) (3.7.1)\n",
+ "Collecting argparse (from -r requirements.txt (line 6))\n",
+ " Downloading argparse-1.4.0-py2.py3-none-any.whl (23 kB)\n",
+ "Collecting lpips (from -r requirements.txt (line 7))\n",
+ " Downloading lpips-0.1.4-py3-none-any.whl (53 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.8/53.8 kB\u001b[0m \u001b[31m7.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting plyfile (from -r requirements.txt (line 8))\n",
+ " Downloading plyfile-1.0.1-py3-none-any.whl (23 kB)\n",
+ "Requirement already satisfied: imageio-ffmpeg in /usr/local/lib/python3.10/dist-packages (from -r requirements.txt (line 9)) (0.4.9)\n",
+ "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch==1.13.1->-r requirements.txt (line 1)) (4.5.0)\n",
+ "Collecting nvidia-cuda-runtime-cu11==11.7.99 (from torch==1.13.1->-r requirements.txt (line 1))\n",
+ " Downloading nvidia_cuda_runtime_cu11-11.7.99-py3-none-manylinux1_x86_64.whl (849 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m849.3/849.3 kB\u001b[0m \u001b[31m56.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting nvidia-cudnn-cu11==8.5.0.96 (from torch==1.13.1->-r requirements.txt (line 1))\n",
+ " Downloading nvidia_cudnn_cu11-8.5.0.96-2-py3-none-manylinux1_x86_64.whl (557.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m557.1/557.1 MB\u001b[0m \u001b[31m3.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting nvidia-cublas-cu11==11.10.3.66 (from torch==1.13.1->-r requirements.txt (line 1))\n",
+ " Downloading nvidia_cublas_cu11-11.10.3.66-py3-none-manylinux1_x86_64.whl (317.1 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m317.1/317.1 MB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting nvidia-cuda-nvrtc-cu11==11.7.99 (from torch==1.13.1->-r requirements.txt (line 1))\n",
+ " Downloading nvidia_cuda_nvrtc_cu11-11.7.99-2-py3-none-manylinux1_x86_64.whl (21.0 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.0/21.0 MB\u001b[0m \u001b[31m75.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from torchvision==0.14.1->-r requirements.txt (line 2)) (1.23.5)\n",
+ "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from torchvision==0.14.1->-r requirements.txt (line 2)) (2.31.0)\n",
+ "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.10/dist-packages (from torchvision==0.14.1->-r requirements.txt (line 2)) (9.4.0)\n",
+ "Collecting addict (from mmcv==1.6.0->-r requirements.txt (line 4))\n",
+ " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
+ "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from mmcv==1.6.0->-r requirements.txt (line 4)) (23.2)\n",
+ "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from mmcv==1.6.0->-r requirements.txt (line 4)) (6.0.1)\n",
+ "Collecting yapf (from mmcv==1.6.0->-r requirements.txt (line 4))\n",
+ " Downloading yapf-0.40.2-py3-none-any.whl (254 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m254.7/254.7 kB\u001b[0m \u001b[31m30.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hRequirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from nvidia-cublas-cu11==11.10.3.66->torch==1.13.1->-r requirements.txt (line 1)) (67.7.2)\n",
+ "Requirement already satisfied: wheel in /usr/local/lib/python3.10/dist-packages (from nvidia-cublas-cu11==11.10.3.66->torch==1.13.1->-r requirements.txt (line 1)) (0.41.2)\n",
+ "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (1.1.1)\n",
+ "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (0.12.1)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (4.43.1)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (1.4.5)\n",
+ "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (3.1.1)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->-r requirements.txt (line 5)) (2.8.2)\n",
+ "Requirement already satisfied: scipy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from lpips->-r requirements.txt (line 7)) (1.11.3)\n",
+ "Requirement already satisfied: tqdm>=4.28.1 in /usr/local/lib/python3.10/dist-packages (from lpips->-r requirements.txt (line 7)) (4.66.1)\n",
+ "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->-r requirements.txt (line 5)) (1.16.0)\n",
+ "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision==0.14.1->-r requirements.txt (line 2)) (3.3.0)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision==0.14.1->-r requirements.txt (line 2)) (3.4)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision==0.14.1->-r requirements.txt (line 2)) (2.0.6)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision==0.14.1->-r requirements.txt (line 2)) (2023.7.22)\n",
+ "Requirement already satisfied: importlib-metadata>=6.6.0 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv==1.6.0->-r requirements.txt (line 4)) (6.8.0)\n",
+ "Requirement already satisfied: platformdirs>=3.5.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv==1.6.0->-r requirements.txt (line 4)) (3.11.0)\n",
+ "Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv==1.6.0->-r requirements.txt (line 4)) (2.0.1)\n",
+ "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=6.6.0->yapf->mmcv==1.6.0->-r requirements.txt (line 4)) (3.17.0)\n",
+ "Building wheels for collected packages: mmcv\n",
+ " Building wheel for mmcv (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ " Created wheel for mmcv: filename=mmcv-1.6.0-py2.py3-none-any.whl size=847986 sha256=4aa22bff8e71e96eb0c412dea29087e675ea7ff37a484c5be7ca685662aa958c\n",
+ " Stored in directory: /root/.cache/pip/wheels/02/e2/7c/97f72e34ee40d71cdd28b94c9fdfec7bcc453651ad6e65c96d\n",
+ "Successfully built mmcv\n",
+ "Installing collected packages: argparse, addict, plyfile, nvidia-cuda-runtime-cu11, nvidia-cuda-nvrtc-cu11, nvidia-cublas-cu11, yapf, nvidia-cudnn-cu11, torch, mmcv, torchvision, torchaudio, lpips\n",
+ " Attempting uninstall: torch\n",
+ " Found existing installation: torch 2.0.1+cu118\n",
+ " Uninstalling torch-2.0.1+cu118:\n",
+ " Successfully uninstalled torch-2.0.1+cu118\n",
+ " Attempting uninstall: torchvision\n",
+ " Found existing installation: torchvision 0.15.2+cu118\n",
+ " Uninstalling torchvision-0.15.2+cu118:\n",
+ " Successfully uninstalled torchvision-0.15.2+cu118\n",
+ " Attempting uninstall: torchaudio\n",
+ " Found existing installation: torchaudio 2.0.2+cu118\n",
+ " Uninstalling torchaudio-2.0.2+cu118:\n",
+ " Successfully uninstalled torchaudio-2.0.2+cu118\n",
+ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
+ "torchdata 0.6.1 requires torch==2.0.1, but you have torch 1.13.1 which is incompatible.\n",
+ "torchtext 0.15.2 requires torch==2.0.1, but you have torch 1.13.1 which is incompatible.\u001b[0m\u001b[31m\n",
+ "\u001b[0mSuccessfully installed addict-2.4.0 argparse-1.4.0 lpips-0.1.4 mmcv-1.6.0 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 plyfile-1.0.1 torch-1.13.1 torchaudio-0.13.1 torchvision-0.14.1 yapf-0.40.2\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.colab-display-data+json": {
+ "pip_warning": {
+ "packages": [
+ "argparse"
+ ]
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Obtaining file:///content/4DGaussians/submodules/depth-diff-gaussian-rasterization\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Installing collected packages: diff-gaussian-rasterization\n",
+ " Running setup.py develop for diff-gaussian-rasterization\n",
+ "Successfully installed diff-gaussian-rasterization-0.0.0\n",
+ "Obtaining file:///content/4DGaussians/submodules/simple-knn\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Installing collected packages: simple-knn\n",
+ " Running setup.py develop for simple-knn\n",
+ "Successfully installed simple-knn-0.0.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "%cd /content\n",
+ "!git clone https://github.com/hustvl/4DGaussians\n",
+ "%cd 4DGaussians\n",
+ "!git submodule update --init --recursive\n",
+ "\n",
+ "!pip install -r requirements.txt\n",
+ "!pip install -e submodules/depth-diff-gaussian-rasterization\n",
+ "!pip install -e submodules/simple-knn\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "!mkdir /content/test\n",
+ "%cd /content/test\n",
+ "!wget https://huggingface.co/camenduru/4DGaussians/resolve/main/data/data.zip\n",
+ "!unzip data.zip"
+ ],
+ "metadata": {
+ "id": "wpqmK97Koq36"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "IBB-voY0oqpy"
+ }
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "8hk10A8Al7_V",
+ "outputId": "e6df1ec7-fe5c-4b08-bee5-bcf077759c2a",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "/content/4DGaussians\n",
+ "Optimizing \n",
+ "Output folder: ./output/dnerf/bouncingballs [18/10 12:15:58]\n",
+ "2023-10-18 12:15:59.094660: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
+ "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
+ "2023-10-18 12:16:00.723098: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n",
+ "feature_dim: 128 [18/10 12:16:03]\n",
+ "Found transforms_train.json file, assuming Blender data set! [18/10 12:16:03]\n",
+ "Reading Training Transforms [18/10 12:16:03]\n",
+ "Reading Test Transforms [18/10 12:16:16]\n",
+ "Generating Video Transforms [18/10 12:16:18]\n",
+ "Generating random point cloud (2000)... [18/10 12:16:19]\n",
+ "Loading Training Cameras [18/10 12:16:19]\n",
+ "Loading Test Cameras [18/10 12:16:19]\n",
+ "Loading Video Cameras [18/10 12:16:19]\n",
+ "Voxel Plane: set aabb= Parameter containing:\n",
+ "tensor([[ 1.2998, 1.2999, 1.2999],\n",
+ " [-1.2998, -1.2998, -1.2987]], requires_grad=True) [18/10 12:16:20]\n",
+ "Number of points at initialisation : 2000 [18/10 12:16:24]\n",
+ "Training progress: 0% 0/3000 [00:00, ?it/s]Setting up [LPIPS] perceptual loss: trunk [alex], v[0.1], spatial [off] [18/10 12:16:24]\n",
+ "Downloading: \"https://download.pytorch.org/models/alexnet-owt-7be5be79.pth\" to /root/.cache/torch/hub/checkpoints/alexnet-owt-7be5be79.pth\n",
+ "\n",
+ " 0% 0.00/233M [00:00, ?B/s]\u001b[A\n",
+ " 3% 8.09M/233M [00:00<00:02, 84.9MB/s]\u001b[A\n",
+ " 10% 23.0M/233M [00:00<00:01, 127MB/s] \u001b[A\n",
+ " 23% 54.7M/233M [00:00<00:00, 221MB/s]\u001b[A\n",
+ " 36% 83.1M/233M [00:00<00:00, 251MB/s]\u001b[A\n",
+ " 46% 107M/233M [00:00<00:00, 231MB/s] \u001b[A\n",
+ " 57% 132M/233M [00:00<00:00, 242MB/s]\u001b[A\n",
+ " 68% 158M/233M [00:00<00:00, 250MB/s]\u001b[A\n",
+ " 80% 185M/233M [00:00<00:00, 262MB/s]\u001b[A\n",
+ "100% 233M/233M [00:01<00:00, 241MB/s]\n",
+ "Loading model from: /usr/local/lib/python3.10/dist-packages/lpips/weights/v0.1/alex.pth [18/10 12:16:26]\n",
+ "Training progress: 17% 500/3000 [00:22<01:21, 30.50it/s, Loss=0.0293588, psnr=22.72, point=2000]\n",
+ "[ITER 500] Evaluating test: L1 0.03289371422108482 PSNR 21.315539640538834 [18/10 12:16:49]\n",
+ "\n",
+ "[ITER 500] Evaluating train: L1 0.042692432180047035 PSNR 19.828696531407974 [18/10 12:16:50]\n",
+ "reset opacity [18/10 12:16:50]\n",
+ "Training progress: 33% 1000/3000 [00:44<01:22, 24.30it/s, Loss=0.0231845, psnr=21.27, point=3108]\n",
+ "[ITER 1000] Evaluating test: L1 0.02628705880659468 PSNR 21.702505616580737 [18/10 12:17:11]\n",
+ "\n",
+ "[ITER 1000] Evaluating train: L1 0.03691562473335687 PSNR 20.561191895428827 [18/10 12:17:13]\n",
+ "Training progress: 50% 1500/3000 [01:05<01:11, 20.97it/s, Loss=0.0207843, psnr=25.42, point=7718]\n",
+ "[ITER 1500] Evaluating test: L1 0.02419357346918653 PSNR 21.819040074067956 [18/10 12:17:32]\n",
+ "\n",
+ "[ITER 1500] Evaluating train: L1 0.03390577419058365 PSNR 20.735389709472656 [18/10 12:17:33]\n",
+ "Training progress: 67% 2000/3000 [01:25<00:40, 24.63it/s, Loss=0.0269778, psnr=17.78, point=11409]\n",
+ "[ITER 2000] Evaluating test: L1 0.024030927787808812 PSNR 21.883982994977167 [18/10 12:17:52]\n",
+ "\n",
+ "[ITER 2000] Evaluating train: L1 0.033870420254328674 PSNR 20.992827583761777 [18/10 12:17:53]\n",
+ "\n",
+ "[ITER 2000] Saving Gaussians [18/10 12:17:53]\n",
+ "Training progress: 83% 2500/3000 [01:46<00:13, 35.83it/s, Loss=0.0251006, psnr=17.91, point=14595]\n",
+ "[ITER 2500] Evaluating test: L1 0.022819621762370363 PSNR 21.854939965640796 [18/10 12:18:12]\n",
+ "\n",
+ "[ITER 2500] Evaluating train: L1 0.032913146978792024 PSNR 20.98833117765539 [18/10 12:18:13]\n",
+ "Training progress: 100% 3000/3000 [02:06<00:00, 35.66it/s, Loss=0.0184311, psnr=19.64, point=17436]\n",
+ "[ITER 3000] Evaluating test: L1 0.021785845569170573 PSNR 22.046124009525073 [18/10 12:18:32]\n",
+ "\n",
+ "[ITER 3000] Evaluating train: L1 0.032102140597999096 PSNR 20.985104953541477 [18/10 12:18:33]\n",
+ "\n",
+ "[ITER 3000] Saving Gaussians [18/10 12:18:33]\n",
+ "reset opacity [18/10 12:18:33]\n",
+ "Training progress: 100% 3000/3000 [02:09<00:00, 23.22it/s, Loss=0.0184311, psnr=19.64, point=17436]\n",
+ "Training progress: 0% 0/20000 [00:00, ?it/s]Setting up [LPIPS] perceptual loss: trunk [alex], v[0.1], spatial [off] [18/10 12:18:35]\n",
+ "Loading model from: /usr/local/lib/python3.10/dist-packages/lpips/weights/v0.1/alex.pth [18/10 12:18:35]\n",
+ "Training progress: 2% 500/20000 [00:38<25:33, 12.72it/s, Loss=0.0094448, psnr=27.35, point=17895]\n",
+ "[ITER 500] Evaluating test: L1 0.009282524012686574 PSNR 29.097346922930548 [18/10 12:19:15]\n",
+ "\n",
+ "[ITER 500] Evaluating train: L1 0.010759759173892876 PSNR 28.454158446368048 [18/10 12:19:17]\n",
+ "reset opacity [18/10 12:19:17]\n",
+ "Training progress: 5% 1000/20000 [01:17<26:32, 11.93it/s, Loss=0.0079862, psnr=28.01, point=18581]\n",
+ "[ITER 1000] Evaluating test: L1 0.007670877473976682 PSNR 30.087999568266028 [18/10 12:19:54]\n",
+ "\n",
+ "[ITER 1000] Evaluating train: L1 0.00795259847141364 PSNR 30.263615327722885 [18/10 12:19:55]\n",
+ "Training progress: 8% 1500/20000 [01:52<26:57, 11.44it/s, Loss=0.0053360, psnr=36.24, point=19801]\n",
+ "[ITER 1500] Evaluating test: L1 0.007201356813311577 PSNR 30.24399544210995 [18/10 12:20:28]\n",
+ "\n",
+ "[ITER 1500] Evaluating train: L1 0.008079059038530378 PSNR 29.928070965935202 [18/10 12:20:29]\n",
+ "Training progress: 10% 2000/20000 [02:27<27:27, 10.92it/s, Loss=0.0046025, psnr=31.91, point=21122]\n",
+ "[ITER 2000] Evaluating test: L1 0.0053621865261126965 PSNR 32.535747191485235 [18/10 12:21:04]\n",
+ "\n",
+ "[ITER 2000] Evaluating train: L1 0.0061909939326784185 PSNR 31.593194288365982 [18/10 12:21:05]\n",
+ "\n",
+ "[ITER 2000] Saving Gaussians [18/10 12:21:05]\n",
+ "Training progress: 12% 2500/20000 [03:04<21:54, 13.31it/s, Loss=0.0041578, psnr=35.14, point=22289]\n",
+ "[ITER 2500] Evaluating test: L1 0.0048581437919946275 PSNR 32.970312903909125 [18/10 12:21:40]\n",
+ "\n",
+ "[ITER 2500] Evaluating train: L1 0.00490456263479941 PSNR 33.57072886298685 [18/10 12:21:41]\n",
+ "Training progress: 15% 3000/20000 [03:40<19:10, 14.78it/s, Loss=0.0048178, psnr=30.44, point=23309]\n",
+ "[ITER 3000] Evaluating test: L1 0.0045357245047960215 PSNR 33.26883473115809 [18/10 12:22:16]\n",
+ "\n",
+ "[ITER 3000] Evaluating train: L1 0.004470993901657707 PSNR 33.78879479800953 [18/10 12:22:17]\n",
+ "\n",
+ "[ITER 3000] Saving Gaussians [18/10 12:22:17]\n",
+ "reset opacity [18/10 12:22:18]\n",
+ "Training progress: 18% 3500/20000 [04:17<16:31, 16.65it/s, Loss=0.0038691, psnr=37.74, point=24287]\n",
+ "[ITER 3500] Evaluating test: L1 0.004175359123002957 PSNR 34.040599149816174 [18/10 12:22:54]\n",
+ "\n",
+ "[ITER 3500] Evaluating train: L1 0.004593397463288377 PSNR 33.84662392560173 [18/10 12:22:55]\n",
+ "Training progress: 20% 4000/20000 [04:54<15:52, 16.81it/s, Loss=0.0030375, psnr=36.63, point=25380]\n",
+ "[ITER 4000] Evaluating test: L1 0.0038323545801069807 PSNR 34.73158320258646 [18/10 12:23:30]\n",
+ "\n",
+ "[ITER 4000] Evaluating train: L1 0.003796229837462306 PSNR 35.06873366411995 [18/10 12:23:31]\n",
+ "Training progress: 22% 4500/20000 [05:33<16:15, 15.89it/s, Loss=0.0031049, psnr=39.84, point=26291]\n",
+ "[ITER 4500] Evaluating test: L1 0.004020221230080899 PSNR 34.12317376978257 [18/10 12:24:09]\n",
+ "\n",
+ "[ITER 4500] Evaluating train: L1 0.0037510368069086004 PSNR 35.35118103027344 [18/10 12:24:10]\n",
+ "Training progress: 25% 5000/20000 [06:10<15:03, 16.60it/s, Loss=0.0026159, psnr=38.60, point=27157]\n",
+ "[ITER 5000] Evaluating test: L1 0.0034943154383012477 PSNR 35.320645949419806 [18/10 12:24:46]\n",
+ "\n",
+ "[ITER 5000] Evaluating train: L1 0.0029573873479795806 PSNR 37.309416378245636 [18/10 12:24:47]\n",
+ "Training progress: 28% 5500/20000 [06:47<14:24, 16.78it/s, Loss=0.0021671, psnr=37.94, point=28018]\n",
+ "[ITER 5500] Evaluating test: L1 0.0034261168775093906 PSNR 35.630519418155444 [18/10 12:25:23]\n",
+ "\n",
+ "[ITER 5500] Evaluating train: L1 0.0031126464360996206 PSNR 37.271436130299286 [18/10 12:25:24]\n",
+ "Training progress: 30% 6000/20000 [07:24<13:53, 16.80it/s, Loss=0.0023847, psnr=42.02, point=28836]\n",
+ "[ITER 6000] Evaluating test: L1 0.003208557965562624 PSNR 36.11713768454159 [18/10 12:26:01]\n",
+ "\n",
+ "[ITER 6000] Evaluating train: L1 0.0027447668013765533 PSNR 37.97009254904354 [18/10 12:26:02]\n",
+ "reset opacity [18/10 12:26:02]\n",
+ "Training progress: 32% 6500/20000 [08:03<18:30, 12.15it/s, Loss=0.0022719, psnr=39.56, point=29569]\n",
+ "[ITER 6500] Evaluating test: L1 0.0031567666378310498 PSNR 36.61334542667164 [18/10 12:26:40]\n",
+ "\n",
+ "[ITER 6500] Evaluating train: L1 0.0025403551853207104 PSNR 38.88953265021829 [18/10 12:26:41]\n",
+ "Training progress: 35% 7000/20000 [08:42<19:32, 11.09it/s, Loss=0.0022586, psnr=40.55, point=30208]\n",
+ "[ITER 7000] Evaluating test: L1 0.003054004450164297 PSNR 36.86542510986328 [18/10 12:27:18]\n",
+ "\n",
+ "[ITER 7000] Evaluating train: L1 0.0023618749041548546 PSNR 39.677162394804114 [18/10 12:27:19]\n",
+ "\n",
+ "[ITER 7000] Saving Gaussians [18/10 12:27:19]\n",
+ "Training progress: 38% 7500/20000 [09:20<14:14, 14.63it/s, Loss=0.0019817, psnr=42.44, point=30844]\n",
+ "[ITER 7500] Evaluating test: L1 0.002951400381896426 PSNR 37.06199399162741 [18/10 12:27:56]\n",
+ "\n",
+ "[ITER 7500] Evaluating train: L1 0.0022212145576143965 PSNR 39.99447945987477 [18/10 12:27:57]\n",
+ "Training progress: 40% 8000/20000 [09:58<12:51, 15.55it/s, Loss=0.0020356, psnr=44.16, point=31374]\n",
+ "[ITER 8000] Evaluating test: L1 0.002882901469574255 PSNR 37.26977247350356 [18/10 12:28:34]\n",
+ "\n",
+ "[ITER 8000] Evaluating train: L1 0.0021015912198516376 PSNR 40.504227357752185 [18/10 12:28:35]\n",
+ "\n",
+ "[ITER 8000] Saving Gaussians [18/10 12:28:35]\n",
+ "Training progress: 42% 8500/20000 [10:33<10:10, 18.84it/s, Loss=0.0019608, psnr=44.71, point=24470]\n",
+ "[ITER 8500] Evaluating test: L1 0.002908740206347669 PSNR 37.15876814898323 [18/10 12:29:09]\n",
+ "\n",
+ "[ITER 8500] Evaluating train: L1 0.0024008757489569045 PSNR 39.982252681956574 [18/10 12:29:10]\n",
+ "Training progress: 45% 9000/20000 [11:07<10:01, 18.29it/s, Loss=0.0019406, psnr=38.15, point=24968]\n",
+ "[ITER 9000] Evaluating test: L1 0.0027893552734680914 PSNR 37.548010657815375 [18/10 12:29:43]\n",
+ "\n",
+ "[ITER 9000] Evaluating train: L1 0.002034447025781607 PSNR 40.57379038193647 [18/10 12:29:44]\n",
+ "\n",
+ "[ITER 9000] Saving Gaussians [18/10 12:29:44]\n",
+ "reset opacity [18/10 12:29:45]\n",
+ "Training progress: 48% 9500/20000 [11:42<09:43, 17.99it/s, Loss=0.0018367, psnr=45.70, point=25301]\n",
+ "[ITER 9500] Evaluating test: L1 0.002798064488588887 PSNR 37.580643822165094 [18/10 12:30:18]\n",
+ "\n",
+ "[ITER 9500] Evaluating train: L1 0.0018392370068742072 PSNR 42.312099905575025 [18/10 12:30:19]\n",
+ "Training progress: 50% 10000/20000 [12:16<09:44, 17.10it/s, Loss=0.0017030, psnr=43.73, point=25718]\n",
+ "[ITER 10000] Evaluating test: L1 0.002735216458163717 PSNR 37.80438479255228 [18/10 12:30:52]\n",
+ "\n",
+ "[ITER 10000] Evaluating train: L1 0.0018079423016923316 PSNR 42.22233424467199 [18/10 12:30:53]\n",
+ "Training progress: 52% 10500/20000 [12:52<09:35, 16.51it/s, Loss=0.0017275, psnr=46.47, point=26017]\n",
+ "[ITER 10500] Evaluating test: L1 0.0027014906312722493 PSNR 37.80445570104262 [18/10 12:31:28]\n",
+ "\n",
+ "[ITER 10500] Evaluating train: L1 0.0017387345570194371 PSNR 42.328860338996435 [18/10 12:31:29]\n",
+ "Training progress: 55% 11000/20000 [13:27<09:29, 15.80it/s, Loss=0.0014403, psnr=47.44, point=26390]\n",
+ "[ITER 11000] Evaluating test: L1 0.0026626865557559274 PSNR 37.93535456937902 [18/10 12:32:03]\n",
+ "\n",
+ "[ITER 11000] Evaluating train: L1 0.0016114438664825523 PSNR 42.97215742223403 [18/10 12:32:04]\n",
+ "Training progress: 57% 11500/20000 [14:03<08:42, 16.26it/s, Loss=0.0015507, psnr=43.64, point=26688]\n",
+ "[ITER 11500] Evaluating test: L1 0.0026659999960376058 PSNR 38.01013250911937 [18/10 12:32:39]\n",
+ "\n",
+ "[ITER 11500] Evaluating train: L1 0.0015885166837559903 PSNR 43.43097552131204 [18/10 12:32:40]\n",
+ "Training progress: 60% 12000/20000 [14:39<07:43, 17.27it/s, Loss=0.0012203, psnr=43.22, point=27018]\n",
+ "[ITER 12000] Evaluating test: L1 0.002632023794028689 PSNR 38.01683381024529 [18/10 12:33:15]\n",
+ "\n",
+ "[ITER 12000] Evaluating train: L1 0.0015034284031785587 PSNR 43.954322814941406 [18/10 12:33:16]\n",
+ "reset opacity [18/10 12:33:16]\n",
+ "Training progress: 62% 12500/20000 [15:14<07:14, 17.26it/s, Loss=0.0014863, psnr=44.21, point=27187]\n",
+ "[ITER 12500] Evaluating test: L1 0.002675521872280275 PSNR 37.987121133243335 [18/10 12:33:51]\n",
+ "\n",
+ "[ITER 12500] Evaluating train: L1 0.0015443166142658274 PSNR 44.20912664076861 [18/10 12:33:51]\n",
+ "Training progress: 65% 13000/20000 [15:50<06:36, 17.65it/s, Loss=0.0014596, psnr=42.48, point=27346]\n",
+ "[ITER 13000] Evaluating test: L1 0.002643499585032901 PSNR 38.07360391055836 [18/10 12:34:26]\n",
+ "\n",
+ "[ITER 13000] Evaluating train: L1 0.0015044443323003018 PSNR 44.235115948845355 [18/10 12:34:27]\n",
+ "Training progress: 68% 13500/20000 [16:26<07:03, 15.36it/s, Loss=0.0014033, psnr=47.03, point=27546]\n",
+ "[ITER 13500] Evaluating test: L1 0.002636970452252118 PSNR 38.07138218599207 [18/10 12:35:03]\n",
+ "\n",
+ "[ITER 13500] Evaluating train: L1 0.0014004296595778536 PSNR 44.93161078060375 [18/10 12:35:04]\n",
+ "Training progress: 70% 14000/20000 [17:02<07:21, 13.60it/s, Loss=0.0013125, psnr=44.89, point=27756]\n",
+ "[ITER 14000] Evaluating test: L1 0.0026343300568816416 PSNR 38.09962463378906 [18/10 12:35:39]\n",
+ "\n",
+ "[ITER 14000] Evaluating train: L1 0.0013917168766698416 PSNR 45.037186566521136 [18/10 12:35:40]\n",
+ "\n",
+ "[ITER 14000] Saving Gaussians [18/10 12:35:40]\n",
+ "Training progress: 72% 14500/20000 [17:39<07:52, 11.64it/s, Loss=0.0014793, psnr=48.82, point=27969]\n",
+ "[ITER 14500] Evaluating test: L1 0.0026121085153563935 PSNR 38.17773639454561 [18/10 12:36:16]\n",
+ "\n",
+ "[ITER 14500] Evaluating train: L1 0.0013993438401752535 PSNR 45.12252426147461 [18/10 12:36:16]\n",
+ "Training progress: 75% 15000/20000 [18:15<05:38, 14.77it/s, Loss=0.0012198, psnr=44.46, point=28090]\n",
+ "[ITER 15000] Evaluating test: L1 0.0026121584027457762 PSNR 38.16346000222599 [18/10 12:36:51]\n",
+ "\n",
+ "[ITER 15000] Evaluating train: L1 0.0013996757676496224 PSNR 45.407531289493335 [18/10 12:36:52]\n",
+ "Training progress: 78% 15500/20000 [18:50<04:29, 16.68it/s, Loss=0.0012678, psnr=43.22, point=28090]\n",
+ "[ITER 15500] Evaluating test: L1 0.002572473734343315 PSNR 38.25604607077206 [18/10 12:37:26]\n",
+ "\n",
+ "[ITER 15500] Evaluating train: L1 0.0012877711902975159 PSNR 45.99841375911937 [18/10 12:37:27]\n",
+ "Training progress: 80% 16000/20000 [19:25<03:54, 17.06it/s, Loss=0.0013073, psnr=45.90, point=28090]\n",
+ "[ITER 16000] Evaluating test: L1 0.002580023041981108 PSNR 38.257411507999194 [18/10 12:38:01]\n",
+ "\n",
+ "[ITER 16000] Evaluating train: L1 0.001255324449362781 PSNR 46.2190372242647 [18/10 12:38:02]\n",
+ "Training progress: 82% 16500/20000 [20:00<03:18, 17.61it/s, Loss=0.0011351, psnr=43.90, point=28090]\n",
+ "[ITER 16500] Evaluating test: L1 0.0025938723359585684 PSNR 38.22130382762236 [18/10 12:38:36]\n",
+ "\n",
+ "[ITER 16500] Evaluating train: L1 0.0013141077600748224 PSNR 46.081020804012525 [18/10 12:38:37]\n",
+ "Training progress: 85% 17000/20000 [20:35<02:48, 17.81it/s, Loss=0.0012820, psnr=47.89, point=28090]\n",
+ "[ITER 17000] Evaluating test: L1 0.0025558721424792617 PSNR 38.321165421429804 [18/10 12:39:11]\n",
+ "\n",
+ "[ITER 17000] Evaluating train: L1 0.0013066162731881965 PSNR 46.09962799969841 [18/10 12:39:12]\n",
+ "Training progress: 88% 17500/20000 [21:10<02:19, 17.97it/s, Loss=0.0013061, psnr=49.47, point=28090]\n",
+ "[ITER 17500] Evaluating test: L1 0.002584036309545969 PSNR 38.29386655022116 [18/10 12:39:46]\n",
+ "\n",
+ "[ITER 17500] Evaluating train: L1 0.0012900612988125753 PSNR 46.411755954518036 [18/10 12:39:47]\n",
+ "Training progress: 90% 18000/20000 [21:44<01:52, 17.85it/s, Loss=0.0012141, psnr=47.12, point=28090]\n",
+ "[ITER 18000] Evaluating test: L1 0.0025839185931117218 PSNR 38.271065431482654 [18/10 12:40:20]\n",
+ "\n",
+ "[ITER 18000] Evaluating train: L1 0.0012591813095187878 PSNR 46.53801300946404 [18/10 12:40:21]\n",
+ "Training progress: 92% 18500/20000 [22:18<01:23, 17.90it/s, Loss=0.0012329, psnr=43.69, point=28090]\n",
+ "[ITER 18500] Evaluating test: L1 0.0025499572717201185 PSNR 38.25597471349379 [18/10 12:40:54]\n",
+ "\n",
+ "[ITER 18500] Evaluating train: L1 0.001257107250721139 PSNR 46.56728834264418 [18/10 12:40:56]\n",
+ "Training progress: 95% 19000/20000 [22:52<00:58, 17.01it/s, Loss=0.0010787, psnr=44.04, point=28090]\n",
+ "[ITER 19000] Evaluating test: L1 0.002554826876696418 PSNR 38.317366431741156 [18/10 12:41:29]\n",
+ "\n",
+ "[ITER 19000] Evaluating train: L1 0.001252242867314421 PSNR 46.75315206191119 [18/10 12:41:30]\n",
+ "Training progress: 98% 19500/20000 [23:27<00:35, 14.07it/s, Loss=0.0010570, psnr=45.20, point=28090]\n",
+ "[ITER 19500] Evaluating test: L1 0.002561302129727076 PSNR 38.29808044433594 [18/10 12:42:04]\n",
+ "\n",
+ "[ITER 19500] Evaluating train: L1 0.0012227956698659588 PSNR 46.8690497454475 [18/10 12:42:05]\n",
+ "Training progress: 100% 20000/20000 [24:02<00:00, 13.86it/s, Loss=0.0012103, psnr=47.98, point=28090]\n",
+ "\n",
+ "[ITER 20000] Evaluating test: L1 0.002560187322909341 PSNR 38.32729653751149 [18/10 12:42:39]\n",
+ "\n",
+ "[ITER 20000] Evaluating train: L1 0.001223050821435583 PSNR 46.967015210319964 [18/10 12:42:40]\n",
+ "\n",
+ "[ITER 20000] Saving Gaussians [18/10 12:42:40]\n",
+ "\n",
+ "Training complete. [18/10 12:42:42]\n"
+ ]
+ }
+ ],
+ "source": [
+ "%cd /content/4DGaussians\n",
+ "!python train.py -s /content/test/data/bouncingballs --port 6017 --expname \"dnerf/bouncingballs\" --configs arguments/dnerf/bouncingballs.py"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "id": "RTBK98DNl7_W",
+ "outputId": "aabf7f5d-6189-4bd0-f81d-a4dc9d7c2acb",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "/content/4DGaussians\n",
+ "Looking for config file in output/dnerf/bouncingballs/cfg_args\n",
+ "Config file found: output/dnerf/bouncingballs/cfg_args\n",
+ "Rendering output/dnerf/bouncingballs/\n",
+ "feature_dim: 128 [18/10 12:42:48]\n",
+ "Loading trained model at iteration 20000 [18/10 12:42:48]\n",
+ "Found transforms_train.json file, assuming Blender data set! [18/10 12:42:48]\n",
+ "Reading Training Transforms [18/10 12:42:48]\n",
+ "Reading Test Transforms [18/10 12:43:00]\n",
+ "Generating Video Transforms [18/10 12:43:02]\n",
+ "Generating random point cloud (2000)... [18/10 12:43:02]\n",
+ "Loading Training Cameras [18/10 12:43:02]\n",
+ "Loading Test Cameras [18/10 12:43:02]\n",
+ "Loading Video Cameras [18/10 12:43:02]\n",
+ "Voxel Plane: set aabb= Parameter containing:\n",
+ "tensor([[ 1.2998, 1.2999, 1.2999],\n",
+ " [-1.2998, -1.2998, -1.2987]], requires_grad=True) [18/10 12:43:03]\n",
+ "loading model from existsoutput/dnerf/bouncingballs/point_cloud/iteration_20000 [18/10 12:43:05]\n",
+ "Rendering progress: 100% 20/20 [00:01<00:00, 12.51it/s]\n",
+ "FPS: 11.988245192586138 [18/10 12:43:07]\n",
+ "writing training images. [18/10 12:43:07]\n",
+ "100% 20/20 [00:01<00:00, 15.48it/s]\n",
+ "writing rendering images. [18/10 12:43:09]\n",
+ "100% 20/20 [00:01<00:00, 13.67it/s]\n",
+ "Rendering progress: 100% 40/40 [00:00<00:00, 55.85it/s]\n",
+ "FPS: 54.44600711288924 [18/10 12:43:12]\n",
+ "writing training images. [18/10 12:43:12]\n",
+ "writing rendering images. [18/10 12:43:12]\n",
+ "100% 40/40 [00:02<00:00, 13.61it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "%cd /content/4DGaussians\n",
+ "!python render.py --model_path \"output/dnerf/bouncingballs/\" --skip_train --configs arguments/dnerf/bouncingballs.py"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from IPython.display import HTML\n",
+ "from base64 import b64encode\n",
+ "def display_video(video_path):\n",
+ " mp4 = open(video_path,'rb').read()\n",
+ " data_url = \"data:video/mp4;base64,\" + b64encode(mp4).decode()\n",
+ " return HTML(\"\"\"\n",
+ " \n",
+ " \"\"\" % data_url)"
+ ],
+ "metadata": {
+ "id": "oLyN3bAw0KCI"
+ },
+ "execution_count": 3,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "save_dir = '/content/4DGaussians/output/dnerf/bouncingballs/video/ours_20000/video_rgb.mp4'\n",
+ "\n",
+ "import os\n",
+ "import glob\n",
+ "# video_path = glob.glob(os.path.join(save_dir, \"*-test.mp4\"))[0]\n",
+ "display_video(save_dir)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "nCTKtptS0MrA",
+ "outputId": "ad2bdbac-ddeb-4d27-900c-24c96009bc44"
+ },
+ "execution_count": 6,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 6
+ }
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "T4",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index b03acd7..8a392ec 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@

Our method converges very quickly and achieves real-time rendering speed.
-Colab demo:[](https://colab.research.google.com/github/camenduru/4DGaussians-colab/blob/main/4DGaussians_colab.ipynb) (Thanks [camenduru](https://github.com/camenduru/4DGaussians-colab).)
+Colab demo:[](https://colab.research.google.com/github/hustvl/4DGaussians/4DGaussians.ipynb) (Thanks [camenduru](https://github.com/camenduru/4DGaussians-colab).)