Saltar al contenido

Ultralytics Docs: Using YOLO11 with SAHI for Sliced Inference

Welcome to the Ultralytics documentation on how to use YOLO11 with SAHI (Slicing Aided Hyper Inference). This comprehensive guide aims to furnish you with all the essential knowledge you'll need to implement SAHI alongside YOLO11. We'll deep-dive into what SAHI is, why sliced inference is critical for large-scale applications, and how to integrate these functionalities with YOLO11 for enhanced object detection performance.

Visi贸n general de la inferencia rebanada SAHI

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 una serie de 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: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO11

Caracter铆sticas principales de SAHI

  • Integraci贸n sin fisuras: SAHI se integra sin esfuerzo con los modelos de YOLO , lo que significa que puedes 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 te permite ejecutar una detecci贸n de alta calidad en hardware con recursos limitados.
  • High Accuracy: SAHI maintains the detection accuracy by employing smart algorithms to merge overlapping detection boxes during the stitching process.

驴Qu茅 es la inferencia en rodajas?

La Inferencia por Cortes se refiere a la pr谩ctica de subdividir una imagen grande o de alta resoluci贸n en segmentos m谩s peque帽os (cortes), realizar la detecci贸n de objetos en estos cortes y, a continuaci贸n, recompilar los cortes para reconstruir las ubicaciones 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 en rodajas

  • Carga computacional reducida: Los cortes de imagen m谩s peque帽os son m谩s r谩pidos de procesar y consumen menos memoria, lo que permite un funcionamiento m谩s fluido en hardware de gama baja.

  • Calidad de detecci贸n preservada: Como cada corte se trata de forma independiente, no se reduce la calidad de la detecci贸n de objetos, siempre que los cortes sean lo bastante grandes para captar los objetos de inter茅s.

  • Escalabilidad mejorada: La t茅cnica permite escalar m谩s f谩cilmente la detecci贸n de objetos en diferentes tama帽os y resoluciones de im谩genes, lo que la hace ideal para una amplia gama de aplicaciones, desde las im谩genes de sat茅lite hasta el diagn贸stico m茅dico.

YOLO11 without SAHI YOLO11 with SAHI
YOLO11 without SAHI YOLO11 with SAHI

Instalaci贸n y preparaci贸n

Instalaci贸n

Para empezar, instala las 煤ltimas versiones de SAHI y Ultralytics:

pip install -U ultralytics sahi

Importar m贸dulos y descargar recursos

Here's how to import the necessary modules and download a YOLO11 model and some test images:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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",
)

Standard Inference with YOLO11

Instanciar el modelo

You can instantiate a YOLO11 model for object detection like this:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Realiza una predicci贸n est谩ndar

Realiza una 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 = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Visualiza los resultados

Exporta y visualiza los recuadros delimitadores y las m谩scaras predichas:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Sliced Inference with YOLO11

Realiza la inferencia en rodajas especificando las dimensiones de las rodajas 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,
)

Manejo de los resultados de la predicci贸n

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="yolov8",
    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,
)

That's it! Now you're equipped to use YOLO11 with SAHI for both standard and sliced inference.

Citas y agradecimientos

Si utilizas SAHI en tu trabajo de investigaci贸n o desarrollo, cita el documento original de SAHI y da las gracias 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}
}

We extend our thanks to the SAHI research group for creating and maintaining this invaluable resource for the computer vision community. For more information about SAHI and its creators, visit the SAHI GitHub repository.

PREGUNTAS FRECUENTES

How can I integrate YOLO11 with SAHI for sliced inference in object detection?

Integrating Ultralytics YOLO11 with SAHI (Slicing Aided Hyper Inference) for sliced inference optimizes your object detection tasks on high-resolution images by partitioning them into manageable slices. This approach improves memory usage and ensures high detection accuracy. To get started, you need to install the ultralytics and sahi libraries:

pip install -U ultralytics sahi

Then, download a YOLO11 model and test images:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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, consulta nuestra gu铆a de Inferencia en Rebanadas.

Why should I use SAHI with YOLO11 for object detection on large images?

Using SAHI with Ultralytics YOLO11 for object detection on large images offers several benefits:

  • Carga computacional reducida: Los trozos m谩s peque帽os se procesan m谩s r谩pidamente y consumen menos memoria, lo que hace factible 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 en 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.

Obt茅n m谩s informaci贸n sobre las ventajas de la inferencia rebanada en nuestra documentaci贸n.

Can I visualize prediction results when using YOLO11 with SAHI?

Yes, you can visualize prediction results when using YOLO11 with SAHI. Here's how you can export and visualize the results:

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 luego podr谩s cargar la imagen para verla en tu cuaderno o aplicaci贸n. Para una gu铆a detallada, consulta la secci贸n Inferencia est谩ndar.

What features does SAHI offer for improving YOLO11 object detection?

SAHI (Slicing Aided Hyper Inference) offers several features that complement Ultralytics YOLO11 for object detection:

  • Integraci贸n perfecta: SAHI se integra f谩cilmente con los modelos de YOLO , requiriendo m铆nimos ajustes de c贸digo.
  • Eficiencia de recursos: Particiona las 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, lee sobre las caracter铆sticas clave de SAHI.

How do I handle large-scale inference projects using YOLO11 and SAHI?

To handle large-scale inference projects using YOLO11 and SAHI, follow these best practices:

  1. Instala las bibliotecas necesarias: Aseg煤rate de que tienes las 煤ltimas versiones de ultralytics y sahi.
  2. Configura la inferencia por cortes: Determina las dimensiones de corte y las relaciones de solapamiento 贸ptimas para tu proyecto espec铆fico.
  3. Ejecutar predicciones por lotes: Utiliza las capacidades de SAHI para realizar predicciones por lotes en un directorio de im谩genes, lo que mejora la eficacia.

Ejemplo de predicci贸n por lotes:

from sahi.predict import predict

predict(
    model_type="yolov8",
    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 ver pasos m谩s detallados, visita nuestra secci贸n sobre Predicci贸n por lotes.


馃搮 Created 11 months ago 鉁忥笍 Updated 12 days ago

Comentarios