# OpenSplat - Open Source Gaussian Splatting

**URL:** https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371
**Category:** Off Topic
**Created:** [February 17, 2024, 8:00pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371 "2024-02-17T20:00:28Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 17, 2024, 8:00pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/1 "2024-02-17T20:00:28Z")

</div>

Hey all, 👋

I just released a new project, which hopefully one day will have an opportunity to integrate with the wider OpenDroneMap ecosystem: [GitHub - pierotofy/OpenSplat: Free and open source 3D gaussian splatting in C++ ⭐](https://github.com/pierotofy/opensplat)

Currently you can generate 3D gaussians from ODM projects by using nerfstudio’s `ns-process-data` command ([Using custom data - nerfstudio](https://docs.nerf.studio/quickstart/custom_dataset.html#odm)), then opensplat can be used to process the nerfstudio project export. It’s a bit tedious, but hey, it’s a start.

For an intro to gaussian splatting: [3D Gaussian Splatting - Plain Concepts](https://www.plainconcepts.com/3d-gaussian-splatting)

Feedback, testing, comments welcome!

---

<div class="post-metadata">

### Author: ![smathermather](https://community.opendronemap.org/user_avatar/community.opendronemap.org/smathermather/32/876_2.png) [@smathermather](https://community.opendronemap.org/u/smathermather)
#### Post date: [February 17, 2024, 10:31pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/2 "2024-02-17T22:31:11Z")

</div>

This is fantastic. And you are finally going to force me to get a graphics card, dagnabbit. 😆

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 18, 2024, 12:00am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/3 "2024-02-18T00:00:21Z")

</div>

At least you’ll be happy to know I’ve developed this on a GTX 950M (which is both quite dated and inexpensive) 🙂 and it runs.

---

<div class="post-metadata">

### Author: ![smathermather](https://community.opendronemap.org/user_avatar/community.opendronemap.org/smathermather/32/876_2.png) [@smathermather](https://community.opendronemap.org/u/smathermather)
#### Post date: [February 18, 2024, 12:26am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/4 "2024-02-18T00:26:00Z")

</div>

Haha! Ok. I have a floor. I am not surprised.

Edit: just checked. That fits in budget quite nicely.

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 18, 2024, 3:54pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/5 "2024-02-18T15:54:50Z")

</div>

Lets cooking it

 ![image](https://community.opendronemap.org/uploads/default/original/2X/2/263afd7227e660c61ca00345792f255dfa2e6cde.png)

Hopefully the result will be good

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 18, 2024, 4:22pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/6 "2024-02-18T16:22:13Z")

</div>

My bad, I had a typo here:

This command will not produce any splat

```auto
./opensplat /workspace/NERFSTUDIO_CONVERTPY/data/nerfstudio/Truck_PLY \
    -o /workspace/OPENSPLAT/Truck_PLY -d 1

```

The correct one:

```auto
./opensplat /workspace/NERFSTUDIO_CONVERTPY/data/nerfstudio/Truck_PLY \
    -o /workspace/OPENSPLAT/Truck_PLY/OpenSplat_30k.ply -d 1

```

Renting Runpod environment with this specification

```auto
Ubuntu 22.04 LTS
Python 3.10
libtorch 2.0.1+cu118
RTX A6000 with 48 GB VRAM

```

```auto
/workspace/NERFSTUDIO_CONVERTPY/data/nerfstudio/Truck_PLY
|-> colmap
  |-> sparse
     |-> database.db
     |-> 0
       |-> images.bin
       |-> camera.bin
       |-> points3D.bin
|-> images
  |-> ((all_of_your_images which processed by ns-process-data))
|-> images_2
   |-> ((all_of_your_images which processed by ns-process-data))
|-> images_4
   |-> ((all_of_your_images which processed by ns-process-data))
|-> images_8
   |-> ((all_of_your_images which processed by ns-process-data))
|-> sparse_pc.ply
|-> transforms.json

```

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 18, 2024, 4:46pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/7 "2024-02-18T16:46:30Z")

</div>

Left = OpenSplat after 30k iters  
Right = `Splatfacto` from `nerfstudio v1.0.0` with 30k iters  
viewed by `mkellogg 3D Gaussian Splat` viewer

 ![image](https://community.opendronemap.org/uploads/default/original/2X/c/ccd33e041f9c3ee512b1304e8d5c9af2fabeab67.jpeg)  
 ![image](https://community.opendronemap.org/uploads/default/original/2X/a/a77c9716f2c82e6c6cfdbcd2400d9bca1d67e9df.jpeg)

I hope there are a settings that use all images for training dataset. If it happens, It can not be used for benchmark since eval dataset already leaks in training dataset.

But my idea, I want highest quality as possible.

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 18, 2024, 7:10pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/8 "2024-02-18T19:10:19Z")

</div>

Cool benchmark!

Some differences might be due to the optimizer scheduler ([Implement optimizer scheduler · Issue #6 · pierotofy/OpenSplat · GitHub](https://github.com/pierotofy/OpenSplat/issues/6)) not being implemented yet.

All images are used during the process.

Could you share the Truck\_PLY dataset somewhere? Would be cool to link it to the opensplat repo.

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 19, 2024, 8:17am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/10 "2024-02-19T08:17:32Z")

</div>

Originally, the images is taken from Original 3DGS (_Inria/graphdeco_). But I rerun the `ns-process-data images` since the dataset is in `colmap` format instead of `nerfstudio` format.

You can download it with `gdown python` library. Here is the command:  
`gdown 1pUOWW6w1OOzIkAwji_jkgKOugTinN8VO`

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 19, 2024, 8:26pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/11 "2024-02-19T20:26:55Z")

</div>

Just finished adding the optimizer scheduler, which should help get the scene to converge toward finer details.

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 19, 2024, 9:04pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/12 "2024-02-19T21:04:10Z")

</div>

![image](https://community.opendronemap.org/uploads/default/original/2X/a/adc94c701073c25e93abcfb8209eaa7005528199.jpeg)

Train scene after 7k iters.

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 20, 2024, 1:02am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/13 "2024-02-20T01:02:22Z")

</div>

Is something wrong with my installation or my configuration?

 ![image](https://community.opendronemap.org/uploads/default/original/2X/5/5804fbf35f68cf6ed6ff8068d45b15ce6478e5ce.png)

Thats being said for each million of gaussians, it consumes 2 GB VRAM. But in my own experiment, it needs 17 GB of VRAM

 ![image](https://community.opendronemap.org/uploads/default/original/2X/b/b6a34d53e4babfc6207b2225a3bfc1aeb9134e0b.png)

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [February 20, 2024, 1:42am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/14 "2024-02-20T01:42:37Z")

</div>

**left =** OpenSplat 30k `--downscale-factor 1` commit: `d72815de5e1f04d00509cf5e3128cfa7cebf3b97`  
**right =** OpenSplat 30k `--downscale-factor 1` commit: `2db50409fa07b762f9c9dd245e1c98a487f1facb`

 ![image](https://community.opendronemap.org/uploads/default/original/2X/e/e530fb7d8176b57599b0924d1b4d4c435875448b.jpeg)  
 ![image](https://community.opendronemap.org/uploads/default/original/2X/6/6bb5c653a1f3e6c3b1275f386a2881a4ff0dce98.jpeg)

Well done, I see better result in the newest commit (right images)

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [February 20, 2024, 3:05am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/15 "2024-02-20T03:05:20Z")

</div>

Memory allocated by libtorch is not automatically released, but it’s kept in an available state. Don’t trust the number from nvidia-smi. The actual usage is much lower.

---

<div class="post-metadata">

### Author: ![lupionpe](https://community.opendronemap.org/user_avatar/community.opendronemap.org/lupionpe/32/13314_2.png) [@lupionpe](https://community.opendronemap.org/u/lupionpe)
#### Post date: [February 28, 2024, 9:41pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/16 "2024-02-28T21:41:11Z")

</div>

What is necessary in the ODM Project in order to do this?

- DEM
- Point Cloud
- Orthophoto
- Texture Model

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [March 9, 2024, 2:11am UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/17 "2024-03-09T02:11:01Z")

</div>

Hello, welcome to the club. Sorry for slow respon. I had sick few days ago.

`OpenSplat` is really different with `ODM` since it uses different technology.

Currently `OpenSplat` can not export the result to DEM, Orthophoto, and textured model.

`OpenSplat` can export a special point cloud which called splat and it can viewed by special program like `mkellogg 3D Gaussian viewer`, `playcanvas`, etc.

There are any online splats creator likes `Luma AI` and `Polycam`. You might get insight what is the splat is.

Back to `OpenSplat`, it is free and it can run in your computer without online creator as long your GPU+VRAM+RAM capable to do it.

---

<div class="post-metadata">

### Author: ![smathermather](https://community.opendronemap.org/user_avatar/community.opendronemap.org/smathermather/32/876_2.png) [@smathermather](https://community.opendronemap.org/u/smathermather)
#### Post date: [March 10, 2024, 6:20pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/18 "2024-03-10T18:20:28Z")

</div>

> [@ichsan2895](#):
>
> Back to `OpenSplat`, it is free and it can run in your computer without online creator as long your GPU+VRAM+RAM capable to do it.

And I just saw Piero’s 6yo laptop that he wrote it on, and I have to say, the GPU bar is low.

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [March 13, 2024, 1:11pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/19 "2024-03-13T13:11:57Z")

</div>

Something is going on. I try it on Ubuntu 22.04 LTS, and it consumes \>10 GB with `-d 1` in 251 images with 960 x 540 resolution. I check it from `nvidia-smi`. `-d 1` argument means it run at original resolution instead of downscale resolution.

This thread also tested it with Windows and got OOM too with Banana dataset with 8 GB RAM and `-d 2` argument. [Mac/Windows Support · Issue #3 · pierotofy/OpenSplat (github.com)](https://github.com/pierotofy/OpenSplat/issues/3)

Hopefully it fixed (in Windows) since this PR : [General fixes that came up with Windows build by salovision · Pull Request #37 · pierotofy/OpenSplat · GitHub](https://github.com/pierotofy/OpenSplat/pull/37)

---

<div class="post-metadata">

### Author: ![ichsan2895](https://community.opendronemap.org/user_avatar/community.opendronemap.org/ichsan2895/32/6690_2.png) [@ichsan2895](https://community.opendronemap.org/u/ichsan2895)
#### Post date: [March 18, 2024, 1:47pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/20 "2024-03-18T13:47:34Z")

</div>

**VERY GOOD NEWS**

This commit [Reduce VRAM consumption by pfxuan · Pull Request #43 · pierotofy/OpenSplat · GitHub](https://github.com/pierotofy/OpenSplat/pull/43) and [Mac/Windows Support · Issue #3 · pierotofy/OpenSplat · GitHub](https://github.com/pierotofy/OpenSplat/pull/3) seems fix VRAM OOM.

**BEFORE (USE \>16 GB OF VRAM)**

 ![image](https://community.opendronemap.org/uploads/default/original/2X/b/b6a34d53e4babfc6207b2225a3bfc1aeb9134e0b.png)

**AFTER (USE ONLY ~2 GB OF VRAM)**

 ![image](https://community.opendronemap.org/uploads/default/original/3X/c/a/ca4d2fe9bc2d8fe2b1c8f81f8ff9d79e7a49508b.png)

Thanks @pierotofy and ALL contributors

---

<div class="post-metadata">

### Author: ![pierotofy](https://community.opendronemap.org/user_avatar/community.opendronemap.org/pierotofy/32/17_2.png) [@pierotofy](https://community.opendronemap.org/u/pierotofy)
#### Post date: [March 20, 2024, 2:39pm UTC](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371/21 "2024-03-20T14:39:47Z")

</div>

[![](https://community.opendronemap.org/uploads/default/original/3X/a/1/a160f0427e5e3c4ae4dfb16b93232945f1b9003b.gif) ](https://github-production-user-asset-6210df.s3.amazonaws.com/1951843/314539887-9d7eb2e0-460b-4148-964b-545e1db489d2.gif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240320%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240320T143927Z&X-Amz-Expires=300&X-Amz-Signature=efd03b8a4c410edd32221ba58920a80a6b23333ed84b9a795a35bc6a1e9ce500&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=747402960)

CPU support also coming along nicely 🥳

[Next page](https://community.opendronemap.org/t/opensplat-open-source-gaussian-splatting/19371.md?page=2)
