mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-12-25 08:40:35 +08:00
Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75ebeeaea0 | ||
|
|
ab793177c6 | ||
|
|
9acdd67b83 | ||
|
|
3f428d9981 | ||
|
|
05cbea115a | ||
|
|
38afdcfc68 | ||
|
|
1e0b1d9c72 | ||
|
|
44702fdb4b | ||
|
|
7edaee71a9 | ||
|
|
d0d0e02007 | ||
|
|
4df110b0a9 | ||
|
|
51fd114d8b | ||
|
|
89653419d0 | ||
|
|
7980854d44 | ||
|
|
51d7c06ddd | ||
|
|
00c36ec01c | ||
|
|
b0462d8079 | ||
|
|
b66d17a324 | ||
|
|
717493cb79 | ||
|
|
302da69461 | ||
|
|
4ae25bfce7 | ||
|
|
bd52f4a408 | ||
|
|
17117106e4 | ||
|
|
aec76bb4c8 | ||
|
|
47d5dc8824 | ||
|
|
fe0b1bae49 | ||
|
|
ccf22911d4 | ||
|
|
128be02fc0 | ||
|
|
31e3488a51 | ||
|
|
b215776f2d | ||
|
|
38cf0dc1c5 | ||
|
|
7566530669 | ||
|
|
a27755db41 | ||
|
|
3da7703c5a |
@@ -162,90 +162,6 @@ workflows:
|
|||||||
jobs:
|
jobs:
|
||||||
# - main:
|
# - main:
|
||||||
# context: DOCKERHUB_TOKEN
|
# context: DOCKERHUB_TOKEN
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu113
|
|
||||||
name: linux_conda_py38_cu113_pyt1120
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.12.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py38_cu116_pyt1120
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.12.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu113
|
|
||||||
name: linux_conda_py38_cu113_pyt1121
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py38_cu116_pyt1121
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py38_cu116_pyt1130
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py38_cu117_pyt1130
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py38_cu116_pyt1131
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py38_cu117_pyt1131
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py38_cu117_pyt200
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 2.0.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu118
|
|
||||||
name: linux_conda_py38_cu118_pyt200
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 2.0.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py38_cu117_pyt201
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 2.0.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu118
|
|
||||||
name: linux_conda_py38_cu118_pyt201
|
|
||||||
python_version: '3.8'
|
|
||||||
pytorch_version: 2.0.1
|
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
@@ -303,89 +219,61 @@ workflows:
|
|||||||
python_version: '3.8'
|
python_version: '3.8'
|
||||||
pytorch_version: 2.2.0
|
pytorch_version: 2.2.0
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu113
|
cu_version: cu118
|
||||||
name: linux_conda_py39_cu113_pyt1120
|
name: linux_conda_py38_cu118_pyt222
|
||||||
python_version: '3.9'
|
python_version: '3.8'
|
||||||
pytorch_version: 1.12.0
|
pytorch_version: 2.2.2
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu116
|
cu_version: cu121
|
||||||
name: linux_conda_py39_cu116_pyt1120
|
name: linux_conda_py38_cu121_pyt222
|
||||||
python_version: '3.9'
|
python_version: '3.8'
|
||||||
pytorch_version: 1.12.0
|
pytorch_version: 2.2.2
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu113
|
|
||||||
name: linux_conda_py39_cu113_pyt1121
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py39_cu116_pyt1121
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py39_cu116_pyt1130
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py39_cu117_pyt1130
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py39_cu116_pyt1131
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py39_cu117_pyt1131
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py39_cu117_pyt200
|
|
||||||
python_version: '3.9'
|
|
||||||
pytorch_version: 2.0.0
|
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu118
|
cu_version: cu118
|
||||||
name: linux_conda_py39_cu118_pyt200
|
name: linux_conda_py38_cu118_pyt231
|
||||||
python_version: '3.9'
|
python_version: '3.8'
|
||||||
pytorch_version: 2.0.0
|
pytorch_version: 2.3.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu117
|
cu_version: cu121
|
||||||
name: linux_conda_py39_cu117_pyt201
|
name: linux_conda_py38_cu121_pyt231
|
||||||
python_version: '3.9'
|
python_version: '3.8'
|
||||||
pytorch_version: 2.0.1
|
pytorch_version: 2.3.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu118
|
cu_version: cu118
|
||||||
name: linux_conda_py39_cu118_pyt201
|
name: linux_conda_py38_cu118_pyt240
|
||||||
python_version: '3.9'
|
python_version: '3.8'
|
||||||
pytorch_version: 2.0.1
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py38_cu121_pyt240
|
||||||
|
python_version: '3.8'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py38_cu118_pyt241
|
||||||
|
python_version: '3.8'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py38_cu121_pyt241
|
||||||
|
python_version: '3.8'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
@@ -443,89 +331,61 @@ workflows:
|
|||||||
python_version: '3.9'
|
python_version: '3.9'
|
||||||
pytorch_version: 2.2.0
|
pytorch_version: 2.2.0
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu113
|
cu_version: cu118
|
||||||
name: linux_conda_py310_cu113_pyt1120
|
name: linux_conda_py39_cu118_pyt222
|
||||||
python_version: '3.10'
|
python_version: '3.9'
|
||||||
pytorch_version: 1.12.0
|
pytorch_version: 2.2.2
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu116
|
cu_version: cu121
|
||||||
name: linux_conda_py310_cu116_pyt1120
|
name: linux_conda_py39_cu121_pyt222
|
||||||
python_version: '3.10'
|
python_version: '3.9'
|
||||||
pytorch_version: 1.12.0
|
pytorch_version: 2.2.2
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda113
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu113
|
|
||||||
name: linux_conda_py310_cu113_pyt1121
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py310_cu116_pyt1121
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.12.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py310_cu116_pyt1130
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py310_cu117_pyt1130
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.13.0
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda116
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu116
|
|
||||||
name: linux_conda_py310_cu116_pyt1131
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py310_cu117_pyt1131
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 1.13.1
|
|
||||||
- binary_linux_conda:
|
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
|
||||||
context: DOCKERHUB_TOKEN
|
|
||||||
cu_version: cu117
|
|
||||||
name: linux_conda_py310_cu117_pyt200
|
|
||||||
python_version: '3.10'
|
|
||||||
pytorch_version: 2.0.0
|
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu118
|
cu_version: cu118
|
||||||
name: linux_conda_py310_cu118_pyt200
|
name: linux_conda_py39_cu118_pyt231
|
||||||
python_version: '3.10'
|
python_version: '3.9'
|
||||||
pytorch_version: 2.0.0
|
pytorch_version: 2.3.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda117
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu117
|
cu_version: cu121
|
||||||
name: linux_conda_py310_cu117_pyt201
|
name: linux_conda_py39_cu121_pyt231
|
||||||
python_version: '3.10'
|
python_version: '3.9'
|
||||||
pytorch_version: 2.0.1
|
pytorch_version: 2.3.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
cu_version: cu118
|
cu_version: cu118
|
||||||
name: linux_conda_py310_cu118_pyt201
|
name: linux_conda_py39_cu118_pyt240
|
||||||
python_version: '3.10'
|
python_version: '3.9'
|
||||||
pytorch_version: 2.0.1
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py39_cu121_pyt240
|
||||||
|
python_version: '3.9'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py39_cu118_pyt241
|
||||||
|
python_version: '3.9'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py39_cu121_pyt241
|
||||||
|
python_version: '3.9'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
@@ -582,6 +442,62 @@ workflows:
|
|||||||
name: linux_conda_py310_cu121_pyt220
|
name: linux_conda_py310_cu121_pyt220
|
||||||
python_version: '3.10'
|
python_version: '3.10'
|
||||||
pytorch_version: 2.2.0
|
pytorch_version: 2.2.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py310_cu118_pyt222
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py310_cu121_pyt222
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py310_cu118_pyt231
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py310_cu121_pyt231
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py310_cu118_pyt240
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py310_cu121_pyt240
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py310_cu118_pyt241
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py310_cu121_pyt241
|
||||||
|
python_version: '3.10'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
@@ -638,6 +554,62 @@ workflows:
|
|||||||
name: linux_conda_py311_cu121_pyt220
|
name: linux_conda_py311_cu121_pyt220
|
||||||
python_version: '3.11'
|
python_version: '3.11'
|
||||||
pytorch_version: 2.2.0
|
pytorch_version: 2.2.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py311_cu118_pyt222
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py311_cu121_pyt222
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py311_cu118_pyt231
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py311_cu121_pyt231
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py311_cu118_pyt240
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py311_cu121_pyt240
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py311_cu118_pyt241
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py311_cu121_pyt241
|
||||||
|
python_version: '3.11'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
- binary_linux_conda:
|
- binary_linux_conda:
|
||||||
conda_docker_image: pytorch/conda-builder:cuda118
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
@@ -652,6 +624,62 @@ workflows:
|
|||||||
name: linux_conda_py312_cu121_pyt220
|
name: linux_conda_py312_cu121_pyt220
|
||||||
python_version: '3.12'
|
python_version: '3.12'
|
||||||
pytorch_version: 2.2.0
|
pytorch_version: 2.2.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py312_cu118_pyt222
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py312_cu121_pyt222
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.2.2
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py312_cu118_pyt231
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py312_cu121_pyt231
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.3.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py312_cu118_pyt240
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py312_cu121_pyt240
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.4.0
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda118
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu118
|
||||||
|
name: linux_conda_py312_cu118_pyt241
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
|
- binary_linux_conda:
|
||||||
|
conda_docker_image: pytorch/conda-builder:cuda121
|
||||||
|
context: DOCKERHUB_TOKEN
|
||||||
|
cu_version: cu121
|
||||||
|
name: linux_conda_py312_cu121_pyt241
|
||||||
|
python_version: '3.12'
|
||||||
|
pytorch_version: 2.4.1
|
||||||
- binary_linux_conda_cuda:
|
- binary_linux_conda_cuda:
|
||||||
name: testrun_conda_cuda_py310_cu117_pyt201
|
name: testrun_conda_cuda_py310_cu117_pyt201
|
||||||
context: DOCKERHUB_TOKEN
|
context: DOCKERHUB_TOKEN
|
||||||
|
|||||||
@@ -19,16 +19,14 @@ from packaging import version
|
|||||||
# The CUDA versions which have pytorch conda packages available for linux for each
|
# The CUDA versions which have pytorch conda packages available for linux for each
|
||||||
# version of pytorch.
|
# version of pytorch.
|
||||||
CONDA_CUDA_VERSIONS = {
|
CONDA_CUDA_VERSIONS = {
|
||||||
"1.12.0": ["cu113", "cu116"],
|
|
||||||
"1.12.1": ["cu113", "cu116"],
|
|
||||||
"1.13.0": ["cu116", "cu117"],
|
|
||||||
"1.13.1": ["cu116", "cu117"],
|
|
||||||
"2.0.0": ["cu117", "cu118"],
|
|
||||||
"2.0.1": ["cu117", "cu118"],
|
|
||||||
"2.1.0": ["cu118", "cu121"],
|
"2.1.0": ["cu118", "cu121"],
|
||||||
"2.1.1": ["cu118", "cu121"],
|
"2.1.1": ["cu118", "cu121"],
|
||||||
"2.1.2": ["cu118", "cu121"],
|
"2.1.2": ["cu118", "cu121"],
|
||||||
"2.2.0": ["cu118", "cu121"],
|
"2.2.0": ["cu118", "cu121"],
|
||||||
|
"2.2.2": ["cu118", "cu121"],
|
||||||
|
"2.3.1": ["cu118", "cu121"],
|
||||||
|
"2.4.0": ["cu118", "cu121"],
|
||||||
|
"2.4.1": ["cu118", "cu121"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
11
INSTALL.md
11
INSTALL.md
@@ -8,11 +8,10 @@
|
|||||||
The core library is written in PyTorch. Several components have underlying implementation in CUDA for improved performance. A subset of these components have CPU implementations in C++/PyTorch. It is advised to use PyTorch3D with GPU support in order to use all the features.
|
The core library is written in PyTorch. Several components have underlying implementation in CUDA for improved performance. A subset of these components have CPU implementations in C++/PyTorch. It is advised to use PyTorch3D with GPU support in order to use all the features.
|
||||||
|
|
||||||
- Linux or macOS or Windows
|
- Linux or macOS or Windows
|
||||||
- Python 3.8, 3.9 or 3.10
|
- Python
|
||||||
- PyTorch 1.12.0, 1.12.1, 1.13.0, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.2 or 2.2.0.
|
- PyTorch 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.4.0 or 2.4.1.
|
||||||
- torchvision that matches the PyTorch installation. You can install them together as explained at pytorch.org to make sure of this.
|
- torchvision that matches the PyTorch installation. You can install them together as explained at pytorch.org to make sure of this.
|
||||||
- gcc & g++ ≥ 4.9
|
- gcc & g++ ≥ 4.9
|
||||||
- [fvcore](https://github.com/facebookresearch/fvcore)
|
|
||||||
- [ioPath](https://github.com/facebookresearch/iopath)
|
- [ioPath](https://github.com/facebookresearch/iopath)
|
||||||
- If CUDA is to be used, use a version which is supported by the corresponding pytorch version and at least version 9.2.
|
- If CUDA is to be used, use a version which is supported by the corresponding pytorch version and at least version 9.2.
|
||||||
- If CUDA older than 11.7 is to be used and you are building from source, the CUB library must be available. We recommend version 1.10.0.
|
- If CUDA older than 11.7 is to be used and you are building from source, the CUB library must be available. We recommend version 1.10.0.
|
||||||
@@ -22,7 +21,7 @@ The runtime dependencies can be installed by running:
|
|||||||
conda create -n pytorch3d python=3.9
|
conda create -n pytorch3d python=3.9
|
||||||
conda activate pytorch3d
|
conda activate pytorch3d
|
||||||
conda install pytorch=1.13.0 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
|
conda install pytorch=1.13.0 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
|
||||||
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
|
conda install -c iopath iopath
|
||||||
```
|
```
|
||||||
|
|
||||||
For the CUB build time dependency, which you only need if you have CUDA older than 11.7, if you are using conda, you can continue with
|
For the CUB build time dependency, which you only need if you have CUDA older than 11.7, if you are using conda, you can continue with
|
||||||
@@ -49,6 +48,7 @@ For developing on top of PyTorch3D or contributing, you will need to run the lin
|
|||||||
- tdqm
|
- tdqm
|
||||||
- jupyter
|
- jupyter
|
||||||
- imageio
|
- imageio
|
||||||
|
- fvcore
|
||||||
- plotly
|
- plotly
|
||||||
- opencv-python
|
- opencv-python
|
||||||
|
|
||||||
@@ -59,6 +59,7 @@ conda install jupyter
|
|||||||
pip install scikit-image matplotlib imageio plotly opencv-python
|
pip install scikit-image matplotlib imageio plotly opencv-python
|
||||||
|
|
||||||
# Tests/Linting
|
# Tests/Linting
|
||||||
|
conda install -c fvcore -c conda-forge fvcore
|
||||||
pip install black usort flake8 flake8-bugbear flake8-comprehensions
|
pip install black usort flake8 flake8-bugbear flake8-comprehensions
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -97,7 +98,7 @@ version_str="".join([
|
|||||||
torch.version.cuda.replace(".",""),
|
torch.version.cuda.replace(".",""),
|
||||||
f"_pyt{pyt_version_str}"
|
f"_pyt{pyt_version_str}"
|
||||||
])
|
])
|
||||||
!pip install fvcore iopath
|
!pip install iopath
|
||||||
!pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html
|
!pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ conda init bash
|
|||||||
source ~/.bashrc
|
source ~/.bashrc
|
||||||
conda create -y -n myenv python=3.8 matplotlib ipython ipywidgets nbconvert
|
conda create -y -n myenv python=3.8 matplotlib ipython ipywidgets nbconvert
|
||||||
conda activate myenv
|
conda activate myenv
|
||||||
conda install -y -c fvcore -c iopath -c conda-forge fvcore iopath
|
conda install -y -c iopath iopath
|
||||||
conda install -y -c pytorch pytorch=1.6.0 cudatoolkit=10.1 torchvision
|
conda install -y -c pytorch pytorch=1.6.0 cudatoolkit=10.1 torchvision
|
||||||
conda install -y -c pytorch3d-nightly pytorch3d
|
conda install -y -c pytorch3d-nightly pytorch3d
|
||||||
pip install plotly scikit-image
|
pip install plotly scikit-image
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ sphinx_rtd_theme
|
|||||||
sphinx_markdown_tables
|
sphinx_markdown_tables
|
||||||
numpy
|
numpy
|
||||||
iopath
|
iopath
|
||||||
fvcore
|
|
||||||
https://download.pytorch.org/whl/cpu/torchvision-0.15.2%2Bcpu-cp311-cp311-linux_x86_64.whl
|
https://download.pytorch.org/whl/cpu/torchvision-0.15.2%2Bcpu-cp311-cp311-linux_x86_64.whl
|
||||||
https://download.pytorch.org/whl/cpu/torch-2.0.1%2Bcpu-cp311-cp311-linux_x86_64.whl
|
https://download.pytorch.org/whl/cpu/torch-2.0.1%2Bcpu-cp311-cp311-linux_x86_64.whl
|
||||||
omegaconf
|
omegaconf
|
||||||
|
|||||||
@@ -83,25 +83,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -70,25 +70,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -45,25 +45,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -405,7 +411,7 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"random_model_images = shapenet_dataset.render(\n",
|
"random_model_images = shapenet_dataset.render(\n",
|
||||||
" sample_nums=[3],\n",
|
" sample_nums=[5],\n",
|
||||||
" device=device,\n",
|
" device=device,\n",
|
||||||
" cameras=cameras,\n",
|
" cameras=cameras,\n",
|
||||||
" raster_settings=raster_settings,\n",
|
" raster_settings=raster_settings,\n",
|
||||||
|
|||||||
@@ -84,25 +84,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,25 +50,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,25 +62,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -41,25 +41,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,25 +72,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,25 +66,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,25 +44,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,25 +51,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -67,25 +67,31 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import torch\n",
|
"import torch\n",
|
||||||
|
"import subprocess\n",
|
||||||
"need_pytorch3d=False\n",
|
"need_pytorch3d=False\n",
|
||||||
"try:\n",
|
"try:\n",
|
||||||
" import pytorch3d\n",
|
" import pytorch3d\n",
|
||||||
"except ModuleNotFoundError:\n",
|
"except ModuleNotFoundError:\n",
|
||||||
" need_pytorch3d=True\n",
|
" need_pytorch3d=True\n",
|
||||||
"if need_pytorch3d:\n",
|
"if need_pytorch3d:\n",
|
||||||
" if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n",
|
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
||||||
" # We try to install PyTorch3D via a released wheel.\n",
|
" version_str=\"\".join([\n",
|
||||||
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
|
" f\"py3{sys.version_info.minor}_cu\",\n",
|
||||||
" version_str=\"\".join([\n",
|
" torch.version.cuda.replace(\".\",\"\"),\n",
|
||||||
" f\"py3{sys.version_info.minor}_cu\",\n",
|
" f\"_pyt{pyt_version_str}\"\n",
|
||||||
" torch.version.cuda.replace(\".\",\"\"),\n",
|
" ])\n",
|
||||||
" f\"_pyt{pyt_version_str}\"\n",
|
" !pip install iopath\n",
|
||||||
" ])\n",
|
" if sys.platform.startswith(\"linux\"):\n",
|
||||||
" !pip install fvcore iopath\n",
|
" print(\"Trying to install wheel for PyTorch3D\")\n",
|
||||||
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
|
||||||
" else:\n",
|
" pip_list = !pip freeze\n",
|
||||||
" # We try to install PyTorch3D from source.\n",
|
" need_pytorch3d = not any(i.startswith(\"pytorch3d==\") for i in pip_list)\n",
|
||||||
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
" if need_pytorch3d:\n",
|
||||||
|
" print(f\"failed to find/install wheel for {version_str}\")\n",
|
||||||
|
"if need_pytorch3d:\n",
|
||||||
|
" print(\"Installing PyTorch3D from source\")\n",
|
||||||
|
" !pip install ninja\n",
|
||||||
|
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,6 +80,12 @@ def setup_cuda():
|
|||||||
def setup_conda_pytorch_constraint() -> List[str]:
|
def setup_conda_pytorch_constraint() -> List[str]:
|
||||||
pytorch_constraint = f"- pytorch=={PYTORCH_VERSION}"
|
pytorch_constraint = f"- pytorch=={PYTORCH_VERSION}"
|
||||||
os.environ["CONDA_PYTORCH_CONSTRAINT"] = pytorch_constraint
|
os.environ["CONDA_PYTORCH_CONSTRAINT"] = pytorch_constraint
|
||||||
|
if pytorch_major_minor < (2, 2):
|
||||||
|
os.environ["CONDA_PYTORCH_MKL_CONSTRAINT"] = "- mkl!=2024.1.0"
|
||||||
|
os.environ["SETUPTOOLS_CONSTRAINT"] = "- setuptools<70"
|
||||||
|
else:
|
||||||
|
os.environ["CONDA_PYTORCH_MKL_CONSTRAINT"] = ""
|
||||||
|
os.environ["SETUPTOOLS_CONSTRAINT"] = "- setuptools"
|
||||||
os.environ["CONDA_PYTORCH_BUILD_CONSTRAINT"] = pytorch_constraint
|
os.environ["CONDA_PYTORCH_BUILD_CONSTRAINT"] = pytorch_constraint
|
||||||
os.environ["PYTORCH_VERSION_NODOT"] = PYTORCH_VERSION.replace(".", "")
|
os.environ["PYTORCH_VERSION_NODOT"] = PYTORCH_VERSION.replace(".", "")
|
||||||
|
|
||||||
@@ -117,7 +123,7 @@ def do_build(start_args: List[str]):
|
|||||||
if test_flag is not None:
|
if test_flag is not None:
|
||||||
args.append(test_flag)
|
args.append(test_flag)
|
||||||
|
|
||||||
args.extend(["-c", "bottler", "-c", "fvcore", "-c", "iopath", "-c", "conda-forge"])
|
args.extend(["-c", "bottler", "-c", "iopath", "-c", "conda-forge"])
|
||||||
args.append("--no-anaconda-upload")
|
args.append("--no-anaconda-upload")
|
||||||
args.extend(["--python", os.environ["PYTHON_VERSION"]])
|
args.extend(["--python", os.environ["PYTHON_VERSION"]])
|
||||||
args.append("packaging/pytorch3d")
|
args.append("packaging/pytorch3d")
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ version_str="".join([
|
|||||||
torch.version.cuda.replace(".",""),
|
torch.version.cuda.replace(".",""),
|
||||||
f"_pyt{pyt_version_str}"
|
f"_pyt{pyt_version_str}"
|
||||||
])
|
])
|
||||||
!pip install fvcore iopath
|
!pip install iopath
|
||||||
!pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html
|
!pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ do
|
|||||||
conda activate "$tag"
|
conda activate "$tag"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
conda install -y -c pytorch $extra_channel "pytorch=$pytorch_version" "$cudatools=$CUDA_TAG"
|
conda install -y -c pytorch $extra_channel "pytorch=$pytorch_version" "$cudatools=$CUDA_TAG"
|
||||||
pip install fvcore iopath
|
pip install iopath
|
||||||
echo "python version" "$python_version" "pytorch version" "$pytorch_version" "cuda version" "$cu_version" "tag" "$tag"
|
echo "python version" "$python_version" "pytorch version" "$pytorch_version" "cuda version" "$cu_version" "tag" "$tag"
|
||||||
|
|
||||||
rm -rf dist
|
rm -rf dist
|
||||||
|
|||||||
@@ -12,8 +12,9 @@ requirements:
|
|||||||
|
|
||||||
host:
|
host:
|
||||||
- python
|
- python
|
||||||
- setuptools
|
{{ environ.get('SETUPTOOLS_CONSTRAINT') }}
|
||||||
{{ environ.get('CONDA_PYTORCH_BUILD_CONSTRAINT') }}
|
{{ environ.get('CONDA_PYTORCH_BUILD_CONSTRAINT') }}
|
||||||
|
{{ environ.get('CONDA_PYTORCH_MKL_CONSTRAINT') }}
|
||||||
{{ environ.get('CONDA_CUDATOOLKIT_CONSTRAINT') }}
|
{{ environ.get('CONDA_CUDATOOLKIT_CONSTRAINT') }}
|
||||||
{{ environ.get('CONDA_CPUONLY_FEATURE') }}
|
{{ environ.get('CONDA_CPUONLY_FEATURE') }}
|
||||||
|
|
||||||
@@ -21,7 +22,6 @@ requirements:
|
|||||||
- python
|
- python
|
||||||
- numpy >=1.11
|
- numpy >=1.11
|
||||||
- torchvision >=0.5
|
- torchvision >=0.5
|
||||||
- fvcore
|
|
||||||
- iopath
|
- iopath
|
||||||
{{ environ.get('CONDA_PYTORCH_CONSTRAINT') }}
|
{{ environ.get('CONDA_PYTORCH_CONSTRAINT') }}
|
||||||
{{ environ.get('CONDA_CUDATOOLKIT_CONSTRAINT') }}
|
{{ environ.get('CONDA_CUDATOOLKIT_CONSTRAINT') }}
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
""""
|
""""
|
||||||
This file is the entry point for launching experiments with Implicitron.
|
This file is the entry point for launching experiments with Implicitron.
|
||||||
|
|
||||||
@@ -97,7 +99,7 @@ except ModuleNotFoundError:
|
|||||||
no_accelerate = os.environ.get("PYTORCH3D_NO_ACCELERATE") is not None
|
no_accelerate = os.environ.get("PYTORCH3D_NO_ACCELERATE") is not None
|
||||||
|
|
||||||
|
|
||||||
class Experiment(Configurable): # pyre-ignore: 13
|
class Experiment(Configurable):
|
||||||
"""
|
"""
|
||||||
This class is at the top level of Implicitron's config hierarchy. Its
|
This class is at the top level of Implicitron's config hierarchy. Its
|
||||||
members are high-level components necessary for training an implicit rende-
|
members are high-level components necessary for training an implicit rende-
|
||||||
@@ -118,12 +120,16 @@ class Experiment(Configurable): # pyre-ignore: 13
|
|||||||
will be saved here.
|
will be saved here.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `data_source` is never initialized.
|
||||||
data_source: DataSourceBase
|
data_source: DataSourceBase
|
||||||
data_source_class_type: str = "ImplicitronDataSource"
|
data_source_class_type: str = "ImplicitronDataSource"
|
||||||
|
# pyre-fixme[13]: Attribute `model_factory` is never initialized.
|
||||||
model_factory: ModelFactoryBase
|
model_factory: ModelFactoryBase
|
||||||
model_factory_class_type: str = "ImplicitronModelFactory"
|
model_factory_class_type: str = "ImplicitronModelFactory"
|
||||||
|
# pyre-fixme[13]: Attribute `optimizer_factory` is never initialized.
|
||||||
optimizer_factory: OptimizerFactoryBase
|
optimizer_factory: OptimizerFactoryBase
|
||||||
optimizer_factory_class_type: str = "ImplicitronOptimizerFactory"
|
optimizer_factory_class_type: str = "ImplicitronOptimizerFactory"
|
||||||
|
# pyre-fixme[13]: Attribute `training_loop` is never initialized.
|
||||||
training_loop: TrainingLoopBase
|
training_loop: TrainingLoopBase
|
||||||
training_loop_class_type: str = "ImplicitronTrainingLoop"
|
training_loop_class_type: str = "ImplicitronTrainingLoop"
|
||||||
|
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
@@ -43,7 +45,7 @@ class ModelFactoryBase(ReplaceableBase):
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class ImplicitronModelFactory(ModelFactoryBase): # pyre-ignore [13]
|
class ImplicitronModelFactory(ModelFactoryBase):
|
||||||
"""
|
"""
|
||||||
A factory class that initializes an implicit rendering model.
|
A factory class that initializes an implicit rendering model.
|
||||||
|
|
||||||
@@ -59,6 +61,7 @@ class ImplicitronModelFactory(ModelFactoryBase): # pyre-ignore [13]
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `model` is never initialized.
|
||||||
model: ImplicitronModelBase
|
model: ImplicitronModelBase
|
||||||
model_class_type: str = "GenericModel"
|
model_class_type: str = "GenericModel"
|
||||||
resume: bool = True
|
resume: bool = True
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
@@ -28,13 +30,13 @@ from .utils import seed_all_random_engines
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
# pyre-fixme[13]: Attribute `evaluator` is never initialized.
|
|
||||||
class TrainingLoopBase(ReplaceableBase):
|
class TrainingLoopBase(ReplaceableBase):
|
||||||
"""
|
"""
|
||||||
Members:
|
Members:
|
||||||
evaluator: An EvaluatorBase instance, used to evaluate training results.
|
evaluator: An EvaluatorBase instance, used to evaluate training results.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `evaluator` is never initialized.
|
||||||
evaluator: Optional[EvaluatorBase]
|
evaluator: Optional[EvaluatorBase]
|
||||||
evaluator_class_type: Optional[str] = "ImplicitronEvaluator"
|
evaluator_class_type: Optional[str] = "ImplicitronEvaluator"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import contextlib
|
import contextlib
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Script to visualize a previously trained model. Example call:
|
Script to visualize a previously trained model. Example call:
|
||||||
|
|
||||||
|
|||||||
@@ -343,12 +343,14 @@ class RadianceFieldRenderer(torch.nn.Module):
|
|||||||
# For a full render pass concatenate the output chunks,
|
# For a full render pass concatenate the output chunks,
|
||||||
# and reshape to image size.
|
# and reshape to image size.
|
||||||
out = {
|
out = {
|
||||||
k: torch.cat(
|
k: (
|
||||||
[ch_o[k] for ch_o in chunk_outputs],
|
torch.cat(
|
||||||
dim=1,
|
[ch_o[k] for ch_o in chunk_outputs],
|
||||||
).view(-1, *self._image_size, 3)
|
dim=1,
|
||||||
if chunk_outputs[0][k] is not None
|
).view(-1, *self._image_size, 3)
|
||||||
else None
|
if chunk_outputs[0][k] is not None
|
||||||
|
else None
|
||||||
|
)
|
||||||
for k in ("rgb_fine", "rgb_coarse", "rgb_gt")
|
for k in ("rgb_fine", "rgb_coarse", "rgb_gt")
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -4,4 +4,6 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
__version__ = "0.7.6"
|
# pyre-unsafe
|
||||||
|
|
||||||
|
__version__ = "0.7.8"
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .datatypes import Device, get_device, make_device
|
from .datatypes import Device, get_device, make_device
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import Sequence, Tuple, Union
|
from typing import Sequence, Tuple, Union
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
|
|||||||
@@ -4,5 +4,7 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .symeig3x3 import symeig3x3
|
from .symeig3x3 import symeig3x3
|
||||||
from .utils import _safe_det_3x3
|
from .utils import _safe_det_3x3
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
#include "./pulsar/global.h" // Include before <torch/extension.h>.
|
#include "./pulsar/global.h" // Include before <torch/extension.h>.
|
||||||
|
#endif
|
||||||
#include <torch/extension.h>
|
#include <torch/extension.h>
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
#include "./pulsar/pytorch/renderer.h"
|
#include "./pulsar/pytorch/renderer.h"
|
||||||
#include "./pulsar/pytorch/tensor_util.h"
|
#include "./pulsar/pytorch/tensor_util.h"
|
||||||
|
#endif
|
||||||
#include "ball_query/ball_query.h"
|
#include "ball_query/ball_query.h"
|
||||||
#include "blending/sigmoid_alpha_blend.h"
|
#include "blending/sigmoid_alpha_blend.h"
|
||||||
#include "compositing/alpha_composite.h"
|
#include "compositing/alpha_composite.h"
|
||||||
@@ -99,6 +103,8 @@ PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
|
|||||||
m.def("marching_cubes", &MarchingCubes);
|
m.def("marching_cubes", &MarchingCubes);
|
||||||
|
|
||||||
// Pulsar.
|
// Pulsar.
|
||||||
|
// Pulsar not enabled on AMD.
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
#ifdef PULSAR_LOGGING_ENABLED
|
#ifdef PULSAR_LOGGING_ENABLED
|
||||||
c10::ShowLogInfoToStderr();
|
c10::ShowLogInfoToStderr();
|
||||||
#endif
|
#endif
|
||||||
@@ -183,4 +189,5 @@ PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
|
|||||||
m.attr("MAX_UINT") = py::int_(MAX_UINT);
|
m.attr("MAX_UINT") = py::int_(MAX_UINT);
|
||||||
m.attr("MAX_USHORT") = py::int_(MAX_USHORT);
|
m.attr("MAX_USHORT") = py::int_(MAX_USHORT);
|
||||||
m.attr("PULSAR_MAX_GRAD_SPHERES") = py::int_(MAX_GRAD_SPHERES);
|
m.attr("PULSAR_MAX_GRAD_SPHERES") = py::int_(MAX_GRAD_SPHERES);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ std::tuple<at::Tensor, at::Tensor> KNearestNeighborIdxCuda(
|
|||||||
|
|
||||||
TORCH_CHECK((norm == 1) || (norm == 2), "Norm must be 1 or 2.");
|
TORCH_CHECK((norm == 1) || (norm == 2), "Norm must be 1 or 2.");
|
||||||
|
|
||||||
TORCH_CHECK(p2.size(2) == D, "Point sets must have the same last dimension");
|
TORCH_CHECK(p1.size(2) == D, "Point sets must have the same last dimension");
|
||||||
auto long_dtype = lengths1.options().dtype(at::kLong);
|
auto long_dtype = lengths1.options().dtype(at::kLong);
|
||||||
auto idxs = at::zeros({N, P1, K}, long_dtype);
|
auto idxs = at::zeros({N, P1, K}, long_dtype);
|
||||||
auto dists = at::zeros({N, P1, K}, p1.options());
|
auto dists = at::zeros({N, P1, K}, p1.options());
|
||||||
|
|||||||
@@ -382,6 +382,44 @@ __global__ void GenerateFacesKernel(
|
|||||||
} // end for grid-strided kernel
|
} // end for grid-strided kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ATen/Torch does not have an exclusive-scan operator. Additionally, in the
|
||||||
|
// code below we need to get the "total number of items to work on" after
|
||||||
|
// a scan, which with an inclusive-scan would simply be the value of the last
|
||||||
|
// element in the tensor.
|
||||||
|
//
|
||||||
|
// This utility function hits two birds with one stone, by running
|
||||||
|
// an inclusive-scan into a right-shifted view of a tensor that's
|
||||||
|
// allocated to be one element bigger than the input tensor.
|
||||||
|
//
|
||||||
|
// Note; return tensor is `int64_t` per element, even if the input
|
||||||
|
// tensor is only 32-bit. Also, the return tensor is one element bigger
|
||||||
|
// than the input one.
|
||||||
|
//
|
||||||
|
// Secondary optional argument is an output argument that gets the
|
||||||
|
// value of the last element of the return tensor (because you almost
|
||||||
|
// always need this CPU-side right after this function anyway).
|
||||||
|
static at::Tensor ExclusiveScanAndTotal(
|
||||||
|
const at::Tensor& inTensor,
|
||||||
|
int64_t* optTotal = nullptr) {
|
||||||
|
const auto inSize = inTensor.sizes()[0];
|
||||||
|
auto retTensor = at::zeros({inSize + 1}, at::kLong).to(inTensor.device());
|
||||||
|
|
||||||
|
using at::indexing::None;
|
||||||
|
using at::indexing::Slice;
|
||||||
|
auto rightShiftedView = retTensor.index({Slice(1, None)});
|
||||||
|
|
||||||
|
// Do an (inclusive-scan) cumulative sum in to the view that's
|
||||||
|
// shifted one element to the right...
|
||||||
|
at::cumsum_out(rightShiftedView, inTensor, 0, at::kLong);
|
||||||
|
|
||||||
|
if (optTotal) {
|
||||||
|
*optTotal = retTensor[inSize].cpu().item<int64_t>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ...so that the not-shifted tensor holds the exclusive-scan
|
||||||
|
return retTensor;
|
||||||
|
}
|
||||||
|
|
||||||
// Entrance for marching cubes cuda extension. Marching Cubes is an algorithm to
|
// Entrance for marching cubes cuda extension. Marching Cubes is an algorithm to
|
||||||
// create triangle meshes from an implicit function (one of the form f(x, y, z)
|
// create triangle meshes from an implicit function (one of the form f(x, y, z)
|
||||||
// = 0). It works by iteratively checking a grid of cubes superimposed over a
|
// = 0). It works by iteratively checking a grid of cubes superimposed over a
|
||||||
@@ -444,20 +482,18 @@ std::tuple<at::Tensor, at::Tensor, at::Tensor> MarchingCubesCuda(
|
|||||||
using at::indexing::Slice;
|
using at::indexing::Slice;
|
||||||
|
|
||||||
auto d_voxelVerts =
|
auto d_voxelVerts =
|
||||||
at::zeros({numVoxels + 1}, at::TensorOptions().dtype(at::kInt))
|
at::zeros({numVoxels}, at::TensorOptions().dtype(at::kInt))
|
||||||
.to(vol.device());
|
.to(vol.device());
|
||||||
auto d_voxelVerts_ = d_voxelVerts.index({Slice(1, None)});
|
|
||||||
auto d_voxelOccupied =
|
auto d_voxelOccupied =
|
||||||
at::zeros({numVoxels + 1}, at::TensorOptions().dtype(at::kInt))
|
at::zeros({numVoxels}, at::TensorOptions().dtype(at::kInt))
|
||||||
.to(vol.device());
|
.to(vol.device());
|
||||||
auto d_voxelOccupied_ = d_voxelOccupied.index({Slice(1, None)});
|
|
||||||
|
|
||||||
// Execute "ClassifyVoxelKernel" kernel to precompute
|
// Execute "ClassifyVoxelKernel" kernel to precompute
|
||||||
// two arrays - d_voxelOccupied and d_voxelVertices to global memory,
|
// two arrays - d_voxelOccupied and d_voxelVertices to global memory,
|
||||||
// which stores the occupancy state and number of voxel vertices per voxel.
|
// which stores the occupancy state and number of voxel vertices per voxel.
|
||||||
ClassifyVoxelKernel<<<grid, threads, 0, stream>>>(
|
ClassifyVoxelKernel<<<grid, threads, 0, stream>>>(
|
||||||
d_voxelVerts_.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
d_voxelVerts.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
||||||
d_voxelOccupied_.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
d_voxelOccupied.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
||||||
vol.packed_accessor32<float, 3, at::RestrictPtrTraits>(),
|
vol.packed_accessor32<float, 3, at::RestrictPtrTraits>(),
|
||||||
isolevel);
|
isolevel);
|
||||||
AT_CUDA_CHECK(cudaGetLastError());
|
AT_CUDA_CHECK(cudaGetLastError());
|
||||||
@@ -467,12 +503,9 @@ std::tuple<at::Tensor, at::Tensor, at::Tensor> MarchingCubesCuda(
|
|||||||
// count for voxels in the grid and compute the number of active voxels.
|
// count for voxels in the grid and compute the number of active voxels.
|
||||||
// If the number of active voxels is 0, return zero tensor for verts and
|
// If the number of active voxels is 0, return zero tensor for verts and
|
||||||
// faces.
|
// faces.
|
||||||
|
int64_t activeVoxels = 0;
|
||||||
auto d_voxelOccupiedScan = at::cumsum(d_voxelOccupied, 0);
|
auto d_voxelOccupiedScan =
|
||||||
auto d_voxelOccupiedScan_ = d_voxelOccupiedScan.index({Slice(1, None)});
|
ExclusiveScanAndTotal(d_voxelOccupied, &activeVoxels);
|
||||||
|
|
||||||
// number of active voxels
|
|
||||||
int64_t activeVoxels = d_voxelOccupiedScan[numVoxels].cpu().item<int64_t>();
|
|
||||||
|
|
||||||
const int device_id = vol.device().index();
|
const int device_id = vol.device().index();
|
||||||
auto opt = at::TensorOptions().dtype(at::kInt).device(at::kCUDA, device_id);
|
auto opt = at::TensorOptions().dtype(at::kInt).device(at::kCUDA, device_id);
|
||||||
@@ -487,24 +520,21 @@ std::tuple<at::Tensor, at::Tensor, at::Tensor> MarchingCubesCuda(
|
|||||||
return std::make_tuple(verts, faces, ids);
|
return std::make_tuple(verts, faces, ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute "CompactVoxelsKernel" kernel to compress voxels for accleration.
|
// Execute "CompactVoxelsKernel" kernel to compress voxels for acceleration.
|
||||||
// This allows us to run triangle generation on only the occupied voxels.
|
// This allows us to run triangle generation on only the occupied voxels.
|
||||||
auto d_compVoxelArray = at::zeros({activeVoxels}, opt);
|
auto d_compVoxelArray = at::zeros({activeVoxels}, opt);
|
||||||
CompactVoxelsKernel<<<grid, threads, 0, stream>>>(
|
CompactVoxelsKernel<<<grid, threads, 0, stream>>>(
|
||||||
d_compVoxelArray.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
d_compVoxelArray.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
||||||
d_voxelOccupied.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
d_voxelOccupied.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
||||||
d_voxelOccupiedScan_
|
d_voxelOccupiedScan
|
||||||
.packed_accessor32<int64_t, 1, at::RestrictPtrTraits>(),
|
.packed_accessor32<int64_t, 1, at::RestrictPtrTraits>(),
|
||||||
numVoxels);
|
numVoxels);
|
||||||
AT_CUDA_CHECK(cudaGetLastError());
|
AT_CUDA_CHECK(cudaGetLastError());
|
||||||
cudaDeviceSynchronize();
|
cudaDeviceSynchronize();
|
||||||
|
|
||||||
// Scan d_voxelVerts array to generate offsets of vertices for each voxel
|
// Scan d_voxelVerts array to generate offsets of vertices for each voxel
|
||||||
auto d_voxelVertsScan = at::cumsum(d_voxelVerts, 0);
|
int64_t totalVerts = 0;
|
||||||
auto d_voxelVertsScan_ = d_voxelVertsScan.index({Slice(1, None)});
|
auto d_voxelVertsScan = ExclusiveScanAndTotal(d_voxelVerts, &totalVerts);
|
||||||
|
|
||||||
// total number of vertices
|
|
||||||
int64_t totalVerts = d_voxelVertsScan[numVoxels].cpu().item<int64_t>();
|
|
||||||
|
|
||||||
// Execute "GenerateFacesKernel" kernel
|
// Execute "GenerateFacesKernel" kernel
|
||||||
// This runs only on the occupied voxels.
|
// This runs only on the occupied voxels.
|
||||||
@@ -524,7 +554,7 @@ std::tuple<at::Tensor, at::Tensor, at::Tensor> MarchingCubesCuda(
|
|||||||
faces.packed_accessor<int64_t, 2, at::RestrictPtrTraits>(),
|
faces.packed_accessor<int64_t, 2, at::RestrictPtrTraits>(),
|
||||||
ids.packed_accessor<int64_t, 1, at::RestrictPtrTraits>(),
|
ids.packed_accessor<int64_t, 1, at::RestrictPtrTraits>(),
|
||||||
d_compVoxelArray.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
d_compVoxelArray.packed_accessor32<int, 1, at::RestrictPtrTraits>(),
|
||||||
d_voxelVertsScan_.packed_accessor32<int64_t, 1, at::RestrictPtrTraits>(),
|
d_voxelVertsScan.packed_accessor32<int64_t, 1, at::RestrictPtrTraits>(),
|
||||||
activeVoxels,
|
activeVoxels,
|
||||||
vol.packed_accessor32<float, 3, at::RestrictPtrTraits>(),
|
vol.packed_accessor32<float, 3, at::RestrictPtrTraits>(),
|
||||||
faceTable.packed_accessor32<int, 2, at::RestrictPtrTraits>(),
|
faceTable.packed_accessor32<int, 2, at::RestrictPtrTraits>(),
|
||||||
|
|||||||
@@ -357,11 +357,11 @@ void MAX_WS(
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
#define END_PARALLEL() \
|
#define END_PARALLEL() \
|
||||||
end_parallel:; \
|
end_parallel :; \
|
||||||
}
|
}
|
||||||
#define END_PARALLEL_NORET() }
|
#define END_PARALLEL_NORET() }
|
||||||
#define END_PARALLEL_2D() \
|
#define END_PARALLEL_2D() \
|
||||||
end_parallel:; \
|
end_parallel :; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
#define END_PARALLEL_2D_NORET() \
|
#define END_PARALLEL_2D_NORET() \
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ HOST void construct(
|
|||||||
MALLOC(self->di_sorted_d, DrawInfo, max_num_balls);
|
MALLOC(self->di_sorted_d, DrawInfo, max_num_balls);
|
||||||
MALLOC(self->region_flags_d, char, max_num_balls);
|
MALLOC(self->region_flags_d, char, max_num_balls);
|
||||||
MALLOC(self->num_selected_d, size_t, 1);
|
MALLOC(self->num_selected_d, size_t, 1);
|
||||||
MALLOC(self->forw_info_d, float, width* height*(3 + 2 * n_track));
|
MALLOC(self->forw_info_d, float, width* height * (3 + 2 * n_track));
|
||||||
MALLOC(self->min_max_pixels_d, IntersectInfo, 1);
|
MALLOC(self->min_max_pixels_d, IntersectInfo, 1);
|
||||||
MALLOC(self->grad_pos_d, float3, max_num_balls);
|
MALLOC(self->grad_pos_d, float3, max_num_balls);
|
||||||
MALLOC(self->grad_col_d, float, max_num_balls* n_channels);
|
MALLOC(self->grad_col_d, float, max_num_balls* n_channels);
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ GLOBAL void render(
|
|||||||
/** Whether loading of balls is completed. */
|
/** Whether loading of balls is completed. */
|
||||||
SHARED bool loading_done;
|
SHARED bool loading_done;
|
||||||
/** The number of balls loaded overall (just for statistics). */
|
/** The number of balls loaded overall (just for statistics). */
|
||||||
SHARED int n_balls_loaded;
|
[[maybe_unused]] SHARED int n_balls_loaded;
|
||||||
/** The area this thread block covers. */
|
/** The area this thread block covers. */
|
||||||
SHARED IntersectInfo block_area;
|
SHARED IntersectInfo block_area;
|
||||||
if (thread_block.thread_rank() == 0) {
|
if (thread_block.thread_rank() == 0) {
|
||||||
|
|||||||
@@ -244,8 +244,7 @@ at::Tensor RasterizeCoarseCuda(
|
|||||||
if (num_bins_y >= kMaxItemsPerBin || num_bins_x >= kMaxItemsPerBin) {
|
if (num_bins_y >= kMaxItemsPerBin || num_bins_x >= kMaxItemsPerBin) {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "In RasterizeCoarseCuda got num_bins_y: " << num_bins_y
|
ss << "In RasterizeCoarseCuda got num_bins_y: " << num_bins_y
|
||||||
<< ", num_bins_x: " << num_bins_x << ", "
|
<< ", num_bins_x: " << num_bins_x << ", " << "; that's too many!";
|
||||||
<< "; that's too many!";
|
|
||||||
AT_ERROR(ss.str());
|
AT_ERROR(ss.str());
|
||||||
}
|
}
|
||||||
auto opts = elems_per_batch.options().dtype(at::kInt);
|
auto opts = elems_per_batch.options().dtype(at::kInt);
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ __device__ void CheckPixelInsideFace(
|
|||||||
const bool zero_face_area =
|
const bool zero_face_area =
|
||||||
(face_area <= kEpsilon && face_area >= -1.0f * kEpsilon);
|
(face_area <= kEpsilon && face_area >= -1.0f * kEpsilon);
|
||||||
|
|
||||||
if (zmax < 0 || cull_backfaces && back_face || outside_bbox ||
|
if (zmax < 0 || (cull_backfaces && back_face) || outside_bbox ||
|
||||||
zero_face_area) {
|
zero_face_area) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ const auto vEpsilon = 1e-8;
|
|||||||
|
|
||||||
// Common functions and operators for float2.
|
// Common functions and operators for float2.
|
||||||
|
|
||||||
|
// Complex arithmetic is already defined for AMD.
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__device__ inline float2 operator-(const float2& a, const float2& b) {
|
__device__ inline float2 operator-(const float2& a, const float2& b) {
|
||||||
return make_float2(a.x - b.x, a.y - b.y);
|
return make_float2(a.x - b.x, a.y - b.y);
|
||||||
}
|
}
|
||||||
@@ -41,6 +43,7 @@ __device__ inline float2 operator*(const float2& a, const float2& b) {
|
|||||||
__device__ inline float2 operator*(const float a, const float2& b) {
|
__device__ inline float2 operator*(const float a, const float2& b) {
|
||||||
return make_float2(a * b.x, a * b.y);
|
return make_float2(a * b.x, a * b.y);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
__device__ inline float FloatMin3(const float a, const float b, const float c) {
|
__device__ inline float FloatMin3(const float a, const float b, const float c) {
|
||||||
return fminf(a, fminf(b, c));
|
return fminf(a, fminf(b, c));
|
||||||
|
|||||||
@@ -23,37 +23,51 @@ WarpReduceMin(scalar_t* min_dists, int64_t* min_idxs, const size_t tid) {
|
|||||||
min_idxs[tid] = min_idxs[tid + 32];
|
min_idxs[tid] = min_idxs[tid + 32];
|
||||||
min_dists[tid] = min_dists[tid + 32];
|
min_dists[tid] = min_dists[tid + 32];
|
||||||
}
|
}
|
||||||
|
// AMD does not use explicit syncwarp and instead automatically inserts memory
|
||||||
|
// fences during compilation.
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
// s = 16
|
// s = 16
|
||||||
if (min_dists[tid] > min_dists[tid + 16]) {
|
if (min_dists[tid] > min_dists[tid + 16]) {
|
||||||
min_idxs[tid] = min_idxs[tid + 16];
|
min_idxs[tid] = min_idxs[tid + 16];
|
||||||
min_dists[tid] = min_dists[tid + 16];
|
min_dists[tid] = min_dists[tid + 16];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
// s = 8
|
// s = 8
|
||||||
if (min_dists[tid] > min_dists[tid + 8]) {
|
if (min_dists[tid] > min_dists[tid + 8]) {
|
||||||
min_idxs[tid] = min_idxs[tid + 8];
|
min_idxs[tid] = min_idxs[tid + 8];
|
||||||
min_dists[tid] = min_dists[tid + 8];
|
min_dists[tid] = min_dists[tid + 8];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
// s = 4
|
// s = 4
|
||||||
if (min_dists[tid] > min_dists[tid + 4]) {
|
if (min_dists[tid] > min_dists[tid + 4]) {
|
||||||
min_idxs[tid] = min_idxs[tid + 4];
|
min_idxs[tid] = min_idxs[tid + 4];
|
||||||
min_dists[tid] = min_dists[tid + 4];
|
min_dists[tid] = min_dists[tid + 4];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
// s = 2
|
// s = 2
|
||||||
if (min_dists[tid] > min_dists[tid + 2]) {
|
if (min_dists[tid] > min_dists[tid + 2]) {
|
||||||
min_idxs[tid] = min_idxs[tid + 2];
|
min_idxs[tid] = min_idxs[tid + 2];
|
||||||
min_dists[tid] = min_dists[tid + 2];
|
min_dists[tid] = min_dists[tid + 2];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
// s = 1
|
// s = 1
|
||||||
if (min_dists[tid] > min_dists[tid + 1]) {
|
if (min_dists[tid] > min_dists[tid + 1]) {
|
||||||
min_idxs[tid] = min_idxs[tid + 1];
|
min_idxs[tid] = min_idxs[tid + 1];
|
||||||
min_dists[tid] = min_dists[tid + 1];
|
min_dists[tid] = min_dists[tid + 1];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename scalar_t>
|
template <typename scalar_t>
|
||||||
@@ -65,30 +79,42 @@ __device__ void WarpReduceMax(
|
|||||||
dists[tid] = dists[tid + 32];
|
dists[tid] = dists[tid + 32];
|
||||||
dists_idx[tid] = dists_idx[tid + 32];
|
dists_idx[tid] = dists_idx[tid + 32];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
if (dists[tid] < dists[tid + 16]) {
|
if (dists[tid] < dists[tid + 16]) {
|
||||||
dists[tid] = dists[tid + 16];
|
dists[tid] = dists[tid + 16];
|
||||||
dists_idx[tid] = dists_idx[tid + 16];
|
dists_idx[tid] = dists_idx[tid + 16];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
if (dists[tid] < dists[tid + 8]) {
|
if (dists[tid] < dists[tid + 8]) {
|
||||||
dists[tid] = dists[tid + 8];
|
dists[tid] = dists[tid + 8];
|
||||||
dists_idx[tid] = dists_idx[tid + 8];
|
dists_idx[tid] = dists_idx[tid + 8];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
if (dists[tid] < dists[tid + 4]) {
|
if (dists[tid] < dists[tid + 4]) {
|
||||||
dists[tid] = dists[tid + 4];
|
dists[tid] = dists[tid + 4];
|
||||||
dists_idx[tid] = dists_idx[tid + 4];
|
dists_idx[tid] = dists_idx[tid + 4];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
if (dists[tid] < dists[tid + 2]) {
|
if (dists[tid] < dists[tid + 2]) {
|
||||||
dists[tid] = dists[tid + 2];
|
dists[tid] = dists[tid + 2];
|
||||||
dists_idx[tid] = dists_idx[tid + 2];
|
dists_idx[tid] = dists_idx[tid + 2];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
if (dists[tid] < dists[tid + 1]) {
|
if (dists[tid] < dists[tid + 1]) {
|
||||||
dists[tid] = dists[tid + 1];
|
dists[tid] = dists[tid + 1];
|
||||||
dists_idx[tid] = dists_idx[tid + 1];
|
dists_idx[tid] = dists_idx[tid + 1];
|
||||||
}
|
}
|
||||||
|
#if !defined(USE_ROCM)
|
||||||
__syncwarp();
|
__syncwarp();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .r2n2 import BlenderCamera, collate_batched_R2N2, R2N2, render_cubified_voxels
|
from .r2n2 import BlenderCamera, collate_batched_R2N2, R2N2, render_cubified_voxels
|
||||||
from .shapenet import ShapeNetCore
|
from .shapenet import ShapeNetCore
|
||||||
from .utils import collate_batched_meshes
|
from .utils import collate_batched_meshes
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .r2n2 import R2N2
|
from .r2n2 import R2N2
|
||||||
from .utils import BlenderCamera, collate_batched_R2N2, render_cubified_voxels
|
from .utils import BlenderCamera, collate_batched_R2N2, render_cubified_voxels
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import warnings
|
import warnings
|
||||||
from os import path
|
from os import path
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .shapenet_core import ShapeNetCore
|
from .shapenet_core import ShapeNetCore
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import warnings
|
import warnings
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import warnings
|
import warnings
|
||||||
from typing import Dict, List, Optional, Tuple
|
from typing import Dict, List, Optional, Tuple
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
from pytorch3d.renderer.mesh import TexturesAtlas
|
from pytorch3d.renderer.mesh import TexturesAtlas
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
from pytorch3d.implicitron.tools.config import registry
|
from pytorch3d.implicitron.tools.config import registry
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Iterator, List, Optional, Tuple
|
from typing import Iterator, List, Optional, Tuple
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
from pytorch3d.implicitron.tools.config import (
|
from pytorch3d.implicitron.tools.config import (
|
||||||
@@ -39,7 +41,7 @@ class DataSourceBase(ReplaceableBase):
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class ImplicitronDataSource(DataSourceBase): # pyre-ignore[13]
|
class ImplicitronDataSource(DataSourceBase):
|
||||||
"""
|
"""
|
||||||
Represents the data used in Implicitron. This is the only implementation
|
Represents the data used in Implicitron. This is the only implementation
|
||||||
of DataSourceBase provided.
|
of DataSourceBase provided.
|
||||||
@@ -50,8 +52,11 @@ class ImplicitronDataSource(DataSourceBase): # pyre-ignore[13]
|
|||||||
data_loader_map_provider_class_type: identifies type for data_loader_map_provider.
|
data_loader_map_provider_class_type: identifies type for data_loader_map_provider.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `dataset_map_provider` is never initialized.
|
||||||
dataset_map_provider: DatasetMapProviderBase
|
dataset_map_provider: DatasetMapProviderBase
|
||||||
|
# pyre-fixme[13]: Attribute `dataset_map_provider_class_type` is never initialized.
|
||||||
dataset_map_provider_class_type: str
|
dataset_map_provider_class_type: str
|
||||||
|
# pyre-fixme[13]: Attribute `data_loader_map_provider` is never initialized.
|
||||||
data_loader_map_provider: DataLoaderMapProviderBase
|
data_loader_map_provider: DataLoaderMapProviderBase
|
||||||
data_loader_map_provider_class_type: str = "SequenceDataLoaderMapProvider"
|
data_loader_map_provider_class_type: str = "SequenceDataLoaderMapProvider"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import (
|
from typing import (
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
@@ -274,6 +276,7 @@ class FrameData(Mapping[str, Any]):
|
|||||||
image_size_hw=tuple(self.effective_image_size_hw), # pyre-ignore
|
image_size_hw=tuple(self.effective_image_size_hw), # pyre-ignore
|
||||||
)
|
)
|
||||||
crop_bbox_xywh = bbox_xyxy_to_xywh(clamp_bbox_xyxy)
|
crop_bbox_xywh = bbox_xyxy_to_xywh(clamp_bbox_xyxy)
|
||||||
|
self.crop_bbox_xywh = crop_bbox_xywh
|
||||||
|
|
||||||
if self.fg_probability is not None:
|
if self.fg_probability is not None:
|
||||||
self.fg_probability = crop_around_box(
|
self.fg_probability = crop_around_box(
|
||||||
@@ -432,7 +435,7 @@ class FrameData(Mapping[str, Any]):
|
|||||||
# TODO: don't store K; enforce working in NDC space
|
# TODO: don't store K; enforce working in NDC space
|
||||||
return join_cameras_as_batch(batch)
|
return join_cameras_as_batch(batch)
|
||||||
else:
|
else:
|
||||||
return torch.utils.data._utils.collate.default_collate(batch)
|
return torch.utils.data.dataloader.default_collate(batch)
|
||||||
|
|
||||||
|
|
||||||
FrameDataSubtype = TypeVar("FrameDataSubtype", bound=FrameData)
|
FrameDataSubtype = TypeVar("FrameDataSubtype", bound=FrameData)
|
||||||
@@ -576,11 +579,11 @@ class GenericFrameDataBuilder(FrameDataBuilderBase[FrameDataSubtype], ABC):
|
|||||||
camera_quality_score=safe_as_tensor(
|
camera_quality_score=safe_as_tensor(
|
||||||
sequence_annotation.viewpoint_quality_score, torch.float
|
sequence_annotation.viewpoint_quality_score, torch.float
|
||||||
),
|
),
|
||||||
point_cloud_quality_score=safe_as_tensor(
|
point_cloud_quality_score=(
|
||||||
point_cloud.quality_score, torch.float
|
safe_as_tensor(point_cloud.quality_score, torch.float)
|
||||||
)
|
if point_cloud is not None
|
||||||
if point_cloud is not None
|
else None
|
||||||
else None,
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
fg_mask_np: Optional[np.ndarray] = None
|
fg_mask_np: Optional[np.ndarray] = None
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import functools
|
import functools
|
||||||
import gzip
|
import gzip
|
||||||
@@ -124,9 +126,9 @@ class JsonIndexDataset(DatasetBase, ReplaceableBase):
|
|||||||
dimension of the cropping bounding box, relative to box size.
|
dimension of the cropping bounding box, relative to box size.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
frame_annotations_type: ClassVar[
|
frame_annotations_type: ClassVar[Type[types.FrameAnnotation]] = (
|
||||||
Type[types.FrameAnnotation]
|
types.FrameAnnotation
|
||||||
] = types.FrameAnnotation
|
)
|
||||||
|
|
||||||
path_manager: Any = None
|
path_manager: Any = None
|
||||||
frame_annotations_file: str = ""
|
frame_annotations_file: str = ""
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@@ -64,7 +66,7 @@ _NEED_CONTROL: Tuple[str, ...] = (
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class JsonIndexDatasetMapProvider(DatasetMapProviderBase): # pyre-ignore [13]
|
class JsonIndexDatasetMapProvider(DatasetMapProviderBase):
|
||||||
"""
|
"""
|
||||||
Generates the training / validation and testing dataset objects for
|
Generates the training / validation and testing dataset objects for
|
||||||
a dataset laid out on disk like Co3D, with annotations in json files.
|
a dataset laid out on disk like Co3D, with annotations in json files.
|
||||||
@@ -93,6 +95,7 @@ class JsonIndexDatasetMapProvider(DatasetMapProviderBase): # pyre-ignore [13]
|
|||||||
path_manager_factory_class_type: The class type of `path_manager_factory`.
|
path_manager_factory_class_type: The class type of `path_manager_factory`.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `category` is never initialized.
|
||||||
category: str
|
category: str
|
||||||
task_str: str = "singlesequence"
|
task_str: str = "singlesequence"
|
||||||
dataset_root: str = _CO3D_DATASET_ROOT
|
dataset_root: str = _CO3D_DATASET_ROOT
|
||||||
@@ -102,8 +105,10 @@ class JsonIndexDatasetMapProvider(DatasetMapProviderBase): # pyre-ignore [13]
|
|||||||
test_restrict_sequence_id: int = -1
|
test_restrict_sequence_id: int = -1
|
||||||
assert_single_seq: bool = False
|
assert_single_seq: bool = False
|
||||||
only_test_set: bool = False
|
only_test_set: bool = False
|
||||||
|
# pyre-fixme[13]: Attribute `dataset` is never initialized.
|
||||||
dataset: JsonIndexDataset
|
dataset: JsonIndexDataset
|
||||||
dataset_class_type: str = "JsonIndexDataset"
|
dataset_class_type: str = "JsonIndexDataset"
|
||||||
|
# pyre-fixme[13]: Attribute `path_manager_factory` is never initialized.
|
||||||
path_manager_factory: PathManagerFactory
|
path_manager_factory: PathManagerFactory
|
||||||
path_manager_factory_class_type: str = "PathManagerFactory"
|
path_manager_factory_class_type: str = "PathManagerFactory"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
@@ -54,7 +56,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class JsonIndexDatasetMapProviderV2(DatasetMapProviderBase): # pyre-ignore [13]
|
class JsonIndexDatasetMapProviderV2(DatasetMapProviderBase):
|
||||||
"""
|
"""
|
||||||
Generates the training, validation, and testing dataset objects for
|
Generates the training, validation, and testing dataset objects for
|
||||||
a dataset laid out on disk like CO3Dv2, with annotations in gzipped json files.
|
a dataset laid out on disk like CO3Dv2, with annotations in gzipped json files.
|
||||||
@@ -169,7 +171,9 @@ class JsonIndexDatasetMapProviderV2(DatasetMapProviderBase): # pyre-ignore [13]
|
|||||||
path_manager_factory_class_type: The class type of `path_manager_factory`.
|
path_manager_factory_class_type: The class type of `path_manager_factory`.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `category` is never initialized.
|
||||||
category: str
|
category: str
|
||||||
|
# pyre-fixme[13]: Attribute `subset_name` is never initialized.
|
||||||
subset_name: str
|
subset_name: str
|
||||||
dataset_root: str = _CO3DV2_DATASET_ROOT
|
dataset_root: str = _CO3DV2_DATASET_ROOT
|
||||||
|
|
||||||
@@ -181,8 +185,10 @@ class JsonIndexDatasetMapProviderV2(DatasetMapProviderBase): # pyre-ignore [13]
|
|||||||
n_known_frames_for_test: int = 0
|
n_known_frames_for_test: int = 0
|
||||||
|
|
||||||
dataset_class_type: str = "JsonIndexDataset"
|
dataset_class_type: str = "JsonIndexDataset"
|
||||||
|
# pyre-fixme[13]: Attribute `dataset` is never initialized.
|
||||||
dataset: JsonIndexDataset
|
dataset: JsonIndexDataset
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `path_manager_factory` is never initialized.
|
||||||
path_manager_factory: PathManagerFactory
|
path_manager_factory: PathManagerFactory
|
||||||
path_manager_factory_class_type: str = "PathManagerFactory"
|
path_manager_factory_class_type: str = "PathManagerFactory"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
# @lint-ignore-every LICENSELINT
|
# @lint-ignore-every LICENSELINT
|
||||||
# Adapted from https://github.com/bmild/nerf/blob/master/load_blender.py
|
# Adapted from https://github.com/bmild/nerf/blob/master/load_blender.py
|
||||||
# Copyright (c) 2020 bmild
|
# Copyright (c) 2020 bmild
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
# @lint-ignore-every LICENSELINT
|
# @lint-ignore-every LICENSELINT
|
||||||
# Adapted from https://github.com/bmild/nerf/blob/master/load_llff.py
|
# Adapted from https://github.com/bmild/nerf/blob/master/load_llff.py
|
||||||
# Copyright (c) 2020 bmild
|
# Copyright (c) 2020 bmild
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import warnings
|
import warnings
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from os.path import dirname, join, realpath
|
from os.path import dirname, join, realpath
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
@@ -30,7 +32,7 @@ from .utils import DATASET_TYPE_KNOWN
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class RenderedMeshDatasetMapProvider(DatasetMapProviderBase): # pyre-ignore [13]
|
class RenderedMeshDatasetMapProvider(DatasetMapProviderBase):
|
||||||
"""
|
"""
|
||||||
A simple single-scene dataset based on PyTorch3D renders of a mesh.
|
A simple single-scene dataset based on PyTorch3D renders of a mesh.
|
||||||
Provides `num_views` renders of the mesh as train, with no val
|
Provides `num_views` renders of the mesh as train, with no val
|
||||||
@@ -74,6 +76,7 @@ class RenderedMeshDatasetMapProvider(DatasetMapProviderBase): # pyre-ignore [13
|
|||||||
resolution: int = 128
|
resolution: int = 128
|
||||||
use_point_light: bool = True
|
use_point_light: bool = True
|
||||||
gpu_idx: Optional[int] = 0
|
gpu_idx: Optional[int] = 0
|
||||||
|
# pyre-fixme[13]: Attribute `path_manager_factory` is never initialized.
|
||||||
path_manager_factory: PathManagerFactory
|
path_manager_factory: PathManagerFactory
|
||||||
path_manager_factory_class_type: str = "PathManagerFactory"
|
path_manager_factory_class_type: str = "PathManagerFactory"
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import warnings
|
import warnings
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
# This file defines a base class for dataset map providers which
|
# This file defines a base class for dataset map providers which
|
||||||
# provide data for a single scene.
|
# provide data for a single scene.
|
||||||
@@ -81,7 +83,6 @@ class SingleSceneDataset(DatasetBase, Configurable):
|
|||||||
return self.eval_batches
|
return self.eval_batches
|
||||||
|
|
||||||
|
|
||||||
# pyre-fixme[13]: Uninitialized attribute
|
|
||||||
class SingleSceneDatasetMapProviderBase(DatasetMapProviderBase):
|
class SingleSceneDatasetMapProviderBase(DatasetMapProviderBase):
|
||||||
"""
|
"""
|
||||||
Base for provider of data for one scene from LLFF or blender datasets.
|
Base for provider of data for one scene from LLFF or blender datasets.
|
||||||
@@ -98,8 +99,11 @@ class SingleSceneDatasetMapProviderBase(DatasetMapProviderBase):
|
|||||||
testing frame.
|
testing frame.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `base_dir` is never initialized.
|
||||||
base_dir: str
|
base_dir: str
|
||||||
|
# pyre-fixme[13]: Attribute `object_name` is never initialized.
|
||||||
object_name: str
|
object_name: str
|
||||||
|
# pyre-fixme[13]: Attribute `path_manager_factory` is never initialized.
|
||||||
path_manager_factory: PathManagerFactory
|
path_manager_factory: PathManagerFactory
|
||||||
path_manager_factory_class_type: str = "PathManagerFactory"
|
path_manager_factory_class_type: str = "PathManagerFactory"
|
||||||
n_known_frames_for_test: Optional[int] = None
|
n_known_frames_for_test: Optional[int] = None
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, Dict, Optional, Tuple
|
from typing import Any, Dict, Optional, Tuple
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import dataclasses
|
import dataclasses
|
||||||
import gzip
|
import gzip
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
import warnings
|
import warnings
|
||||||
@@ -346,6 +348,7 @@ def adjust_camera_to_image_scale_(
|
|||||||
camera: PerspectiveCameras,
|
camera: PerspectiveCameras,
|
||||||
original_size_wh: torch.Tensor,
|
original_size_wh: torch.Tensor,
|
||||||
new_size_wh: torch.LongTensor,
|
new_size_wh: torch.LongTensor,
|
||||||
|
# pyre-fixme[7]: Expected `PerspectiveCameras` but got implicit return value of `None`.
|
||||||
) -> PerspectiveCameras:
|
) -> PerspectiveCameras:
|
||||||
focal_length_px, principal_point_px = _convert_ndc_to_pixels(
|
focal_length_px, principal_point_px = _convert_ndc_to_pixels(
|
||||||
camera.focal_length[0],
|
camera.focal_length[0],
|
||||||
@@ -365,7 +368,7 @@ def adjust_camera_to_image_scale_(
|
|||||||
image_size_wh_output,
|
image_size_wh_output,
|
||||||
)
|
)
|
||||||
camera.focal_length = focal_length_scaled[None]
|
camera.focal_length = focal_length_scaled[None]
|
||||||
camera.principal_point = principal_point_scaled[None] # pyre-ignore
|
camera.principal_point = principal_point_scaled[None]
|
||||||
|
|
||||||
|
|
||||||
# NOTE this cache is per-worker; they are implemented as processes.
|
# NOTE this cache is per-worker; they are implemented as processes.
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import cast, Optional, Tuple
|
from typing import cast, Optional, Tuple
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
@@ -88,9 +90,11 @@ def get_implicitron_sequence_pointcloud(
|
|||||||
frame_data.camera,
|
frame_data.camera,
|
||||||
frame_data.image_rgb,
|
frame_data.image_rgb,
|
||||||
frame_data.depth_map,
|
frame_data.depth_map,
|
||||||
(cast(torch.Tensor, frame_data.fg_probability) > 0.5).float()
|
(
|
||||||
if mask_points and frame_data.fg_probability is not None
|
(cast(torch.Tensor, frame_data.fg_probability) > 0.5).float()
|
||||||
else None,
|
if mask_points and frame_data.fg_probability is not None
|
||||||
|
else None
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
return point_cloud, frame_data
|
return point_cloud, frame_data
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import dataclasses
|
import dataclasses
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import warnings
|
import warnings
|
||||||
@@ -282,9 +284,9 @@ def eval_batch(
|
|||||||
image_rgb_masked=image_rgb_masked,
|
image_rgb_masked=image_rgb_masked,
|
||||||
depth_render=cloned_render["depth_render"],
|
depth_render=cloned_render["depth_render"],
|
||||||
depth_map=frame_data.depth_map,
|
depth_map=frame_data.depth_map,
|
||||||
depth_mask=frame_data.depth_mask[:1]
|
depth_mask=(
|
||||||
if frame_data.depth_mask is not None
|
frame_data.depth_mask[:1] if frame_data.depth_mask is not None else None
|
||||||
else None,
|
),
|
||||||
visdom_env=visualize_visdom_env,
|
visdom_env=visualize_visdom_env,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
# Allows to register the models
|
# Allows to register the models
|
||||||
# see: pytorch3d.implicitron.tools.config.registry:register
|
# see: pytorch3d.implicitron.tools.config.registry:register
|
||||||
from pytorch3d.implicitron.models.generic_model import GenericModel
|
from pytorch3d.implicitron.models.generic_model import GenericModel
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,6 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from .feature_extractor import FeatureExtractorBase
|
from .feature_extractor import FeatureExtractorBase
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
from typing import Any, Dict, Optional, Tuple
|
from typing import Any, Dict, Optional, Tuple
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
|
|
||||||
# Note: The #noqa comments below are for unused imports of pluggable implementations
|
# Note: The #noqa comments below are for unused imports of pluggable implementations
|
||||||
# which are part of implicitron. They ensure that the registry is prepopulated.
|
# which are part of implicitron. They ensure that the registry is prepopulated.
|
||||||
@@ -63,7 +65,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
class GenericModel(ImplicitronModelBase): # pyre-ignore: 13
|
class GenericModel(ImplicitronModelBase):
|
||||||
"""
|
"""
|
||||||
GenericModel is a wrapper for the neural implicit
|
GenericModel is a wrapper for the neural implicit
|
||||||
rendering and reconstruction pipeline which consists
|
rendering and reconstruction pipeline which consists
|
||||||
@@ -224,34 +226,42 @@ class GenericModel(ImplicitronModelBase): # pyre-ignore: 13
|
|||||||
|
|
||||||
# ---- global encoder settings
|
# ---- global encoder settings
|
||||||
global_encoder_class_type: Optional[str] = None
|
global_encoder_class_type: Optional[str] = None
|
||||||
|
# pyre-fixme[13]: Attribute `global_encoder` is never initialized.
|
||||||
global_encoder: Optional[GlobalEncoderBase]
|
global_encoder: Optional[GlobalEncoderBase]
|
||||||
|
|
||||||
# ---- raysampler
|
# ---- raysampler
|
||||||
raysampler_class_type: str = "AdaptiveRaySampler"
|
raysampler_class_type: str = "AdaptiveRaySampler"
|
||||||
|
# pyre-fixme[13]: Attribute `raysampler` is never initialized.
|
||||||
raysampler: RaySamplerBase
|
raysampler: RaySamplerBase
|
||||||
|
|
||||||
# ---- renderer configs
|
# ---- renderer configs
|
||||||
renderer_class_type: str = "MultiPassEmissionAbsorptionRenderer"
|
renderer_class_type: str = "MultiPassEmissionAbsorptionRenderer"
|
||||||
|
# pyre-fixme[13]: Attribute `renderer` is never initialized.
|
||||||
renderer: BaseRenderer
|
renderer: BaseRenderer
|
||||||
|
|
||||||
# ---- image feature extractor settings
|
# ---- image feature extractor settings
|
||||||
# (This is only created if view_pooler is enabled)
|
# (This is only created if view_pooler is enabled)
|
||||||
|
# pyre-fixme[13]: Attribute `image_feature_extractor` is never initialized.
|
||||||
image_feature_extractor: Optional[FeatureExtractorBase]
|
image_feature_extractor: Optional[FeatureExtractorBase]
|
||||||
image_feature_extractor_class_type: Optional[str] = None
|
image_feature_extractor_class_type: Optional[str] = None
|
||||||
# ---- view pooler settings
|
# ---- view pooler settings
|
||||||
view_pooler_enabled: bool = False
|
view_pooler_enabled: bool = False
|
||||||
|
# pyre-fixme[13]: Attribute `view_pooler` is never initialized.
|
||||||
view_pooler: Optional[ViewPooler]
|
view_pooler: Optional[ViewPooler]
|
||||||
|
|
||||||
# ---- implicit function settings
|
# ---- implicit function settings
|
||||||
implicit_function_class_type: str = "NeuralRadianceFieldImplicitFunction"
|
implicit_function_class_type: str = "NeuralRadianceFieldImplicitFunction"
|
||||||
# This is just a model, never constructed.
|
# This is just a model, never constructed.
|
||||||
# The actual implicit functions live in self._implicit_functions
|
# The actual implicit functions live in self._implicit_functions
|
||||||
|
# pyre-fixme[13]: Attribute `implicit_function` is never initialized.
|
||||||
implicit_function: ImplicitFunctionBase
|
implicit_function: ImplicitFunctionBase
|
||||||
|
|
||||||
# ----- metrics
|
# ----- metrics
|
||||||
|
# pyre-fixme[13]: Attribute `view_metrics` is never initialized.
|
||||||
view_metrics: ViewMetricsBase
|
view_metrics: ViewMetricsBase
|
||||||
view_metrics_class_type: str = "ViewMetrics"
|
view_metrics_class_type: str = "ViewMetrics"
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `regularization_metrics` is never initialized.
|
||||||
regularization_metrics: RegularizationMetricsBase
|
regularization_metrics: RegularizationMetricsBase
|
||||||
regularization_metrics_class_type: str = "RegularizationMetrics"
|
regularization_metrics_class_type: str = "RegularizationMetrics"
|
||||||
|
|
||||||
@@ -395,9 +405,11 @@ class GenericModel(ImplicitronModelBase): # pyre-ignore: 13
|
|||||||
n_targets = (
|
n_targets = (
|
||||||
1
|
1
|
||||||
if evaluation_mode == EvaluationMode.EVALUATION
|
if evaluation_mode == EvaluationMode.EVALUATION
|
||||||
else batch_size
|
else (
|
||||||
if self.n_train_target_views <= 0
|
batch_size
|
||||||
else min(self.n_train_target_views, batch_size)
|
if self.n_train_target_views <= 0
|
||||||
|
else min(self.n_train_target_views, batch_size)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# A helper function for selecting n_target first elements from the input
|
# A helper function for selecting n_target first elements from the input
|
||||||
@@ -422,9 +434,12 @@ class GenericModel(ImplicitronModelBase): # pyre-ignore: 13
|
|||||||
ray_bundle: ImplicitronRayBundle = self.raysampler(
|
ray_bundle: ImplicitronRayBundle = self.raysampler(
|
||||||
target_cameras,
|
target_cameras,
|
||||||
evaluation_mode,
|
evaluation_mode,
|
||||||
mask=mask_crop[:n_targets]
|
mask=(
|
||||||
if mask_crop is not None and sampling_mode == RenderSamplingMode.MASK_SAMPLE
|
mask_crop[:n_targets]
|
||||||
else None,
|
if mask_crop is not None
|
||||||
|
and sampling_mode == RenderSamplingMode.MASK_SAMPLE
|
||||||
|
else None
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
# custom_args hold additional arguments to the implicit function.
|
# custom_args hold additional arguments to the implicit function.
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import warnings
|
import warnings
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from typing import Dict, List, Optional, Union
|
from typing import Dict, List, Optional, Union
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from typing import List, Optional, Union
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
@@ -57,12 +59,13 @@ class GlobalEncoderBase(ReplaceableBase):
|
|||||||
|
|
||||||
# TODO: probabilistic embeddings?
|
# TODO: probabilistic embeddings?
|
||||||
@registry.register
|
@registry.register
|
||||||
class SequenceAutodecoder(GlobalEncoderBase, torch.nn.Module): # pyre-ignore: 13
|
class SequenceAutodecoder(GlobalEncoderBase, torch.nn.Module):
|
||||||
"""
|
"""
|
||||||
A global encoder implementation which provides an autodecoder encoding
|
A global encoder implementation which provides an autodecoder encoding
|
||||||
of the frame's sequence identifier.
|
of the frame's sequence identifier.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# pyre-fixme[13]: Attribute `autodecoder` is never initialized.
|
||||||
autodecoder: Autodecoder
|
autodecoder: Autodecoder
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
|
|||||||
@@ -3,3 +3,5 @@
|
|||||||
#
|
#
|
||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This file contains
|
This file contains
|
||||||
- modules which get used by ImplicitFunction objects for decoding an embedding defined in
|
- modules which get used by ImplicitFunction objects for decoding an embedding defined in
|
||||||
@@ -242,7 +244,6 @@ class MLPWithInputSkips(Configurable, torch.nn.Module):
|
|||||||
|
|
||||||
|
|
||||||
@registry.register
|
@registry.register
|
||||||
# pyre-fixme[13]: Attribute `network` is never initialized.
|
|
||||||
class MLPDecoder(DecoderFunctionBase):
|
class MLPDecoder(DecoderFunctionBase):
|
||||||
"""
|
"""
|
||||||
Decoding function which uses `MLPWithIputSkips` to convert the embedding to output.
|
Decoding function which uses `MLPWithIputSkips` to convert the embedding to output.
|
||||||
@@ -270,6 +271,7 @@ class MLPDecoder(DecoderFunctionBase):
|
|||||||
|
|
||||||
input_dim: int = 3
|
input_dim: int = 3
|
||||||
param_groups: Dict[str, str] = field(default_factory=lambda: {})
|
param_groups: Dict[str, str] = field(default_factory=lambda: {})
|
||||||
|
# pyre-fixme[13]: Attribute `network` is never initialized.
|
||||||
network: MLPWithInputSkips
|
network: MLPWithInputSkips
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
# Adapted from https://github.com/lioryariv/idr/blob/main/code/model/
|
# Adapted from https://github.com/lioryariv/idr/blob/main/code/model/
|
||||||
# implicit_differentiable_renderer.py
|
# implicit_differentiable_renderer.py
|
||||||
# Copyright (c) 2020 Lior Yariv
|
# Copyright (c) 2020 Lior Yariv
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
import math
|
import math
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
@@ -102,9 +104,7 @@ class IdrFeatureField(ImplicitFunctionBase, torch.nn.Module):
|
|||||||
elif self.n_harmonic_functions_xyz >= 0 and layer_idx == 0:
|
elif self.n_harmonic_functions_xyz >= 0 and layer_idx == 0:
|
||||||
torch.nn.init.constant_(lin.bias, 0.0)
|
torch.nn.init.constant_(lin.bias, 0.0)
|
||||||
torch.nn.init.constant_(lin.weight[:, 3:], 0.0)
|
torch.nn.init.constant_(lin.weight[:, 3:], 0.0)
|
||||||
torch.nn.init.normal_(
|
torch.nn.init.normal_(lin.weight[:, :3], 0.0, 2**0.5 / out_dim**0.5)
|
||||||
lin.weight[:, :3], 0.0, 2**0.5 / out_dim**0.5
|
|
||||||
)
|
|
||||||
elif self.n_harmonic_functions_xyz >= 0 and layer_idx in self.skip_in:
|
elif self.n_harmonic_functions_xyz >= 0 and layer_idx in self.skip_in:
|
||||||
torch.nn.init.constant_(lin.bias, 0.0)
|
torch.nn.init.constant_(lin.bias, 0.0)
|
||||||
torch.nn.init.normal_(lin.weight, 0.0, 2**0.5 / out_dim**0.5)
|
torch.nn.init.normal_(lin.weight, 0.0, 2**0.5 / out_dim**0.5)
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
# This source code is licensed under the BSD-style license found in the
|
# This source code is licensed under the BSD-style license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
|
# pyre-unsafe
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
@@ -193,9 +195,9 @@ class NeuralRadianceFieldBase(ImplicitFunctionBase, torch.nn.Module):
|
|||||||
embeds = create_embeddings_for_implicit_function(
|
embeds = create_embeddings_for_implicit_function(
|
||||||
xyz_world=rays_points_world,
|
xyz_world=rays_points_world,
|
||||||
# for 2nd param but got `Union[None, torch.Tensor, torch.nn.Module]`.
|
# for 2nd param but got `Union[None, torch.Tensor, torch.nn.Module]`.
|
||||||
xyz_embedding_function=self.harmonic_embedding_xyz
|
xyz_embedding_function=(
|
||||||
if self.input_xyz
|
self.harmonic_embedding_xyz if self.input_xyz else None
|
||||||
else None,
|
),
|
||||||
global_code=global_code,
|
global_code=global_code,
|
||||||
fun_viewpool=fun_viewpool,
|
fun_viewpool=fun_viewpool,
|
||||||
xyz_in_camera_coords=self.xyz_ray_dir_in_camera_coords,
|
xyz_in_camera_coords=self.xyz_ray_dir_in_camera_coords,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user