Modelo de segmentación de instancias para conteo de plantas de arándano (blueberry) en imágenes aéreas de alta resolución.
Model source
Source description
Modelo de segmentación de instancias para conteo de plantas de arándano (blueberry) en imágenes aéreas de alta resolución.
Sources
1 sourceVerified Aug 17
Model artifacts
1 artifactSource excerpts
2 excerpts| Campo | Valor |
|---|
| Arquitectura | RF-DETR-Seg Nano |
| Tarea | Segmentación de instancias |
| Cultivo | Arándano (blueberry) |
| Clases | 1 (Nevado/arbusto) |
| Licencia | Apache 2.0 |
| Versión | 1.0.0 |
| Métrica | Box | Mask |
|---|---|---|
| mAP 50 | 0.892 | 0.889 |
| mAP 50:95 | 0.778 | 0.773 |
| Precision | 0.918 | 0.914 |
| Recall | 0.808 | 0.797 |
| F1 | 0.86 | 0.86 |
pip install onnxruntime
import onnxruntime as ort
import numpy as np
# Cargar modelo
sess = ort.InferenceSession("agrovision-plantcount-v1.0.0.onnx")
# Preparar imagen (RGB, 0-1, letterbox a 312x312)
image = np.random.rand(1, 3, 312, 312).astype(np.float32)
# Inferencia
outputs = sess.run(None, {"images": image})
dets, labels, masks = outputs
# Filtrar por confianza
threshold = 0.5
valid = dets[:, :, 4] > threshold
count = valid.sum()
print(f"Plantas detectadas: {count}")
La salida del modelo sigue el contrato de AgroVisión:
{
"task": "segment",
"boxes": [[x1, y1, x2, y2, conf, cls], ...],
"masks": [...],
"areas_px": [area_px_1, area_px_2, ...],
"area_proj_m2": 12.5,
"count": 42,
"conf_threshold": 0.5,
"classes": {"0": "arbusto"},
"crop": "blueberry",
"model_version": "1.0.0",
"architecture": "rfdetr_seg_nano",
"license": "Apache-2.0",
"nms_free": true
}
ws-l3s1y/vivero-plant-counting v3)| Hiperparámetro | Valor |
|---|---|
| Epochs | 100 |
| Batch size | 16 |
| Learning rate | 1e-4 |
| Seed | 42 |
| GPU | RTX 4070 Ti SUPER (16GB) |
Se entrenaron dos candidatos:
Decisión: RF-DETR-Seg seleccionado por licencia Apache 2.0 (preferida sobre AGPL-3.0).
El área de dosel se calcula como:
area_proj_m2 = Σ(mask_pixels) × GSD2
Donde GSD = 0.02 m/px para el ortomosaico de referencia.
@software{agrovision_plantcount_2026,
title = {AgroVisión PlantCount: Modelo de Conteo de Plantas},
author = {Prieto, Alex},
year = {2026},
version = {1.0.0},
license = {Apache-2.0},
url = {https://huggingface.co/aprieto/agrovision-plantcount}
}
--- language: - es - en license: apache-2.0 library_name: onnx tags: - instance-segmentation - plant-counting - agriculture - computer-vision - blueberry pipeline_tag: image-segmentation --- # AgroVisión PlantCount v1.0.0 Modelo de segmentación de instancias para conteo de plantas de arándano (blueberry) en imágenes aéreas de alta resolución. ## Resumen | Campo | Valor | |-------|-------| | **Arquitectura** | RF-DETR-Seg Nano | | **Tarea** | Segmentación de instancias | | **Cultivo** | Arándano (blueberry) | | **Clases** | 1 (Nevado/arbusto) | | **Licencia** | Apache 2.0 | | **Versión** | 1.0.0 | ## Métricas | Métrica | Box | Mask | |---------|-----|------| | mAP 50 | 0.892 | 0.889 | | mAP 50:95 | 0.778 | 0.773 | | Precision | 0.918 | 0.914 | | Recall | 0.808 | 0.797 | | F1 | 0.86 | 0.86 | ## Uso ### Requisitos ```bash pip install onnxruntime ``` ### Inferencia ```python import onnxruntime as ort import numpy as np # Cargar modelo sess = ort.InferenceSession("agrovision-plantcount-v1.0.0.onnx") # Preparar imagen (RGB, 0-1, letterbox a 312x312) image = np.random.rand(1, 3, 312, 312).astype(np.float32) # Inferencia outputs = sess.run(None, {"images": image}) dets, labels, masks = outputs # Filtrar por confianza threshold = 0.5 valid = dets[:, :, 4] > threshold count = valid.sum() print(f"Plantas detectadas: {count}") ``` ### Contrato de Inferencia (§6.3) La salida del modelo sigue el contrato de AgroVisión: ```json { "task": "segment", "boxes": [[x1, y1, x2, y2, conf, cls], ...], "masks": [...], "areas_px": [area_px_1, area_px_2, ...], "area_proj_m2": 12.5, "count": 42, "conf_threshold": 0.5, "classes": {"0": "arbusto"}, "crop": "blueberry", "model_version": "1.0.0", "architecture": "rfdetr_seg_nano", "license": "Apache-2.0", "nms_free": true } ``` ## Preprocesamiento - **Formato**: RGB - **Normalización**: 0-1 (float32) - **Tamaño**: 312x312 (letterbox) - **GSD esperado**: 0.02 m/px ## Dataset - **Fuente**: Roboflow Universe (`ws-l3s1y/vivero-plant-counting` v3) - **Imágenes**: 1728 (113 base + augmentations) - **Anotaciones**: 5485 (Instance Segmentation) - **Licencia**: CC BY 4.0 - **Split**: train (1422) / valid (207) / test (99) ## Entrenamiento | Hiperparámetro | Valor | |----------------|-------| | Epochs | 100 | | Batch size | 16 | | Learning rate | 1e-4 | | Seed | 42 | | GPU | RTX 4070 Ti SUPER (16GB) | ## Sele...
Source context: 0 downloads · 0 likes · Pipeline image-segmentation · Library onnx · Repo alexp97/agrovision-plantcount