Modelo de segmentación de instancias para conteo de plantas de arándano (blueberry) en imágenes aéreas de alta resolución.
Modellquelle
Quellenbeschreibung
Modelo de segmentación de instancias para conteo de plantas de arándano (blueberry) en imágenes aéreas de alta resolución.
Quellen
1 QuelleVerifiziert 17. Aug.
Modellartefakte
1 Artefaktagrovision-plantcount-v1.0.0.onnx
onnx · 124 MB · SHA-256 925785ee4d45…ac53 · Hugging Face
HerunterladenQuellenauszüge
2 Auszüge| 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