Skip to main content

Coconut tree detection from drone imagery

Project description

Object Detection on Aerial Imagery for Coconut Trees Detection

Coconut tree detection from drone imagery using YOLOv8, Yolov12, and RT_DERT models with OpenStreetMap labels and OpenAerialMap imagery.

Overview

  • OpenStreetMap point data: bounding boxes with buffer zones
  • Tile large aerial imagery (256×256 at 9cm/pixel): Source
  • Convert geographic coordinates to YOLO format
  • Train multiple models of YOLOv8 (nano, small, medium) on coconut trees from Kolovai, Tonga
  • Train Yolov12 and also RT-DERT.

Source: World Bank - Automated Feature Detection of Aerial Imagery from the South Pacific

Data

Statistics:

  • Original: 10,631 trees (Coconut: 10,092 | Mango: 261 | Banana: 181 | Papaya: 97)
  • Target: Coconut trees only Clipped labels to tiles: {'total_trees': 10092, 'total_tiles': 551, 'processed_input_tiles': 448, 'skipped_nonlabeled_tiles': 103, 'total_input_trees': 11726} Converted to YOLO format Split: train=313, val=89, test=46

70 / 20 / 10 for train/val/test

  • Tiles: 256×256px at zoom 19, EPSG:4326

Structure

data/
├── raw/                # OAM imagery + OSM points
├── chips/              # 256×256 tiles (.tif)
├── labels/             # Per-tile annotations (.geojson)
└── yolo/
    ├── train/          # Training data (.png + .txt)
    ├── val/            # Validation data
    └── config.yaml     # YOLO config

notebooks/
├── experiment.ipynb         # including the dl4cv-oda package and all functions

Setup

curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/kshitijrajsharma/dl4cv-oda
cd dl4cv-oda
uv sync

Development ( version bump)

uv sync --extra dev
cz bump
git push --tags

Workflow

image

1. Clean OSM Data : Filter coconut trees, generate buffered bounding boxes

2. Tile Imagery : Create 256×256 tiles, clip labels to tile extents

3. YOLO Conversion : Transform coordinates (EPSG:4326 : pixels : normalized [0,1])

row, col = src.index(lon, lat)  # rasterio
x_norm = col / img_width
y_norm = row / img_height

4. Train : YOLOv8n, 100 epochs, batch 16

from ultralytics import YOLO
model = YOLO('yolov8n.pt')
model.train(data='data/yolo/config.yaml', epochs=100, imgsz=256, batch=16)

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dl4cv_oda-0.1.5.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dl4cv_oda-0.1.5-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file dl4cv_oda-0.1.5.tar.gz.

File metadata

  • Download URL: dl4cv_oda-0.1.5.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dl4cv_oda-0.1.5.tar.gz
Algorithm Hash digest
SHA256 b0c112211a2fea8e7f0752b4764160ecd289165efabad85e1ede4ec7860e0d9b
MD5 ada4505333dc4df84d853a8ddb616948
BLAKE2b-256 71c999ca23c14b4737ee8c4d0198965359c7f60af574c971660b7ed2a58b1b3c

See more details on using hashes here.

File details

Details for the file dl4cv_oda-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: dl4cv_oda-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dl4cv_oda-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6b0fa365a029731e6ed3c2a34b89b3361043acebe8e734fb4675117f4df3b73b
MD5 0acb8a3f8dbf7e86119e530aba28dd6f
BLAKE2b-256 01c0050dda09e5c82605d0a2edb4a4c04cf98d2dfe7ce8516c975d9ca2268544

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page