Ultralytics Documentos: Utilización de YOLO11 con SAHI para la inferencia fragmentada
Bienvenido a la documentación de Ultralytics sobre cómo utilizar YOLO11 con SAHI (Slicing Aided Hyper Inference). Esta completa guía pretende proporcionarle todos los conocimientos esenciales que necesitará para implementar SAHI junto con YOLO11. Profundizaremos en qué es SAHI, por qué la inferencia en rodajas es fundamental para las aplicaciones a gran escala y cómo integrar estas funcionalidades con YOLO11 para mejorar el rendimiento de la detección de objetos.
Introducción a SAHI
SAHI (Slicing Aided Hyper Inference) es una innovadora biblioteca 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, a continuación, unir los resultados. SAHI es compatible con diversos modelos de detección de objetos, incluida la serie YOLO , por lo que ofrece flexibilidad al tiempo que garantiza un uso optimizado de los recursos informáticos.
Observa: Inferencia con SAHI (Slicing Aided Hyper Inference) utilizando Ultralytics YOLO11
Características principales de SAHI
- Integración perfecta: SAHI se integra sin esfuerzo con los modelos de YOLO , lo que significa que puede empezar a cortar y detectar sin necesidad de modificar mucho el código.
- Eficiencia de recursos: Al dividir las imágenes grandes en partes más pequeñas, SAHI optimiza el uso de la memoria, lo que le permite ejecutar una detección de alta calidad en hardware con recursos limitados.
- Alta precisión: SAHI mantiene la precisión de detección empleando algoritmos inteligentes para fusionar cuadros de detección superpuestos durante el proceso de cosido.
¿Qué es la inferencia rebanada?
La inferencia por cortes consiste en subdividir una imagen grande o de alta resolución en segmentos más pequeños (cortes), detectar objetos en esos cortes y, a continuación, recomponerlos para reconstruir la ubicación de los objetos en la imagen original. Esta técnica es inestimable en situaciones en las que los recursos informáticos son limitados o cuando se trabaja con imágenes de muy alta resolución que, de otro modo, podrían provocar problemas de memoria.
Ventajas de la inferencia fragmentada
-
Menor carga computacional: Los cortes 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: Dado que cada corte se trata de forma independiente, no se reduce la calidad de la detección de objetos, siempre que los cortes sean lo suficientemente grandes como para capturar los objetos de interés.
-
Mayor escalabilidad: La técnica permite escalar más fácilmente la detección de objetos a través de diferentes tamaños y resoluciones de imágenes, lo que la hace ideal para una amplia gama de aplicaciones, desde imágenes por satélite hasta diagnósticos médicos.
YOLO11 sin SAHI | YOLO11 con SAHI |
---|---|
![]() |
![]() |
Instalación y preparación
Instalación
Para empezar, instala las últimas versiones de SAHI y Ultralytics:
Importar módulos y descargar recursos
A continuación se explica cómo importar los módulos necesarios y descargar un modelo YOLO11 y algunas imágenes de prueba:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)
# 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 YOLO11
Instanciar el modelo
Puede instanciar un modelo YOLO11 para la detección de objetos de la siguiente manera:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path=model_path,
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)
Realizar una predicción estándar
Realiza la inferencia estándar utilizando una ruta de imagen o una imagen numpy.
from sahi.predict import get_prediction
# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
# With a numpy image
result_with_np_image = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)
Visualizar resultados
Exporte y visualice los cuadros delimitadores y las máscaras previstos:
Inferencia en rodajas con YOLO11
Realice la inferencia por cortes especificando las dimensiones de los cortes y las relaciones de solapamiento:
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,
)
Tratamiento de los resultados de las predicciones
SAHI proporciona un PredictionResult
que puede convertirse en varios formatos de anotación:
# Access the object prediction list
object_prediction_list = result.object_prediction_list
# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]
Predicción por lotes
Para la predicción por lotes en un directorio de imágenes:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo11n.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 está. Ahora está equipado para utilizar YOLO11 con SAHI tanto para la inferencia estándar como para la rebanada.
Citas y agradecimientos
Si utiliza SAHI en su trabajo de investigación o desarrollo, cite el documento original de SAHI y mencione a los 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}
}
Extendemos nuestro agradecimiento al grupo de investigación SAHI por crear y mantener este recurso inestimable para la comunidad de visión por computador. Para obtener más información sobre SAHI y sus creadores, visite el repositorio SAHI GitHub.
PREGUNTAS FRECUENTES
¿Cómo puedo integrar YOLO11 con SAHI para la inferencia rebanada en la detección de objetos?
La integración de Ultralytics YOLO11 con SAHI (Slicing Aided Hyper Inference) para la inferencia rebanada optimiza sus tareas de detección de objetos en imágenes de alta resolución particionándolas en rebanadas manejables. Este enfoque mejora el uso de la memoria y garantiza una alta precisión de detección. Para empezar, necesita instalar las bibliotecas ultralytics y sahi:
A continuación, descargue un modelo YOLO11 e imágenes de prueba:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
Para obtener instrucciones más detalladas, consulte nuestra guía sobre la inferencia en rebanadas.
¿Por qué utilizar SAHI con YOLO11 para la detección de objetos en imágenes de gran tamaño?
El uso de SAHI con Ultralytics YOLO11 para la detección de objetos en imágenes de gran tamaño 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 ejecutar detecciones de alta calidad en hardware con recursos limitados.
- Precisión de detección mantenida: SAHI utiliza algoritmos inteligentes para fusionar las cajas superpuestas, preservando la calidad de la detección.
- Escalabilidad mejorada: Al escalar las tareas de detección de objetos a distintos tamaños y resoluciones de imagen, SAHI resulta ideal para diversas aplicaciones, como el análisis de imágenes de satélite y el diagnóstico médico.
Obtenga más información sobre las ventajas de la inferencia rebanada en nuestra documentación.
¿Puedo visualizar los resultados de las predicciones cuando utilizo YOLO11 con SAHI?
Sí, puede visualizar los resultados de las predicciones cuando utilice YOLO11 con SAHI. A continuación se explica cómo exportar y visualizar los resultados:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
Este comando guardará las predicciones visualizadas en el directorio especificado y, a continuación, podrá cargar la imagen para verla en su cuaderno o aplicación. Para obtener una guía detallada, consulte la sección Inferencia estándar.
¿Qué funciones ofrece SAHI para mejorar la detección de objetos en YOLO11 ?
SAHI (Slicing Aided Hyper Inference) ofrece varias funciones que complementan Ultralytics YOLO11 para la detección de objetos:
- Integración perfecta: SAHI se integra fácilmente con los modelos YOLO , requiriendo mínimos ajustes de código.
- Eficiencia de recursos: Particiona imágenes grandes en trozos 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 cosido, SAHI mantiene una alta precisión de detección.
Para comprenderlo mejor, lea las principales características de SAHI.
¿Cómo se gestionan los proyectos de inferencia a gran escala con YOLO11 y SAHI?
Para gestionar proyectos de inferencia a gran escala utilizando YOLO11 y SAHI, siga estas prácticas recomendadas:
- Instale las bibliotecas necesarias: Asegúrese de que dispone de las últimas versiones de ultralytics y sahi.
- Configure la inferencia por cortes: Determine las dimensiones de corte y las relaciones de solapamiento óptimas para su proyecto específico.
- Ejecutar predicciones por lotes: Utilice 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/yolo11n.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 obtener información más detallada, visite nuestra sección sobre Predicción por lotes.