Skip to content

PURE-Stake/GRTreeNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GRTreeNet

Official code release for the paper:

Geometric-Prior Guided Segmentation of UAV LiDAR Point Clouds for Retrieving Clear Bole Height and Crown Architecture of Rubber Trees in Dense Rubber Plantations

GRTreeNet is a deep-learning framework for part-level segmentation of individual rubber-tree UAV LiDAR point clouds. The released implementation focuses on three semantic parts, crown, trunk, and ground clutter, and supports the model settings used in the paper.

Paper Modules

  • GTAP: Geometric Template-Enhanced Analytic Prior
  • CCF: Cooperative-Competitive Fusion
  • PTSP: Physics-inspired Transmittance and Sky-View Prior

Repository Scope

This repository is a compact official release centered on the core training code, model definition, and released configurations:

  • examples/rubber_tree_partseg/main.py: main training and evaluation entrypoint
  • openpoints/: model, dataset, and runtime code required by the release
  • cfgs/default.yaml: baseline configuration
  • cfgs/GRTreeNet.yaml: full GRTreeNet configuration
  • requirements.txt: Python dependency list
  • LICENSE: open-source license

Data Format

The in-house rubber-tree UAV LiDAR dataset is not included due to data-management restrictions. Users may prepare their own point-cloud data in the following format.

The released code expects a dataset root such as data/YOUR_DATASET/ with a ShapeNetPart-style layout:

data/YOUR_DATASET/
├── synsetoffset2category.txt
└── <category_folder>/
    ├── sample_0001.txt
    ├── sample_0002.txt
    └── ...
  • synsetoffset2category.txt should map category names to folder names.
  • Each sample is stored as a .txt file.
  • Each row should contain at least x y z nx ny nz label.
  • The loader uses the first 6 columns as point coordinates and normals, and the last column as the point-wise part label.
  • In the GRTreeNet setting, each sample is interpreted as containing:
    • pos: point coordinates, shape [N, 3]
    • x: input features, including coordinates / normals / height features
    • y: point-wise labels

The semantic labels are:

Label Class
0 Crown
1 Trunk
2 Ground clutter

Release Notes

This initial release includes the source code, model definitions, configuration files, and the main training/evaluation entrypoint of GRTreeNet.

The in-house rubber-tree UAV LiDAR dataset and pretrained model weights are not included in this repository. The main reason is that both the dataset distribution and the corresponding trained weights are currently constrained by data-management and project-policy restrictions. Since the released weights are tied to internally managed data assets, we do not redistribute them in this initial public version.

Training and Evaluation

Install dependencies:

pip install -r requirements.txt

Train the full model:

python examples/rubber_tree_partseg/main.py --cfg cfgs/GRTreeNet.yaml

Train the baseline:

python examples/rubber_tree_partseg/main.py --cfg cfgs/default.yaml

Evaluate from a checkpoint:

python examples/rubber_tree_partseg/main.py --cfg cfgs/GRTreeNet.yaml mode val pretrained_path /path/to/checkpoint.pth

Cross-Validation

The released configurations are set up for 5-fold cross-validation. The active fold is controlled in the config files through:

cross_validation:
  enabled: True
  num_folds: 5
  fold: 0

To run a different fold, change fold in cfgs/default.yaml or cfgs/GRTreeNet.yaml from 0 to one of 1, 2, 3, 4.

Citation

If you use this project, please cite the corresponding GRTreeNet paper.

About

Official implementation of GRTreeNet for part-level segmentation and structural-trait retrieval of rubber trees from UAV LiDAR point clouds.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors