main e5a2732d3ea2 cached
49 files
18.4 MB
1.4M tokens
210 symbols
1 requests
Download .txt
Showing preview only (5,629K chars total). Download the full file or copy to clipboard to get everything.
Repository: DepthAnything/Depth-Anything-V2
Branch: main
Commit: e5a2732d3ea2
Files: 49
Total size: 18.4 MB

Directory structure:
gitextract_wwh_ughm/

├── DA-2K.md
├── LICENSE
├── README.md
├── app.py
├── depth_anything_v2/
│   ├── dinov2.py
│   ├── dinov2_layers/
│   │   ├── __init__.py
│   │   ├── attention.py
│   │   ├── block.py
│   │   ├── drop_path.py
│   │   ├── layer_scale.py
│   │   ├── mlp.py
│   │   ├── patch_embed.py
│   │   └── swiglu_ffn.py
│   ├── dpt.py
│   └── util/
│       ├── blocks.py
│       └── transform.py
├── metric_depth/
│   ├── README.md
│   ├── dataset/
│   │   ├── hypersim.py
│   │   ├── kitti.py
│   │   ├── splits/
│   │   │   ├── hypersim/
│   │   │   │   ├── train.txt
│   │   │   │   └── val.txt
│   │   │   ├── kitti/
│   │   │   │   └── val.txt
│   │   │   └── vkitti2/
│   │   │       └── train.txt
│   │   ├── transform.py
│   │   └── vkitti2.py
│   ├── depth_anything_v2/
│   │   ├── dinov2.py
│   │   ├── dinov2_layers/
│   │   │   ├── __init__.py
│   │   │   ├── attention.py
│   │   │   ├── block.py
│   │   │   ├── drop_path.py
│   │   │   ├── layer_scale.py
│   │   │   ├── mlp.py
│   │   │   ├── patch_embed.py
│   │   │   └── swiglu_ffn.py
│   │   ├── dpt.py
│   │   └── util/
│   │       ├── blocks.py
│   │       └── transform.py
│   ├── depth_to_pointcloud.py
│   ├── dist_train.sh
│   ├── requirements.txt
│   ├── run.py
│   ├── train.py
│   └── util/
│       ├── dist_helper.py
│       ├── loss.py
│       ├── metric.py
│       └── utils.py
├── requirements.txt
├── run.py
└── run_video.py

================================================
FILE CONTENTS
================================================

================================================
FILE: DA-2K.md
================================================
# DA-2K Evaluation Benchmark

## Introduction

![DA-2K](assets/DA-2K.png)

DA-2K is proposed in [Depth Anything V2](https://depth-anything-v2.github.io) to evaluate the relative depth estimation capability. It encompasses eight representative scenarios of `indoor`, `outdoor`, `non_real`, `transparent_reflective`, `adverse_style`, `aerial`, `underwater`, and `object`. It consists of 1K diverse high-quality images and 2K precise pair-wise relative depth annotations.

Please refer to our [paper](https://arxiv.org/abs/2406.09414) for details in constructing this benchmark.


## Usage

Please first [download the benchmark](https://huggingface.co/datasets/depth-anything/DA-2K/tree/main).

All annotations are stored in `annotations.json`. The annotation file is a JSON object where each key is the path to an image file, and the value is a list of annotations associated with that image. Each annotation describes two points and identifies which point is closer to the camera. The structure is detailed below:

```
{
  "image_path": [
    {
      "point1": [h1, w1], # (vertical position, horizontal position)
      "point2": [h2, w2], # (vertical position, horizontal position)
      "closer_point": "point1" # we always set "point1" as the closer one
    },
    ...
  ],
  ...
}
```

To visualize the annotations:
```bash
python visualize.py [--scene-type <type>]
```

**Options**
- `--scene-type <type>` (optional): Specify the scene type (`indoor`, `outdoor`, `non_real`, `transparent_reflective`, `adverse_style`, `aerial`, `underwater`, and `object`). Skip this argument or set <type> as `""` to include all scene types.

## Citation

If you find this benchmark useful, please consider citing:

```bibtex
@article{depth_anything_v2,
  title={Depth Anything V2},
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  journal={arXiv:2406.09414},
  year={2024}
}
```

================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
<div align="center">
<h1>Depth Anything V2</h1>

[**Lihe Yang**](https://liheyoung.github.io/)<sup>1</sup> · [**Bingyi Kang**](https://bingykang.github.io/)<sup>2&dagger;</sup> · [**Zilong Huang**](http://speedinghzl.github.io/)<sup>2</sup>
<br>
[**Zhen Zhao**](http://zhaozhen.me/) · [**Xiaogang Xu**](https://xiaogang00.github.io/) · [**Jiashi Feng**](https://sites.google.com/site/jshfeng/)<sup>2</sup> · [**Hengshuang Zhao**](https://hszhao.github.io/)<sup>1*</sup>

<sup>1</sup>HKU&emsp;&emsp;&emsp;<sup>2</sup>TikTok
<br>
&dagger;project lead&emsp;*corresponding author

<a href="https://arxiv.org/abs/2406.09414"><img src='https://img.shields.io/badge/arXiv-Depth Anything V2-red' alt='Paper PDF'></a>
<a href='https://depth-anything-v2.github.io'><img src='https://img.shields.io/badge/Project_Page-Depth Anything V2-green' alt='Project Page'></a>
<a href='https://huggingface.co/spaces/depth-anything/Depth-Anything-V2'><img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Demo-blue'></a>
<a href='https://huggingface.co/datasets/depth-anything/DA-2K'><img src='https://img.shields.io/badge/Benchmark-DA--2K-yellow' alt='Benchmark'></a>
</div>

This work presents Depth Anything V2. It significantly outperforms [V1](https://github.com/LiheYoung/Depth-Anything) in fine-grained details and robustness. Compared with SD-based models, it enjoys faster inference speed, fewer parameters, and higher depth accuracy.

![teaser](assets/teaser.png)


## News
- **2025-01-22:** [Video Depth Anything](https://videodepthanything.github.io) has been released. It generates consistent depth maps for super-long videos (e.g., over 5 minutes).
- **2024-12-22:** [Prompt Depth Anything](https://promptda.github.io/) has been released. It supports 4K resolution metric depth estimation when low-res LiDAR is used to prompt the DA models.
- **2024-07-06:** Depth Anything V2 is supported in [Transformers](https://github.com/huggingface/transformers/). See the [instructions](https://huggingface.co/docs/transformers/main/en/model_doc/depth_anything_v2) for convenient usage.
- **2024-06-25:** Depth Anything is integrated into [Apple Core ML Models](https://developer.apple.com/machine-learning/models/). See the instructions ([V1](https://huggingface.co/apple/coreml-depth-anything-small), [V2](https://huggingface.co/apple/coreml-depth-anything-v2-small)) for usage.
- **2024-06-22:** We release [smaller metric depth models](https://github.com/DepthAnything/Depth-Anything-V2/tree/main/metric_depth#pre-trained-models) based on Depth-Anything-V2-Small and Base.
- **2024-06-20:** Our repository and project page are flagged by GitHub and removed from the public for 6 days. Sorry for the inconvenience.
- **2024-06-14:** Paper, project page, code, models, demo, and benchmark are all released.


## Pre-trained Models

We provide **four models** of varying scales for robust relative depth estimation:

| Model | Params | Checkpoint |
|:-|-:|:-:|
| Depth-Anything-V2-Small | 24.8M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Small/resolve/main/depth_anything_v2_vits.pth?download=true) |
| Depth-Anything-V2-Base | 97.5M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Base/resolve/main/depth_anything_v2_vitb.pth?download=true) |
| Depth-Anything-V2-Large | 335.3M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Large/resolve/main/depth_anything_v2_vitl.pth?download=true) |
| Depth-Anything-V2-Giant | 1.3B | Coming soon |


## Usage

### Prepraration

```bash
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
```

Download the checkpoints listed [here](#pre-trained-models) and put them under the `checkpoints` directory.

### Use our models
```python
import cv2
import torch

from depth_anything_v2.dpt import DepthAnythingV2

DEVICE = 'cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu'

model_configs = {
    'vits': {'encoder': 'vits', 'features': 64, 'out_channels': [48, 96, 192, 384]},
    'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},
    'vitl': {'encoder': 'vitl', 'features': 256, 'out_channels': [256, 512, 1024, 1024]},
    'vitg': {'encoder': 'vitg', 'features': 384, 'out_channels': [1536, 1536, 1536, 1536]}
}

encoder = 'vitl' # or 'vits', 'vitb', 'vitg'

model = DepthAnythingV2(**model_configs[encoder])
model.load_state_dict(torch.load(f'checkpoints/depth_anything_v2_{encoder}.pth', map_location='cpu'))
model = model.to(DEVICE).eval()

raw_img = cv2.imread('your/image/path')
depth = model.infer_image(raw_img) # HxW raw depth map in numpy
```

If you do not want to clone this repository, you can also load our models through [Transformers](https://github.com/huggingface/transformers/). Below is a simple code snippet. Please refer to the [official page](https://huggingface.co/docs/transformers/main/en/model_doc/depth_anything_v2) for more details.

- Note 1: Make sure you can connect to Hugging Face and have installed the latest Transformers.
- Note 2: Due to the [upsampling difference](https://github.com/huggingface/transformers/pull/31522#issuecomment-2184123463) between OpenCV (we used) and Pillow (HF used), predictions may differ slightly. So you are more recommended to use our models through the way introduced above.
```python
from transformers import pipeline
from PIL import Image

pipe = pipeline(task="depth-estimation", model="depth-anything/Depth-Anything-V2-Small-hf")
image = Image.open('your/image/path')
depth = pipe(image)["depth"]
```

### Running script on *images*

```bash
python run.py \
  --encoder <vits | vitb | vitl | vitg> \
  --img-path <path> --outdir <outdir> \
  [--input-size <size>] [--pred-only] [--grayscale]
```
Options:
- `--img-path`: You can either 1) point it to an image directory storing all interested images, 2) point it to a single image, or 3) point it to a text file storing all image paths.
- `--input-size` (optional): By default, we use input size `518` for model inference. ***You can increase the size for even more fine-grained results.***
- `--pred-only` (optional): Only save the predicted depth map, without raw image.
- `--grayscale` (optional): Save the grayscale depth map, without applying color palette.

For example:
```bash
python run.py --encoder vitl --img-path assets/examples --outdir depth_vis
```

### Running script on *videos*

```bash
python run_video.py \
  --encoder <vits | vitb | vitl | vitg> \
  --video-path assets/examples_video --outdir video_depth_vis \
  [--input-size <size>] [--pred-only] [--grayscale]
```

***Our larger model has better temporal consistency on videos.***

### Gradio demo

To use our gradio demo locally:

```bash
python app.py
```

You can also try our [online demo](https://huggingface.co/spaces/Depth-Anything/Depth-Anything-V2).

***Note: Compared to V1, we have made a minor modification to the DINOv2-DPT architecture (originating from this [issue](https://github.com/LiheYoung/Depth-Anything/issues/81)).*** In V1, we *unintentionally* used features from the last four layers of DINOv2 for decoding. In V2, we use [intermediate features](https://github.com/DepthAnything/Depth-Anything-V2/blob/2cbc36a8ce2cec41d38ee51153f112e87c8e42d8/depth_anything_v2/dpt.py#L164-L169) instead. Although this modification did not improve details or accuracy, we decided to follow this common practice.


## Fine-tuned to Metric Depth Estimation

Please refer to [metric depth estimation](./metric_depth).


## DA-2K Evaluation Benchmark

Please refer to [DA-2K benchmark](./DA-2K.md).


## Community Support

**We sincerely appreciate all the community support for our Depth Anything series. Thank you a lot!**

- Apple Core ML:
    - https://developer.apple.com/machine-learning/models
    - https://huggingface.co/apple/coreml-depth-anything-v2-small
    - https://huggingface.co/apple/coreml-depth-anything-small
- Transformers:
    - https://huggingface.co/docs/transformers/main/en/model_doc/depth_anything_v2
    - https://huggingface.co/docs/transformers/main/en/model_doc/depth_anything
- TensorRT:
    - https://github.com/spacewalk01/depth-anything-tensorrt
    - https://github.com/zhujiajian98/Depth-Anythingv2-TensorRT-python
- ONNX: https://github.com/fabio-sim/Depth-Anything-ONNX
- ComfyUI: https://github.com/kijai/ComfyUI-DepthAnythingV2
- Transformers.js (real-time depth in web): https://huggingface.co/spaces/Xenova/webgpu-realtime-depth-estimation
- Android:
  - https://github.com/shubham0204/Depth-Anything-Android
  - https://github.com/FeiGeChuanShu/ncnn-android-depth_anything


## Acknowledgement

We are sincerely grateful to the awesome Hugging Face team ([@Pedro Cuenca](https://huggingface.co/pcuenq), [@Niels Rogge](https://huggingface.co/nielsr), [@Merve Noyan](https://huggingface.co/merve), [@Amy Roberts](https://huggingface.co/amyeroberts), et al.) for their huge efforts in supporting our models in Transformers and Apple Core ML.

We also thank the [DINOv2](https://github.com/facebookresearch/dinov2) team for contributing such impressive models to our community.


## LICENSE

Depth-Anything-V2-Small model is under the Apache-2.0 license. Depth-Anything-V2-Base/Large/Giant models are under the CC-BY-NC-4.0 license.


## Citation

If you find this project useful, please consider citing:

```bibtex
@article{depth_anything_v2,
  title={Depth Anything V2},
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  journal={arXiv:2406.09414},
  year={2024}
}

@inproceedings{depth_anything_v1,
  title={Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data}, 
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  booktitle={CVPR},
  year={2024}
}
```


================================================
FILE: app.py
================================================
import glob
import gradio as gr
import matplotlib
import numpy as np
from PIL import Image
import torch
import tempfile
from gradio_imageslider import ImageSlider

from depth_anything_v2.dpt import DepthAnythingV2

css = """
#img-display-container {
    max-height: 100vh;
}
#img-display-input {
    max-height: 80vh;
}
#img-display-output {
    max-height: 80vh;
}
#download {
    height: 62px;
}
"""
DEVICE = 'cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu'
model_configs = {
    'vits': {'encoder': 'vits', 'features': 64, 'out_channels': [48, 96, 192, 384]},
    'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},
    'vitl': {'encoder': 'vitl', 'features': 256, 'out_channels': [256, 512, 1024, 1024]},
    'vitg': {'encoder': 'vitg', 'features': 384, 'out_channels': [1536, 1536, 1536, 1536]}
}
encoder = 'vitl'
model = DepthAnythingV2(**model_configs[encoder])
state_dict = torch.load(f'checkpoints/depth_anything_v2_{encoder}.pth', map_location="cpu")
model.load_state_dict(state_dict)
model = model.to(DEVICE).eval()

title = "# Depth Anything V2"
description = """Official demo for **Depth Anything V2**.
Please refer to our [paper](https://arxiv.org/abs/2406.09414), [project page](https://depth-anything-v2.github.io), or [github](https://github.com/DepthAnything/Depth-Anything-V2) for more details."""

def predict_depth(image):
    return model.infer_image(image)

with gr.Blocks(css=css) as demo:
    gr.Markdown(title)
    gr.Markdown(description)
    gr.Markdown("### Depth Prediction demo")

    with gr.Row():
        input_image = gr.Image(label="Input Image", type='numpy', elem_id='img-display-input')
        depth_image_slider = ImageSlider(label="Depth Map with Slider View", elem_id='img-display-output', position=0.5)
    submit = gr.Button(value="Compute Depth")
    gray_depth_file = gr.File(label="Grayscale depth map", elem_id="download",)
    raw_file = gr.File(label="16-bit raw output (can be considered as disparity)", elem_id="download",)

    cmap = matplotlib.colormaps.get_cmap('Spectral_r')

    def on_submit(image):
        original_image = image.copy()

        h, w = image.shape[:2]

        depth = predict_depth(image[:, :, ::-1])

        raw_depth = Image.fromarray(depth.astype('uint16'))
        tmp_raw_depth = tempfile.NamedTemporaryFile(suffix='.png', delete=False)
        raw_depth.save(tmp_raw_depth.name)

        depth = (depth - depth.min()) / (depth.max() - depth.min()) * 255.0
        depth = depth.astype(np.uint8)
        colored_depth = (cmap(depth)[:, :, :3] * 255).astype(np.uint8)

        gray_depth = Image.fromarray(depth)
        tmp_gray_depth = tempfile.NamedTemporaryFile(suffix='.png', delete=False)
        gray_depth.save(tmp_gray_depth.name)

        return [(original_image, colored_depth), tmp_gray_depth.name, tmp_raw_depth.name]

    submit.click(on_submit, inputs=[input_image], outputs=[depth_image_slider, gray_depth_file, raw_file])

    example_files = glob.glob('assets/examples/*')
    examples = gr.Examples(examples=example_files, inputs=[input_image], outputs=[depth_image_slider, gray_depth_file, raw_file], fn=on_submit)


if __name__ == '__main__':
    demo.queue().launch()

================================================
FILE: depth_anything_v2/dinov2.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the Apache License, Version 2.0
# found in the LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/main/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py

from functools import partial
import math
import logging
from typing import Sequence, Tuple, Union, Callable

import torch
import torch.nn as nn
import torch.utils.checkpoint
from torch.nn.init import trunc_normal_

from .dinov2_layers import Mlp, PatchEmbed, SwiGLUFFNFused, MemEffAttention, NestedTensorBlock as Block


logger = logging.getLogger("dinov2")


def named_apply(fn: Callable, module: nn.Module, name="", depth_first=True, include_root=False) -> nn.Module:
    if not depth_first and include_root:
        fn(module=module, name=name)
    for child_name, child_module in module.named_children():
        child_name = ".".join((name, child_name)) if name else child_name
        named_apply(fn=fn, module=child_module, name=child_name, depth_first=depth_first, include_root=True)
    if depth_first and include_root:
        fn(module=module, name=name)
    return module


class BlockChunk(nn.ModuleList):
    def forward(self, x):
        for b in self:
            x = b(x)
        return x


class DinoVisionTransformer(nn.Module):
    def __init__(
        self,
        img_size=224,
        patch_size=16,
        in_chans=3,
        embed_dim=768,
        depth=12,
        num_heads=12,
        mlp_ratio=4.0,
        qkv_bias=True,
        ffn_bias=True,
        proj_bias=True,
        drop_path_rate=0.0,
        drop_path_uniform=False,
        init_values=None,  # for layerscale: None or 0 => no layerscale
        embed_layer=PatchEmbed,
        act_layer=nn.GELU,
        block_fn=Block,
        ffn_layer="mlp",
        block_chunks=1,
        num_register_tokens=0,
        interpolate_antialias=False,
        interpolate_offset=0.1,
    ):
        """
        Args:
            img_size (int, tuple): input image size
            patch_size (int, tuple): patch size
            in_chans (int): number of input channels
            embed_dim (int): embedding dimension
            depth (int): depth of transformer
            num_heads (int): number of attention heads
            mlp_ratio (int): ratio of mlp hidden dim to embedding dim
            qkv_bias (bool): enable bias for qkv if True
            proj_bias (bool): enable bias for proj in attn if True
            ffn_bias (bool): enable bias for ffn if True
            drop_path_rate (float): stochastic depth rate
            drop_path_uniform (bool): apply uniform drop rate across blocks
            weight_init (str): weight init scheme
            init_values (float): layer-scale init values
            embed_layer (nn.Module): patch embedding layer
            act_layer (nn.Module): MLP activation layer
            block_fn (nn.Module): transformer block class
            ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
            block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
            num_register_tokens: (int) number of extra cls tokens (so-called "registers")
            interpolate_antialias: (str) flag to apply anti-aliasing when interpolating positional embeddings
            interpolate_offset: (float) work-around offset to apply when interpolating positional embeddings
        """
        super().__init__()
        norm_layer = partial(nn.LayerNorm, eps=1e-6)

        self.num_features = self.embed_dim = embed_dim  # num_features for consistency with other models
        self.num_tokens = 1
        self.n_blocks = depth
        self.num_heads = num_heads
        self.patch_size = patch_size
        self.num_register_tokens = num_register_tokens
        self.interpolate_antialias = interpolate_antialias
        self.interpolate_offset = interpolate_offset

        self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
        num_patches = self.patch_embed.num_patches

        self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
        self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
        assert num_register_tokens >= 0
        self.register_tokens = (
            nn.Parameter(torch.zeros(1, num_register_tokens, embed_dim)) if num_register_tokens else None
        )

        if drop_path_uniform is True:
            dpr = [drop_path_rate] * depth
        else:
            dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)]  # stochastic depth decay rule

        if ffn_layer == "mlp":
            logger.info("using MLP layer as FFN")
            ffn_layer = Mlp
        elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
            logger.info("using SwiGLU layer as FFN")
            ffn_layer = SwiGLUFFNFused
        elif ffn_layer == "identity":
            logger.info("using Identity layer as FFN")

            def f(*args, **kwargs):
                return nn.Identity()

            ffn_layer = f
        else:
            raise NotImplementedError

        blocks_list = [
            block_fn(
                dim=embed_dim,
                num_heads=num_heads,
                mlp_ratio=mlp_ratio,
                qkv_bias=qkv_bias,
                proj_bias=proj_bias,
                ffn_bias=ffn_bias,
                drop_path=dpr[i],
                norm_layer=norm_layer,
                act_layer=act_layer,
                ffn_layer=ffn_layer,
                init_values=init_values,
            )
            for i in range(depth)
        ]
        if block_chunks > 0:
            self.chunked_blocks = True
            chunked_blocks = []
            chunksize = depth // block_chunks
            for i in range(0, depth, chunksize):
                # this is to keep the block index consistent if we chunk the block list
                chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
            self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
        else:
            self.chunked_blocks = False
            self.blocks = nn.ModuleList(blocks_list)

        self.norm = norm_layer(embed_dim)
        self.head = nn.Identity()

        self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))

        self.init_weights()

    def init_weights(self):
        trunc_normal_(self.pos_embed, std=0.02)
        nn.init.normal_(self.cls_token, std=1e-6)
        if self.register_tokens is not None:
            nn.init.normal_(self.register_tokens, std=1e-6)
        named_apply(init_weights_vit_timm, self)

    def interpolate_pos_encoding(self, x, w, h):
        previous_dtype = x.dtype
        npatch = x.shape[1] - 1
        N = self.pos_embed.shape[1] - 1
        if npatch == N and w == h:
            return self.pos_embed
        pos_embed = self.pos_embed.float()
        class_pos_embed = pos_embed[:, 0]
        patch_pos_embed = pos_embed[:, 1:]
        dim = x.shape[-1]
        w0 = w // self.patch_size
        h0 = h // self.patch_size
        # we add a small number to avoid floating point error in the interpolation
        # see discussion at https://github.com/facebookresearch/dino/issues/8
        # DINOv2 with register modify the interpolate_offset from 0.1 to 0.0
        w0, h0 = w0 + self.interpolate_offset, h0 + self.interpolate_offset
        # w0, h0 = w0 + 0.1, h0 + 0.1
        
        sqrt_N = math.sqrt(N)
        sx, sy = float(w0) / sqrt_N, float(h0) / sqrt_N
        patch_pos_embed = nn.functional.interpolate(
            patch_pos_embed.reshape(1, int(sqrt_N), int(sqrt_N), dim).permute(0, 3, 1, 2),
            scale_factor=(sx, sy),
            # (int(w0), int(h0)), # to solve the upsampling shape issue
            mode="bicubic",
            antialias=self.interpolate_antialias
        )
        
        assert int(w0) == patch_pos_embed.shape[-2]
        assert int(h0) == patch_pos_embed.shape[-1]
        patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
        return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)

    def prepare_tokens_with_masks(self, x, masks=None):
        B, nc, w, h = x.shape
        x = self.patch_embed(x)
        if masks is not None:
            x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)

        x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
        x = x + self.interpolate_pos_encoding(x, w, h)

        if self.register_tokens is not None:
            x = torch.cat(
                (
                    x[:, :1],
                    self.register_tokens.expand(x.shape[0], -1, -1),
                    x[:, 1:],
                ),
                dim=1,
            )

        return x

    def forward_features_list(self, x_list, masks_list):
        x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
        for blk in self.blocks:
            x = blk(x)

        all_x = x
        output = []
        for x, masks in zip(all_x, masks_list):
            x_norm = self.norm(x)
            output.append(
                {
                    "x_norm_clstoken": x_norm[:, 0],
                    "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
                    "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
                    "x_prenorm": x,
                    "masks": masks,
                }
            )
        return output

    def forward_features(self, x, masks=None):
        if isinstance(x, list):
            return self.forward_features_list(x, masks)

        x = self.prepare_tokens_with_masks(x, masks)

        for blk in self.blocks:
            x = blk(x)

        x_norm = self.norm(x)
        return {
            "x_norm_clstoken": x_norm[:, 0],
            "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
            "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
            "x_prenorm": x,
            "masks": masks,
        }

    def _get_intermediate_layers_not_chunked(self, x, n=1):
        x = self.prepare_tokens_with_masks(x)
        # If n is an int, take the n last blocks. If it's a list, take them
        output, total_block_len = [], len(self.blocks)
        blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
        for i, blk in enumerate(self.blocks):
            x = blk(x)
            if i in blocks_to_take:
                output.append(x)
        assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
        return output

    def _get_intermediate_layers_chunked(self, x, n=1):
        x = self.prepare_tokens_with_masks(x)
        output, i, total_block_len = [], 0, len(self.blocks[-1])
        # If n is an int, take the n last blocks. If it's a list, take them
        blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
        for block_chunk in self.blocks:
            for blk in block_chunk[i:]:  # Passing the nn.Identity()
                x = blk(x)
                if i in blocks_to_take:
                    output.append(x)
                i += 1
        assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
        return output

    def get_intermediate_layers(
        self,
        x: torch.Tensor,
        n: Union[int, Sequence] = 1,  # Layers or n last layers to take
        reshape: bool = False,
        return_class_token: bool = False,
        norm=True
    ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
        if self.chunked_blocks:
            outputs = self._get_intermediate_layers_chunked(x, n)
        else:
            outputs = self._get_intermediate_layers_not_chunked(x, n)
        if norm:
            outputs = [self.norm(out) for out in outputs]
        class_tokens = [out[:, 0] for out in outputs]
        outputs = [out[:, 1 + self.num_register_tokens:] for out in outputs]
        if reshape:
            B, _, w, h = x.shape
            outputs = [
                out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
                for out in outputs
            ]
        if return_class_token:
            return tuple(zip(outputs, class_tokens))
        return tuple(outputs)

    def forward(self, *args, is_training=False, **kwargs):
        ret = self.forward_features(*args, **kwargs)
        if is_training:
            return ret
        else:
            return self.head(ret["x_norm_clstoken"])


def init_weights_vit_timm(module: nn.Module, name: str = ""):
    """ViT weight initialization, original timm impl (for reproducibility)"""
    if isinstance(module, nn.Linear):
        trunc_normal_(module.weight, std=0.02)
        if module.bias is not None:
            nn.init.zeros_(module.bias)


def vit_small(patch_size=16, num_register_tokens=0, **kwargs):
    model = DinoVisionTransformer(
        patch_size=patch_size,
        embed_dim=384,
        depth=12,
        num_heads=6,
        mlp_ratio=4,
        block_fn=partial(Block, attn_class=MemEffAttention),
        num_register_tokens=num_register_tokens,
        **kwargs,
    )
    return model


def vit_base(patch_size=16, num_register_tokens=0, **kwargs):
    model = DinoVisionTransformer(
        patch_size=patch_size,
        embed_dim=768,
        depth=12,
        num_heads=12,
        mlp_ratio=4,
        block_fn=partial(Block, attn_class=MemEffAttention),
        num_register_tokens=num_register_tokens,
        **kwargs,
    )
    return model


def vit_large(patch_size=16, num_register_tokens=0, **kwargs):
    model = DinoVisionTransformer(
        patch_size=patch_size,
        embed_dim=1024,
        depth=24,
        num_heads=16,
        mlp_ratio=4,
        block_fn=partial(Block, attn_class=MemEffAttention),
        num_register_tokens=num_register_tokens,
        **kwargs,
    )
    return model


def vit_giant2(patch_size=16, num_register_tokens=0, **kwargs):
    """
    Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
    """
    model = DinoVisionTransformer(
        patch_size=patch_size,
        embed_dim=1536,
        depth=40,
        num_heads=24,
        mlp_ratio=4,
        block_fn=partial(Block, attn_class=MemEffAttention),
        num_register_tokens=num_register_tokens,
        **kwargs,
    )
    return model


def DINOv2(model_name):
    model_zoo = {
        "vits": vit_small, 
        "vitb": vit_base, 
        "vitl": vit_large, 
        "vitg": vit_giant2
    }
    
    return model_zoo[model_name](
        img_size=518,
        patch_size=14,
        init_values=1.0,
        ffn_layer="mlp" if model_name != "vitg" else "swiglufused",
        block_chunks=0,
        num_register_tokens=0,
        interpolate_antialias=False,
        interpolate_offset=0.1
    )


================================================
FILE: depth_anything_v2/dinov2_layers/__init__.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

from .mlp import Mlp
from .patch_embed import PatchEmbed
from .swiglu_ffn import SwiGLUFFN, SwiGLUFFNFused
from .block import NestedTensorBlock
from .attention import MemEffAttention


================================================
FILE: depth_anything_v2/dinov2_layers/attention.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/master/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py

import logging

from torch import Tensor
from torch import nn


logger = logging.getLogger("dinov2")


try:
    from xformers.ops import memory_efficient_attention, unbind, fmha

    XFORMERS_AVAILABLE = True
except ImportError:
    logger.warning("xFormers not available")
    XFORMERS_AVAILABLE = False


class Attention(nn.Module):
    def __init__(
        self,
        dim: int,
        num_heads: int = 8,
        qkv_bias: bool = False,
        proj_bias: bool = True,
        attn_drop: float = 0.0,
        proj_drop: float = 0.0,
    ) -> None:
        super().__init__()
        self.num_heads = num_heads
        head_dim = dim // num_heads
        self.scale = head_dim**-0.5

        self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
        self.attn_drop = nn.Dropout(attn_drop)
        self.proj = nn.Linear(dim, dim, bias=proj_bias)
        self.proj_drop = nn.Dropout(proj_drop)

    def forward(self, x: Tensor) -> Tensor:
        B, N, C = x.shape
        qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)

        q, k, v = qkv[0] * self.scale, qkv[1], qkv[2]
        attn = q @ k.transpose(-2, -1)

        attn = attn.softmax(dim=-1)
        attn = self.attn_drop(attn)

        x = (attn @ v).transpose(1, 2).reshape(B, N, C)
        x = self.proj(x)
        x = self.proj_drop(x)
        return x


class MemEffAttention(Attention):
    def forward(self, x: Tensor, attn_bias=None) -> Tensor:
        if not XFORMERS_AVAILABLE:
            assert attn_bias is None, "xFormers is required for nested tensors usage"
            return super().forward(x)

        B, N, C = x.shape
        qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads)

        q, k, v = unbind(qkv, 2)

        x = memory_efficient_attention(q, k, v, attn_bias=attn_bias)
        x = x.reshape([B, N, C])

        x = self.proj(x)
        x = self.proj_drop(x)
        return x

        

================================================
FILE: depth_anything_v2/dinov2_layers/block.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/master/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/layers/patch_embed.py

import logging
from typing import Callable, List, Any, Tuple, Dict

import torch
from torch import nn, Tensor

from .attention import Attention, MemEffAttention
from .drop_path import DropPath
from .layer_scale import LayerScale
from .mlp import Mlp


logger = logging.getLogger("dinov2")


try:
    from xformers.ops import fmha
    from xformers.ops import scaled_index_add, index_select_cat

    XFORMERS_AVAILABLE = True
except ImportError:
    logger.warning("xFormers not available")
    XFORMERS_AVAILABLE = False


class Block(nn.Module):
    def __init__(
        self,
        dim: int,
        num_heads: int,
        mlp_ratio: float = 4.0,
        qkv_bias: bool = False,
        proj_bias: bool = True,
        ffn_bias: bool = True,
        drop: float = 0.0,
        attn_drop: float = 0.0,
        init_values=None,
        drop_path: float = 0.0,
        act_layer: Callable[..., nn.Module] = nn.GELU,
        norm_layer: Callable[..., nn.Module] = nn.LayerNorm,
        attn_class: Callable[..., nn.Module] = Attention,
        ffn_layer: Callable[..., nn.Module] = Mlp,
    ) -> None:
        super().__init__()
        # print(f"biases: qkv: {qkv_bias}, proj: {proj_bias}, ffn: {ffn_bias}")
        self.norm1 = norm_layer(dim)
        self.attn = attn_class(
            dim,
            num_heads=num_heads,
            qkv_bias=qkv_bias,
            proj_bias=proj_bias,
            attn_drop=attn_drop,
            proj_drop=drop,
        )
        self.ls1 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
        self.drop_path1 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()

        self.norm2 = norm_layer(dim)
        mlp_hidden_dim = int(dim * mlp_ratio)
        self.mlp = ffn_layer(
            in_features=dim,
            hidden_features=mlp_hidden_dim,
            act_layer=act_layer,
            drop=drop,
            bias=ffn_bias,
        )
        self.ls2 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
        self.drop_path2 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()

        self.sample_drop_ratio = drop_path

    def forward(self, x: Tensor) -> Tensor:
        def attn_residual_func(x: Tensor) -> Tensor:
            return self.ls1(self.attn(self.norm1(x)))

        def ffn_residual_func(x: Tensor) -> Tensor:
            return self.ls2(self.mlp(self.norm2(x)))

        if self.training and self.sample_drop_ratio > 0.1:
            # the overhead is compensated only for a drop path rate larger than 0.1
            x = drop_add_residual_stochastic_depth(
                x,
                residual_func=attn_residual_func,
                sample_drop_ratio=self.sample_drop_ratio,
            )
            x = drop_add_residual_stochastic_depth(
                x,
                residual_func=ffn_residual_func,
                sample_drop_ratio=self.sample_drop_ratio,
            )
        elif self.training and self.sample_drop_ratio > 0.0:
            x = x + self.drop_path1(attn_residual_func(x))
            x = x + self.drop_path1(ffn_residual_func(x))  # FIXME: drop_path2
        else:
            x = x + attn_residual_func(x)
            x = x + ffn_residual_func(x)
        return x


def drop_add_residual_stochastic_depth(
    x: Tensor,
    residual_func: Callable[[Tensor], Tensor],
    sample_drop_ratio: float = 0.0,
) -> Tensor:
    # 1) extract subset using permutation
    b, n, d = x.shape
    sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
    brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
    x_subset = x[brange]

    # 2) apply residual_func to get residual
    residual = residual_func(x_subset)

    x_flat = x.flatten(1)
    residual = residual.flatten(1)

    residual_scale_factor = b / sample_subset_size

    # 3) add the residual
    x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
    return x_plus_residual.view_as(x)


def get_branges_scales(x, sample_drop_ratio=0.0):
    b, n, d = x.shape
    sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
    brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
    residual_scale_factor = b / sample_subset_size
    return brange, residual_scale_factor


def add_residual(x, brange, residual, residual_scale_factor, scaling_vector=None):
    if scaling_vector is None:
        x_flat = x.flatten(1)
        residual = residual.flatten(1)
        x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
    else:
        x_plus_residual = scaled_index_add(
            x, brange, residual.to(dtype=x.dtype), scaling=scaling_vector, alpha=residual_scale_factor
        )
    return x_plus_residual


attn_bias_cache: Dict[Tuple, Any] = {}


def get_attn_bias_and_cat(x_list, branges=None):
    """
    this will perform the index select, cat the tensors, and provide the attn_bias from cache
    """
    batch_sizes = [b.shape[0] for b in branges] if branges is not None else [x.shape[0] for x in x_list]
    all_shapes = tuple((b, x.shape[1]) for b, x in zip(batch_sizes, x_list))
    if all_shapes not in attn_bias_cache.keys():
        seqlens = []
        for b, x in zip(batch_sizes, x_list):
            for _ in range(b):
                seqlens.append(x.shape[1])
        attn_bias = fmha.BlockDiagonalMask.from_seqlens(seqlens)
        attn_bias._batch_sizes = batch_sizes
        attn_bias_cache[all_shapes] = attn_bias

    if branges is not None:
        cat_tensors = index_select_cat([x.flatten(1) for x in x_list], branges).view(1, -1, x_list[0].shape[-1])
    else:
        tensors_bs1 = tuple(x.reshape([1, -1, *x.shape[2:]]) for x in x_list)
        cat_tensors = torch.cat(tensors_bs1, dim=1)

    return attn_bias_cache[all_shapes], cat_tensors


def drop_add_residual_stochastic_depth_list(
    x_list: List[Tensor],
    residual_func: Callable[[Tensor, Any], Tensor],
    sample_drop_ratio: float = 0.0,
    scaling_vector=None,
) -> Tensor:
    # 1) generate random set of indices for dropping samples in the batch
    branges_scales = [get_branges_scales(x, sample_drop_ratio=sample_drop_ratio) for x in x_list]
    branges = [s[0] for s in branges_scales]
    residual_scale_factors = [s[1] for s in branges_scales]

    # 2) get attention bias and index+concat the tensors
    attn_bias, x_cat = get_attn_bias_and_cat(x_list, branges)

    # 3) apply residual_func to get residual, and split the result
    residual_list = attn_bias.split(residual_func(x_cat, attn_bias=attn_bias))  # type: ignore

    outputs = []
    for x, brange, residual, residual_scale_factor in zip(x_list, branges, residual_list, residual_scale_factors):
        outputs.append(add_residual(x, brange, residual, residual_scale_factor, scaling_vector).view_as(x))
    return outputs


class NestedTensorBlock(Block):
    def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
        """
        x_list contains a list of tensors to nest together and run
        """
        assert isinstance(self.attn, MemEffAttention)

        if self.training and self.sample_drop_ratio > 0.0:

            def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
                return self.attn(self.norm1(x), attn_bias=attn_bias)

            def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
                return self.mlp(self.norm2(x))

            x_list = drop_add_residual_stochastic_depth_list(
                x_list,
                residual_func=attn_residual_func,
                sample_drop_ratio=self.sample_drop_ratio,
                scaling_vector=self.ls1.gamma if isinstance(self.ls1, LayerScale) else None,
            )
            x_list = drop_add_residual_stochastic_depth_list(
                x_list,
                residual_func=ffn_residual_func,
                sample_drop_ratio=self.sample_drop_ratio,
                scaling_vector=self.ls2.gamma if isinstance(self.ls1, LayerScale) else None,
            )
            return x_list
        else:

            def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
                return self.ls1(self.attn(self.norm1(x), attn_bias=attn_bias))

            def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
                return self.ls2(self.mlp(self.norm2(x)))

            attn_bias, x = get_attn_bias_and_cat(x_list)
            x = x + attn_residual_func(x, attn_bias=attn_bias)
            x = x + ffn_residual_func(x)
            return attn_bias.split(x)

    def forward(self, x_or_x_list):
        if isinstance(x_or_x_list, Tensor):
            return super().forward(x_or_x_list)
        elif isinstance(x_or_x_list, list):
            assert XFORMERS_AVAILABLE, "Please install xFormers for nested tensors usage"
            return self.forward_nested(x_or_x_list)
        else:
            raise AssertionError


================================================
FILE: depth_anything_v2/dinov2_layers/drop_path.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/master/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/layers/drop.py


from torch import nn


def drop_path(x, drop_prob: float = 0.0, training: bool = False):
    if drop_prob == 0.0 or not training:
        return x
    keep_prob = 1 - drop_prob
    shape = (x.shape[0],) + (1,) * (x.ndim - 1)  # work with diff dim tensors, not just 2D ConvNets
    random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
    if keep_prob > 0.0:
        random_tensor.div_(keep_prob)
    output = x * random_tensor
    return output


class DropPath(nn.Module):
    """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""

    def __init__(self, drop_prob=None):
        super(DropPath, self).__init__()
        self.drop_prob = drop_prob

    def forward(self, x):
        return drop_path(x, self.drop_prob, self.training)


================================================
FILE: depth_anything_v2/dinov2_layers/layer_scale.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# Modified from: https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/vision_transformer.py#L103-L110

from typing import Union

import torch
from torch import Tensor
from torch import nn


class LayerScale(nn.Module):
    def __init__(
        self,
        dim: int,
        init_values: Union[float, Tensor] = 1e-5,
        inplace: bool = False,
    ) -> None:
        super().__init__()
        self.inplace = inplace
        self.gamma = nn.Parameter(init_values * torch.ones(dim))

    def forward(self, x: Tensor) -> Tensor:
        return x.mul_(self.gamma) if self.inplace else x * self.gamma


================================================
FILE: depth_anything_v2/dinov2_layers/mlp.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/master/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/layers/mlp.py


from typing import Callable, Optional

from torch import Tensor, nn


class Mlp(nn.Module):
    def __init__(
        self,
        in_features: int,
        hidden_features: Optional[int] = None,
        out_features: Optional[int] = None,
        act_layer: Callable[..., nn.Module] = nn.GELU,
        drop: float = 0.0,
        bias: bool = True,
    ) -> None:
        super().__init__()
        out_features = out_features or in_features
        hidden_features = hidden_features or in_features
        self.fc1 = nn.Linear(in_features, hidden_features, bias=bias)
        self.act = act_layer()
        self.fc2 = nn.Linear(hidden_features, out_features, bias=bias)
        self.drop = nn.Dropout(drop)

    def forward(self, x: Tensor) -> Tensor:
        x = self.fc1(x)
        x = self.act(x)
        x = self.drop(x)
        x = self.fc2(x)
        x = self.drop(x)
        return x


================================================
FILE: depth_anything_v2/dinov2_layers/patch_embed.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

# References:
#   https://github.com/facebookresearch/dino/blob/master/vision_transformer.py
#   https://github.com/rwightman/pytorch-image-models/tree/master/timm/layers/patch_embed.py

from typing import Callable, Optional, Tuple, Union

from torch import Tensor
import torch.nn as nn


def make_2tuple(x):
    if isinstance(x, tuple):
        assert len(x) == 2
        return x

    assert isinstance(x, int)
    return (x, x)


class PatchEmbed(nn.Module):
    """
    2D image to patch embedding: (B,C,H,W) -> (B,N,D)

    Args:
        img_size: Image size.
        patch_size: Patch token size.
        in_chans: Number of input image channels.
        embed_dim: Number of linear projection output channels.
        norm_layer: Normalization layer.
    """

    def __init__(
        self,
        img_size: Union[int, Tuple[int, int]] = 224,
        patch_size: Union[int, Tuple[int, int]] = 16,
        in_chans: int = 3,
        embed_dim: int = 768,
        norm_layer: Optional[Callable] = None,
        flatten_embedding: bool = True,
    ) -> None:
        super().__init__()

        image_HW = make_2tuple(img_size)
        patch_HW = make_2tuple(patch_size)
        patch_grid_size = (
            image_HW[0] // patch_HW[0],
            image_HW[1] // patch_HW[1],
        )

        self.img_size = image_HW
        self.patch_size = patch_HW
        self.patches_resolution = patch_grid_size
        self.num_patches = patch_grid_size[0] * patch_grid_size[1]

        self.in_chans = in_chans
        self.embed_dim = embed_dim

        self.flatten_embedding = flatten_embedding

        self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_HW, stride=patch_HW)
        self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()

    def forward(self, x: Tensor) -> Tensor:
        _, _, H, W = x.shape
        patch_H, patch_W = self.patch_size

        assert H % patch_H == 0, f"Input image height {H} is not a multiple of patch height {patch_H}"
        assert W % patch_W == 0, f"Input image width {W} is not a multiple of patch width: {patch_W}"

        x = self.proj(x)  # B C H W
        H, W = x.size(2), x.size(3)
        x = x.flatten(2).transpose(1, 2)  # B HW C
        x = self.norm(x)
        if not self.flatten_embedding:
            x = x.reshape(-1, H, W, self.embed_dim)  # B H W C
        return x

    def flops(self) -> float:
        Ho, Wo = self.patches_resolution
        flops = Ho * Wo * self.embed_dim * self.in_chans * (self.patch_size[0] * self.patch_size[1])
        if self.norm is not None:
            flops += Ho * Wo * self.embed_dim
        return flops


================================================
FILE: depth_anything_v2/dinov2_layers/swiglu_ffn.py
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

from typing import Callable, Optional

from torch import Tensor, nn
import torch.nn.functional as F


class SwiGLUFFN(nn.Module):
    def __init__(
        self,
        in_features: int,
        hidden_features: Optional[int] = None,
        out_features: Optional[int] = None,
        act_layer: Callable[..., nn.Module] = None,
        drop: float = 0.0,
        bias: bool = True,
    ) -> None:
        super().__init__()
        out_features = out_features or in_features
        hidden_features = hidden_features or in_features
        self.w12 = nn.Linear(in_features, 2 * hidden_features, bias=bias)
        self.w3 = nn.Linear(hidden_features, out_features, bias=bias)

    def forward(self, x: Tensor) -> Tensor:
        x12 = self.w12(x)
        x1, x2 = x12.chunk(2, dim=-1)
        hidden = F.silu(x1) * x2
        return self.w3(hidden)


try:
    from xformers.ops import SwiGLU

    XFORMERS_AVAILABLE = True
except ImportError:
    SwiGLU = SwiGLUFFN
    XFORMERS_AVAILABLE = False


class SwiGLUFFNFused(SwiGLU):
    def __init__(
        self,
        in_features: int,
        hidden_features: Optional[int] = None,
        out_features: Optional[int] = None,
        act_layer: Callable[..., nn.Module] = None,
        drop: float = 0.0,
        bias: bool = True,
    ) -> None:
        out_features = out_features or in_features
        hidden_features = hidden_features or in_features
        hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
        super().__init__(
            in_features=in_features,
            hidden_features=hidden_features,
            out_features=out_features,
            bias=bias,
        )


================================================
FILE: depth_anything_v2/dpt.py
================================================
import cv2
import torch
import torch.nn as nn
import torch.nn.functional as F
from torchvision.transforms import Compose

from .dinov2 import DINOv2
from .util.blocks import FeatureFusionBlock, _make_scratch
from .util.transform import Resize, NormalizeImage, PrepareForNet


def _make_fusion_block(features, use_bn, size=None):
    return FeatureFusionBlock(
        features,
        nn.ReLU(False),
        deconv=False,
        bn=use_bn,
        expand=False,
        align_corners=True,
        size=size,
    )


class ConvBlock(nn.Module):
    def __init__(self, in_feature, out_feature):
        super().__init__()
        
        self.conv_block = nn.Sequential(
            nn.Conv2d(in_feature, out_feature, kernel_size=3, stride=1, padding=1),
            nn.BatchNorm2d(out_feature),
            nn.ReLU(True)
        )
    
    def forward(self, x):
        return self.conv_block(x)


class DPTHead(nn.Module):
    def __init__(
        self, 
        in_channels, 
        features=256, 
        use_bn=False, 
        out_channels=[256, 512, 1024, 1024], 
        use_clstoken=False
    ):
        super(DPTHead, self).__init__()
        
        self.use_clstoken = use_clstoken
        
        self.projects = nn.ModuleList([
            nn.Conv2d(
                in_channels=in_channels,
                out_channels=out_channel,
                kernel_size=1,
                stride=1,
                padding=0,
            ) for out_channel in out_channels
        ])
        
        self.resize_layers = nn.ModuleList([
            nn.ConvTranspose2d(
                in_channels=out_channels[0],
                out_channels=out_channels[0],
                kernel_size=4,
                stride=4,
                padding=0),
            nn.ConvTranspose2d(
                in_channels=out_channels[1],
                out_channels=out_channels[1],
                kernel_size=2,
                stride=2,
                padding=0),
            nn.Identity(),
            nn.Conv2d(
                in_channels=out_channels[3],
                out_channels=out_channels[3],
                kernel_size=3,
                stride=2,
                padding=1)
        ])
        
        if use_clstoken:
            self.readout_projects = nn.ModuleList()
            for _ in range(len(self.projects)):
                self.readout_projects.append(
                    nn.Sequential(
                        nn.Linear(2 * in_channels, in_channels),
                        nn.GELU()))
        
        self.scratch = _make_scratch(
            out_channels,
            features,
            groups=1,
            expand=False,
        )
        
        self.scratch.stem_transpose = None
        
        self.scratch.refinenet1 = _make_fusion_block(features, use_bn)
        self.scratch.refinenet2 = _make_fusion_block(features, use_bn)
        self.scratch.refinenet3 = _make_fusion_block(features, use_bn)
        self.scratch.refinenet4 = _make_fusion_block(features, use_bn)
        
        head_features_1 = features
        head_features_2 = 32
        
        self.scratch.output_conv1 = nn.Conv2d(head_features_1, head_features_1 // 2, kernel_size=3, stride=1, padding=1)
        self.scratch.output_conv2 = nn.Sequential(
            nn.Conv2d(head_features_1 // 2, head_features_2, kernel_size=3, stride=1, padding=1),
            nn.ReLU(True),
            nn.Conv2d(head_features_2, 1, kernel_size=1, stride=1, padding=0),
            nn.ReLU(True),
            nn.Identity(),
        )
    
    def forward(self, out_features, patch_h, patch_w):
        out = []
        for i, x in enumerate(out_features):
            if self.use_clstoken:
                x, cls_token = x[0], x[1]
                readout = cls_token.unsqueeze(1).expand_as(x)
                x = self.readout_projects[i](torch.cat((x, readout), -1))
            else:
                x = x[0]
            
            x = x.permute(0, 2, 1).reshape((x.shape[0], x.shape[-1], patch_h, patch_w))
            
            x = self.projects[i](x)
            x = self.resize_layers[i](x)
            
            out.append(x)
        
        layer_1, layer_2, layer_3, layer_4 = out
        
        layer_1_rn = self.scratch.layer1_rn(layer_1)
        layer_2_rn = self.scratch.layer2_rn(layer_2)
        layer_3_rn = self.scratch.layer3_rn(layer_3)
        layer_4_rn = self.scratch.layer4_rn(layer_4)
        
        path_4 = self.scratch.refinenet4(layer_4_rn, size=layer_3_rn.shape[2:])        
        path_3 = self.scratch.refinenet3(path_4, layer_3_rn, size=layer_2_rn.shape[2:])
        path_2 = self.scratch.refinenet2(path_3, layer_2_rn, size=layer_1_rn.shape[2:])
        path_1 = self.scratch.refinenet1(path_2, layer_1_rn)
        
        out = self.scratch.output_conv1(path_1)
        out = F.interpolate(out, (int(patch_h * 14), int(patch_w * 14)), mode="bilinear", align_corners=True)
        out = self.scratch.output_conv2(out)
        
        return out


class DepthAnythingV2(nn.Module):
    def __init__(
        self, 
        encoder='vitl', 
        features=256, 
        out_channels=[256, 512, 1024, 1024], 
        use_bn=False, 
        use_clstoken=False
    ):
        super(DepthAnythingV2, self).__init__()
        
        self.intermediate_layer_idx = {
            'vits': [2, 5, 8, 11],
            'vitb': [2, 5, 8, 11], 
            'vitl': [4, 11, 17, 23], 
            'vitg': [9, 19, 29, 39]
        }
        
        self.encoder = encoder
        self.pretrained = DINOv2(model_name=encoder)
        
        self.depth_head = DPTHead(self.pretrained.embed_dim, features, use_bn, out_channels=out_channels, use_clstoken=use_clstoken)
    
    def forward(self, x):
        patch_h, patch_w = x.shape[-2] // 14, x.shape[-1] // 14
        
        features = self.pretrained.get_intermediate_layers(x, self.intermediate_layer_idx[self.encoder], return_class_token=True)
        
        depth = self.depth_head(features, patch_h, patch_w)
        depth = F.relu(depth)
        
        return depth.squeeze(1)
    
    @torch.no_grad()
    def infer_image(self, raw_image, input_size=518):
        image, (h, w) = self.image2tensor(raw_image, input_size)
        
        depth = self.forward(image)
        
        depth = F.interpolate(depth[:, None], (h, w), mode="bilinear", align_corners=True)[0, 0]
        
        return depth.cpu().numpy()
    
    def image2tensor(self, raw_image, input_size=518):        
        transform = Compose([
            Resize(
                width=input_size,
                height=input_size,
                resize_target=False,
                keep_aspect_ratio=True,
                ensure_multiple_of=14,
                resize_method='lower_bound',
                image_interpolation_method=cv2.INTER_CUBIC,
            ),
            NormalizeImage(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
            PrepareForNet(),
        ])
        
        h, w = raw_image.shape[:2]
        
        image = cv2.cvtColor(raw_image, cv2.COLOR_BGR2RGB) / 255.0
        
        image = transform({'image': image})['image']
        image = torch.from_numpy(image).unsqueeze(0)
        
        DEVICE = 'cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu'
        image = image.to(DEVICE)
        
        return image, (h, w)


================================================
FILE: depth_anything_v2/util/blocks.py
================================================
import torch.nn as nn


def _make_scratch(in_shape, out_shape, groups=1, expand=False):
    scratch = nn.Module()

    out_shape1 = out_shape
    out_shape2 = out_shape
    out_shape3 = out_shape
    if len(in_shape) >= 4:
        out_shape4 = out_shape

    if expand:
        out_shape1 = out_shape
        out_shape2 = out_shape * 2
        out_shape3 = out_shape * 4
        if len(in_shape) >= 4:
            out_shape4 = out_shape * 8

    scratch.layer1_rn = nn.Conv2d(in_shape[0], out_shape1, kernel_size=3, stride=1, padding=1, bias=False, groups=groups)
    scratch.layer2_rn = nn.Conv2d(in_shape[1], out_shape2, kernel_size=3, stride=1, padding=1, bias=False, groups=groups)
    scratch.layer3_rn = nn.Conv2d(in_shape[2], out_shape3, kernel_size=3, stride=1, padding=1, bias=False, groups=groups)
    if len(in_shape) >= 4:
        scratch.layer4_rn = nn.Conv2d(in_shape[3], out_shape4, kernel_size=3, stride=1, padding=1, bias=False, groups=groups)

    return scratch


class ResidualConvUnit(nn.Module):
    """Residual convolution module.
    """

    def __init__(self, features, activation, bn):
        """Init.

        Args:
            features (int): number of features
        """
        super().__init__()

        self.bn = bn

        self.groups=1

        self.conv1 = nn.Conv2d(features, features, kernel_size=3, stride=1, padding=1, bias=True, groups=self.groups)
        
        self.conv2 = nn.Conv2d(features, features, kernel_size=3, stride=1, padding=1, bias=True, groups=self.groups)

        if self.bn == True:
            self.bn1 = nn.BatchNorm2d(features)
            self.bn2 = nn.BatchNorm2d(features)

        self.activation = activation

        self.skip_add = nn.quantized.FloatFunctional()

    def forward(self, x):
        """Forward pass.

        Args:
            x (tensor): input

        Returns:
            tensor: output
        """
        
        out = self.activation(x)
        out = self.conv1(out)
        if self.bn == True:
            out = self.bn1(out)
       
        out = self.activation(out)
        out = self.conv2(out)
        if self.bn == True:
            out = self.bn2(out)

        if self.groups > 1:
            out = self.conv_merge(out)

        return self.skip_add.add(out, x)


class FeatureFusionBlock(nn.Module):
    """Feature fusion block.
    """

    def __init__(
        self, 
        features, 
        activation, 
        deconv=False, 
        bn=False, 
        expand=False, 
        align_corners=True,
        size=None
    ):
        """Init.
        
        Args:
            features (int): number of features
        """
        super(FeatureFusionBlock, self).__init__()

        self.deconv = deconv
        self.align_corners = align_corners

        self.groups=1

        self.expand = expand
        out_features = features
        if self.expand == True:
            out_features = features // 2
        
        self.out_conv = nn.Conv2d(features, out_features, kernel_size=1, stride=1, padding=0, bias=True, groups=1)

        self.resConfUnit1 = ResidualConvUnit(features, activation, bn)
        self.resConfUnit2 = ResidualConvUnit(features, activation, bn)
        
        self.skip_add = nn.quantized.FloatFunctional()

        self.size=size

    def forward(self, *xs, size=None):
        """Forward pass.

        Returns:
            tensor: output
        """
        output = xs[0]

        if len(xs) == 2:
            res = self.resConfUnit1(xs[1])
            output = self.skip_add.add(output, res)

        output = self.resConfUnit2(output)

        if (size is None) and (self.size is None):
            modifier = {"scale_factor": 2}
        elif size is None:
            modifier = {"size": self.size}
        else:
            modifier = {"size": size}

        output = nn.functional.interpolate(output, **modifier, mode="bilinear", align_corners=self.align_corners)
        
        output = self.out_conv(output)

        return output


================================================
FILE: depth_anything_v2/util/transform.py
================================================
import numpy as np
import cv2


class Resize(object):
    """Resize sample to given size (width, height).
    """

    def __init__(
        self,
        width,
        height,
        resize_target=True,
        keep_aspect_ratio=False,
        ensure_multiple_of=1,
        resize_method="lower_bound",
        image_interpolation_method=cv2.INTER_AREA,
    ):
        """Init.

        Args:
            width (int): desired output width
            height (int): desired output height
            resize_target (bool, optional):
                True: Resize the full sample (image, mask, target).
                False: Resize image only.
                Defaults to True.
            keep_aspect_ratio (bool, optional):
                True: Keep the aspect ratio of the input sample.
                Output sample might not have the given width and height, and
                resize behaviour depends on the parameter 'resize_method'.
                Defaults to False.
            ensure_multiple_of (int, optional):
                Output width and height is constrained to be multiple of this parameter.
                Defaults to 1.
            resize_method (str, optional):
                "lower_bound": Output will be at least as large as the given size.
                "upper_bound": Output will be at max as large as the given size. (Output size might be smaller than given size.)
                "minimal": Scale as least as possible.  (Output size might be smaller than given size.)
                Defaults to "lower_bound".
        """
        self.__width = width
        self.__height = height

        self.__resize_target = resize_target
        self.__keep_aspect_ratio = keep_aspect_ratio
        self.__multiple_of = ensure_multiple_of
        self.__resize_method = resize_method
        self.__image_interpolation_method = image_interpolation_method

    def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
        y = (np.round(x / self.__multiple_of) * self.__multiple_of).astype(int)

        if max_val is not None and y > max_val:
            y = (np.floor(x / self.__multiple_of) * self.__multiple_of).astype(int)

        if y < min_val:
            y = (np.ceil(x / self.__multiple_of) * self.__multiple_of).astype(int)

        return y

    def get_size(self, width, height):
        # determine new height and width
        scale_height = self.__height / height
        scale_width = self.__width / width

        if self.__keep_aspect_ratio:
            if self.__resize_method == "lower_bound":
                # scale such that output size is lower bound
                if scale_width > scale_height:
                    # fit width
                    scale_height = scale_width
                else:
                    # fit height
                    scale_width = scale_height
            elif self.__resize_method == "upper_bound":
                # scale such that output size is upper bound
                if scale_width < scale_height:
                    # fit width
                    scale_height = scale_width
                else:
                    # fit height
                    scale_width = scale_height
            elif self.__resize_method == "minimal":
                # scale as least as possbile
                if abs(1 - scale_width) < abs(1 - scale_height):
                    # fit width
                    scale_height = scale_width
                else:
                    # fit height
                    scale_width = scale_height
            else:
                raise ValueError(f"resize_method {self.__resize_method} not implemented")

        if self.__resize_method == "lower_bound":
            new_height = self.constrain_to_multiple_of(scale_height * height, min_val=self.__height)
            new_width = self.constrain_to_multiple_of(scale_width * width, min_val=self.__width)
        elif self.__resize_method == "upper_bound":
            new_height = self.constrain_to_multiple_of(scale_height * height, max_val=self.__height)
            new_width = self.constrain_to_multiple_of(scale_width * width, max_val=self.__width)
        elif self.__resize_method == "minimal":
            new_height = self.constrain_to_multiple_of(scale_height * height)
            new_width = self.constrain_to_multiple_of(scale_width * width)
        else:
            raise ValueError(f"resize_method {self.__resize_method} not implemented")

        return (new_width, new_height)

    def __call__(self, sample):
        width, height = self.get_size(sample["image"].shape[1], sample["image"].shape[0])
        
        # resize sample
        sample["image"] = cv2.resize(sample["image"], (width, height), interpolation=self.__image_interpolation_method)

        if self.__resize_target:
            if "depth" in sample:
                sample["depth"] = cv2.resize(sample["depth"], (width, height), interpolation=cv2.INTER_NEAREST)
                
            if "mask" in sample:
                sample["mask"] = cv2.resize(sample["mask"].astype(np.float32), (width, height), interpolation=cv2.INTER_NEAREST)
        
        return sample


class NormalizeImage(object):
    """Normlize image by given mean and std.
    """

    def __init__(self, mean, std):
        self.__mean = mean
        self.__std = std

    def __call__(self, sample):
        sample["image"] = (sample["image"] - self.__mean) / self.__std

        return sample


class PrepareForNet(object):
    """Prepare sample for usage as network input.
    """

    def __init__(self):
        pass

    def __call__(self, sample):
        image = np.transpose(sample["image"], (2, 0, 1))
        sample["image"] = np.ascontiguousarray(image).astype(np.float32)

        if "depth" in sample:
            depth = sample["depth"].astype(np.float32)
            sample["depth"] = np.ascontiguousarray(depth)
        
        if "mask" in sample:
            sample["mask"] = sample["mask"].astype(np.float32)
            sample["mask"] = np.ascontiguousarray(sample["mask"])
        
        return sample

================================================
FILE: metric_depth/README.md
================================================
# Depth Anything V2 for Metric Depth Estimation

![teaser](./assets/compare_zoedepth.png)

We here provide a simple codebase to fine-tune our Depth Anything V2 pre-trained encoder for metric depth estimation. Built on our powerful encoder, we use a simple DPT head to regress the depth. We fine-tune our pre-trained encoder on synthetic Hypersim / Virtual KITTI datasets for indoor / outdoor metric depth estimation, respectively.


# Pre-trained Models

We provide **six metric depth models** of three scales for indoor and outdoor scenes, respectively.

| Base Model | Params | Indoor (Hypersim) | Outdoor (Virtual KITTI 2) |
|:-|-:|:-:|:-:|
| Depth-Anything-V2-Small | 24.8M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-Hypersim-Small/resolve/main/depth_anything_v2_metric_hypersim_vits.pth?download=true) | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-VKITTI-Small/resolve/main/depth_anything_v2_metric_vkitti_vits.pth?download=true) |
| Depth-Anything-V2-Base | 97.5M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-Hypersim-Base/resolve/main/depth_anything_v2_metric_hypersim_vitb.pth?download=true) | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-VKITTI-Base/resolve/main/depth_anything_v2_metric_vkitti_vitb.pth?download=true) |
| Depth-Anything-V2-Large | 335.3M | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-Hypersim-Large/resolve/main/depth_anything_v2_metric_hypersim_vitl.pth?download=true) | [Download](https://huggingface.co/depth-anything/Depth-Anything-V2-Metric-VKITTI-Large/resolve/main/depth_anything_v2_metric_vkitti_vitl.pth?download=true) |

*We recommend to first try our larger models (if computational cost is affordable) and the indoor version.*

## Usage

### Prepraration

```bash
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2/metric_depth
pip install -r requirements.txt
```

Download the checkpoints listed [here](#pre-trained-models) and put them under the `checkpoints` directory.

### Use our models
```python
import cv2
import torch

from depth_anything_v2.dpt import DepthAnythingV2

model_configs = {
    'vits': {'encoder': 'vits', 'features': 64, 'out_channels': [48, 96, 192, 384]},
    'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},
    'vitl': {'encoder': 'vitl', 'features': 256, 'out_channels': [256, 512, 1024, 1024]}
}

encoder = 'vitl' # or 'vits', 'vitb'
dataset = 'hypersim' # 'hypersim' for indoor model, 'vkitti' for outdoor model
max_depth = 20 # 20 for indoor model, 80 for outdoor model

model = DepthAnythingV2(**{**model_configs[encoder], 'max_depth': max_depth})
model.load_state_dict(torch.load(f'checkpoints/depth_anything_v2_metric_{dataset}_{encoder}.pth', map_location='cpu'))
model.eval()

raw_img = cv2.imread('your/image/path')
depth = model.infer_image(raw_img) # HxW depth map in meters in numpy
```

### Running script on images

Here, we take the `vitl` encoder as an example. You can also use `vitb` or `vits` encoders.

```bash
# indoor scenes
python run.py \
  --encoder vitl \
  --load-from checkpoints/depth_anything_v2_metric_hypersim_vitl.pth \
  --max-depth 20 \
  --img-path <path> --outdir <outdir> [--input-size <size>] [--save-numpy]

# outdoor scenes
python run.py \
  --encoder vitl \
  --load-from checkpoints/depth_anything_v2_metric_vkitti_vitl.pth \
  --max-depth 80 \
  --img-path <path> --outdir <outdir> [--input-size <size>] [--save-numpy]
```

### Project 2D images to point clouds:

```bash
python depth_to_pointcloud.py \
  --encoder vitl \
  --load-from checkpoints/depth_anything_v2_metric_hypersim_vitl.pth \
  --max-depth 20 \
  --img-path <path> --outdir <outdir>
```

### Reproduce training

Please first prepare the [Hypersim](https://github.com/apple/ml-hypersim) and [Virtual KITTI 2](https://europe.naverlabs.com/research/computer-vision/proxy-virtual-worlds-vkitti-2/) datasets. Then:

```bash
bash dist_train.sh
```


## Citation

If you find this project useful, please consider citing:

```bibtex
@article{depth_anything_v2,
  title={Depth Anything V2},
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  journal={arXiv:2406.09414},
  year={2024}
}

@inproceedings{depth_anything_v1,
  title={Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data}, 
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  booktitle={CVPR},
  year={2024}
}
```


================================================
FILE: metric_depth/dataset/hypersim.py
================================================
import cv2
import h5py
import numpy as np
import torch
from torch.utils.data import Dataset
from torchvision.transforms import Compose

from dataset.transform import Resize, NormalizeImage, PrepareForNet, Crop


def hypersim_distance_to_depth(npyDistance):
    intWidth, intHeight, fltFocal = 1024, 768, 886.81

    npyImageplaneX = np.linspace((-0.5 * intWidth) + 0.5, (0.5 * intWidth) - 0.5, intWidth).reshape(
        1, intWidth).repeat(intHeight, 0).astype(np.float32)[:, :, None]
    npyImageplaneY = np.linspace((-0.5 * intHeight) + 0.5, (0.5 * intHeight) - 0.5,
                                 intHeight).reshape(intHeight, 1).repeat(intWidth, 1).astype(np.float32)[:, :, None]
    npyImageplaneZ = np.full([intHeight, intWidth, 1], fltFocal, np.float32)
    npyImageplane = np.concatenate(
        [npyImageplaneX, npyImageplaneY, npyImageplaneZ], 2)

    npyDepth = npyDistance / np.linalg.norm(npyImageplane, 2, 2) * fltFocal
    return npyDepth


class Hypersim(Dataset):
    def __init__(self, filelist_path, mode, size=(518, 518)):
        
        self.mode = mode
        self.size = size
        
        with open(filelist_path, 'r') as f:
            self.filelist = f.read().splitlines()
        
        net_w, net_h = size
        self.transform = Compose([
            Resize(
                width=net_w,
                height=net_h,
                resize_target=True if mode == 'train' else False,
                keep_aspect_ratio=True,
                ensure_multiple_of=14,
                resize_method='lower_bound',
                image_interpolation_method=cv2.INTER_CUBIC,
            ),
            NormalizeImage(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
            PrepareForNet(),
        ] + ([Crop(size[0])] if self.mode == 'train' else []))
        
    def __getitem__(self, item):
        img_path = self.filelist[item].split(' ')[0]
        depth_path = self.filelist[item].split(' ')[1]
        
        image = cv2.imread(img_path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) / 255.0
        
        depth_fd = h5py.File(depth_path, "r")
        distance_meters = np.array(depth_fd['dataset'])
        depth = hypersim_distance_to_depth(distance_meters)
        
        sample = self.transform({'image': image, 'depth': depth})

        sample['image'] = torch.from_numpy(sample['image'])
        sample['depth'] = torch.from_numpy(sample['depth'])
        
        sample['valid_mask'] = (torch.isnan(sample['depth']) == 0)
        sample['depth'][sample['valid_mask'] == 0] = 0
        
        sample['image_path'] = self.filelist[item].split(' ')[0]
        
        return sample

    def __len__(self):
        return len(self.filelist)

================================================
FILE: metric_depth/dataset/kitti.py
================================================
import cv2
import torch
from torch.utils.data import Dataset
from torchvision.transforms import Compose

from dataset.transform import Resize, NormalizeImage, PrepareForNet


class KITTI(Dataset):
    def __init__(self, filelist_path, mode, size=(518, 518)):
        if mode != 'val':
            raise NotImplementedError
        
        self.mode = mode
        self.size = size
        
        with open(filelist_path, 'r') as f:
            self.filelist = f.read().splitlines()
        
        net_w, net_h = size
        self.transform = Compose([
            Resize(
                width=net_w,
                height=net_h,
                resize_target=True if mode == 'train' else False,
                keep_aspect_ratio=True,
                ensure_multiple_of=14,
                resize_method='lower_bound',
                image_interpolation_method=cv2.INTER_CUBIC,
            ),
            NormalizeImage(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
            PrepareForNet(),
        ])
    
    def __getitem__(self, item):
        img_path = self.filelist[item].split(' ')[0]
        depth_path = self.filelist[item].split(' ')[1]
        
        image = cv2.imread(img_path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) / 255.0
        
        depth = cv2.imread(depth_path, cv2.IMREAD_UNCHANGED).astype('float32')
        
        sample = self.transform({'image': image, 'depth': depth})
        
        sample['image'] = torch.from_numpy(sample['image'])
        sample['depth'] = torch.from_numpy(sample['depth'])
        sample['depth'] = sample['depth'] / 256.0  # convert in meters
        
        sample['valid_mask'] = sample['depth'] > 0
        
        sample['image_path'] = self.filelist[item].split(' ')[0]
        
        return sample

    def __len__(self):
        return len(self.filelist)

================================================
FILE: metric_depth/dataset/splits/hypersim/train.txt
================================================
[File too large to display: 13.1 MB]

================================================
FILE: metric_depth/dataset/splits/hypersim/val.txt
================================================
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0000.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0000.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0001.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0001.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0002.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0002.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0003.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0003.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0004.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0004.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0005.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0005.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0006.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0006.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0007.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0007.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0008.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0008.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0009.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0009.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0010.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0010.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0011.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0011.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0013.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0013.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0014.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0014.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0015.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0015.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0016.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0016.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0017.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0017.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0018.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0018.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0019.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0019.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0020.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0020.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0021.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0021.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0022.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0022.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0023.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0023.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0024.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0024.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0025.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0025.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0026.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0026.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0028.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0028.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0029.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0029.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0030.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0030.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0031.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0031.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0032.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0032.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0033.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0033.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0034.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0034.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0035.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0035.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0036.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0036.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0037.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0037.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0038.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0038.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0039.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0039.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0040.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0040.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0041.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0041.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0042.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0042.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0043.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0043.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0044.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0044.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0045.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0045.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0046.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0046.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0047.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0047.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0048.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0048.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0049.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0049.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0050.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0050.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0051.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0051.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0052.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0052.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0053.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0053.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0054.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0054.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0055.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0055.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0056.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0056.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0057.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0057.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0058.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0058.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0059.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0059.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0060.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0060.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0061.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0061.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0062.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0062.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0063.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0063.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0064.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0064.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0065.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0065.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0066.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0066.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0067.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0067.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0068.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0068.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0069.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0069.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0070.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0070.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0071.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0071.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0072.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0072.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0073.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0073.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0074.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0074.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0075.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0075.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0076.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0076.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0077.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0077.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0078.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0078.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0079.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0079.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0080.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0080.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0081.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0081.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0082.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0082.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0083.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0083.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0084.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0084.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0085.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0085.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0086.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0086.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0087.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0087.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0088.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0088.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0089.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0089.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0090.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0090.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0091.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0091.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0092.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0092.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0093.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0093.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0094.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0094.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0095.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0095.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0096.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0096.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0097.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0097.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0098.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0098.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0099.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_geometry_hdf5/frame.0099.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0000.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0000.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0001.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0001.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0002.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0002.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0003.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0003.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0004.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0004.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0005.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0005.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0006.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0006.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0007.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0007.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0008.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0008.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0009.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0009.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0010.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0010.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0011.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0011.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0012.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0012.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0013.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0013.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0014.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0014.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0015.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0015.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0016.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0016.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0017.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0017.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0018.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0018.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0019.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0019.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0020.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0020.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0021.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0021.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0022.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0022.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0023.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0023.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0024.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0024.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0025.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0025.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0026.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0026.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0027.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0027.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0028.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0028.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0029.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0029.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0030.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0030.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0031.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0031.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0032.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0032.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0033.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0033.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0034.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0034.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0035.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0035.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0036.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0036.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0037.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0037.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0038.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0038.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0039.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0039.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0040.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0040.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0041.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0041.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0042.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0042.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0043.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0043.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0044.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0044.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0045.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0045.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0046.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0046.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0047.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0047.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0048.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0048.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0049.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0049.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0050.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0050.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0051.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0051.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0052.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0052.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0053.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0053.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0054.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0054.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0055.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0055.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0056.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0056.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0057.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0057.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0058.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0058.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0059.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0059.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0060.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0060.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0061.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0061.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0062.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0062.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0063.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0063.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0064.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0064.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0065.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0065.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0066.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0066.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0067.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0067.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0068.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0068.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0069.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0069.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0070.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0070.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0071.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0071.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0072.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0072.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0073.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0073.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0074.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0074.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0075.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0075.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0076.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0076.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0077.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0077.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0078.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0078.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0079.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0079.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0080.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0080.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0081.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0081.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0082.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0082.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0083.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0083.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0084.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0084.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0085.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0085.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0086.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0086.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0087.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0087.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0088.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0088.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0089.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0089.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0090.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0090.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0091.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0091.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0092.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0092.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0093.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0093.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0094.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0094.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0095.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0095.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0096.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0096.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0097.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0097.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0098.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0098.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_final_preview/frame.0099.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_01_geometry_hdf5/frame.0099.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0000.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0000.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0001.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0001.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0002.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0002.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0003.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0003.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0004.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0004.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0005.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0005.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0006.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0006.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0007.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0007.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0008.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0008.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0009.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0009.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0010.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0010.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0011.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0011.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0012.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0012.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0013.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0013.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0014.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0014.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0015.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0015.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0016.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0016.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0017.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0017.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0018.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0018.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0019.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0019.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0020.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0020.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0021.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0021.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0022.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0022.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0023.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0023.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0024.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0024.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0025.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0025.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0026.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0026.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0027.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0027.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0028.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0028.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0029.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0029.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0030.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0030.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0031.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0031.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0032.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0032.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0033.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0033.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0034.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0034.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0035.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0035.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0036.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0036.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0037.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0037.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0038.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0038.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0039.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0039.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0040.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0040.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0041.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0041.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0042.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0042.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0043.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0043.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0044.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0044.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0045.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0045.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0046.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0046.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0047.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0047.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0048.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0048.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0049.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0049.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0050.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0050.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0051.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0051.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0052.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0052.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0053.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0053.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0054.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0054.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0055.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0055.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0056.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0056.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0057.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0057.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0058.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0058.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0059.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0059.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0060.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0060.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0061.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0061.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0062.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0062.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0063.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0063.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0064.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0064.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0065.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0065.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0066.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0066.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0067.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0067.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0068.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0068.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0069.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0069.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0070.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0070.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0071.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0071.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0072.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0072.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0073.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0073.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0074.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0074.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0075.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0075.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0076.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0076.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0077.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0077.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0078.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0078.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0079.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0079.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0080.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0080.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0081.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0081.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0082.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0082.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0083.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0083.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0084.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0084.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0085.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0085.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0086.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0086.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0087.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0087.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0088.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0088.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0089.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0089.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0090.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0090.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0091.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0091.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0092.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0092.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0093.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0093.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0094.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0094.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0095.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0095.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0096.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0096.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0097.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0097.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0098.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0098.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_final_preview/frame.0099.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_00_geometry_hdf5/frame.0099.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0000.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0000.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0001.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0001.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0002.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0002.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0003.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0003.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0004.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0004.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0005.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0005.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0006.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0006.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0007.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0007.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0008.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0008.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0009.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0009.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0010.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0010.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0011.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0011.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0012.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0012.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0013.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0013.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0014.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0014.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0015.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0015.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0016.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0016.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0017.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0017.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0018.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0018.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0019.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0019.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0020.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0020.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0021.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0021.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0022.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0022.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0023.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0023.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0024.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0024.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0025.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0025.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0026.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0026.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0027.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0027.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0028.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0028.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0029.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0029.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0030.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0030.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0031.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0031.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0032.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0032.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0033.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0033.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0034.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0034.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0035.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0035.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0036.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0036.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0037.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0037.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0038.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0038.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0039.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0039.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0040.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0040.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0041.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0041.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0042.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0042.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0043.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0043.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0044.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0044.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0045.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0045.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0046.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0046.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0047.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0047.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0048.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0048.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0049.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0049.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0050.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0050.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0051.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0051.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0052.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0052.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0053.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0053.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0054.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0054.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0055.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0055.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0056.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0056.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0057.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0057.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0058.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0058.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0059.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0059.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0060.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0060.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0061.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0061.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0062.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0062.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0063.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0063.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0064.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0064.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0065.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0065.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0066.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0066.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0067.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0067.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0068.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0068.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0069.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0069.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0070.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0070.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0071.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0071.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0072.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0072.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0073.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0073.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0074.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0074.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0075.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0075.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0076.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0076.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0077.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0077.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0078.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0078.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0079.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0079.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0080.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0080.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0081.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0081.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0082.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0082.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0083.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0083.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0084.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0084.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0085.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0085.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0086.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0086.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0087.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0087.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0088.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0088.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0089.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0089.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0090.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0090.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0091.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0091.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0092.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0092.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0093.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0093.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0094.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0094.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0095.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0095.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0096.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0096.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0097.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0097.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0098.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0098.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_final_preview/frame.0099.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_003/images/scene_cam_01_geometry_hdf5/frame.0099.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0000.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0000.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0001.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0001.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0002.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0002.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0003.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0003.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0004.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0004.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0005.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0005.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0006.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0006.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0007.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0007.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0008.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0008.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0009.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0009.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0010.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0010.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0011.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0011.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0012.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0012.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0013.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0013.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0014.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0014.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0015.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0015.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0016.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0016.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0017.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0017.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0018.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0018.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0019.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0019.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0020.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0020.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0021.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0021.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0022.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0022.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0023.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0023.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0024.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0024.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0025.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0025.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0026.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0026.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0027.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0027.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0028.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0028.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0029.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0029.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0030.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0030.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0031.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0031.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0032.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0032.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0033.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0033.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0034.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0034.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0035.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0035.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0036.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0036.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0037.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0037.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0038.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0038.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0039.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0039.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0040.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0040.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0041.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0041.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0042.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0042.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0043.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0043.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0044.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0044.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0045.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0045.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0046.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0046.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0047.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0047.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0048.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0048.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0049.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0049.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0050.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0050.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0051.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0051.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0052.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0052.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0053.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0053.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0054.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0054.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0055.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0055.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0056.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0056.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0057.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0057.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0058.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0058.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0059.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0059.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0060.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0060.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0061.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0061.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0062.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0062.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0063.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0063.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0064.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0064.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0065.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0065.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0066.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0066.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0067.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0067.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0068.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0068.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0069.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0069.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0070.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0070.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0071.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0071.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0072.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0072.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0073.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5/frame.0073.depth_meters.hdf5
/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_final_preview/frame.0074.tonemap.jpg /mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_004_004/images/scene_cam_00_geometry_hdf5
Download .txt
gitextract_wwh_ughm/

├── DA-2K.md
├── LICENSE
├── README.md
├── app.py
├── depth_anything_v2/
│   ├── dinov2.py
│   ├── dinov2_layers/
│   │   ├── __init__.py
│   │   ├── attention.py
│   │   ├── block.py
│   │   ├── drop_path.py
│   │   ├── layer_scale.py
│   │   ├── mlp.py
│   │   ├── patch_embed.py
│   │   └── swiglu_ffn.py
│   ├── dpt.py
│   └── util/
│       ├── blocks.py
│       └── transform.py
├── metric_depth/
│   ├── README.md
│   ├── dataset/
│   │   ├── hypersim.py
│   │   ├── kitti.py
│   │   ├── splits/
│   │   │   ├── hypersim/
│   │   │   │   ├── train.txt
│   │   │   │   └── val.txt
│   │   │   ├── kitti/
│   │   │   │   └── val.txt
│   │   │   └── vkitti2/
│   │   │       └── train.txt
│   │   ├── transform.py
│   │   └── vkitti2.py
│   ├── depth_anything_v2/
│   │   ├── dinov2.py
│   │   ├── dinov2_layers/
│   │   │   ├── __init__.py
│   │   │   ├── attention.py
│   │   │   ├── block.py
│   │   │   ├── drop_path.py
│   │   │   ├── layer_scale.py
│   │   │   ├── mlp.py
│   │   │   ├── patch_embed.py
│   │   │   └── swiglu_ffn.py
│   │   ├── dpt.py
│   │   └── util/
│   │       ├── blocks.py
│   │       └── transform.py
│   ├── depth_to_pointcloud.py
│   ├── dist_train.sh
│   ├── requirements.txt
│   ├── run.py
│   ├── train.py
│   └── util/
│       ├── dist_helper.py
│       ├── loss.py
│       ├── metric.py
│       └── utils.py
├── requirements.txt
├── run.py
└── run_video.py
Download .txt
SYMBOL INDEX (210 symbols across 33 files)

FILE: app.py
  function predict_depth (line 43) | def predict_depth(image):
  function on_submit (line 60) | def on_submit(image):

FILE: depth_anything_v2/dinov2.py
  function named_apply (line 26) | def named_apply(fn: Callable, module: nn.Module, name="", depth_first=Tr...
  class BlockChunk (line 37) | class BlockChunk(nn.ModuleList):
    method forward (line 38) | def forward(self, x):
  class DinoVisionTransformer (line 44) | class DinoVisionTransformer(nn.Module):
    method __init__ (line 45) | def __init__(
    method init_weights (line 172) | def init_weights(self):
    method interpolate_pos_encoding (line 179) | def interpolate_pos_encoding(self, x, w, h):
    method prepare_tokens_with_masks (line 212) | def prepare_tokens_with_masks(self, x, masks=None):
    method forward_features_list (line 233) | def forward_features_list(self, x_list, masks_list):
    method forward_features (line 253) | def forward_features(self, x, masks=None):
    method _get_intermediate_layers_not_chunked (line 271) | def _get_intermediate_layers_not_chunked(self, x, n=1):
    method _get_intermediate_layers_chunked (line 283) | def _get_intermediate_layers_chunked(self, x, n=1):
    method get_intermediate_layers (line 297) | def get_intermediate_layers(
    method forward (line 323) | def forward(self, *args, is_training=False, **kwargs):
  function init_weights_vit_timm (line 331) | def init_weights_vit_timm(module: nn.Module, name: str = ""):
  function vit_small (line 339) | def vit_small(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_base (line 353) | def vit_base(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_large (line 367) | def vit_large(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_giant2 (line 381) | def vit_giant2(patch_size=16, num_register_tokens=0, **kwargs):
  function DINOv2 (line 398) | def DINOv2(model_name):

FILE: depth_anything_v2/dinov2_layers/attention.py
  class Attention (line 29) | class Attention(nn.Module):
    method __init__ (line 30) | def __init__(
    method forward (line 49) | def forward(self, x: Tensor) -> Tensor:
  class MemEffAttention (line 65) | class MemEffAttention(Attention):
    method forward (line 66) | def forward(self, x: Tensor, attn_bias=None) -> Tensor:

FILE: depth_anything_v2/dinov2_layers/block.py
  class Block (line 36) | class Block(nn.Module):
    method __init__ (line 37) | def __init__(
    method forward (line 82) | def forward(self, x: Tensor) -> Tensor:
  function drop_add_residual_stochastic_depth (line 110) | def drop_add_residual_stochastic_depth(
  function get_branges_scales (line 134) | def get_branges_scales(x, sample_drop_ratio=0.0):
  function add_residual (line 142) | def add_residual(x, brange, residual, residual_scale_factor, scaling_vec...
  function get_attn_bias_and_cat (line 157) | def get_attn_bias_and_cat(x_list, branges=None):
  function drop_add_residual_stochastic_depth_list (line 181) | def drop_add_residual_stochastic_depth_list(
  class NestedTensorBlock (line 204) | class NestedTensorBlock(Block):
    method forward_nested (line 205) | def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
    method forward (line 245) | def forward(self, x_or_x_list):

FILE: depth_anything_v2/dinov2_layers/drop_path.py
  function drop_path (line 15) | def drop_path(x, drop_prob: float = 0.0, training: bool = False):
  class DropPath (line 27) | class DropPath(nn.Module):
    method __init__ (line 30) | def __init__(self, drop_prob=None):
    method forward (line 34) | def forward(self, x):

FILE: depth_anything_v2/dinov2_layers/layer_scale.py
  class LayerScale (line 16) | class LayerScale(nn.Module):
    method __init__ (line 17) | def __init__(
    method forward (line 27) | def forward(self, x: Tensor) -> Tensor:

FILE: depth_anything_v2/dinov2_layers/mlp.py
  class Mlp (line 17) | class Mlp(nn.Module):
    method __init__ (line 18) | def __init__(
    method forward (line 35) | def forward(self, x: Tensor) -> Tensor:

FILE: depth_anything_v2/dinov2_layers/patch_embed.py
  function make_2tuple (line 17) | def make_2tuple(x):
  class PatchEmbed (line 26) | class PatchEmbed(nn.Module):
    method __init__ (line 38) | def __init__(
    method forward (line 69) | def forward(self, x: Tensor) -> Tensor:
    method flops (line 84) | def flops(self) -> float:

FILE: depth_anything_v2/dinov2_layers/swiglu_ffn.py
  class SwiGLUFFN (line 13) | class SwiGLUFFN(nn.Module):
    method __init__ (line 14) | def __init__(
    method forward (line 29) | def forward(self, x: Tensor) -> Tensor:
  class SwiGLUFFNFused (line 45) | class SwiGLUFFNFused(SwiGLU):
    method __init__ (line 46) | def __init__(

FILE: depth_anything_v2/dpt.py
  function _make_fusion_block (line 12) | def _make_fusion_block(features, use_bn, size=None):
  class ConvBlock (line 24) | class ConvBlock(nn.Module):
    method __init__ (line 25) | def __init__(self, in_feature, out_feature):
    method forward (line 34) | def forward(self, x):
  class DPTHead (line 38) | class DPTHead(nn.Module):
    method __init__ (line 39) | def __init__(
    method forward (line 117) | def forward(self, out_features, patch_h, patch_w):
  class DepthAnythingV2 (line 153) | class DepthAnythingV2(nn.Module):
    method __init__ (line 154) | def __init__(
    method forward (line 176) | def forward(self, x):
    method infer_image (line 187) | def infer_image(self, raw_image, input_size=518):
    method image2tensor (line 196) | def image2tensor(self, raw_image, input_size=518):

FILE: depth_anything_v2/util/blocks.py
  function _make_scratch (line 4) | def _make_scratch(in_shape, out_shape, groups=1, expand=False):
  class ResidualConvUnit (line 29) | class ResidualConvUnit(nn.Module):
    method __init__ (line 33) | def __init__(self, features, activation, bn):
    method forward (line 57) | def forward(self, x):
  class FeatureFusionBlock (line 83) | class FeatureFusionBlock(nn.Module):
    method __init__ (line 87) | def __init__(
    method forward (line 123) | def forward(self, *xs, size=None):

FILE: depth_anything_v2/util/transform.py
  class Resize (line 5) | class Resize(object):
    method __init__ (line 9) | def __init__(
    method constrain_to_multiple_of (line 51) | def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
    method get_size (line 62) | def get_size(self, width, height):
    method __call__ (line 109) | def __call__(self, sample):
  class NormalizeImage (line 125) | class NormalizeImage(object):
    method __init__ (line 129) | def __init__(self, mean, std):
    method __call__ (line 133) | def __call__(self, sample):
  class PrepareForNet (line 139) | class PrepareForNet(object):
    method __init__ (line 143) | def __init__(self):
    method __call__ (line 146) | def __call__(self, sample):

FILE: metric_depth/dataset/hypersim.py
  function hypersim_distance_to_depth (line 11) | def hypersim_distance_to_depth(npyDistance):
  class Hypersim (line 26) | class Hypersim(Dataset):
    method __init__ (line 27) | def __init__(self, filelist_path, mode, size=(518, 518)):
    method __getitem__ (line 50) | def __getitem__(self, item):
    method __len__ (line 73) | def __len__(self):

FILE: metric_depth/dataset/kitti.py
  class KITTI (line 9) | class KITTI(Dataset):
    method __init__ (line 10) | def __init__(self, filelist_path, mode, size=(518, 518)):
    method __getitem__ (line 35) | def __getitem__(self, item):
    method __len__ (line 56) | def __len__(self):

FILE: metric_depth/dataset/transform.py
  function apply_min_size (line 8) | def apply_min_size(sample, size, image_interpolation_method=cv2.INTER_AR...
  class Resize (line 50) | class Resize(object):
    method __init__ (line 54) | def __init__(
    method constrain_to_multiple_of (line 96) | def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
    method get_size (line 107) | def get_size(self, width, height):
    method __call__ (line 164) | def __call__(self, sample):
  class NormalizeImage (line 207) | class NormalizeImage(object):
    method __init__ (line 211) | def __init__(self, mean, std):
    method __call__ (line 215) | def __call__(self, sample):
  class PrepareForNet (line 221) | class PrepareForNet(object):
    method __init__ (line 225) | def __init__(self):
    method __call__ (line 228) | def __call__(self, sample):
  class Crop (line 247) | class Crop(object):
    method __init__ (line 251) | def __init__(self, size):
    method __call__ (line 257) | def __call__(self, sample):

FILE: metric_depth/dataset/vkitti2.py
  class VKITTI2 (line 9) | class VKITTI2(Dataset):
    method __init__ (line 10) | def __init__(self, filelist_path, mode, size=(518, 518)):
    method __getitem__ (line 33) | def __getitem__(self, item):
    method __len__ (line 53) | def __len__(self):

FILE: metric_depth/depth_anything_v2/dinov2.py
  function named_apply (line 26) | def named_apply(fn: Callable, module: nn.Module, name="", depth_first=Tr...
  class BlockChunk (line 37) | class BlockChunk(nn.ModuleList):
    method forward (line 38) | def forward(self, x):
  class DinoVisionTransformer (line 44) | class DinoVisionTransformer(nn.Module):
    method __init__ (line 45) | def __init__(
    method init_weights (line 172) | def init_weights(self):
    method interpolate_pos_encoding (line 179) | def interpolate_pos_encoding(self, x, w, h):
    method prepare_tokens_with_masks (line 212) | def prepare_tokens_with_masks(self, x, masks=None):
    method forward_features_list (line 233) | def forward_features_list(self, x_list, masks_list):
    method forward_features (line 253) | def forward_features(self, x, masks=None):
    method _get_intermediate_layers_not_chunked (line 271) | def _get_intermediate_layers_not_chunked(self, x, n=1):
    method _get_intermediate_layers_chunked (line 283) | def _get_intermediate_layers_chunked(self, x, n=1):
    method get_intermediate_layers (line 297) | def get_intermediate_layers(
    method forward (line 323) | def forward(self, *args, is_training=False, **kwargs):
  function init_weights_vit_timm (line 331) | def init_weights_vit_timm(module: nn.Module, name: str = ""):
  function vit_small (line 339) | def vit_small(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_base (line 353) | def vit_base(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_large (line 367) | def vit_large(patch_size=16, num_register_tokens=0, **kwargs):
  function vit_giant2 (line 381) | def vit_giant2(patch_size=16, num_register_tokens=0, **kwargs):
  function DINOv2 (line 398) | def DINOv2(model_name):

FILE: metric_depth/depth_anything_v2/dinov2_layers/attention.py
  class Attention (line 29) | class Attention(nn.Module):
    method __init__ (line 30) | def __init__(
    method forward (line 49) | def forward(self, x: Tensor) -> Tensor:
  class MemEffAttention (line 65) | class MemEffAttention(Attention):
    method forward (line 66) | def forward(self, x: Tensor, attn_bias=None) -> Tensor:

FILE: metric_depth/depth_anything_v2/dinov2_layers/block.py
  class Block (line 36) | class Block(nn.Module):
    method __init__ (line 37) | def __init__(
    method forward (line 82) | def forward(self, x: Tensor) -> Tensor:
  function drop_add_residual_stochastic_depth (line 110) | def drop_add_residual_stochastic_depth(
  function get_branges_scales (line 134) | def get_branges_scales(x, sample_drop_ratio=0.0):
  function add_residual (line 142) | def add_residual(x, brange, residual, residual_scale_factor, scaling_vec...
  function get_attn_bias_and_cat (line 157) | def get_attn_bias_and_cat(x_list, branges=None):
  function drop_add_residual_stochastic_depth_list (line 181) | def drop_add_residual_stochastic_depth_list(
  class NestedTensorBlock (line 204) | class NestedTensorBlock(Block):
    method forward_nested (line 205) | def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
    method forward (line 245) | def forward(self, x_or_x_list):

FILE: metric_depth/depth_anything_v2/dinov2_layers/drop_path.py
  function drop_path (line 15) | def drop_path(x, drop_prob: float = 0.0, training: bool = False):
  class DropPath (line 27) | class DropPath(nn.Module):
    method __init__ (line 30) | def __init__(self, drop_prob=None):
    method forward (line 34) | def forward(self, x):

FILE: metric_depth/depth_anything_v2/dinov2_layers/layer_scale.py
  class LayerScale (line 16) | class LayerScale(nn.Module):
    method __init__ (line 17) | def __init__(
    method forward (line 27) | def forward(self, x: Tensor) -> Tensor:

FILE: metric_depth/depth_anything_v2/dinov2_layers/mlp.py
  class Mlp (line 17) | class Mlp(nn.Module):
    method __init__ (line 18) | def __init__(
    method forward (line 35) | def forward(self, x: Tensor) -> Tensor:

FILE: metric_depth/depth_anything_v2/dinov2_layers/patch_embed.py
  function make_2tuple (line 17) | def make_2tuple(x):
  class PatchEmbed (line 26) | class PatchEmbed(nn.Module):
    method __init__ (line 38) | def __init__(
    method forward (line 69) | def forward(self, x: Tensor) -> Tensor:
    method flops (line 84) | def flops(self) -> float:

FILE: metric_depth/depth_anything_v2/dinov2_layers/swiglu_ffn.py
  class SwiGLUFFN (line 13) | class SwiGLUFFN(nn.Module):
    method __init__ (line 14) | def __init__(
    method forward (line 29) | def forward(self, x: Tensor) -> Tensor:
  class SwiGLUFFNFused (line 45) | class SwiGLUFFNFused(SwiGLU):
    method __init__ (line 46) | def __init__(

FILE: metric_depth/depth_anything_v2/dpt.py
  function _make_fusion_block (line 12) | def _make_fusion_block(features, use_bn, size=None):
  class ConvBlock (line 24) | class ConvBlock(nn.Module):
    method __init__ (line 25) | def __init__(self, in_feature, out_feature):
    method forward (line 34) | def forward(self, x):
  class DPTHead (line 38) | class DPTHead(nn.Module):
    method __init__ (line 39) | def __init__(
    method forward (line 116) | def forward(self, out_features, patch_h, patch_w):
  class DepthAnythingV2 (line 152) | class DepthAnythingV2(nn.Module):
    method __init__ (line 153) | def __init__(
    method forward (line 178) | def forward(self, x):
    method infer_image (line 188) | def infer_image(self, raw_image, input_size=518):
    method image2tensor (line 197) | def image2tensor(self, raw_image, input_size=518):

FILE: metric_depth/depth_anything_v2/util/blocks.py
  function _make_scratch (line 4) | def _make_scratch(in_shape, out_shape, groups=1, expand=False):
  class ResidualConvUnit (line 29) | class ResidualConvUnit(nn.Module):
    method __init__ (line 33) | def __init__(self, features, activation, bn):
    method forward (line 57) | def forward(self, x):
  class FeatureFusionBlock (line 83) | class FeatureFusionBlock(nn.Module):
    method __init__ (line 87) | def __init__(
    method forward (line 123) | def forward(self, *xs, size=None):

FILE: metric_depth/depth_anything_v2/util/transform.py
  class Resize (line 5) | class Resize(object):
    method __init__ (line 9) | def __init__(
    method constrain_to_multiple_of (line 51) | def constrain_to_multiple_of(self, x, min_val=0, max_val=None):
    method get_size (line 62) | def get_size(self, width, height):
    method __call__ (line 109) | def __call__(self, sample):
  class NormalizeImage (line 125) | class NormalizeImage(object):
    method __init__ (line 129) | def __init__(self, mean, std):
    method __call__ (line 133) | def __call__(self, sample):
  class PrepareForNet (line 139) | class PrepareForNet(object):
    method __init__ (line 143) | def __init__(self):
    method __call__ (line 146) | def __call__(self, sample):

FILE: metric_depth/depth_to_pointcloud.py
  function main (line 34) | def main():

FILE: metric_depth/train.py
  function main (line 43) | def main():

FILE: metric_depth/util/dist_helper.py
  function setup_distributed (line 8) | def setup_distributed(backend="nccl", port=None):

FILE: metric_depth/util/loss.py
  class SiLogLoss (line 5) | class SiLogLoss(nn.Module):
    method __init__ (line 6) | def __init__(self, lambd=0.5):
    method forward (line 10) | def forward(self, pred, target, valid_mask):

FILE: metric_depth/util/metric.py
  function eval_depth (line 4) | def eval_depth(pred, target):

FILE: metric_depth/util/utils.py
  function init_log (line 9) | def init_log(name, level=logging.INFO):
Condensed preview — 49 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,657K chars).
[
  {
    "path": "DA-2K.md",
    "chars": 1948,
    "preview": "# DA-2K Evaluation Benchmark\n\n## Introduction\n\n![DA-2K](assets/DA-2K.png)\n\nDA-2K is proposed in [Depth Anything V2](http"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 9899,
    "preview": "<div align=\"center\">\n<h1>Depth Anything V2</h1>\n\n[**Lihe Yang**](https://liheyoung.github.io/)<sup>1</sup> · [**Bingyi K"
  },
  {
    "path": "app.py",
    "chars": 3250,
    "preview": "import glob\nimport gradio as gr\nimport matplotlib\nimport numpy as np\nfrom PIL import Image\nimport torch\nimport tempfile\n"
  },
  {
    "path": "depth_anything_v2/dinov2.py",
    "chars": 15178,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the Apache License, Version "
  },
  {
    "path": "depth_anything_v2/dinov2_layers/__init__.py",
    "chars": 382,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/attention.py",
    "chars": 2343,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/block.py",
    "chars": 9332,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/drop_path.py",
    "chars": 1160,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/layer_scale.py",
    "chars": 823,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/mlp.py",
    "chars": 1272,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/patch_embed.py",
    "chars": 2832,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dinov2_layers/swiglu_ffn.py",
    "chars": 1859,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "depth_anything_v2/dpt.py",
    "chars": 7391,
    "preview": "import cv2\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchvision.transforms import Compose"
  },
  {
    "path": "depth_anything_v2/util/blocks.py",
    "chars": 3987,
    "preview": "import torch.nn as nn\n\n\ndef _make_scratch(in_shape, out_shape, groups=1, expand=False):\n    scratch = nn.Module()\n\n    o"
  },
  {
    "path": "depth_anything_v2/util/transform.py",
    "chars": 6075,
    "preview": "import numpy as np\nimport cv2\n\n\nclass Resize(object):\n    \"\"\"Resize sample to given size (width, height).\n    \"\"\"\n\n    d"
  },
  {
    "path": "metric_depth/README.md",
    "chars": 4621,
    "preview": "# Depth Anything V2 for Metric Depth Estimation\n\n![teaser](./assets/compare_zoedepth.png)\n\nWe here provide a simple code"
  },
  {
    "path": "metric_depth/dataset/hypersim.py",
    "chars": 2719,
    "preview": "import cv2\nimport h5py\nimport numpy as np\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.transforms "
  },
  {
    "path": "metric_depth/dataset/kitti.py",
    "chars": 1864,
    "preview": "import cv2\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.transforms import Compose\n\nfrom dataset.tr"
  },
  {
    "path": "metric_depth/dataset/splits/hypersim/val.txt",
    "chars": 1698780,
    "preview": "/mnt/bn/liheyang/DepthDatasets/HyperSim/all/ai_003_010/images/scene_cam_00_final_preview/frame.0000.tonemap.jpg /mnt/bn/"
  },
  {
    "path": "metric_depth/dataset/splits/kitti/val.txt",
    "chars": 145074,
    "preview": "/mnt/bn/liheyang/Kitti/raw_data/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000069.png /mnt/bn/liheyang/Kitt"
  },
  {
    "path": "metric_depth/dataset/splits/vkitti2/train.txt",
    "chars": 3594932,
    "preview": "/mnt/bn/liheyang/DepthDatasets/vKitti2/Scene20/sunset/frames/rgb/Camera_0/rgb_00560.jpg /mnt/bn/liheyang/DepthDatasets/v"
  },
  {
    "path": "metric_depth/dataset/transform.py",
    "chars": 9563,
    "preview": "import cv2\nimport math\nimport numpy as np\nimport torch\nimport torch.nn.functional as F\n\n\ndef apply_min_size(sample, size"
  },
  {
    "path": "metric_depth/dataset/vkitti2.py",
    "chars": 1807,
    "preview": "import cv2\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.transforms import Compose\n\nfrom dataset.tr"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2.py",
    "chars": 15177,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the Apache License, Version "
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/__init__.py",
    "chars": 382,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/attention.py",
    "chars": 2343,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/block.py",
    "chars": 9332,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/drop_path.py",
    "chars": 1160,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/layer_scale.py",
    "chars": 823,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/mlp.py",
    "chars": 1272,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/patch_embed.py",
    "chars": 2832,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dinov2_layers/swiglu_ffn.py",
    "chars": 1859,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the l"
  },
  {
    "path": "metric_depth/depth_anything_v2/dpt.py",
    "chars": 7417,
    "preview": "import cv2\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchvision.transforms import Compose"
  },
  {
    "path": "metric_depth/depth_anything_v2/util/blocks.py",
    "chars": 3987,
    "preview": "import torch.nn as nn\n\n\ndef _make_scratch(in_shape, out_shape, groups=1, expand=False):\n    scratch = nn.Module()\n\n    o"
  },
  {
    "path": "metric_depth/depth_anything_v2/util/transform.py",
    "chars": 6075,
    "preview": "import numpy as np\nimport cv2\n\n\nclass Resize(object):\n    \"\"\"Resize sample to given size (width, height).\n    \"\"\"\n\n    d"
  },
  {
    "path": "metric_depth/depth_to_pointcloud.py",
    "chars": 5031,
    "preview": "\"\"\"\nBorn out of Depth Anything V1 Issue 36\nMake sure you have the necessary libraries installed.\nCode by @1ssb\n\nThis scr"
  },
  {
    "path": "metric_depth/dist_train.sh",
    "chars": 730,
    "preview": "#!/bin/bash\nnow=$(date +\"%Y%m%d_%H%M%S\")\n\nepoch=120\nbs=4\ngpus=8\nlr=0.000005\nencoder=vitl\ndataset=hypersim # vkitti\nimg_s"
  },
  {
    "path": "metric_depth/requirements.txt",
    "chars": 50,
    "preview": "matplotlib\nopencv-python\nopen3d\ntorch\ntorchvision\n"
  },
  {
    "path": "metric_depth/run.py",
    "chars": 3518,
    "preview": "import argparse\nimport cv2\nimport glob\nimport matplotlib\nimport numpy as np\nimport os\nimport torch\n\nfrom depth_anything_"
  },
  {
    "path": "metric_depth/train.py",
    "chars": 9401,
    "preview": "import argparse\nimport logging\nimport os\nimport pprint\nimport random\n\nimport warnings\nimport numpy as np\nimport torch\nim"
  },
  {
    "path": "metric_depth/util/dist_helper.py",
    "chars": 1343,
    "preview": "import os\nimport subprocess\n\nimport torch\nimport torch.distributed as dist\n\n\ndef setup_distributed(backend=\"nccl\", port="
  },
  {
    "path": "metric_depth/util/loss.py",
    "chars": 472,
    "preview": "import torch\nfrom torch import nn\n\n\nclass SiLogLoss(nn.Module):\n    def __init__(self, lambd=0.5):\n        super().__ini"
  },
  {
    "path": "metric_depth/util/metric.py",
    "chars": 1010,
    "preview": "import torch\n\n\ndef eval_depth(pred, target):\n    assert pred.shape == target.shape\n\n    thresh = torch.max((target / pre"
  },
  {
    "path": "metric_depth/util/utils.py",
    "chars": 647,
    "preview": "import os\nimport re\nimport numpy as np\nimport logging\n\nlogs = set()\n\n\ndef init_log(name, level=logging.INFO):\n    if (na"
  },
  {
    "path": "requirements.txt",
    "chars": 77,
    "preview": "gradio_imageslider\ngradio==4.29.0\nmatplotlib\nopencv-python\ntorch\ntorchvision\n"
  },
  {
    "path": "run.py",
    "chars": 3043,
    "preview": "import argparse\nimport cv2\nimport glob\nimport matplotlib\nimport numpy as np\nimport os\nimport torch\n\nfrom depth_anything_"
  },
  {
    "path": "run_video.py",
    "chars": 3750,
    "preview": "import argparse\nimport cv2\nimport glob\nimport matplotlib\nimport numpy as np\nimport os\nimport torch\n\nfrom depth_anything_"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the DepthAnything/Depth-Anything-V2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 49 files (18.4 MB), approximately 1.4M tokens, and a symbol index with 210 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!