Important
Please go here for the Tirtha site: https://smlab.niser.ac.in/project/tirtha/. New features will be added to the dev site first: https://smlab.niser.ac.in/project/tirtha/dev/.
Important
Google Summer of Code aspirants, please go here for the project topics: https://docs.google.com/document/d/1p5UxgoKBhy5pQh3fXX00BftcmJxzxdFLOkrB3Hibfm4.
Project Tirtha is an academic initiative to create 3D models of heritage sites using crowdsourced images. The word Tirtha is Sanskrit for "a place of pilgrimage", and is commonly used to refer to the sacred sites of Hinduism, Jainism and Buddhism. Our goal is to preserve and showcase the beauty and cultural significance of heritage sites. We believe that by allowing the general public to contribute to the creation of these models, and by providing open access to these models, we can increase awareness and appreciation of these important cultural landmarks and inspire future generations to maintain them for years to come.
This project is now open-source under the GNU Affero General Public License v3.0 and is under active development. All contributions are welcome. Please read CONTRIBUTING.md for more details.
See Citation for information on how to cite this project. A CITATION.cff file is also available in the repository.
Note
For the Gaussian Splatting (GS) pipeline, we have used the original implementation from https://github.com/graphdeco-inria/gaussian-splatting/. This is currently for research purposes only and is not part of the open-source release.
See the paper for more details.
- OS: Ubuntu 22.04 LTS (Other Linux distros may work, but are not tested)
- RAM: 16 GB+ for modestly sized image sets (< 500 images)
- VRAM: 24 GB+; NVIDIA GPU required for CUDA support & Gaussian Splatting
- CPU: 16+ cores recommended
- Storage: 100 GB+ free space recommended
- Primary:
Python 3.11
(Developed usingPython 3.11.9
) &Node.js
>= 18.0.0 &npm
>= 8.0.0. - The build process (manual or docker) automatically installs these and other dependencies. Check Deployment / Development Setup below for more details.
Tip
Please go here to set up Tirtha using Docker. We strongly recommend using Docker for deployment as well as for testing or development.
- Clone the repository and
cd
to thetirtha-public
directory:git clone https://github.com/smlab-niser/tirtha-public.git cd tirtha-public
- Edit
tirtha-public/build/tirtha.env
to set the environment variables. - Carefully go through
build.sh
and edit to ensure that the paths and settings are correct for your system. For instance, you can choose to not install some of the dependencies for the backend, which saves a considerable amount of time. - The default build uses ports 8000 (for gunicorn), 8001 (for Postgres), and 15672 (for RabbitMQ) on the host system. Ensure these ports are free. If you want to use different ports, you will have to edit
tirtha.env
,gunicorn.conf.manual.py
, andtirtha.docker.nginx
before runningbuild.sh
. cd
totirtha-public/build
and run the following command to set up Tirtha. This will install the required packages and set up Postgres, RabbitMQ, Nginx, Gunicorn and Tirtha:cd tirtha-public/build sudo bash build.sh
- To run Tirtha, use the following command:
bash start.sh
- The Tirtha web interface can be accessed at
http://localhost:8000
orhttp://<HOST_IP>:8000
if you are setting up Tirtha on a remote server. To access the Django admin interface, usehttp://localhost:8000/admin
orhttp://<HOST_IP>:8000/admin
. The default username and password can be found in thetirtha.env
file. - To access Tirtha-related logs, check the
/var/www/tirtha/logs/
directory. Logs for system packages, like RabbitMQ or Postgres, can be accessed usingjournalctl
. - If you want to set up SSL for your Tirtha instance, check the tirtha.ssl.nginx configuration file.
- To set up system service and socket for Tirtha, you can refer to the tirthad.docker.service and tirthad.docker.socket files.
Important
- Currently, the production directory is hard-coded to
/var/www/tirtha
. Changing this will require changes to thenginx
configuration and thegunicorn.conf.manual.py
file, along withbuild.sh
. - You may also have to configure your firewall to allow traffic on the ports used by Tirtha. Check the
tirtha.env
file and the nginx configuration for the ports used.
Please cite the following paper if you use this software in your work (arXiv | Papers with Code | ACM Digital Library):
@inproceedings{10.1145/3611314.3615904,
author = {Shivottam, Jyotirmaya and Mishra, Subhankar},
title = {Tirtha - An Automated Platform to Crowdsource Images and Create 3D Models of Heritage Sites},
year = {2023},
isbn = {9798400703249},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3611314.3615904},
doi = {10.1145/3611314.3615904},
abstract = {Digital preservation of Cultural Heritage (CH) sites is crucial to protect them against damage from natural disasters or human activities. Creating 3D models of CH sites has become a popular method of digital preservation thanks to advancements in computer vision and photogrammetry. However, the process is time-consuming, expensive, and typically requires specialized equipment and expertise, posing challenges in resource-limited developing countries. Additionally, the lack of an open repository for 3D models hinders research and public engagement with their heritage. To address these issues, we propose Tirtha, a web platform for crowdsourcing images of CH sites and creating their 3D models. Tirtha utilizes state-of-the-art Structure from Motion (SfM) and Multi-View Stereo (MVS) techniques. It is modular, extensible and cost-effective, allowing for the incorporation of new techniques as photogrammetry advances. Tirtha is accessible through a web interface at https://smlab.niser.ac.in/project/tirtha/ and can be deployed on-premise or in a cloud environment. In our case studies, we demonstrate the pipeline’s effectiveness by creating 3D models of temples in Odisha, India, using crowdsourced images. These models are available for viewing, interaction, and download on the Tirtha website. Our work aims to provide a dataset of crowdsourced images and 3D reconstructions for research in computer vision, heritage conservation, and related domains. Overall, Tirtha is a step towards democratizing digital preservation, primarily in resource-limited developing countries.},
booktitle = {Proceedings of the 28th International ACM Conference on 3D Web Technology},
articleno = {11},
numpages = {15},
keywords = {photogrammetry, open source, digital heritage, crowdsourcing, 3D dataset},
location = {San Sebastian, Spain},
series = {Web3D '23}
}
You can also use GitHub's citation feature to generate a citation for this repository. See here for more details.
This project is funded by La Fondation Dassault Systèmes. We also thank the following individuals for their contributions to the project's development:
We are grateful to the developers of the following open-source libraries, which help make this project a reality:
- AliceVision Meshroom, available under the Mozilla Public License 2.0.
- MANIQA, available under the Apache 2.0 License.
- nsfw_model, available under the MIT License.
- obj2gltf
- gltfpack
- model-viewer
- Google Fonts | Rubik
- Google Fonts | Material Icons
- Django
- jQuery
- gunicorn
- nginx
- Celery
- RabbitMQ
- OpenCV
- Docker
We also thank Odisha State Archaeology for their support.
© 2023-24 Project Tirtha, Subhankar Mishra's Lab, School of Computer Sciences, NISER. All rights reserved.