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 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†</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   <sup>2</sup>TikTok
<br>
†project lead *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.

## 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

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
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
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\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\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.