Skip to content

Repository files navigation

Reef Guidance System: AI-driven Dispensing of Coral Reseeding Devices for Broad-scale Restoration of the Great Barrier Reef

Table of Contents


The official repository for the paper: "AI-driven Dispensing of Coral Reseeding Devices for Broad-scale Restoration of the Great Barrier Reef", published in the IEEE/RSJ International Conference on Intelligent Robots and Systems.

Authors: Scarlett Raine (sg.raine@qut.edu.au), Emilio Olivastri, Benjamin Moshirian, Tobias Fischer

If this repository contributes to your research, please consider citing the publication below.

Raine, S., Olivastri, E., Moshirian, B., & Fischer, T. (2026). AI-driven dispensing of coral reseeding devices for broad-scale restoration of the Great Barrier Reef. IEEE/RSJ International Conference on Intelligent Robots and Systems.

Bibtex

@inproceedings{raine2026ai,
title={AI-driven dispensing of coral reseeding devices for broad-scale restoration of the Great Barrier Reef},
author={Raine, Scarlett and Olivastri, Emilio and Moshirian, Benjamin and Fischer, Tobias},
booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems},
year={2026},
organization={IEEE}
}

The full paper can be accessed at: [Paper].


Dataset Access

We make the data publicly available on HuggingFace.


Setup

These scripts are for the Reef Guidance System AI functionality and encompass all tasks from data pre-processing and pseudo-labelling, training models, data analysis and model evaluation, and visualisation of model outputs.

Note: This is research code only. It may not be optimised for efficiency or presentation. The code may contain bugs despite efforts to avoid them.

Main packages used:

  • Pixi – for package management and running scripts
  • PyTorch – for training and evaluation
  • ONNX – for deployment on the Jetson

This repo uses pixi.toml to define the environment and task runners.

To install Pixi (Linux/MacOS):

curl -fsSL https://pixi.sh/install.sh | sh

Once installed, run tasks using:

pixi run -e cuda [task]    # With GPU
pixi run [task]            # CPU only

The task names are in the square brackets [task-name] below, beside each of the scripts. If GPU (cuda) is needed, it is indicated by the [cuda] beside the task name. If the script does not have a task name in square brackets beside it, then the script is imported by others and not directly executable.


Scripts

1. ChatGPT Pseudo-labelling

chatgpt/
├── chatgpt_script.py
├── pseudolabel_and_eval.py
  • chatgpt_script.py | script which initializes ChatGPT from the API and creates the necessary prompting structure
  • [chatgpt-label] pseudolabel_and_eval.py | script that reads in the functions from chatgpt_script, and then pseudo-labels a folder of image patches. It also calculates the metrics against provided ground truth labels for the same patches

2. Training

training/
├── train_models_patchlabels.py   
├── train_models_imagelabels.py   
├── convert_onnx.py
├── convert_onnx_whole_images.py             
  • [cuda][train-patches] train_models_patchlabels.py | script to train a classification model on a dataset labelled at the patch level
  • [cuda][train-image] train_models_imagelabels.py | script to train a classification model on a dataset labelled at the image level
  • [cuda][convert-onnx] convert_onnx.py | this script converts a pytorch model into an onnx model, useful for inference on a jetson

3. Dataloaders

dataloaders/
├── dataloaders_patchlabels.py    
├── dataloaders_imagelabels.py    
  • dataloaders_patchlabels.py | pytorch dataloaders which load in patches
  • dataloaders_imagelabels.py | pytorch dataloaders which load in whole images

4. Evaluation

