Uso de YOLO26 con SAHI para la inferencia por fragmentos#
Esta guía explica cómo utilizar YOLO26 con SAHI (inferencia hiper asistida por segmentación). Analizaremos en profundidad qué es SAHI, por qué la inferencia por fragmentos es fundamental para las aplicaciones a gran escala y cómo integrar estas funciones con YOLO26 para mejorar el rendimiento de la detección de objetos.
Introducción a SAHI#
SAHI (inferencia hiper 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 función principal consiste en dividir las imágenes en fragmentos manejables, ejecutar la detección de objetos en cada fragmento y volver a unir los resultados. SAHI es compatible con diversos modelos de detección de objetos, incluida la serie YOLO, por lo que ofrece flexibilidad y garantiza un uso optimizado de los recursos computacionales.
Ver: Cómo usar SAHI con Ultralytics YOLO26 para detectar objetos pequeños | Inferencia con mosaicos asistida por recortes 🚀
Características principales de SAHI#
- Integración sencilla: SAHI se integra fácilmente con los modelos YOLO, así que puedes empezar a dividir las imágenes en fragmentos y detectar objetos sin apenas modificar el código.
- Uso eficiente de los recursos: Al dividir las imágenes grandes en partes más pequeñas, SAHI optimiza el uso de memoria y permite realizar detecciones de alta calidad en hardware con recursos limitados.
- Alta precisión: SAHI mantiene la precisión de detección mediante algoritmos inteligentes que combinan los cuadros de detección superpuestos durante el proceso de unión.
¿Qué es la inferencia por fragmentos?#
La inferencia por fragmentos consiste en subdividir una imagen grande o de alta resolución en segmentos más pequeños (fragmentos), realizar la detección de objetos en ellos y, a continuación, volver a unirlos para reconstruir la ubicación de los objetos en la imagen original. Esta técnica es muy útil cuando los recursos computacionales son limitados o se trabaja con imágenes de una resolución extremadamente alta que, de otro modo, podrían causar problemas de memoria.
Ventajas de la inferencia por fragmentos#
-
Menor carga computacional: Los fragmentos 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 preservada: Como cada fragmento se trata de forma independiente, la calidad de la detección de objetos no disminuye, siempre que los fragmentos sean lo bastante grandes como para abarcar los objetos de interés.
-
Mayor escalabilidad: Esta técnica facilita el escalado de la detección de objetos en imágenes de distintos tamaños y resoluciones, por lo que resulta ideal para una gran variedad de aplicaciones, desde imágenes por satélite hasta diagnósticos médicos.
| Ultralytics YOLO26 sin SAHI | Ultralytics YOLO26 con SAHI |
|---|---|
![]() | ![]() |
Instalación y preparación#
Instalación#
Para empezar, instala las últimas versiones de SAHI y Ultralytics:
pip install -U ultralytics sahiImportar módulos y descargar recursos#
A continuación, se explica cómo descargar algunas imágenes de prueba:
from sahi.utils.file import download_from_url
# Descargar imágenes de prueba
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 esta forma:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # o 'cuda:0'
)Realizar una predicción estándar#
Realiza una inferencia estándar utilizando 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
# Abrir la imagen predicha
processed_image = Image.open("demo_data/prediction_visual.png")
# Mostrar la imagen predicha
processed_image.show()Inferencia por fragmentos con YOLO26#
Realiza una inferencia por fragmentos especificando sus dimensiones y las proporciones 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,
)
# Exportar resultados
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Abrir la imagen predicha
processed_image = Image.open("demo_data/prediction_visual.png")
# Mostrar la imagen predicha
processed_image.show()Gestionar los resultados de las predicciones#
SAHI proporciona un objeto PredictionResult que se puede convertir a varios formatos de anotación:
# Acceder a la lista de predicciones de objetos
object_prediction_list = result.object_prediction_list
# Convertir a los formatos de anotación COCO y de predicción COCO
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", # o '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 utilizar YOLO26 con SAHI tanto para la inferencia estándar como para la inferencia por fragmentos.
Citas y agradecimientos#
Si utilizas SAHI en tus trabajos de investigación o desarrollo, cita el artículo original de SAHI y reconoce la contribución de 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 hiper asistida por segmentación) para realizar inferencias por fragmentos optimiza la detección de objetos en imágenes de alta resolución al dividirlas en fragmentos manejables. Este enfoque mejora el uso de memoria y garantiza una alta precisión de detección. Para empezar, instala 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 # Descargar imágenes de prueba 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 por fragmentos.
Utilizar SAHI con Ultralytics YOLO26 para detectar objetos en imágenes grandes ofrece varias ventajas:
- Menor carga computacional: Los fragmentos más pequeños se procesan más rápido y consumen menos memoria, lo que permite realizar detecciones de alta calidad en hardware con recursos limitados.
- Precisión de detección mantenida: SAHI utiliza algoritmos inteligentes para combinar cuadros superpuestos y preservar la calidad de la detección.
- Mayor escalabilidad: Al escalar las tareas de detección de objetos para adaptarlas a distintos 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 por fragmentos en nuestra documentación.
Sí, puedes visualizar los resultados de las predicciones al utilizar YOLO26 con SAHI. A continuación, se explica cómo 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. Después podrás cargar la imagen para verla en tu cuaderno o aplicación. Para obtener una guía detallada, consulta la sección Inferencia estándar.
SAHI (inferencia hiper asistida por segmentación) ofrece varias funciones que complementan Ultralytics YOLO26 para la detección de objetos:
- Integración sencilla: SAHI se integra fácilmente con los modelos YOLO y requiere muy pocos ajustes en el código.
- Uso eficiente de los recursos: Divide las imágenes grandes en fragmentos más pequeños, lo que optimiza el uso de memoria y la velocidad.
- Alta precisión: Al combinar eficazmente los cuadros de detección superpuestos durante el proceso de unión, SAHI mantiene una alta precisión de detección.
Para profundizar, 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 por recortes: determina las dimensiones óptimas de los recortes y los índices de solapamiento para tu proyecto concreto.
- Ejecuta predicciones por lotes: aprovecha las funciones de SAHI para realizar predicciones por lotes en un directorio de imágenes y mejorar 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", # o '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.

