Skip to content

Commit c071de4

Browse files
committed
update readme and equilib versions
1 parent b2e0553 commit c071de4

File tree

8 files changed

+107
-119
lines changed

8 files changed

+107
-119
lines changed

.readme/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@
1010
## Grid Sample
1111

1212
- [`grid_sample`](grid_sample.md)
13+
14+
## Benchmarks
15+
16+
- [`bencmarks`](benchmarks.md

.readme/benchmarks.md

+99-36
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,99 @@
1-
tests/test_cube2equi.py test_numpy_single
2-
Func:run_cube2equi: 0.0360
3-
.test_numpy_batch
4-
Func:run_cube2equi: 0.1180
5-
.test_torch_single
6-
Func:run_cube2equi: 0.0218
7-
.test_torch_batch
8-
Func:run_cube2equi: 0.0199
9-
.
10-
tests/test_equi2cube.py test_numpy_single
11-
Func:run_equi2cube: 0.1174
12-
.test_numpy_batch
13-
Func:run_equi2cube: 0.4759
14-
.test_torch_single
15-
Func:run_equi2cube: 0.0060
16-
.test_torch_batch
17-
Func:run_equi2cube: 0.0205
18-
.
19-
tests/test_equi2equi.py test_numpy_single
20-
Func:run_equi2equi: 2.4446
21-
.test_numpy_batch
22-
Func:run_equi2equi: 9.8693
23-
.test_torch_single
24-
Func:run_equi2equi: 0.1816
25-
.test_torch_batch
26-
Func:run_equi2equi: 0.5867
27-
.
28-
tests/test_equi2pers.py test_numpy_single
29-
Func:run_equi2pers: 0.0734
30-
.test_numpy_batch
31-
Func:run_equi2pers: 0.2994
32-
.test_torch_single
33-
Func:run_equi2pers: 0.0026
34-
.test_torch_batch
35-
Func:run_equi2pers: 0.0084
36-
.
1+
# Benchmarks
2+
3+
Environment:
4+
- CPU: Intel i9-9960X CPU @ 3.10 GHz
5+
- GPU: Nvidia Qudaro RTX 8000
6+
- RAM: 128 GB
7+
8+
RAM usage doesn't exceed 20 GB, GPU memory usage at batch 64 is roughly 45 GB.
9+
10+
**Transform**|** Type**|** Method**|** Input Size**|** Output Size**|** Batch Size**|** Time (seconds)**
11+
:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:
12+
cube2equi| numpy| default| 256x256| 480x240| 1| 0.0360
13+
cube2equi| numpy| default| 256x256| 480x240| 4| 0.1180
14+
cube2equi| numpy| default| 256x256| 480x240| 16| 0.4512
15+
cube2equi| numpy| default| 256x256| 480x240| 32| 1.0650
16+
cube2equi| numpy| default| 256x256| 480x240| 64| 2.1363
17+
cube2equi| torch| default| 256x256| 480x240| 1| 0.0218
18+
cube2equi| torch| default| 256x256| 480x240| 4| 0.0199
19+
cube2equi| torch| default| 256x256| 480x240| 16| 0.0228
20+
cube2equi| torch| default| 256x256| 480x240| 32| 0.0335
21+
cube2equi| torch| default| 256x256| 480x240| 64| 0.0438
22+
equi2cube| numpy| default| 4000x2000| 256x256| 1| 0.1174
23+
equi2cube| numpy| default| 4000x2000| 256x256| 4| 0.4759
24+
equi2cube| numpy| default| 4000x2000| 256x256| 16| 1.8907
25+
equi2cube| numpy| default| 4000x2000| 256x256| 32| 4.9468
26+
equi2cube| numpy| default| 4000x2000| 256x256| 64| 10.0229
27+
equi2cube| torch| default| 4000x2000| 256x256| 1| 0.0155
28+
equi2cube| torch| default| 4000x2000| 256x256| 4| 0.0328
29+
equi2cube| torch| default| 4000x2000| 256x256| 16| 0.0940
30+
equi2cube| torch| default| 4000x2000| 256x256| 32| 0.1698
31+
equi2cube| torch| default| 4000x2000| 256x256| 64| 0.3200
32+
equi2equi| numpy| default| 4000x2000| 640x320| 1| 2.4446
33+
equi2equi| numpy| default| 4000x2000| 640x320| 4| 9.8693
34+
equi2equi| numpy| default| 4000x2000| 640x320| 16| 42.6679
35+
equi2equi| numpy| default| 4000x2000| 640x320| 32| 96.5504
36+
equi2equi| numpy| default| 4000x2000| 640x320| 64| 193.8804
37+
equi2equi| torch| default| 4000x2000| 640x320| 1| 0.1816
38+
equi2equi| torch| default| 4000x2000| 640x320| 4| 0.5867
39+
equi2equi| torch| default| 4000x2000| 640x320| 16| 2.5047
40+
equi2equi| torch| default| 4000x2000| 640x320| 32| 4.4535
41+
equi2equi| torch| default| 4000x2000| 640x320| 64| 8.7202
42+
equi2pers| numpy| default| 4000x2000| 640x480| 1| 0.0734
43+
equi2pers| numpy| default| 4000x2000| 640x480| 4| 0.2994
44+
equi2pers| numpy| default| 4000x2000| 640x480| 16| 1.1730
45+
equi2pers| numpy| default| 4000x2000| 640x480| 32| 2.7934
46+
equi2pers| numpy| default| 4000x2000| 640x480| 64| 5.4712
47+
equi2pers| torch| default| 4000x2000| 640x480| 1| 0.0026
48+
equi2pers| torch| default| 4000x2000| 640x480| 4| 0.0084
49+
equi2pers| torch| default| 4000x2000| 640x480| 16| 0.0293
50+
equi2pers| torch| default| 4000x2000| 640x480| 32| 0.0447
51+
equi2pers| torch| default| 4000x2000| 640x480| 64| 0.0770
52+
53+
54+
---
55+
56+
CSV:
57+
```
58+
Transform, Type, Method, Input Size, Output Size, Batch Size, Time (seconds)
59+
cube2equi, numpy, default, 256x256, 480x240, 1, 0.0360
60+
cube2equi, numpy, default, 256x256, 480x240, 4, 0.1180
61+
cube2equi, numpy, default, 256x256, 480x240, 16, 0.4512
62+
cube2equi, numpy, default, 256x256, 480x240, 32, 1.0650
63+
cube2equi, numpy, default, 256x256, 480x240, 64, 2.1363
64+
cube2equi, torch, default, 256x256, 480x240, 1, 0.0218
65+
cube2equi, torch, default, 256x256, 480x240, 4, 0.0199
66+
cube2equi, torch, default, 256x256, 480x240, 16, 0.0228
67+
cube2equi, torch, default, 256x256, 480x240, 32, 0.0335
68+
cube2equi, torch, default, 256x256, 480x240, 64, 0.0438
69+
equi2cube, numpy, default, 4000x2000, 256x256, 1, 0.1174
70+
equi2cube, numpy, default, 4000x2000, 256x256, 4, 0.4759
71+
equi2cube, numpy, default, 4000x2000, 256x256, 16, 1.8907
72+
equi2cube, numpy, default, 4000x2000, 256x256, 32, 4.9468
73+
equi2cube, numpy, default, 4000x2000, 256x256, 64, 10.0229
74+
equi2cube, torch, default, 4000x2000, 256x256, 1, 0.0155
75+
equi2cube, torch, default, 4000x2000, 256x256, 4, 0.0328
76+
equi2cube, torch, default, 4000x2000, 256x256, 16, 0.0940
77+
equi2cube, torch, default, 4000x2000, 256x256, 32, 0.1698
78+
equi2cube, torch, default, 4000x2000, 256x256, 64, 0.3200
79+
equi2equi, numpy, default, 4000x2000, 640x320, 1, 2.4446
80+
equi2equi, numpy, default, 4000x2000, 640x320, 4, 9.8693
81+
equi2equi, numpy, default, 4000x2000, 640x320, 16, 42.6679
82+
equi2equi, numpy, default, 4000x2000, 640x320, 32, 96.5504
83+
equi2equi, numpy, default, 4000x2000, 640x320, 64, 193.8804
84+
equi2equi, torch, default, 4000x2000, 640x320, 1, 0.1816
85+
equi2equi, torch, default, 4000x2000, 640x320, 4, 0.5867
86+
equi2equi, torch, default, 4000x2000, 640x320, 16, 2.5047
87+
equi2equi, torch, default, 4000x2000, 640x320, 32, 4.4535
88+
equi2equi, torch, default, 4000x2000, 640x320, 64, 8.7202
89+
equi2pers, numpy, default, 4000x2000, 640x480, 1, 0.0734
90+
equi2pers, numpy, default, 4000x2000, 640x480, 4, 0.2994
91+
equi2pers, numpy, default, 4000x2000, 640x480, 16, 1.1730
92+
equi2pers, numpy, default, 4000x2000, 640x480, 32, 2.7934
93+
equi2pers, numpy, default, 4000x2000, 640x480, 64, 5.4712
94+
equi2pers, torch, default, 4000x2000, 640x480, 1, 0.0026
95+
equi2pers, torch, default, 4000x2000, 640x480, 4, 0.0084
96+
equi2pers, torch, default, 4000x2000, 640x480, 16, 0.0293
97+
equi2pers, torch, default, 4000x2000, 640x480, 32, 0.0447
98+
equi2pers, torch, default, 4000x2000, 640x480, 64, 0.0770
99+
```

.readme/cube2equi.md

-9
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22

33
Cubemap to equirectangular transformation
44

5-
## Usage
6-
7-
```Python
8-
9-
10-
```
11-
12-
13-
145
- `w_out` and `h_out` must be divisible by 8.
156
- if `w_out, h_out` is large respect to the input cubemap, it may leave some artifacts
167

.readme/equi2cube.md

+1-23
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,9 @@
11
## equi2cube
22

3-
equirectangular to cubemap transformation
4-
5-
```Python
6-
class SomeEqui2Cube(BaseEqui2Cube):
7-
def __init__(self, w_face: int):
8-
...
9-
def run(self, equi, rot, cube_format, **kwargs):
10-
...
11-
```
12-
13-
### Numpy
14-
15-
```Python
16-
from equilib.equi2cube import NumpyEqui2Cube
17-
```
18-
19-
### PyTorch
20-
21-
```Python
22-
from equilib.equi2cube import TorchEqui2Cube
23-
```
24-
253
### TODO:
264

275
- [x] Implement `numpy`
286
- [x] Implement `torch`
297
- [x] Implement `torch` with batches
308
- [x] Fix rotation axis
31-
- [ ] Implement `c++` with `cuda`
9+
- [ ] Implement `c++` with `cuda`

.readme/equi2equi.md

-24
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,5 @@
11
## equi2equi
22

3-
equirectangular to equirectangular transformation
4-
5-
I try to keep a common api that can be used in both `c++`, `numpy`, and `pytorch`.
6-
7-
```Python
8-
class SomeEqui2Equi(BaseEqui2Equi):
9-
def __init__(self, h_out: int, w_out: int):
10-
...
11-
def run(self, src, rot, **kwargs):
12-
...
13-
```
14-
15-
### Numpy
16-
17-
```Python
18-
from equilib.equi2equi import NumpyEqui2Equi
19-
```
20-
21-
### PyTorch
22-
23-
```Python
24-
from equilib.equi2equi import TorchEqui2Equi
25-
```
26-
273
### TODO:
284

295
- [x] Implement `numpy`

.readme/equi2pers.md

-25
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,6 @@
22

33
equirectangular to perspective transformation
44

5-
I try to keep a common api that can be used in both `c++`, `numpy`, and `pytorch`.
6-
7-
```Python
8-
class SomeEqui2Pers(BaseEqui2Pers):
9-
def __init__(self, w_pers, h_pers, fov_x):
10-
...
11-
def run(self, equi, rot, **kwargs):
12-
...
13-
```
14-
15-
### Numpy
16-
17-
```Python
18-
from equilib.equi2pers import NumpyEqui2Pers
19-
```
20-
21-
### PyTorch
22-
23-
```Python
24-
from equilib.equi2pers import TorchEqui2Pers
25-
```
26-
27-
### C++
28-
29-
__WIP__
305

316
### TODO:
327

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ pers_img = equi2pers(
145145
</table>
146146

147147
For more information about how each APIs work, take a look in [.readme](.readme/) or go through example codes in the `tests` or `demo`.
148+
See performance and benchmarking results of the APIs in [.readme/benchmark.md](.readme/benchmark.md).
148149

149150

150151
### Coordinate System:
@@ -185,7 +186,7 @@ Check [CONTRIBUTING.md](./CONTRIBUTING.md) for more information
185186
### TODO:
186187

187188
- [ ] Documentations for each transform
188-
- [ ] Add graphs and statistics for speed improvements
189+
- [x] Add table and statistics for speed improvements
189190

190191

191192
## Acknowledgements:

equilib/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"equi2pers",
1717
]
1818

19-
__version__ = "0.2.0"
19+
__version__ = "0.2.1"
2020
__author__ = "Haruya Ishikawa"
2121
__homepage__ = "www.hoge.com"
2222
__description__ = "equirectangular processing"

0 commit comments

Comments
 (0)