Uso de YOLO26 con SAHI para inferencia por fragmentos#
Esta guía muestra cómo utilizar YOLO26 con SAHI (Slicing Aided Hyper Inference). Profundizamos en qué es SAHI, por qué la inferencia por fragmentos es fundamental para aplicaciones a gran escala y cómo integrar estas funcionalidades con YOLO26 para mejorar el rendimiento de detección de objetos.
Introducción a SAHI#
SAHI (inferencia hiperbólica asistida por segmentación) es una biblioteca innovadora diseñada para optimizar los algoritmos de detección de objetos en imágenes a gran escala y de alta resolución. Su funcionalidad principal consiste en dividir las imágenes en segmentos manejables, ejecutar la detección de objetos en cada segmento y volver a unir después los resultados. SAHI es compatible con diversos modelos de detección de objetos, incluida la serie YOLO, lo que ofrece flexibilidad y garantiza un uso optimizado de los recursos computacionales.
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
Características principales de SAHI#
- Integración fluida: SAHI se integra fácilmente con los modelos YOLO, por lo que puedes empezar a segmentar y detectar sin modificar demasiado el código.
- Eficiencia de recursos: Al dividir las imágenes grandes en partes más pequeñas, SAHI optimiza el uso de memoria y te permite ejecutar detecciones de alta calidad en hardware con recursos limitados.
- Alta precisión: SAHI mantiene la precisión de detección mediante algoritmos inteligentes que fusionan los cuadros de detección superpuestos durante el proceso de unión.
¿Qué es la inferencia segmentada?#
La inferencia segmentada consiste en subdividir una imagen grande o de alta resolución en segmentos más pequeños (segmentos), realizar la detección de objetos en ellos y volver a ensamblarlos para reconstruir las ubicaciones de los objetos en la imagen original. Esta técnica resulta muy valiosa en situaciones en las que los recursos computacionales son limitados o cuando se trabaja con imágenes de resolución extremadamente alta que, de otro modo, podrían provocar problemas de memoria.
Ventajas de la inferencia segmentada#
-
Menor carga computacional: Los segmentos de imagen más pequeños se procesan más rápido y consumen menos memoria, lo que permite un funcionamiento más fluido en hardware de gama baja.
-
Calidad de detección conservada: Como cada segmento se trata de forma independiente, la calidad de la detección de objetos no disminuye, siempre que los segmentos sean lo bastante grandes como para captar los objetos de interés.
-
Mayor escalabilidad: Esta técnica permite escalar más fácilmente la detección de objetos a diferentes tamaños y resoluciones de imagen, por lo que resulta ideal para una amplia variedad de aplicaciones, desde imágenes por satélite hasta diagnósticos médicos.
| YOLO26 without SAHI | YOLO26 with SAHI |
|---|---|
![]() | ![]() |
Instalación y preparación#
Instalación#
Para empezar, instala las versiones más recientes de SAHI y Ultralytics:
pip install -U ultralytics sahiImportar módulos y descargar recursos#
Aquí tienes cómo descargar algunas imágenes de prueba:
from sahi.utils.file import download_from_url
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
"demo_data/terrain2.png",
)Inferencia estándar con YOLO26#
Instanciar el modelo#
Puedes instanciar un modelo YOLO26 para la detección de objetos de la siguiente manera:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)Realizar una predicción estándar#
Realiza una inferencia estándar usando la ruta de una imagen.
from sahi.predict import get_prediction
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
result.export_visuals(export_dir="demo_data/", hide_conf=True)Visualizar los resultados#
Exporta y visualiza los cuadros delimitadores y las máscaras predichos:
from PIL import Image
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Inferencia segmentada con YOLO26#
Realiza una inferencia segmentada especificando las dimensiones de los segmentos y los porcentajes de solapamiento:
from PIL import Image
from sahi.predict import get_sliced_prediction
result = get_sliced_prediction(
"demo_data/small-vehicles1.jpeg",
detection_model,
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)
# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Gestionar los resultados de las predicciones#
SAHI proporciona un objeto PredictionResult, que se puede convertir a varios formatos de anotación:
# Access the object prediction list
object_prediction_list = result.object_prediction_list
# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]Predicción por lotes#
Para realizar predicciones por lotes en un directorio de imágenes:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.pt",
model_device="cpu", # or 'cuda:0'
model_confidence_threshold=0.4,
source="path/to/dir",
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)Ya puedes usar YOLO26 con SAHI tanto para la inferencia estándar como para la segmentada.
Citas y agradecimientos#
Si utilizas SAHI en tus trabajos de investigación o desarrollo, cita el artículo original de SAHI y reconoce a sus autores:
@article{akyon2022sahi,
title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
journal={2022 IEEE International Conference on Image Processing (ICIP)},
doi={10.1109/ICIP46576.2022.9897990},
pages={966-970},
year={2022}
}Agradecemos al grupo de investigación de SAHI la creación y el mantenimiento de este recurso tan valioso para la comunidad de visión artificial. Para obtener más información sobre SAHI y sus creadores, visita el repositorio de SAHI en GitHub.
Preguntas frecuentes#
La integración de Ultralytics YOLO26 con SAHI (inferencia hiperbólica asistida por segmentación) para realizar inferencia segmentada optimiza las tareas de detección de objetos en imágenes de alta resolución al dividirlas en segmentos manejables. Este enfoque mejora el uso de memoria y garantiza una alta precisión de detección. Para empezar, debes instalar las bibliotecas ultralytics y sahi:
pip install -U ultralytics sahiA continuación, descarga las imágenes de prueba:
from sahi.utils.file import download_from_url # Download test images download_from_url( "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg", "demo_data/small-vehicles1.jpeg", ) download_from_url( "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png", "demo_data/terrain2.png", )Para obtener instrucciones más detalladas, consulta nuestra guía de inferencia segmentada.
Usar SAHI con Ultralytics YOLO26 para detectar objetos en imágenes grandes ofrece varias ventajas:
- Menor carga computacional: Los segmentos más pequeños se procesan más rápido y consumen menos memoria, lo que hace posible ejecutar detecciones de alta calidad en hardware con recursos limitados.
- Precisión de detección conservada: SAHI utiliza algoritmos inteligentes para fusionar cuadros superpuestos y conservar la calidad de la detección.
- Mayor escalabilidad: Al escalar las tareas de detección de objetos a diferentes tamaños y resoluciones de imagen, SAHI resulta ideal para diversas aplicaciones, como el análisis de imágenes por satélite y los diagnósticos médicos.
Obtén más información sobre las ventajas de la inferencia segmentada en nuestra documentación.
Sí, puedes visualizar los resultados de las predicciones al usar YOLO26 con SAHI. Así puedes exportar y visualizar los resultados:
from PIL import Image result.export_visuals(export_dir="demo_data/", hide_conf=True) processed_image = Image.open("demo_data/prediction_visual.png") processed_image.show()Este comando guardará las predicciones visualizadas en el directorio especificado y, a continuación, podrás cargar la imagen para verla en tu notebook o aplicación. Para consultar una guía detallada, visita la sección de inferencia estándar.
SAHI (inferencia hiperbólica asistida por segmentación) ofrece varias características que complementan Ultralytics YOLO26 para la detección de objetos:
- Integración fluida: SAHI se integra fácilmente con los modelos YOLO y requiere ajustes mínimos del código.
- Eficiencia de recursos: Divide las imágenes grandes en segmentos más pequeños, lo que optimiza el uso de memoria y la velocidad.
- Alta precisión: Al fusionar eficazmente los cuadros de detección superpuestos durante el proceso de unión, SAHI mantiene una alta precisión de detección.
Para comprenderlo mejor, lee sobre las características principales de SAHI.
Para gestionar proyectos de inferencia a gran escala con YOLO26 y SAHI, sigue estas prácticas recomendadas:
- Instala las bibliotecas necesarias: Asegúrate de tener las versiones más recientes de ultralytics y sahi.
- Configura la inferencia segmentada: Determina las dimensiones de segmento y los porcentajes de solapamiento óptimos para tu proyecto específico.
- Ejecuta predicciones por lotes: Utiliza las capacidades de SAHI para realizar predicciones por lotes en un directorio de imágenes, lo que mejora la eficiencia.
Ejemplo de predicción por lotes:
from sahi.predict import predict predict( model_type="ultralytics", model_path="path/to/yolo26n.pt", model_device="cpu", # or 'cuda:0' model_confidence_threshold=0.4, source="path/to/dir", slice_height=256, slice_width=256, overlap_height_ratio=0.2, overlap_width_ratio=0.2, )Para consultar los pasos detallados, visita nuestra sección sobre predicción por lotes.

