File size: 7,486 Bytes
736c1b5
 
 
 
 
 
 
 
 
 
 
 
 
 
9068a69
736c1b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
license: other
language:
- en
tags:
- depth-completion
- transparent-objects
- robotics
- cleargrasp
- lidf
- rftrans
- transdiff
library_name: pytorch
---

# GridDepth: Pretrained Checkpoints for Transparent-Object Depth Completion

This repo hosts the **pretrained checkpoints** that go with the
[atom525/ProgressiveDepth](https://github.com/atom525/ProgressiveDepth) codebase
(idea.md series-joint pipeline: TransDiff Refined1 β†’ LIDF) **plus** our local
**RFTrans reproduction** baselines.

> **Recipe**: see [atom525/ProgressiveDepth README.md](https://github.com/atom525/ProgressiveDepth)
> and [docs/PIPELINE.md](https://github.com/atom525/ProgressiveDepth/blob/main/docs/PIPELINE.md).

---

## File layout

```
GridDepth/
β”œβ”€β”€ progressivedepth/                                # idea.md 主线(Module A=ip_basic + Module B=LIDFοΌ‰
β”‚   β”œβ”€β”€ ckpts/
β”‚   β”‚   β”œβ”€β”€ lidf_stage1_epoch059.pth                # 248 MB β€” LIDF Stage 1 (frozen baseline, CG-only Adam 60 ep)
β”‚   β”‚   β”œβ”€β”€ C_stage2_epoch029.pth                   # 2.2 MB β€” Stage 2 RefineNet, retrained on Refined1 input (idea.md C run)
β”‚   β”‚   └── C_stage3_epoch029.pth                   # 2.2 MB β€” Stage 3 RefineNet hard-neg, retrained on Refined1 input
β”‚   └── configs/
β”‚       β”œβ”€β”€ train_progressive_stage2.yaml
β”‚       β”œβ”€β”€ train_progressive_stage3.yaml
β”‚       └── pipeline_config.yaml                    # inference / evaluate config
β”‚
└── rftrans/                                         # RFTrans ε€ηŽ°δΊ§η‰©
    β”œβ”€β”€ ckpts/
    β”‚   β”œβ”€β”€ rfnet_refractive_flow_epoch500.pth      # 467 MB β€” RFNet (DRN backbone), Adam 500 ep on unity/train
    β”‚   β”œβ”€β”€ f2net_flow2normal_epoch500.pth          # 356 MB β€” F2Net (simple_unet), Adam 500 ep on unity/train
    β”‚   β”œβ”€β”€ mask_adam_epoch195.pth                  # 312 MB β€” mask network (DRN), Adam 200 ep on unity/train, mIoU 0.847
    β”‚   └── outlines_side_adam_epoch195.pth         # 312 MB β€” boundary network (DRN side-output), Adam 200 ep on unity/train
    └── configs/
        β”œβ”€β”€ refractive_flow_config.yaml             # RFNet train config (Adam, 500 ep)
        β”œβ”€β”€ flow2normal_config.yaml                 # F2Net train config (Adam, 500 ep)
        β”œβ”€β”€ mask_adam_config.yaml                   # mask train config (Adam, 200 ep)
        β”œβ”€β”€ outlines_side_adam_config.yaml          # boundary train config (Adam, 200 ep)
        └── exp017_paperfaithful.yaml               # rgb2normal e2e config (paper-faithful: SGD 100 ep, lr=1e-4 mom=0.9 wd=5e-4)
```

---

## ProgressiveDepth (idea.md series-joint pipeline)

Pipeline:
```
RGB + Noisy Depth
        β”‚
        β–Ό  Module A: TransDiff Data Preprocessing (ip_basic ε€šε°ΊεΊ¦ε½’ζ€ε­¦ε‘«ε……)
   Refined Depth1
        β”‚
        β–Ό  Module B: LIDF (Stage 1 frozen + Stage 2 / 3 retrained on Refined1)
   Final Depth
```

### Final results (paper protocol: 256Γ—144 + per-image avg + corrupt mask)

C_full = `lidf_stage1_epoch059.pth` + `C_stage2_epoch029.pth` + `C_stage3_epoch029.pth`,evaluation 用 mode A (feed_to_lidf=refined1):

| Dataset | C_full RMSE↓ | C_full Ξ΄1.05↑ | B baseline RMSE | B baseline Ξ΄1.05 | LIDF paper Table 1 |
|---|---:|---:|---:|---:|---:|
| **real-test (Real-novel)** ⭐ | **0.0403** | **45.28** | 0.0443 | 40.18 | 0.0250 / 76.21 |
| real-val (Real-known) | 0.0351 | 77.22 | 0.0358 | 77.18 | 0.0280 / 82.37 |
| synthetic-test (Syn-novel) | 0.0328 | 62.82 | 0.0305 | 66.12 | 0.0280 / 68.62 |
| synthetic-val (Syn-known) | 0.0129 | 93.72 | 0.0111 | 96.07 | 0.0120 / 94.79 |

**Conclusion**: idea.md series-joint approach is **effective on real-world data** (Real-novel RMSE ↓9%, Ξ΄1.05 ↑5 pts vs baseline B), **regression on synthetic** (where ip_basic adds noise to clean inputs). The remaining gap to paper Table 1 is due to Omniverse Object Dataset being unavailable (link broken since 2025-03, [NVlabs/implicit_depth#3](https://github.com/NVlabs/implicit_depth/issues/3)).

---

## RFTrans reproduction

Pipeline (per RFTrans paper Β§III-C):
```
RGB ──> RFNet ──> refractive flow + mask + boundary
                                          β”‚
                                          └──> F2Net ──> surface normal
                                                              β”‚
                                                              └──> depth2depth global opt ──> Refined Depth
```

### Caveats

1. **Architecture deviation**: paper Β§III-C says "RFNet predicts mask, boundary, and refractive flow" (multi-task), but the official repo doesn't implement this. We trained **separate networks** (RFNet predicts only flow, F2Net predicts normal from flow, mask & boundary as independent DeepLab+DRN networks) β€” this matches the actual repo structure but not the paper text.
2. **Optimizer deviation**: paper Β§IV-A specifies SGD lr=1e-4 momentum=0.9 weight_decay=5e-4 for 100 epochs. We used **Adam** for sub-network training because we empirically found SGD lr=1e-4 from random init **does not converge** (mask val mIoU ~0.46 = random level after 100 ep SGD vs 0.85 with Adam 200 ep). The provided `exp017_paperfaithful.yaml` IS paper-faithful (SGD 100 ep) β€” used for the **end-to-end fine-tuning stage**, where it warm-starts from the Adam-trained RFNet/F2Net.
3. **Training data**: all networks trained on `data/unity/train/` (5000 RGB + flow + mask + boundary + normal GT, generated with [Unity-RefractiveFlowRender](https://github.com/LJY-XCX/Unity-RefractiveFlowRender)) β€” this is the dataset specified by RFTrans paper Β§IV-A.

### How to use these RFTrans ckpts

In your `RFTrans/eval_depth_completion/config_*.yaml`:
```yaml
rgb2flow:
  pathWeightsFile: <path_to>/rfnet_refractive_flow_epoch500.pth
flow2normal:
  pathWeightsFile: <path_to>/f2net_flow2normal_epoch500.pth
masks:
  pathWeightsFile: <path_to>/mask_adam_epoch195.pth        # OR cleargrasp_orig/.../checkpoint_mask.pth
outlines:
  pathWeightsFile: <path_to>/outlines_side_adam_epoch195.pth   # OR cleargrasp_orig/.../checkpoint_outlines.pth
```

---

## Environment / dependencies

- python 3.8, pytorch 2.0.0+cu118
- LIDF: see [implicit_depth/requirements.txt](https://github.com/atom525/ProgressiveDepth/blob/main/implicit_depth/requirements.txt)
- RFTrans: needs `depth2depth` C++ binary and `libhdf5.so` from conda env

## License

- LIDF Stage 1 ckpt and code: NVIDIA Source Code License (Non-Commercial), inherited from [NVlabs/implicit_depth](https://github.com/NVlabs/implicit_depth)
- RFTrans ckpts and code: inherited from [LJY-XCX/RFTrans](https://github.com/LJY-XCX/RFTrans) license
- Our extensions (transdiff_preprocess wrapper, train_progressive trainer, retrains): same as upstream

## Citation

If you use these ckpts please cite the original works:

```bibtex
@inproceedings{zhu2021rgbd,
  title={RGB-D Local Implicit Function for Depth Completion of Transparent Objects},
  author={Zhu, Luyang and Mousavian, Arsalan and Xiang, Yu and Mazhar, Hammad and van Eenbergen, Jozef and Debnath, Shoubhik and Fox, Dieter},
  booktitle={CVPR},
  year={2021}
}

@article{tang2024rftrans,
  title={RFTrans: Leveraging Refractive Flow of Transparent Objects for Surface Normal Estimation and Manipulation},
  author={Tang, Tutian and Liu, Jiyu and Zhang, Jieyi and Fu, Haoyuan and Xu, Wenqiang and Lu, Cewu},
  journal={IEEE Robotics and Automation Letters},
  year={2024}
}
```