{"id":18792454,"url":"https://github.com/prbonn/forest_inventory_pipeline","last_synced_at":"2025-04-13T14:31:21.530Z","repository":{"id":232957996,"uuid":"761146982","full_name":"PRBonn/forest_inventory_pipeline","owner":"PRBonn","description":"Pipeline for segmenting trees and estimating traits from LiDAR data.","archived":false,"fork":false,"pushed_at":"2024-05-03T08:08:16.000Z","size":1232,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-05-04T00:37:17.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PRBonn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-21T10:26:45.000Z","updated_at":"2024-05-03T08:08:19.000Z","dependencies_parsed_at":"2024-05-02T14:11:49.757Z","dependency_job_id":null,"html_url":"https://github.com/PRBonn/forest_inventory_pipeline","commit_stats":null,"previous_names":["prbonn/forest_inventory_pipeline"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fforest_inventory_pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fforest_inventory_pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fforest_inventory_pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fforest_inventory_pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PRBonn","download_url":"https://codeload.github.com/PRBonn/forest_inventory_pipeline/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223589748,"owners_count":17170033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T21:19:56.508Z","updated_at":"2025-04-13T14:31:21.523Z","avatar_url":"https://github.com/PRBonn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eTree Instance Segmentation and Traits Estimation for Forestry Environment Exploiting LiDAR Data Collected by Mobile Robots\u003c/h1\u003e\n    \u003ca href=\"#setup\"\u003e\u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?logo=linux\u0026logoColor=black\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#usage\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3670A0?style=flat-square\u0026logo=python\u0026logoColor=ffdd54\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.ipb.uni-bonn.de/pdfs/malladi2024icra.pdf\"\u003e\u003cimg src=\"https://img.shields.io/badge/Paper-pdf-\u003cCOLOR\u003e.svg?style=flat-square\" /\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square\" /\u003e\u003c/a\u003e\n\n\u003cp\u003e\n  \u003cimg src=\"doc/motivation.png\" width=\"400\"/\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n## Setup\n\nA docker image is provided and details are described in the [Docker](#docker) section below.\n\n### Dependencies\n\nThis code has been developed and tested on Ubuntu 22.04 LTS using Python 3.10.\n\nSystem dependencies:\n\n- libegl1 libgl1 libgomp1 (required by Open3D)\n\n```bash\nsudo apt install libegl1 libgl1 libgomp1\n```\n\n- build-essential (Gives g++ make libc among others)\n\n```bash\nsudo apt install build-essential\n```\n\nCMake is not needed to build the package. This is handled by the python build system.\n\n### forest_inventory_pipeline\n\nAfter you clone the repository, installing it is a simple\n\n```bash\npip install -v .\n```\n\nor\n\n```bash\nmake [install] # install is the default target\n```\n\n### Docker\n\nPlease check the `docker/` folder.\nA simple Dockerfile is provided that sets up the project in a base Ubuntu 22.04 image.\nA `compose.yaml` file is provided for convenience as well.\nThis also has services to run some different experiments on data.\n\nYou can run a container with `forest_inventory_pipeline` setup by running the following from inside `docker/`\n\n```bash\ndocker compose run fip\n```\n\n## Usage\n\nThe CLI entrypoint `fip` covers most of the relevant information needed to use the package.\nAdditionally, parameters are described and their default values are given in corresponding files under `config/`.\n\n```bash\nfip --help\nfip instance --help\nfip dbh --help\n```\n\nExample runs:\n\n```bash\n# relevant output of the following is an instance_segmented_cloud.ply\nfip instance /data/input_cloud.ply --output /output -c config/instance.yaml\n```\n\nIn case some stages have been run earlier, corresponding skip flags can be used.\n\n```bash\n# relevant output of the following is cylinders.pickle and tree_dbh.csv\nfip dbh /data/input_cloud.ply --output output -c config/dbh.yaml --skip_gs --skip_norm --skip_cluster\n```\n\nIf the `--output` flag is specified, only then do results get written to disk.\n\n### Example Experiments\n\nTo test and use the approach, you can use the provided Docker image and some simple experiment scripts in `scripts/evaluation`.\nThese scripts need the data in a slightly specific format detailed further in their documentation (use `--help` when running the cli).\n\nPlease see the [DigiForests dataset](https://github.com/PRBonn/digiforests) for some forestry data you can run the approach on.\n\nTo run an instance segmentation experiment, `cd` into the `docker/` folder, modify the `compose.yaml` file to have the appropriate data mount, and then run:\n\n```bash\ndocker compose run fip_instance\n```\n\nThe results will get printed to the console.\n\nTo run a DBH estimation experiment, `cd` into the `docker/` folder and then run:\n\n```bash\ndocker compose run fip_dbh\n```\n\n## Publication\n\nIf you use our code in your academic work, please cite the corresponding [paper](https://www.ipb.uni-bonn.de/pdfs/malladi2024icra.pdf):\n\n```\n@inproceedings{malladi2024icra,\n  author = {M.V.R. Malladi and T. Guadagnino and L. Lobefaro and M. Mattamala and H. Griess and J. Schweier and N. Chebrolu and M. Fallon and J. Behley and C. Stachniss},\n  title = {{Tree Instance Segmentation and Traits Estimation for Forestry Environments Exploiting LiDAR Data Collected by Mobile Robots}},\n  booktitle = icra,\n  year = 2024,\n  codeurl = {https://github.com/PRBonn/forest_inventory_pipeline}\n}\n```\n\n## License\n\nThis project is free software made available under the MIT license. For details, see the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2Fforest_inventory_pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprbonn%2Fforest_inventory_pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2Fforest_inventory_pipeline/lists"}