{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":129649,"databundleVersionId":15582313}],"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# your enviroment\n%%bash\ngit clone --recursive https://github.com/VITA-Group/LightGaussian.git\npip install /kaggle/working/LightGaussian/submodules/compress-diff-gaussian-rasterization --no-build-isolation\ngit clone --recursive https://github.com/graphdeco-inria/gaussian-splatting.git \npip install /kaggle/working/gaussian-splatting/submodules/simple-knn --no-build-isolation\n\n# pip install ......","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# decode+render\n\nINPUT_ROOT = \"/kaggle/input/datasets/xxxxxxxxxxxxxxxxx\"\nPRED_ROOT = \"/kaggle/working/xxxxxxxxxxxxxxxxx\"\nSELECTED_CAMS = {\"cam01.png\", \"cam09.png\"}\nDEVICE = \"cuda\"\nWHITE_BACKGROUND = False\n\n# Fill your camera.json path for each scene.\n# If a scene is not in this dict, code will try common auto-search paths.\nCAMERA_JSON_BY_SCENE = {\n    \"flame_steak\": \"/kaggle/input/datasets/leexiang0/camjson/flame_steak.json\",\n    \"discussion\": \"/kaggle/input/datasets/leexiang0/camjson/discussion.json\",\n    \"dunhuang\": \"/kaggle/input/datasets/leexiang0/camjson/dunhuang.json\",\n    \"trimming\": \"/kaggle/input/datasets/leexiang0/camjson/trimming.json\",\n    \"VRU_dg4\": \"/kaggle/input/datasets/leexiang0/camjson/VRU_dg4.json\",\n}\n\ndef load_cameras(camera_json_path, device):\n    with open(camera_json_path, \"r\", encoding=\"utf-8\") as f:\n        cams = json.load(f)\n    if not isinstance(cams, list) or len(cams) == 0:\n        raise ValueError(f\"camera.json invalid: {camera_json_path}\")\n\n    views = []\n    for idx, c in enumerate(cams):\n        image_name = c.get(\"img_name\", f\"cam_{idx:05d}.png\")\n        if image_name not in SELECTED_CAMS:\n            continue\n\n        width = int(c[\"width\"])\n        height = int(c[\"height\"])\n        fx = float(c[\"fx\"])\n        fy = float(c[\"fy\"])\n        fov_x = focal2fov(fx, width)\n        fov_y = focal2fov(fy, height)\n\n        center = np.array(c[\"position\"], dtype=np.float64)\n        r_c2w = np.array(c[\"rotation\"], dtype=np.float64)\n        r = r_c2w\n        t = (-r_c2w.T @ center).astype(np.float64)\n\n        uid = int(c.get(\"id\", idx))\n        dummy = torch.zeros((3, height, width), dtype=torch.float32)\n        cam = Camera(\n            colmap_id=uid,\n            R=r,\n            T=t,\n            FoVx=fov_x,\n            FoVy=fov_y,\n            image=dummy,\n            gt_alpha_mask=None,\n            image_name=image_name,\n            uid=idx,\n            data_device=device,\n        )\n        views.append(cam)\n\n    views = sorted(views, key=lambda x: x.image_name)\n    if len(views) == 0:\n        raise RuntimeError(\"No selected cameras found in camera.json\")\n    return views\n# You need to output the following file structure\n# \n# PRED_ROOT/\n# ├── flame_steak/\n# │   └── png/\n# │       ├── frame000000/\n# │       │   ├── cam01.png\n# │       │   ├── cam09.png\n# │       │   └── ...\n# │       ├── frame000001/\n# │       │   ├── cam01.png\n# │       │   └── ...\n# │       └── frame000214/\n# │           ├── cam01.png\n# │           └── ...\n# ├── coffee_martini/\n# │   └── png/\n# │       ├── frame000000/\n# │       │   ├── cam01.png\n# │       │   └── ...\n# │       └── ...\n# └── ...","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# For evaluation, you can use the evaluation section of notebook “IMGsubmission”","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}