eval/
├── pytorch_patch_deployment_eval.py
├── pytorch_patch_eval.py
├── pytorch_image_eval.py
├── test_onnx_models.py
  • [cuda][eval-deploy] pytorch_patch_deployment_eval.py | evaluates a pytorch model on the whole image deployment task (classifies each patch first, then decides deploy/no-deploy using threshold
  • [cuda][eval-patches] pytorch_patch_eval.py | evaluates a pytorch model on a test patch dataset (where every patch has been assigned a ground truth label)
  • [cuda][eval-images] pytorch_image_eval.py | evaluates a pytorch model trained on whole images
  • [eval-onnx] test_onnx_models.py | checks outputs of onnx models

5. Visualisation

vis/
├── coral_gps.py                  
├── infer_onnx_save_gps.py 
├── visualise_labels_with_gps.py         
  • [cuda][vis-coral-gps] coral_gps.py | a script to create a gps map of the coral coverage based on model predictions (based on the number of coral patches in an image): note this script uses the pytorch model
  • [vis-onnx-gps] infer_onnx_save_gps.py | a script that simulates the deployment scenario - it takes an onnx model and performs inference on a folder of images, resulting in a gps track of the model decisions. If there are associated labels for the images i.e. the images are saved in deploy/no-deploy directories, then it will also create a ground truth gps track for comparison
  • [vis-gt-gps] visualise_labels_with_gps.py | a script that visualises the labels for a set of images, without any model inference

6. Jetson Inference Files

infer/
# Jetson deployment-related scripts (TBD)

7. Utility Files

utils/
├── create_video_from_frames.py             
├── randomise_and_recover_images.py         
├── calculate_observer_variability.py       
├── create_patches_from_images.py           
├── create_patches_from_images_noclasses.py 
├── feature_extraction.py 
  • [] create_video_from_frames.py | creates a .mp4 video from a folder containing sequential image frames
  • [] randomise_and_recover_images.py | this script has functions which can rename a folder of images such that they are randomised, and then name them back to their original filenames
  • [calc-obs-var] calculate_observer_variability.py | given two folders, each containing sub-directories for the labels for images, this will calculate the agreement between the two label sets
  • [] create_patches_from_images.py | a script that takes whole images and creates a grid of x by y, saving each grid cell as a patch
  • [] create_patches_from_images_noclasses.py | a script that takes whole images and creates a grid of x by y, saving each grid cell as a patch; but when the images are not labelled
  • [cuda][extract-features] feature_extraction.py | a script that takes a trained model and uses it as a feature extractor, can be used to extract features at different layers of the model

Saved Models

outputs/
└── models/
    ├── pytorch/
    │   ├── model-1746052531CKPT.pt
    │   ├── model-1745448829CKPT.pt etc
    └── onnx/
        └── ....onnx

Models:

  • Mobilenet-small trained on ecologist patches: model-1745448701CKPT.pt
  • Mobilenet-small trained on ecologist patches at Heron Island and the combined set: model-1746052531CKPT.pt
  • Mobilenet-small trained on ChatGPT patches: model-1745448890CKPT.pt
  • Mobilenet-small trained on CLIP patches: model-1745448829CKPT.pt
  • Resnet-18 trained on ecologist patches: model-1745449254CKPT.pt
  • Efficientnet-B0 trained on ecologist patches: model-1745449304CKPT.pt
  • Mobilenet-large trained on ecologist patches: model-1745449205CKPT.pt

Saved Maps

outputs/
└── maps/
  • GPS tracks of best model predictions
  • GPS tracks of all labelled sites (Amy)
  • GPS tracks by other ecologists
  • Coral coverage estimation maps

Acknowledgements

S.R., E.O. and T.F. acknowledge continued support from the Queensland University of Technology (QUT) through the Centre for Robotics. T.F. acknowledges funding from an Australian Research Council (ARC) Discovery Early Career Researcher Award (DECRA) Fellowship DE240100149. All authors acknowledge support from the Reef Restoration and Adaptation Program (RRAP) which is funded by a partnership between the Australian Government’s Reef Trust and the Great Barrier Reef Foundation.

About

This repository contains the code implementation used in the paper: "AI-driven Deployment of Coral Reseeding Devices for Broad-scale Restoration of the Great Barrier Reef".

Topics

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages