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
- Tiles: 256×256px at zoom 19, EPSG:4326
- Train/Val: 441 / 167 tiles (80/20 stratified split), but we did later 70,20,10 for train, val, test for hyperparameter tuning and improve model accuracy.
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-object-detection-on-aerial-imagery
cd dl4cv-object-detection-on-aerial-imagery
uv sync
pip install dl4cv_oda
Workflow
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dl4cv_oda-0.1.2.tar.gz.
File metadata
- Download URL: dl4cv_oda-0.1.2.tar.gz
- Upload date:
- Size: 3.5 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83329d03d7f1d4f32115a1cdb87f19698acffc0cd9d9ef02944ce14ebac40a11
|
|
| MD5 |
d1ec1e7380c32f5090f97aea03590022
|
|
| BLAKE2b-256 |
47c3b20009b862d795da1930786536c57adf15932cd0b96418ba1ec9558b5440
|
File details
Details for the file dl4cv_oda-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dl4cv_oda-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.6 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4375233cc934905a22c12d95f308410a7231e63a8820b135e2af9d7ce679f730
|
|
| MD5 |
66b5c25d50581be0585fb01269b3db8d
|
|
| BLAKE2b-256 |
5f9d75b281102f4bd8768215c957c1f835892a7e77d3e6d82fe28954ea07a790
|